Как SFTP клиентам разрешить доступ только к домашней папке

Давайте рассмотрим что нужно сделать, чтоб клиент подключающийся по протоколу SFTP, имел доступ только к домашней папке, в которой располагаются его файлы.

Для того, чтоб клиенты имели возможность полноценно управлять своими сайтами на сервере, большинство хостинг провайдеров, помимо прочих услуг, предоставляют услугу FTP доступа к данным на сервере. Только существует одна проблема - протокол FTP сильно устарел и его рекомендуется использовать с дополнительными параметрами безопасности, например с фильтрацией по IP адресу клиента. Это вносит некоторые неудобства, если приходится работать с динамическим IP адресом интернет провайдера и нет возможности заказать у него статический. Для того, чтоб эту проблему обойти, можно настроить подключение к серверу, используя более безопасный протокол - SFTP (SSH File Transfer Protocol).

 

Настраиваем сервер sshd

В конце файла /etc/ssh/sshd_config добавьте следующий кусок кода:

# Этот блок должен находиться в самом конце файла
Match Group www-data
    ChrootDirectory %h
    ForceCommand internal-sftp
    AllowTcpForwarding no

В приведенном выше куске конфигурации, дается инструкция установить корневой каталог на домашнюю папку, для всех пользователей, входящих в группу ‘www-data’.

Настройка параметров учетной записи

Создаем пользователя sftp:

$ sudo useradd sftp -g www-data -s /bin/false -d /folder

Если пользователь уже присутствует в системе, изменить его параметры можно с помощью комманды usermod:

Устанавливаем группу пользователя:

$ sudo usermod sftp -g www-data

Запрещаем пользователю доступ к комадной оболочке:

$ sudo usermod sftp -s /bin/false

Устанавливаем домашнюю директорию пользователя:

$ sudo usermod sftp -d /home/folder

После внесения изменений в конфигурацию, для применения изменений, SSH сервер следует перезапустить:

$ sudo service ssh restart

Права доступа к корневой папке

Параметры сервера настроены, теперь нужно проверить права доступа к домашним, корневым папкам пользователей. Каждая папка должна иметь владельцем пользователя root, а права доступа должны быть установлены 755, или 750. Дочерние элементы могут иметь другие права доступа, главное - корневая папка.

There is 1 Comment

Ребята, подскажите пожалуйста в чем может быть проблема.
Конфигурация:
Port 22
Protocol 2
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key
UsePrivilegeSeparation yes

KeyRegenerationInterval 3600
ServerKeyBits 1024

SyslogFacility AUTH
LogLevel INFO

LoginGraceTime 120
PermitRootLogin no
StrictModes yes

RSAAuthentication yes
PubkeyAuthentication yes

IgnoreRhosts yes
RhostsRSAAuthentication no
HostbasedAuthentication no

PermitEmptyPasswords no

ChallengeResponseAuthentication no

X11Forwarding yes
X11DisplayOffset 10
PrintMotd no
PrintLastLog yes
TCPKeepAlive yes

AcceptEnv LANG LC_*

Subsystem sftp internal-sftp

UsePAM yes

Match User testuser
X11Forwarding no
AllowTcpForwarding no
AllowAgentForwarding no
PermitTunnel no
ForceCommand internal-sftp
ChrootDirectory %h/chroot

(/home/testuser — root:root; /home/testuser/chroot — testuser:testuser)

1. В параметре Match User — работает, только если указывать группу, а не пользователя, например, Match User testusers (группа). Если прописывать параметр Match Group — то не работает.
2. При подключении вижу все корневые папки.

Страницы

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

You must have Javascript enabled to use this form.