Chrooted SFTP (SSH FTP)
Сервер sshd
(OpenSSH) позволяет осуществлять доступ по протоколу SFTP. «OpenSSH» по умолчанию даёт пользователю доступ ко всей файловой системе, тоесть к корню. Но можно chroot-нуть пользователя в его домашнюю директорию. Тоесть юзер будет заперт в своей домашней директории.
Начиная с версии 4.8, «OpenSSH» поддерживает chroot
(http://openssh.org/txt/release-4.8) и теперь не нужны патчи.
Подготовка
Право входа в систему по протоколу SFTP будут иметь юзеры имеющие системные учётные записи. В примере Я буду использовать имя юзера Arthur
с домашней директорией в /home/Arthur
. Юзер Arthur
входит в группу users
.
Если необходимый юзер ещё не существует, то создадим:
adduser Arthur
Создадим группу:
groupadd users
Добавим юзера Arthur
в группу users
:
useradd -G users Arthur
Установка OpenSSH
Если OpenSSH ещё не установлен:
apt-get install ssh openssh-server
Включение chrooted SFTP
Для включения SFTP откроем файл настройки OpenSSH сервера:
nano /etc/ssh/sshd_config
и убедимся в том, что имеется одна из этих строк:
Subsystem sftp /usr/lib/openssh/sftp-server
или:
Subsystem sftp internal-sftp
Затем добавим следующий блок в конец файла (для каждого юзера которого хотим chroot-ить необходим отдельный блок):
Match User Arthur ChrootDirectory /home AllowTCPForwarding no X11Forwarding no ForceCommand /usr/lib/openssh/sftp-server
Примечание:
ChrootDirectory
- владельцем этого каталога должен бытьroot
и у других юзеров не должно быть прав на запись. ПоэтомуChrootDirectory
делается на каталог выше, где у юзеров нет прав на запись, а уже внутри каталога/home/Arthur
у него есть права на запись.
Если юзеров много, тогда можно chroot-нуть группу в которую входят все юзеры:
Match Group users ChrootDirectory /home AllowTCPForwarding no X11Forwarding no ForceCommand /usr/lib/openssh/sftp-server
Примечание:
Match
- поддерживает «User», «Group», «Host» и «Address» - для гибкой и групповой настройки.
Тоесть все входящие в группу users
будут chroot-ится в директорию /home
.
Перезапустим OpenSSH:
sudo /etc/init.d/ssh restart
или так:
sudo service ssh restart
Если мы chroot-им разных юзеров в одну директорию но не хотим, чтобы они гуляли по домашним директориям других юзеров, тогда нужно изменить права на каждую домашнюю директорию:
chmod 700 /home/Arthur
Теперь можно подключится к нашему хосту по протоколу SFTP.
Если эта статья помогла вам, пожалуйста, оставьте комментарий
Спасибо за прочтение!
Arthur is a designer and full stack software engineer. He is the founder of Space X-Chimp and the blog My Cyber Universe. His personal website can be found at arthurgareginyan.com.