Як ув'язнити користувачів, які підключаються через SSH

У нашому світі є багато-багато секретів ... Я, чесно кажучи, не думаю, що можу навчитися достатньо, щоб знати більшість з них, і це дається простим фактом, що Linux дозволяє нам робити так багато, але так багато речей, що це нам важко їх усіх знати.

Цього разу я поясню, як зробити щось надзвичайно корисне, те, що потрібно було зробити багатьом мережевим або системним адміністраторам, і нам було важко просто не знайти досить простий спосіб цього досягти:

Як підключити користувачів, які підключаються через SSH

клітку? ... WTF!

Так. Якщо з якоїсь причини ми повинні надати SSH доступ одному з наших знайомих до нашого комп’ютера (або сервера), ми завжди повинні піклуватися про безпеку та стабільність свого комп’ютера чи сервера.

Буває так, що нещодавно ми хотіли надати Персею SSH доступ до нашого сервера, але ми не можемо надати йому будь-який тип доступу, оскільки у нас там дійсно чутливі конфігурації (ми зібрали багато речей, пакети, які ми встановили окремо, тощо. .) Незалежно від того, чи намагаюся я зробити хоч найменші зміни на сервері, є ймовірність того, що все піде марно хе-хе.

Тоді, Як створити користувача з надзвичайно обмеженими привілеями настільки, що він навіть не може вийти зі своєї клітки (будинку)?

Почнемо із завантаження джейлкіт, інструмент, який дозволить нам зробити це:

Усі наступні команди виконуються як root

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 стає простішим у клітці 😉

Важливо!: Це перевірено на Стиснення Debian (6) y Centos і це спрацювало на 100%, протестований у Debian Wheezy (7), і він також працював, хоча і з невеликою деталізацією, що псевдонім користувача не відображається в ssh, але він не втрачає жодної функціональності.

Якщо у когось проблема або щось не так, залиште якомога більше деталей, я не вважаю себе експертом, але допоможу вам, чим зможу.


Залиште свій коментар

Ваша електронна адреса не буде опублікований. Обов'язкові для заповнення поля позначені *

*

