Поиск по сайту:

Ограничить доступ пользователей SSH к домашнему каталогу с помощью Chrooted Jail


Существует несколько причин ограничить сеанс пользователя SSH определенным каталогом, особенно на веб-серверах, но наиболее очевидной из них является безопасность системы. Чтобы заблокировать пользователей SSH в определенном каталоге, мы можем использовать механизм chroot.

изменение корня (chroot) в Unix-подобных системах, таких как Linux, — это средство отделения определенных пользовательских операций от остальной части системы Linux; изменяет видимый корневой каталог для текущего пользовательского процесса и его дочернего (родительского) процесса на новый корневой каталог, называемый Chrooted Jail.

В этом уроке мы покажем вам, как ограничить доступ пользователей SSH к определенному каталогу в Linux. Обратите внимание, что мы будем выполнять все команды от имени пользователя root. Используйте команду sudo, если вы вошли на сервер как обычный пользователь.

Шаг 1. Создайте тюрьму Chroot для SSH.

1. Начните с создания тюрьмы chroot с помощью приведенной ниже команды mkdir:

mkdir -p /home/test

2. Затем определите необходимые файлы. Согласно справочной странице sshd_config, параметр ChrootDirectory указывает путь к каталогу, в который будет выполняться chroot после аутентификации. . Каталог должен содержать необходимые файлы и каталоги для поддержки сеанса пользователя.

Для интерактивного сеанса требуется как минимум оболочка, обычно sh, и базовые узлы /dev, такие как нулевые, нулевые, stdin, stdout, stderr и tty-устройства:

ls -l /dev/{null,zero,stdin,stdout,stderr,random,tty}

3. Теперь создайте файлы /dev следующим образом, используя команду mknod. В приведенной ниже команде флаг -m используется для указания битов прав доступа к файлу, 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 zero c 1 5
mknod -m 666 random c 1 8

4. После этого установите соответствующие разрешения для chroot-тюрьмы. Обратите внимание, что клетка chroot, ее подкаталоги и подфайлы должны принадлежать пользователю root и не доступны для записи любому обычному пользователю или группе:

chown root:root /home/test
chmod 0755 /home/test
ls -ld /home/test

Шаг 2. Настройка интерактивной оболочки для SSH Chroot Jail

5. Сначала создайте каталог bin, а затем скопируйте файлы /bin/bash в каталог bin, используя команду cp следующим образом:

mkdir -p /home/test/bin
cp -v /bin/bash /home/test/bin/

6. Теперь определите bash, необходимый для общих lib, как показано ниже, и скопируйте их в каталог 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/

Шаг 3. Создайте и настройте пользователя SSH

7. Теперь создайте пользователя SSH с помощью команды useradd и установите для него безопасный пароль:

useradd tecmint
passwd tecmint

8. Создайте каталог общих конфигураций тюрьмы chroot, /home/test/etc и скопируйте обновленные файлы учетной записи (/etc/passwd и /etc/group) в этот каталог следующим образом:

mkdir /home/test/etc
cp -vf /etc/{passwd,group} /home/test/etc/

Шаг 4. Настройте SSH для использования Chroot Jail

9. Теперь откройте файл sshd_config.

vi /etc/ssh/sshd_config

и добавьте/измените строки ниже в файле.

#define username to apply chroot jail to
Match User tecmint
#specify chroot jail
ChrootDirectory /home/test

Сохраните файл, выйдите и перезапустите службы SSHD:

systemctl restart sshd
OR
service sshd restart

Шаг 5. Тестирование SSH с помощью Chroot Jail

10. На этом этапе проверьте, работает ли настройка chroot-тюрьмы должным образом:

ssh [email 
-bash-4.1$ ls
-bash-4.1$ date
-bash-4.1$ uname

На скриншоте выше мы видим, что пользователь SSH заблокирован в изолированной тюрьме и не может выполнять никакие внешние команды (ls, date, uname и т. д.).

Пользователь может выполнять только bash и его встроенные команды, такие как (pwd, History, echo и т. д.), как показано ниже:

ssh [email 
-bash-4.1$ pwd
-bash-4.1$ echo "Tecmint - Fastest Growing Linux Site"
-bash-4.1$ history

Шаг 6. Создайте домашний каталог пользователя SSH и добавьте команды Linux.

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, в каталог bin:

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/

Шаг 7. Тестирование SFTP с помощью Chroot Jail

14. Проведите окончательную проверку с помощью sftp; проверьте, работают ли только что установленные вами команды.

Добавьте строку ниже в файл /etc/ssh/sshd_config:

#Enable sftp to chrooted jail 
ForceCommand internal-sftp

Сохраните файл и выйдите. Затем перезапустите службы SSHD:

systemctl restart sshd
OR
service sshd restart

15. Теперь протестируйте использование SSH, и вы получите следующую ошибку:

ssh [email 

Попробуйте использовать SFTP следующим образом:

sftp [email 

На этом всё! В этой статье мы показали вам, как ограничить пользователя SSH в заданном каталоге (Chrooted Jail) в Linux. Используйте раздел комментариев ниже, чтобы высказать нам свои мысли об этом руководстве.