Как настроить chroot для sftp (OpenSSH)?
Если решите как-то реализовать написанное, то все действия вы производите на свой страх и риск!
Часто может требоваться настроить доступ так, чтобы пользователь не мог ходить по всей системе при подключении по sftp. Также возможность подключения по ssh для этого пользователя может не требоваться.
Для того чтобы настроить chroot надо сделать следующее :
1. Открываем /etc/ssh/sshd_conf
nano /etc/ssh/sshd_conf
2. Найти строчку относительно sftp. Закомментировать её и добавить ниже новую, чтобы использовался встроенный sftp-сервер
#Subsystem sftp /usr/lib/openssh/sftp-server Subsystem sftp internal-sftp -f AUTH -l VERBOSE
3. Переходим в конец файла и добавляем
Match user usertest ChrootDirectory /home ForceCommand internal-sftp -d /usertest PermitTunnel no AllowAgentForwarding no AllowTcpForwarding no X11Forwarding no
В случаем подключения пользователя usertest попадаем в домашнюю папку /home/usertest.
На всякий случай можно отключить переадресацию агентов (AllowAgentForwarding), портов SSH (AllowTcpForwarding), возможность графических интерфейсов X11 программ (X11Forwarding) и возможности туннелирования (PermitTunnel), если глобально что-то включено. ForceCommand internal-sftp говорит о том, что можно использовать только встроенный sftp.
В ChrootDirectory можно указывать не только конкретный каталог, но переменную %h (home directory).
Если же необходимо на группу пользователей сделать, то
Match group ugroupsftp ChrootDirectory /home ForceCommand internal-sftp -d %u AllowTcpForwarding no PermitTunnel no AllowAgentForwarding no AllowTcpForwarding no X11Forwarding no
Вместо пользователя указываем нужную группу и папку для ChrootDirectory, в данном случае home. %u — параметр для папки пользователя, если она совпадает с именем.
Т. е. сначала идет подключение в ChrootDirectory, а потом автоматический переход в папку пользователя /home/usertest
4. Важный момент! Чтобы всё работало необходимо установить правильные права на папки:
/home и ветка выше, если не home, должна принадлежать пользователю root и группе root.
/home/usertest должна принадлежать пользователю usertest и группе usertest, а также установлены права
drwxr-x---
или более низкие. Это для того, чтобы другие пользователи не заходили в домашнюю папку, если их нет в группе конкретного пользователя.
5. Далее проверяем конфигурацию
sshd -t
Если всё хорошо, то вывода не будет. Если что-то не так, то будет написано где ошибка в конфигурации. Если ошибок нет и не удается подключиться, то надо смотреть логи.
6. Перечитываем конфигурацию sshd
systemctl reload sshd
Категории: Linux