Как настроить SFTP Chroot Jail для блокировки пользователя в Linux

12 set 2022 4 min di lettura
Как настроить SFTP Chroot Jail для блокировки пользователя в Linux
Indice dei contenuti

Введение

Если вы являетесь системным администратором, управляющим серверами Linux, скорее всего, вам может потребоваться предоставить доступ SFTP некоторым пользователям для загрузки файлов в их домашние каталоги. По умолчанию пользователи, имеющие доступ к системе через SSH, SFTP и SCP, могут просматривать всю файловую систему, включая каталоги других пользователей. Это может не быть проблемой, если эти пользователи заслуживают доверия, но если вы не хотите, чтобы зарегистрированные пользователи могли просматривать систему, вам нужно будет ограничить доступ пользователей к их домашнему каталогу. Это добавляет дополнительный уровень безопасности, особенно в системах с несколькими пользователями.

В этом руководстве мы объясним, как настроить среду SFTP Chroot Jail, которая будет ограничивать пользователей их домашними каталогами. Пользователи будут иметь доступ только по SFTP, доступ по SSH будет отключен. Эти инструкции должны работать для любого современного дистрибутива Linux, включая Ubuntu, CentOS, Debian и Fedora.

Если вы хотите настроить SFTP Chroot Jail на удаленном сервере, читайте дальше, в противном случае пропустите первый абзац «Подключение к серверу» и читайте следующий.

Подключение к серверу

Чтобы получить доступ к серверу, вам нужно знать IP-адрес. Вам также потребуется ваше имя пользователя и пароль для аутентификации. Чтобы подключиться к серверу как root, введите следующую команду:

ssh [email protected]_DEL_SERVER

Далее вам нужно будет ввести пароль пользователя root.

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

ssh [email protected]_DEL_SERVER

Затем вам будет предложено ввести пароль пользователя.

Стандартный порт для подключения по ssh — 22, если ваш сервер использует другой порт, вам нужно будет указать его с помощью параметра -p, затем введите следующую команду:

ssh [email protected]_DEL_SERVER -p PORTA

Создание группы SFTP

Вместо того, чтобы настраивать сервер OpenSSH для каждого пользователя индивидуально , мы создадим новую группу и добавим в эту группу всех наших пользователей chroot.

Выполните следующую команду groupadd, чтобы создать группу пользователей sftponly:

sudo groupadd sftponly

Вы можете назвать группу по своему усмотрению.

Добавьте пользователей в группу SFTP

Следующим шагом будет добавление пользователей, которых вы хотите ограничить, в группу sftponly.

Если это новая конфигурация и пользователь не существует, можно создать новую учетную запись пользователя, набрав:

sudo useradd -g sftponly -s /bin/false -m -d /home/username username
  • Параметр -g sftponly добавит пользователя в группу sftponly.
  • Опция -s /bin/false устанавливает оболочку входа пользователя. Установив логин shell /bin/false, пользователь не сможет зайти на сервер по SSH.
  • Опции -m -d /home/username указывают useradd создать домашний каталог пользователя.

Установите надежный пароль для вновь созданного пользователя:

sudo passwd username

В противном случае, если пользователь, которого вы хотите ограничить, уже существует, добавьте пользователя в группу sftponly и измените оболочку пользователя:

sudo usermod -G sftponly -s /bin/false username2

Домашний каталог пользователя должен принадлежать пользователю root и иметь права доступа 755:

sudo chown root: /home/username
sudo chmod 755 /home/username

Поскольку домашние каталоги пользователей принадлежат пользователю root, эти пользователи не смогут создавать файлы и каталоги в своих домашних каталогах. Если в доме пользователя нет каталогов, вам нужно будет создать новые каталоги, к которым у пользователя будет полный доступ. Например, вы можете создать следующие каталоги:

sudo mkdir /home/username/{public_html,uploads}
sudo chmod 755 /home/username/{public_html,uploads}
sudo chown username:sftponly /home/username/{public_html,uploads}

Если веб-приложение использует пользовательский каталог public_html в качестве корня документа, эти изменения могут вызвать проблемы с авторизацией. Например, если вы используете WordPress, вам нужно будет создать пул PHP, который будет работать как владелец файла, и добавить веб-сервер в группу sftponly.

SSH-конфигурация

SFTP является подсистемой SSH и поддерживает все механизмы аутентификации SSH.

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

sudo nano /etc/ssh/sshd_config

Найдите строку, начинающуюся с Subsystem sftp, обычно в конце файла. Если строка начинается с решетки #, удалите решетку # и измените ее так, чтобы она выглядела следующим образом:

Subsystem sftp internal-sftp

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

Match Group sftponly
 ChrootDirectory %h
 ForceCommand internal-sftp
 AllowTcpForwarding no
 X11Forwarding no

Директива ChrootDirectory указывает путь к каталогу chroot. %h указывает домашний каталог пользователя. Этот каталог должен принадлежать пользователю root и не доступен для записи другим пользователям или группам.

Будьте особенно внимательны при редактировании файла конфигурации SSH. Неправильная конфигурация может помешать запуску службы SSH.

После этого сохраните файл и перезапустите службу SSH, чтобы применить изменения:

sudo systemctl restart ssh

В CentOS и Fedora служба ssh называется sshd:

sudo systemctl restart sshd

Тест конфигурации

Теперь, когда вы настроили chroot SFTP, вы можете попытаться войти на удаленный компьютер через SFTP, используя учетные данные пользователя chroot. В большинстве случаев вы будете использовать настольный SFTP-клиент, такой как FileZilla, но в этом примере мы будем использовать команду sftp.

Откройте SFTP-соединение с помощью команды sftp, за которой следует имя пользователя удаленного сервера и IP-адрес или доменное имя сервера:

sftp [email protected]

Вам будет предложено ввести пароль пользователя. После подключения удаленный сервер отобразит подтверждающее сообщение и приглашение sftp>:

[email protected]'s password:
 sftp>

Запустите команду pwd, как показано ниже, и если все работает должным образом, команда должна вернуть /.

sftp> pwd
Remote working directory: /

Вы также можете вывести список удаленных файлов и каталогов с помощью команды ls, и вы должны увидеть каталоги, которые мы создали ранее:

sftp> ls
public_html uploads

Вывод

В этом руководстве вы узнали, как настроить среду SFTP Chroot Jail на вашем сервере Linux и ограничить доступ пользователей к их домашнему каталогу.

По умолчанию SSH прослушивает порт 22. Изменение порта SSH по умолчанию добавляет серверу дополнительный уровень безопасности, снижая риск автоматических атак. Вы также можете настроить аутентификацию на основе ключей SSH и подключаться к серверу без ввода пароля.

Buy me a coffeeBuy me a coffee

Supportaci se ti piacciono i nostri contenuti. Grazie.

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.