У нашому світі є багато-багато секретів ... Я, чесно кажучи, не думаю, що можу навчитися достатньо, щоб знати більшість з них, і це дається простим фактом, що Linux дозволяє нам робити так багато, але так багато речей, що це нам важко їх усіх знати.
Цього разу я поясню, як зробити щось надзвичайно корисне, те, що потрібно було зробити багатьом мережевим або системним адміністраторам, і нам було важко просто не знайти досить простий спосіб цього досягти:
Як підключити користувачів, які підключаються через SSH
клітку? ... WTF!
Так. Якщо з якоїсь причини ми повинні надати SSH доступ одному з наших знайомих до нашого комп’ютера (або сервера), ми завжди повинні піклуватися про безпеку та стабільність свого комп’ютера чи сервера.
Буває так, що нещодавно ми хотіли надати Персею SSH доступ до нашого сервера, але ми не можемо надати йому будь-який тип доступу, оскільки у нас там дійсно чутливі конфігурації (ми зібрали багато речей, пакети, які ми встановили окремо, тощо. .) Незалежно від того, чи намагаюся я зробити хоч найменші зміни на сервері, є ймовірність того, що все піде марно хе-хе.
Тоді, Як створити користувача з надзвичайно обмеженими привілеями настільки, що він навіть не може вийти зі своєї клітки (будинку)?
Почнемо із завантаження джейлкіт, інструмент, який дозволить нам зробити це:
1. Спочатку ми повинні завантажити наш сервер JailKit.
wget http://ftp.desdelinux.net/jailkit-2.14.tar.gz
2. Потім ми повинні розпакувати пакет і ввести папку, яка щойно з’явилася:
tar xzf jailkit-2.14.tar.gz && cd jailkit-2.14
3. Пізніше ми продовжили збирати та встановлювати програмне забезпечення (Я залишаю вам скріншот):
./configure
make
make install
4. Готово, це вже встановлено. Тепер ми продовжуємо створювати клітку, яка міститиме майбутніх користувачів, у моєму випадку я створив її в: / opt / і назвав "тюрмою", тож шлях буде таким: / opt / jail :
mkdir /opt/jail
chown root:root /opt/jail
5. Клітка вже створена, але в ній немає всіх необхідних інструментів, щоб майбутні користувачі, які будуть там, могли працювати без проблем. Я маю на увазі, що до цього моменту клітка створена, але це просто порожня коробка. Тепер ми помістимо в клітку кілька інструментів, які знадобляться користувачам, що перебувають у клітці:
jk_init -v /opt/jail basicshell
jk_init -v /opt/jail editors
jk_init -v /opt/jail extendedshell
jk_init -v /opt/jail netutils
jk_init -v /opt/jail ssh
jk_init -v /opt/jail sftp
jk_init -v /opt/jail jk_lsh
6. Готово, клітка існує, і у неї вже є інструменти для користування користувачем ... тепер нам потрібен лише ... користувач! Давайте створимо користувача Кіра і ми помістимо його в клітку:
adduser kira
jk_jailuser -m -j /opt/jail kira
cat /etc/passwd | grep jk_chroot
Якщо ви помітили, що нічого подібного до знімка екрану не з’являється, ви, мабуть, зробили щось не так. Залиште коментар тут, і я із задоволенням вам допоможу.
7. І вуаля, користувач вже перебуває в клітці ... але, він ТАК затриманий, що він не може підключитися за допомогою SSH, тому що при спробі підключення сервер не дозволяє йому:
8. Щоб дозволити користувачеві підключитися, ми повинні зробити ще один крок.
Ми повинні відредагувати файл etc / passwd клітини, тобто в цьому випадку це буде так / opt / jail / etc / passwd , у ньому ми коментуємо створений нами рядок користувача та додаємо такий, як:
kira: x: 1003: 1003 :: / home / kira: / bin / bash
Тобто ми мали б такий файл passwd:
root: x: 0: 0: root: / root: / bin / bash
#kira: x: 1003: 1003: ,,,: / opt / jail /./ home / kira: / usr / sbin / jk_lsh
kira: x: 1003: 1003 :: / home / kira: / bin / bash
Зверніть увагу на повторювані розділові знаки та інші, важливо не випустити жоден з них
Після цього користувач може ввести без проблем 😀
І це все.
Інструмент, який ми використовуємо для всього цього (джейлкіт) використання у бекенді chroot, що насправді використовується майже у всіх навчальних посібниках. Однак використання JailKit стає простішим у клітці 😉
Якщо у когось проблема або щось не так, залиште якомога більше деталей, я не вважаю себе експертом, але допоможу вам, чим зможу.
тоді це буде щось на зразок дозволів у FTP? цікаво
ви завжди виходите з усім, про що навіть не підозрювали, що існує, як користувачі в mysql xD
Не зовсім так, оскільки SSH - це не те саме, що FTP. SSH - це оболонка, тобто термінал ... ви знаходитесь у терміналі на іншому комп'ютері або сервері, ви можете виконувати команди, запускати процеси тощо ... ви робите стільки, скільки вам дозволяє адміністратор сервера 😉
ха-ха-ха-ха-ха, не, давай, трапляється так, що я публікую більше технічних речей ... тобто я люблю публікувати дрібниці, які не такі популярні та цікаві. Наприклад, я особисто не планую публікувати щось у день виходу нового Ubuntu, тому що я вірю, що багато хто вже буде про це говорити ... однак, те, що ви читаєте тут у дописі, хіба це не те, що читають кожного разу день чи ні? 😀
Дуже хороший внесок, дякую
існує також протокол, який називається sftp, який є ftp і Secure Shell разом, хоча це не те саме, що запуск FTP через SSH: \
привіт
Так, справді, але, встановлюючи в SSH клітку, я автоматично перекладаю в клітку тих, хто підключається за допомогою SFTP, оскільки, як ви кажете, SFTP насправді є SSH + FTP 😀
привіт
Зображення не видно !!! 🙁
Маленька моя помилка хе-хе, скажи мені зараз 😀
Готові. Дякую 😀
дуже добре, я вказую на моїх улюблених, щоб він був доступний, коли мені це потрібно, ха-ха
Дякую, за будь-які питання чи проблеми ми тут, щоб допомогти вам 🙂
У них Персей у клітці. http://i.imgur.com/YjVv9.png
LOL
xD
Як справи.
Ви знаєте, це тема, з якою я не дуже добре знайомий і яку я перевіряв у BSD (PC-BSD і Ghost BSD), і я вважаю її дуже цікавою та з функціоналами, які можуть бути дуже корисними.
Я збираюся залишити його для довідки та перевірити на відповідність документу BSD. Спасибі за інформацію.
З цим я теж не був знайомий, бо ніколи не думав надати комусь доступ до SSH до будь-якого зі своїх серверів ха-ха, але коли виявив необхідність це зробити, я хотів надати доступ, але без можливості, що помилково хтось робить щось таке, що не повинен 😀
Я ніколи не пробував цього в системах BSD, тому не можу сказати, що це спрацює, але якщо ви шукаєте, як chroot в BSD, щось повинно вийти 😉
Дякую за коментар, друг friend
Привіт, я використовую FreeBSD і, звичайно, jailkit працює насправді це в портах
Ви встановлюєте його за допомогою цієї команди
cd / usr / ports / shells / jailkit / && зробити встановлення чистим
Або пакетом ftp
pkg_add -r джейлкіт
Тільки у конфігурації (kira: x: 1003: 1003 :: / home / kira: / bin / bash)
Вам потрібно додати tcsh або sh, якщо ви не встановили bash і не додали цей шлях
/ usr / local / bin / bash
І ще кілька деталей, у Ghost BSD такий процес повинен бути ще простішим, оскільки він заснований на FreeBSD
привіт
Чудово, я його шукав; ви знаєте, чи працює це в Centos ??; Дякую.
Я не тестував його на Centos, але так, це повинно працювати :)
Насправді я пам’ятаю, що декілька використовували цей самий інструмент на серверах Centos та Red Hat 😉
Дуже дякую. Він переходить безпосередньо до закладок.
Дякую вам за коментар 🙂
Дуже хороший "фокус", надзвичайно корисний для адміністраторів sys. Але ще краще, чудово написано. Що ще ти можеш хотіти.
Велике спасибі за вклад.
Дякую, дуже дякую за ваш коментар 😀
привіт
Хваліть SSH ха-ха
Одного разу я намагався зробити клітку для ssh, але в традиційному стилі і правда полягає в тому, що вона ніколи не виходила правильно. Якщо клітка працювала, у неї навіть не було bash, тобто вона підключалася і нічого не залишалося ха-ха, якщо оболонка працювала, вона могла піднятися в ієрархію каталогів і багато інших кіломбо ще ха-ха, але цей джейлкіт - булава, він автоматизує всі ці речі ... Дуже рекомендується
ха-ха дякую.
Так, насправді SSH - це все диво для того, що він нам дозволяє, а насправді це не що інше, як те, що дозволяє система, тому ... ура для Linux! … Ха-ха.
Привіт, питання!
навіщо міняти будинок з (1) / opt / jail /. / home / kira на (2) / home / kira
Ми повинні відредагувати файл etc / passwd клітини, тобто в цьому випадку це буде / opt / jail / etc / passwd, в ньому ми коментуємо створений нами рядок користувача і додаємо новий, такий як:
kira: x: 1003: 1003 :: / home / kira: / bin / bash
Іншими словами, файл passwd буде виглядати так:
root: x: 0: 0: root: / root: / bin / bash
(1) #kira: x: 1003: 1003: ,,,: / opt / jail /./ home / kira: / usr / sbin / jk_lsh
(2) kira: x: 1003: 1003 :: / home / kira: / bin / bash
Привіт 🙂
Якщо це не встановлено, доступ SSH не працює, користувач намагається підключитися, але автоматично виключається ... здається, це помилка або проблема з інтерпретатором, яку приносить JailKit, оскільки при внесенні цієї зміни, яка вказує на те, що він використовує звичайний bash системи, все працює .
Я все ще закриваю сеанс ssh: C
Suse 10.1 x64
Привіт, я встановив це, і він чудово працює в centos = D
але моя дуа - це як раніше, щоб додати більше команд, наприклад, до в'язниці
не вдається запустити команду svn co http://pagina.com/carpeta
Я маю на увазі, що ця команда не існує для користувачів в'язниці, як і раніше, щоб додати ці команди до в'язниці, і є багато інших, які мені потрібно додати.
Привіт як ти?
Якщо ви хочете увімкнути команду «svn» у в'язниці, у вас є команда jk_cp
Це:
jk_cp / opt / jail / / bin / svn
Припускаючи, що двійковий або виконуваний файл svn є: / bin / svn
І нехай Клітка / В'язниця буде: / opt / jail /
Ви знайдете команди, які залежать від інших, тобто, якщо ви додасте команду «pepe», ви побачите, що ви також повинні додати «federico», оскільки «pepe» залежить від «federico», яку потрібно виконати, якщо ви знайдете це тоді додайте необхідні команди і вже 😉
Це чудово, я тестую його прямо зараз, і я кажу вам, що це сталося, велике спасибі = D
Удача 😀
Я встиг зробити те, що ви сказали мені, але таким чином і автоматично він виявив мене без будь-яких проблем.Цю команду я використовував, щоб мати змогу використовувати субверсію.
jk_cp -j / home / jaul svn
Ну, я використовую centos xP і, можливо, він інший, але хороший
тепер я хотів би знати, які це бібліотеки, такі як svn, але тепер я хотів би скомпілювати, бо, скажімо, мені потрібно використовувати таку команду
./configure та позначка помилка
./configure.lineno: рядок 434: expr: команду не знайдено
Я б не знав, які бібліотеки я вже встановив, що таке mysql та інші, якщо він компілюється поза в'язницею, але не всередині jaui.
Вибачте за незручності.
ps: ви повинні помістити в керівництві те, що я вам сказав про команду, використаною у привітаннях centos =).
Подивіться, коли я кажу вам, що він не може знайти команду (як тут), перше, що потрібно знайти команду:
whereis expr
Після знаходження (/ usr / bin / expr та / usr / bin / X11 / expr) ми копіюємо його до в'язниці за допомогою jk_cp 😉
Спробуйте це, щоб побачити.
Так, я вже редагую допис і додаю, що він працює в Centos 😀
Щиро дякую (:
Дякуємо за введення ...
Привіт, як ти?
Нахуй чувак! З Чилі мої привітання. Ти такий же пердеть, як я! ЛОЛ!. Обійми. Ваша публікація мені дуже допомогла!
Дякуємо за ваш коментар 😀
Щиро дякую за пост, це мені дуже допомогло, але, на жаль, з боку
////////////////////////////////////////////////////// // ////////////////////////////////////////////////// //// ////////////////////////
Ми повинні відредагувати файл etc / passwd клітини, тобто в цьому випадку це буде / opt / jail / etc / passwd, в ньому ми коментуємо створений нами рядок користувача і додаємо новий, такий як:
kira: x: 1003: 1003 :: / home / kira: / bin / bash
Іншими словами, файл passwd буде виглядати так:
root: x: 0: 0: root: / root: / bin / bash
#kira: x: 1003: 1003: ,,,: / opt / jail /./ home / kira: / usr / sbin / jk_lsh
kira: x: 1003: 1003 :: / home / kira: / bin / bash
////////////////////////////////////////////////// ////////////////////////////////////////
Це викликає ту саму помилку, я маю на увазі, я залишаю її такою, яка вона є, і вона завантажує мене з терміналу, коли я підключаюсь ,,, .., я коментую рядок і додаю ще одну, модифікуючи її, як ви вказуєте, чоботи мене ...
Встановіть останню версію "jailkit-2.16.tar", навіть створіть скрипт, щоб заощадити час, ось він нижче:
////////////////////////////////////////////////////// // ////////////////////////////////////////////////
#! / бін / баш
Wget http://olivier.sessink.nl/jailkit/jailkit-2.16.tar.gz
tar -zxvf джейлкіт-2.16.tar.gz
cd джейлкіт-2.16
. / Налаштувати
зробити
зробити установку
вихід
////////////////////////////////////////////////// ///////////////////////////
Очевидно, спочатку вони входять як "root" ...
Як я міг вирішити помилку, друг ????
Вибачте, я вже зрозумів, я помилився з домашньою папкою, але у мене є великі сумніви, як я можу отримати її, щоб дозволити мені виконати команду "екран", я намагаюся використовувати її (у користувача, що перебуває в клітці), але це не працює ... Інша справа, що, як я можу змусити цього користувача, який перебуває в клітці, запускати винну програму на exe, якого він щойно вклав у свій будинок, як це буде?
привіт, дуже хороший Tuto! Я новачок у цих середовищах, у мене питання ...
Що стосується безпеки, я бачу, що в її корені є багато папок, чи потрібні вони? Я просто хочу, щоб він мав доступ до своєї папки (ftp-upload і ssh-execute), щоб він міг запускати програму, які папки він міг видалити з кореня? чи це не представляє для мене ніякої небезпеки? Вдячний за попередню допомогу, вітаю!
@ KZKG ^ Гаара, слава богу, ти поставив хрипну помилку, але з версією jailkit-2.16.tar.gz, яку ти запропонував виправити
http://olivier.sessink.nl/jailkit/jailkit-2.16.tar.gz
Думаю, передам у PDF, jojo .. у клітку та спасибі wn 😀
Привіт друг, у мене питання:
Припустимо, у нас є користувач із іменем "test".
Питання полягає в тому, що файл /home/test/.ssh/known_hosts, який знаходиться в будинку цього користувача, це той самий файл чи користувач не перебуває у клітці?
Спробуйте це. За допомогою цього методу ви можете обмежити навігацію до іншого будинку інших користувачів.
Перш за все, дякую за допис! Це дуже корисно для мене; але у мене є два сумніви, і вони виникають із сценарію, який у мене є:
Мені потрібно створити N користувачів з незалежним та приватним доступом до їхнього дому, кожен користувач може отримати доступ до свого дому лише для депонування, модифікації та видалення файлів, що містяться там, без необхідності переходити до інших (я вже маю це на увазі). Він не вимагає доступу через ssh.
1. Чи потрібно створювати клітку для кожного користувача, чи є спосіб, щоб різні користувачі були в одній клітці, але кожен з них мав свій "приватний" каталог?
2. При доступі (через клієнт FTP) відображаються всі каталоги, створені інструментом, чи є спосіб показати папку чистою? Або я в дорозі щось зробив не так?
Відмінний підручник! Це мені дуже допомогло, я тестую його з версією 2.17 на Ubuntu 14.04, і він працює дуже добре. Тепер у мене є наступний виклик, коли користувач потрапляє в клітку так, що він не може перейти до будь-якого шляху, я хочу, щоб він міг бачити лише вміст файлу, що знаходиться в іншому шляху. Я пробував із символічним посиланням, але при спробі зробити хвіст чи кота до цього файлу, він повідомляє мені, що він не існує, хоча при доступі до користувача я можу перерахувати цей файл у будинку клітки.
Якщо б ви могли мені допомогти, я був би вам дуже вдячний, дякую заздалегідь
Привіт, я дотримався цілого посібника, і при вході за допомогою ssh він автоматично закривається, трасує:
4 грудня 19:20:09 toby sshd [27701]: Прийнятий пароль для тесту з порту 172.16.60.22 62009 ssh2
4 грудня 19:20:09 toby sshd [27701]: pam_unix (sshd: session): сеанс, відкритий для тестування користувачем (uid = 0)
4 грудня 19:20:09 toby jk_chrootsh [27864]: тепер вводиться в'язниця / opt / в'язниця для тестування користувача (1004) з аргументами
4 грудня 19:20:09 toby sshd [27701]: pam_unix (sshd: session): сесія закрита для тестування користувача
Грекіас
Не коли я роблю останній крок надання доступу до ssh користувачеві, він все одно перериває зв’язок 🙁
Чи можна від цього створеного користувача змінити на root? ваш -корінь? мені це не дозволяє. Як це буде? Дякуємо за допомогу
Щиро дякую за підручник, він мені знадобився, щоб створити користувача, який міг би за допомогою clonezilla створити зображення та скопіювати його на чужий сервер, але який не міг би роїтися куди завгодно
Добре! Мені б потрібно було щось знати.
Чи можна ввести як ROOT, використовуючи FTP і маючи ці дозволи, управляти ним за допомогою FTP, а не за допомогою SSH? Скажімо, як створити зв’язок, стиль тунелю чи щось подібне. Як це робиться? Налаштування файлу VSFTPD?
Дуже дякую!