SFTP chroot ограничение пользователя домашним каталогом

SFTP chroot ограничение пользователя домашним каталогомSFTP - SSH File Transfer Protocol или Secure Transfer Protocol. Протокол безопасной передачи данных по зашифрованному ssh каналу.

Возможность работы с sftp сервером есть практически во всех ftp клиентах. В linux, стандартный клиент для командной строки так и называется, sftp. Под windows почти каждый ftp клиент имеет возможность работы по sftp (filezilla, fireftp), мне больше по душе WinSCP, он поддерживает обычный FTP, SFTP, SCP и WebDAV, плюс авторизацию по приватным ключам ssh.

Создание и настройка пользователей, групп и каталогов

На сервере установлена операционная система Debian 7. Для создания пользователя используется стандартная утилита useradd. Если при создании пользователя не был установлен ключ -s с соответствующей системной оболочкой, ему по-умолчанию назначается /bin/sh. Необходимые значения переменных берутся из файла /etc/defaults/useradd. Посмотреть переменные можно так:

root@debian7:/# useradd -D
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/false
SKEL=/etc/skel
CREATE_MAIL_SPOOL=no

Значение переменной SHELL по умолчанию лучше держать в значении /bin/false, что лишает нового пользователя возможности работать с системной оболочкой, это вопрос безопасности системы. Если-же нужно разрешить какому-то конкретному пользователю использовать системную оболочку, например пользователю user, достаточно воспользоваться утилитой usermod в следующем виде:

root@debian7:/# usermod -s /bin/bash user

это дает право пользователю user использовать системную оболочку /bin/bash.

Для пользователей которые будут использовать только sftp, создадим отдельную группу:

root@debian7:/# groupadd sftpusers

Включить пользователя в дополнительную группу, в данном случае sftpusers, можно на стадии его создания, например так:

root@debian7:/# useradd -m -G sftpusers user

при этом будет создан домашний каталог /home/user. Здесь ключ -m говорит программе useradd что нужно создать для данного пользователя домашний каталог, а ключ -G указывает в какую дополнительную группу должен быть добавлен пользователь. Если речь идет об уже существующем пользователе, нужно просто включить его в группу sftpusers, используя программу usermod с ключем -G и указанием группы:

root@debian7:/# usermod -G sftpusers user

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

root@debian7:/# chmod 700 /home/user

Пользователь будет видеть сам домашний каталог другого пользователя, но не сможет видеть его содержимое.
Смотрим права на домашние каталоги:

root@debian7:/# ll /home
total 16
drwx------ 5 user     user     4096 Mar 10 22:24 user
drwx------ 5 user2    user2    4096 Mar 10 22:59 user2

Настройка сервера SSH

Отредактируем файл конфигурации ssh сервера /etc/sshd_config, дописывает/исправляем строки:

Subsystem sftp internal-sftp
Match Group sftpusers
ForceCommand internal-sftp
ChrootDirectory /home
X11Forwarding no
AllowAgentForwarding no
AllowTcpForwarding no
PermitTunnel no

Перезапускаем sshd сервер:

root@debian7:/# service ssh restart

Проверка работы SFTP сервера

Для проверки подключаемся к sftp серверу локально:

root@debian7:/# sftp user@localhost
user@localhost's password:
Connected to localhost.
sftp>

Проверяем где мы, что нам можно, что нельзя. Общий листинг папки /home

sftp> ls -l
drwx------    5 1002     1002         4096 Mar 11 03:24 user
drwx------    5 1003     1004         4096 Mar 11 03:59 user2

Листинг своего домашнего каталога:

sftp> ls -l user
drwxr-xr-x    2 1002     1002         4096 Mar 10 07:04 backup
drwxr-xr-x    2 1002     1002         4096 Mar 10 06:57 www

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

sftp> ls -l user2
remote readdir("/user2/"): Permission denied

Создание и удаление директорий:

sftp> cd user
sftp> mkdir dir
sftp> ls -l
drwxr-xr-x    2 1002     1002         4096 Mar 11 04:45 dir
drwxr-xr-x    2 1002     1002         4096 Mar 10 07:04 backup
drwxr-xr-x    2 1002     1002         4096 Mar 10 06:57 www

sftp> rmdir dir
sftp> ls -l
drwxr-xr-x    2 1002     1002         4096 Mar 10 07:04 backup
drwxr-xr-x    2 1002     1002         4096 Mar 10 06:57 www

Вроде все в норме. В любом случае ориентируйтесь по своим задачам, в зависимости от ситуации настройки могут отличаться.

Комментарии

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
Регистр имеет значение
 oooooooooooo   .ooooo.                                   .oooooo.         .oooo.   
`888' `8 d88' `8. d8P' `Y8b .dP""Y88b
888 Y88.. .8' .ooooo. oooo oooo ooo 888 888 ]8P'
888oooo8 `88888b. d88' `88b `88. `88. .8' 888 888 .d8P'
888 " .8' ``88b 888ooo888 `88..]88..8' 888 888 .dP'
888 `8. .88P 888 .o `888'`888' `88b d88b .oP .o
o888o `boood8' `Y8bod8P' `8' `8' `Y8bood8P'Ybd' 8888888888


Введите код, изображенный в стиле ASCII-арт.