Как настроить SFTP Chroot Jail

Linux SFTP Chroot Jail

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

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

Создание группы 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 задаёт оболочку входа пользователя. Если указать оболочку входа /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 , обычно в конце файла. Если строка начинается с решётки # удалите её и измените её следующим образом:

/etc/ssh/sshd_config

 Subsystem sftp internal-sftp

Ближе к концу файла следующий блок настроек:

/etc/ssh/sshd_config

 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 username@192.168.121.30

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

 username@192.168.121.30's password: sftp>

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

 sftp> pwd Remote working directory: /

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

 sftp> ls public_html uploads

Заключение

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

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

Если у вас есть вопросы или пожелания, не стесняйтесь оставлять комментарии.

безопасность ssh sftp

Связанные руководства

Источник

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *