Причин тому кілька обмежити сеанс користувача SSH до певного каталогу, особливо на веб -серверах, але очевидною є системна безпека. Для того, щоб заблокувати користувачів SSH у певному каталозі, ми можемо використовувати chroot механізм.
змінити корінь (chroot) в Unix-подібних системах, таких як Linux, є засобом відокремлення конкретних операцій користувача від решти систем Linux; змінює видимий кореневий каталог поточного запущеного процесу користувача та його дочірнього процесу за допомогою нового кореневого каталогу під назвою a хротована в'язниця.
У цьому посібнику ми покажемо вам, як обмежити доступ користувача SSH до певного каталогу в Linux. Зауважте, що ми будемо запускати всі команди як root, використовуйте команда sudo якщо ви увійшли на сервер як звичайний користувач.
1. Почніть зі створення в'язниці chroot за допомогою команди mkdir нижче:
# mkdir -p /home /test.
2. Далі визначте необхідні файли відповідно до sshd_config man -сторінка, ChrootDirectory
Для інтерактивного сеансу зазвичай потрібна принаймні оболонка ш
, та базові /dev
такі вузли, як пристрої null, zero, stdin, stdout, stderr і tty:
# ls -l /dev /{null, zero, stdin, stdout, stderr, random, tty}
3. Тепер створіть /dev
файли наступним чином, використовуючи Команда mknod. У наведеній нижче команді -м
прапор використовується для вказівки бітів дозволу файлу, c
означає символьний файл, а два числа - це великі та малі числа, на які вказують файли.
# mkdir -p/home/test/dev/ # cd/home/test/dev/ # mknod -m 666 null c 1 3. # mknod -m 666 tty c 5 0. # mknod -m 666 нуль c 1 5. # mknod -m 666 випадковий c 1 8.
4. Після цього встановіть відповідний дозвіл на в'язницю chroot. Зауважте, що в'язниця chroot та її підкаталоги та підфайли повинні належати корінь користувача, і не може бути записано будь -яким звичайним користувачем або групою:
# корень чауна: root /home /test. # chmod 0755 /home /test. # ls -ld /home /test.
5. Спочатку створіть кошик
каталог, а потім скопіюйте файл /bin/bash
файли в кошик
каталог наступним чином:
# mkdir -p/home/test/bin. # cp -v/bin/bash/home/test/bin/
6. Тепер ідентифікуйте необхідний спільний доступ до bash libs
, як показано нижче, та скопіюйте їх у lib
каталог:
# ldd /bin /bash. # mkdir -p/home/test/lib64. # cp -v /lib64/{libtinfo.so.5,libdl.so.2,libc.so.6,ld-linux-x86-64.so.2}/home/test/lib64/
7. Тепер створіть користувача SSH за допомогою Команда useradd і встановіть безпечний пароль для користувача:
# useradd tecmint. # passwd tecmint.
8. Створіть каталог загальних конфігурацій в'язниці chroot, /home/test/etc
та скопіюйте оновлені файли облікового запису (/etc/passwd та /etc/group) у цей каталог наступним чином:
# mkdir/home/test/тощо. # cp -vf/etc/{passwd, group}/home/test/etc/
Примітка: Щоразу, коли ви додаватимете до системи більше користувачів SSH, вам потрібно буде копіювати оновлені файли облікових записів у /home/test/etc
каталогу.
9. Тепер відкрийте файл sshd_config
файл.
# vi/etc/ssh/sshd_config.
і додайте/змініть рядки нижче у файлі.
#define username до якого застосовувати хроотську в'язницю. Відповідати користувачу tecmint #вкажіть в'язницю chroot. ChrootDirectory /home /test
Збережіть файл і вийдіть, а потім перезапустіть служби SSHD:
# systemctl перезапустити sshd. АБО. # служба sshd перезавантаження.
10. На цьому етапі перевірте, чи налаштування хроотської в'язниці працює належним чином:
# ssh [захищена електронною поштою]
-баш-4,1 $ л. -bash-4.1 $ дата. -bash-4,1 $ uname.
Зі скріншоту вище ми бачимо, що користувач SSH заблокований у хронізованій в’язниці і не може виконувати жодних зовнішніх команд (ls, date, uname тощо).
Користувач може виконувати тільки bash та його вбудовані команди, такі як (pwd, history, echo тощо), як показано нижче:
# ssh [захищена електронною поштою]-баш-4,1 $ на рік. -bash -4.1 $ echo "Tecmint -Найшвидший сайт Linux" -bash-4.1 $ історія.
11. З попереднього кроку ми можемо помітити, що користувач заблокований у кореневому каталозі, ми можемо створити домашній каталог для користувача SSH таким чином (зробіть це для всіх майбутніх користувачів):
# mkdir -p/home/test/home/tecmint. # chown -R tecmint: tecmint/home/test/home/tecmint. # chmod -R 0700/home/test/home/tecmint.
12. Далі встановіть кілька команд користувача, таких як ls, date, mkdir у кошик
каталог:
# cp -v/bin/ls/home/test/bin/ # cp -v/bin/date/home/test/bin/ # cp -v/bin/mkdir/home/test/bin/
13. Далі перевірте спільні бібліотеки на наявність команд вище та перемістіть їх у каталог хронізованих в'язничних бібліотек:
# ldd /bin /ls. # cp -v /lib64/{libselinux.so.1,libcap.so.2,libacl.so.1,libc.so.6,libpcre.so.1,libdl.so.2,ld-linux-x86- 64.so.2, libattr.so.1, libpthread.so.0}/home/test/lib64/
14. Виконайте остаточний тест за допомогою sftp; перевірте, чи працюють тільки що встановлені команди.
Додайте рядок нижче у /etc/ssh/sshd_config
файл:
#Увімкнути sftp до хронізованої в'язниці ForceCommand internal-sftp.
Збережіть файл і вийдіть. Потім перезапустіть служби SSHD:
# systemctl перезапустити sshd. АБО. # служба sshd перезавантаження.
15. Тепер, протестуючи за допомогою SSH, ви отримаєте таку помилку:
# ssh [захищена електронною поштою]
Спробуйте використовувати SFTP наступним чином:
# sftp [захищена електронною поштою]
Пропонуємо прочитати:Обмежте користувачів SFTP до домашніх каталогів, використовуючи chroot Jail
Ось поки що!. У цій статті ми показали вам, як обмежити користувача SSH у певному каталозі (хронізованій в'язниці) у Linux. Скористайтесь розділом коментарів нижче, щоб запропонувати нам свої думки щодо цього посібника.