Как настроить 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

Метки:

- 27.11.2024           Просмотры: 173

Заметки в Telegram

Добавить комментарий

Вы можете оставить комментарий и указать никнейм (выдуманное имя/псевдоним). Поле со звездочкой и капча обязательны. Комментарии одобряются вручную.