Ограниченный доступ по SFTP-протоколу

rssh chroot restriction

Организация ограниченного SFTP-доступа

Задача: Надо добавить пользователя в систему, чтобы он мог передавать файлы в определенную папку по sftp-протоколу, но не имел бы доступ к командной строке.

Выход за пределы заданной папки ограничить.

Решение:

1) Добавим пользователя с нужной группой (например, www-data) и своей рабочей папкой, которая д.б. на один уровень выше той, в которую мы даем польлователю запись.

sintecs:x:902:33:,,,:/store/vhosts/sintecs.ru/home/:/bin/false

2) Добавить шелл /bin/false  в  /etc/shells

3) В /etc/ssh/sshd_config должно быть

Subsystem sftp /usr/lib/sftp-server
...
Match User sintecs
        AllowTCPForwarding no
        X11Forwarding no
        ChrootDirectory %h
        ForceCommand internal-sftp
        PasswordAuthentication yes

Важные замечания!

а) Надо проверить путь, по которому расположен sftp-server (/usr/lib/sftp-server)

б) Для всех  обычных (bash) пользователей PasswordAuthentication может быть установлен в "no", а для нашего sftp-пользователя доступ по паролю можно разрешить.

в) владельцем всех каталогов верхнего уровня (над домашним) д.б. root

После этого перезапускаем сервис ssh

Базовое описание: 

https://wiki.archlinux.org/index.php/SFTP_chroot

Для Centos есть особенности:

https://kamaok.org.ua/?p=694 

Dragon Last edit 28.09.2020

----- 2-ой вариант описания aizaro@mail.ru

Как правильно организовать доступ для редактирования файлов web-сайта стороннему разработчику

Итак, типовая ситуация:

Коллега просит дать доступ разработчику на сайт Битрикс по FTP-протоколу.

Мы не хотим давать шелл-доступ по соображениям безопасности, а ftp сервер не настроен по-умолчанию на данной ВМ.

Аутентификация SSH разрешена только по ключу.

Решение: организовать доступ по sftp, ограничив пользователю доступ только к его папке посредством chroot.

  1. Добавляем пользователя:
sudo useradd -d /home/bitrix -g bitrix -s /bin/false username

Задаем пароль:

sudo passwd username

Далее, настраиваем OpenSSH сервер

sudo vi /etc/ssh/sshd_config

В открывшемся файле комментируем строку «Subsystem sftp /usr/lib/openssh/sftp-server»:

#Subsystem sftp /usr/lib/openssh/sftp-server

и ниже добавляем такую строку:

Subsystem sftp internal-sftp

В конце файла добавляем следующее:

Match User username
    PasswordAuthentication yes
    X11Forwarding no
    ChrootDirectory %h
    AllowTcpForwarding no
    ForceCommand internal-sftp

Далее, необходимо прописать правильные разрешения, чтобы пользователь не смог выйти за пределы выделенной ему директории. 

chown root:root /home/bitrix
chmod 755 /home/bitrix

Все вышестоящие директор        ии (в нашем случае это /home) тоже должны принадлежать root:root.

Шелл /bin/false не обязательно прописывать в /etc/shells

[aizaro@mail.ru] 01.04.2021