*

  1. Відповідальний за дані: Мігель Анхель Гатон
  2. Призначення даних: Контроль спаму, управління коментарями.
  3. Легітимація: Ваша згода
  4. Передача даних: Дані не передаватимуться третім особам, за винятком юридичних зобов’язань.
  5. Зберігання даних: База даних, розміщена в мережі Occentus Networks (ЄС)
  6. Права: Ви можете будь-коли обмежити, відновити та видалити свою інформацію.

  1.   v3on - сказав він

    тоді це буде щось на зразок дозволів у FTP? цікаво

    ви завжди виходите з усім, про що навіть не підозрювали, що існує, як користувачі в mysql xD

    1.    KZKG ^ Гаара - сказав він

      Не зовсім так, оскільки SSH - це не те саме, що FTP. SSH - це оболонка, тобто термінал ... ви знаходитесь у терміналі на іншому комп'ютері або сервері, ви можете виконувати команди, запускати процеси тощо ... ви робите стільки, скільки вам дозволяє адміністратор сервера 😉

      ха-ха-ха-ха-ха, не, давай, трапляється так, що я публікую більше технічних речей ... тобто я люблю публікувати дрібниці, які не такі популярні та цікаві. Наприклад, я особисто не планую публікувати щось у день виходу нового Ubuntu, тому що я вірю, що багато хто вже буде про це говорити ... однак, те, що ви читаєте тут у дописі, хіба це не те, що читають кожного разу день чи ні? 😀

      1.    Дам’ян Рівера - сказав він

        Дуже хороший внесок, дякую

        існує також протокол, який називається sftp, який є ftp і Secure Shell разом, хоча це не те саме, що запуск FTP через SSH: \

        привіт

        1.    KZKG ^ Гаара - сказав він

          Так, справді, але, встановлюючи в SSH клітку, я автоматично перекладаю в клітку тих, хто підключається за допомогою SFTP, оскільки, як ви кажете, SFTP насправді є SSH + FTP 😀

          привіт

  2.   Гіскард - сказав він

    Зображення не видно !!! 🙁

    1.    KZKG ^ Гаара - сказав він

      Маленька моя помилка хе-хе, скажи мені зараз 😀

      1.    Гіскард - сказав він

        Готові. Дякую 😀

  3.   Гнилі87 - сказав він

    дуже добре, я вказую на моїх улюблених, щоб він був доступний, коли мені це потрібно, ха-ха

    1.    KZKG ^ Гаара - сказав він

      Дякую, за будь-які питання чи проблеми ми тут, щоб допомогти вам 🙂

  4.   Мануель де ла Фуенте - сказав він

    У них Персей у клітці. http://i.imgur.com/YjVv9.png

    1.    правильний - сказав він

      LOL
      xD

  5.   Хорхеманджаррезлерма - сказав він

    Як справи.

    Ви знаєте, це тема, з якою я не дуже добре знайомий і яку я перевіряв у BSD (PC-BSD і Ghost BSD), і я вважаю її дуже цікавою та з функціоналами, які можуть бути дуже корисними.

    Я збираюся залишити його для довідки та перевірити на відповідність документу BSD. Спасибі за інформацію.

    1.    KZKG ^ Гаара - сказав він

      З цим я теж не був знайомий, бо ніколи не думав надати комусь доступ до SSH до будь-якого зі своїх серверів ха-ха, але коли виявив необхідність це зробити, я хотів надати доступ, але без можливості, що помилково хтось робить щось таке, що не повинен 😀

      Я ніколи не пробував цього в системах BSD, тому не можу сказати, що це спрацює, але якщо ви шукаєте, як chroot в BSD, щось повинно вийти 😉

      Дякую за коментар, друг friend

      1.    Дам’ян Рівера - сказав він

        Привіт, я використовую 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

        привіт

  6.   adiazc87 - сказав він

    Чудово, я його шукав; ви знаєте, чи працює це в Centos ??; Дякую.

    1.    KZKG ^ Гаара - сказав він

      Я не тестував його на Centos, але так, це повинно працювати :)
      Насправді я пам’ятаю, що декілька використовували цей самий інструмент на серверах Centos та Red Hat 😉

  7.   cyberalejo17 - сказав він

    Дуже дякую. Він переходить безпосередньо до закладок.

    1.    KZKG ^ Гаара - сказав він

      Дякую вам за коментар 🙂

  8.   М. В. Альтамірано - сказав він

    Дуже хороший "фокус", надзвичайно корисний для адміністраторів sys. Але ще краще, чудово написано. Що ще ти можеш хотіти.
    Велике спасибі за вклад.

    1.    KZKG ^ Гаара - сказав він

      Дякую, дуже дякую за ваш коментар 😀
      привіт

  9.   LiGNUxer - сказав він

    Хваліть SSH ха-ха
    Одного разу я намагався зробити клітку для ssh, але в традиційному стилі і правда полягає в тому, що вона ніколи не виходила правильно. Якщо клітка працювала, у неї навіть не було bash, тобто вона підключалася і нічого не залишалося ха-ха, якщо оболонка працювала, вона могла піднятися в ієрархію каталогів і багато інших кіломбо ще ха-ха, але цей джейлкіт - булава, він автоматизує всі ці речі ... Дуже рекомендується

    1.    KZKG ^ Гаара - сказав він

      ха-ха дякую.
      Так, насправді SSH - це все диво для того, що він нам дозволяє, а насправді це не що інше, як те, що дозволяє система, тому ... ура для Linux! … Ха-ха.

  10.   nwt_lazaro - сказав він

    Привіт, питання!
    навіщо міняти будинок з (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

    1.    KZKG ^ Гаара - сказав він

      Привіт 🙂
      Якщо це не встановлено, доступ SSH не працює, користувач намагається підключитися, але автоматично виключається ... здається, це помилка або проблема з інтерпретатором, яку приносить JailKit, оскільки при внесенні цієї зміни, яка вказує на те, що він використовує звичайний bash системи, все працює .

      1.    Омар Рамірез - сказав він

        Я все ще закриваю сеанс ssh: C
        Suse 10.1 x64

  11.   Алексіту - сказав він

    Привіт, я встановив це, і він чудово працює в centos = D

    але моя дуа - це як раніше, щоб додати більше команд, наприклад, до в'язниці
    не вдається запустити команду svn co http://pagina.com/carpeta

    Я маю на увазі, що ця команда не існує для користувачів в'язниці, як і раніше, щоб додати ці команди до в'язниці, і є багато інших, які мені потрібно додати.

    1.    KZKG ^ Гаара - сказав він

      Привіт як ти?
      Якщо ви хочете увімкнути команду «svn» у в'язниці, у вас є команда jk_cp
      Це:
      jk_cp / opt / jail / / bin / svn

      Припускаючи, що двійковий або виконуваний файл svn є: / bin / svn
      І нехай Клітка / В'язниця буде: / opt / jail /

      Ви знайдете команди, які залежать від інших, тобто, якщо ви додасте команду «pepe», ви побачите, що ви також повинні додати «federico», оскільки «pepe» залежить від «federico», яку потрібно виконати, якщо ви знайдете це тоді додайте необхідні команди і вже 😉

      1.    Алексіту - сказав він

        Це чудово, я тестую його прямо зараз, і я кажу вам, що це сталося, велике спасибі = D

        1.    KZKG ^ Гаара - сказав він

          Удача 😀

  12.   Алексіту - сказав він

    Я встиг зробити те, що ви сказали мені, але таким чином і автоматично він виявив мене без будь-яких проблем.Цю команду я використовував, щоб мати змогу використовувати субверсію.

    jk_cp -j / home / jaul svn

    Ну, я використовую centos xP і, можливо, він інший, але хороший
    тепер я хотів би знати, які це бібліотеки, такі як svn, але тепер я хотів би скомпілювати, бо, скажімо, мені потрібно використовувати таку команду

    ./configure та позначка помилка

    ./configure.lineno: рядок 434: expr: команду не знайдено

    Я б не знав, які бібліотеки я вже встановив, що таке mysql та інші, якщо він компілюється поза в'язницею, але не всередині jaui.

    Вибачте за незручності.

    ps: ви повинні помістити в керівництві те, що я вам сказав про команду, використаною у привітаннях centos =).

    1.    KZKG ^ Гаара - сказав він

      Подивіться, коли я кажу вам, що він не може знайти команду (як тут), перше, що потрібно знайти команду:

      whereis expr

      Після знаходження (/ usr / bin / expr та / usr / bin / X11 / expr) ми копіюємо його до в'язниці за допомогою jk_cp 😉
      Спробуйте це, щоб побачити.

      Так, я вже редагую допис і додаю, що він працює в Centos 😀

  13.   adiazc87 - сказав він

    Щиро дякую (:

  14.   Ісус - сказав він

    Дякуємо за введення ...

  15.   карми - сказав він

    Привіт, як ти?

  16.   djfenixchile - сказав він

    Нахуй чувак! З Чилі мої привітання. Ти такий же пердеть, як я! ЛОЛ!. Обійми. Ваша публікація мені дуже допомогла!

    1.    KZKG ^ Гаара - сказав він

      Дякуємо за ваш коментар 😀

  17.   Даніель П.З. - сказав він

    Щиро дякую за пост, це мені дуже допомогло, але, на жаль, з боку

    ////////////////////////////////////////////////////// // ////////////////////////////////////////////////// //// ////////////////////////
    Ми повинні відредагувати файл 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" ...

    Як я міг вирішити помилку, друг ????

    1.    Даніель П.З. - сказав він

      Вибачте, я вже зрозумів, я помилився з домашньою папкою, але у мене є великі сумніви, як я можу отримати її, щоб дозволити мені виконати команду "екран", я намагаюся використовувати її (у користувача, що перебуває в клітці), але це не працює ... Інша справа, що, як я можу змусити цього користувача, який перебуває в клітці, запускати винну програму на exe, якого він щойно вклав у свій будинок, як це буде?

  18.   Леонель - сказав він

    привіт, дуже хороший Tuto! Я новачок у цих середовищах, у мене питання ...
    Що стосується безпеки, я бачу, що в її корені є багато папок, чи потрібні вони? Я просто хочу, щоб він мав доступ до своєї папки (ftp-upload і ssh-execute), щоб він міг запускати програму, які папки він міг видалити з кореня? чи це не представляє для мене ніякої небезпеки? Вдячний за попередню допомогу, вітаю!

  19.   КубаЧервоний - сказав він

    @ KZKG ^ Гаара, слава богу, ти поставив хрипну помилку, але з версією jailkit-2.16.tar.gz, яку ти запропонував виправити

    http://olivier.sessink.nl/jailkit/jailkit-2.16.tar.gz

  20.   Водорості - сказав він

    Думаю, передам у PDF, jojo .. у клітку та спасибі wn 😀

  21.   Самуїл - сказав він

    Привіт друг, у мене питання:

    Припустимо, у нас є користувач із іменем "test".

    Питання полягає в тому, що файл /home/test/.ssh/known_hosts, який знаходиться в будинку цього користувача, це той самий файл чи користувач не перебуває у клітці?

  22.   Річарт - сказав він

    Спробуйте це. За допомогою цього методу ви можете обмежити навігацію до іншого будинку інших користувачів.

  23.   ТЗБКР - сказав він

    Перш за все, дякую за допис! Це дуже корисно для мене; але у мене є два сумніви, і вони виникають із сценарію, який у мене є:

    Мені потрібно створити N користувачів з незалежним та приватним доступом до їхнього дому, кожен користувач може отримати доступ до свого дому лише для депонування, модифікації та видалення файлів, що містяться там, без необхідності переходити до інших (я вже маю це на увазі). Він не вимагає доступу через ssh.

    1. Чи потрібно створювати клітку для кожного користувача, чи є спосіб, щоб різні користувачі були в одній клітці, але кожен з них мав свій "приватний" каталог?

    2. При доступі (через клієнт FTP) відображаються всі каталоги, створені інструментом, чи є спосіб показати папку чистою? Або я в дорозі щось зробив не так?

  24.   eduardlh - сказав він

    Відмінний підручник! Це мені дуже допомогло, я тестую його з версією 2.17 на Ubuntu 14.04, і він працює дуже добре. Тепер у мене є наступний виклик, коли користувач потрапляє в клітку так, що він не може перейти до будь-якого шляху, я хочу, щоб він міг бачити лише вміст файлу, що знаходиться в іншому шляху. Я пробував із символічним посиланням, але при спробі зробити хвіст чи кота до цього файлу, він повідомляє мені, що він не існує, хоча при доступі до користувача я можу перерахувати цей файл у будинку клітки.

    Якщо б ви могли мені допомогти, я був би вам дуже вдячний, дякую заздалегідь

  25.   яс - сказав він

    Привіт, я дотримався цілого посібника, і при вході за допомогою 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): сесія закрита для тестування користувача

    Грекіас

  26.   Омар Рамірез - сказав він

    Не коли я роблю останній крок надання доступу до ssh користувачеві, він все одно перериває зв’язок 🙁

  27.   Бендж - сказав він

    Чи можна від цього створеного користувача змінити на root? ваш -корінь? мені це не дозволяє. Як це буде? Дякуємо за допомогу

  28.   Slevin - сказав він

    Щиро дякую за підручник, він мені знадобився, щоб створити користувача, який міг би за допомогою clonezilla створити зображення та скопіювати його на чужий сервер, але який не міг би роїтися куди завгодно

  29.   Mauro - сказав він

    Добре! Мені б потрібно було щось знати.

    Чи можна ввести як ROOT, використовуючи FTP і маючи ці дозволи, управляти ним за допомогою FTP, а не за допомогою SSH? Скажімо, як створити зв’язок, стиль тунелю чи щось подібне. Як це робиться? Налаштування файлу VSFTPD?

    Дуже дякую!