Если вы системный администратор, управляющий сервером Linux, скорее всего, вам может потребоваться предоставить SFTP-доступ некоторым пользователям для загрузки файлов в их домашние каталоги. По умолчанию пользователи, которые могут войти в систему через SSH, SFTP и SCP, могут просматривать всю файловую систему, включая каталоги других пользователей. Это может не быть проблемой, если этим пользователям доверяют, но если вы не хотите, чтобы вошедшие в систему пользователи могли перемещаться по системе, вам необходимо ограничить доступ пользователей к их домашнему каталогу. Это добавляет дополнительный уровень безопасности, особенно в системах с несколькими пользователями.
Пользователи будут иметь доступ только по SFTP, доступ по SSH будет отключен. Эти инструкции должны работать для любого современного дистрибутива Linux, включая Ubuntu, CentOS, Debian и Fedora.
Создание группы SFTP
Вместо того, чтобы настраивать сервер OpenSSH для каждого пользователя индивидуально, мы создадим новую группу и добавим в нее всех наших chrooted-пользователей.
Выполните следующую команду groupadd, чтобы создать группу пользователей sftponly:
|
|
Вы можете назвать группу как хотите.
Добавление пользователей в группу SFTP
Следующим шагом является добавление пользователей, которых вы хотите ограничить, в группу sftponly.
Если это новая настройка, а пользователь не существует, вы можете создать новую учетную запись, набрав:
|
|
- Опция
-g sftponly
добавит пользователя к sftponly группе. - Опция
-s /bin/false
устанавливает для входа пользователя оболочки. При настройке логина оболочки/bin/false
пользователь не сможет войти на сервер через SSH. - Опция
-m -d /home/username
рассказывает useradd для создания каталога домашнего пользователя.
Установите надежный пароль для вновь созданного пользователя:
|
|
В противном случае, если пользователь, которого вы хотите ограничить, уже существует, добавьте его в группу sftponly и измените оболочку пользователя:
|
|
Домашний каталог пользователя должен принадлежать пользователю root и иметь права доступа 755:
|
|
Поскольку домашние каталоги пользователей принадлежат пользователю root, эти пользователи не смогут создавать файлы и каталоги в своих домашних каталогах. Если в доме пользователя нет каталогов, вам необходимо создать новые каталоги, к которым у пользователя будет полный доступ. Например, вы можете создать следующие каталоги:
|
|
Если веб-приложение использует каталог пользователя public_html
в качестве корневого документа, эти изменения могут привести к проблемам с разрешениями. Например, если вы работаете с WordPress, вам нужно будет создать пул PHP, который будет работать как пользователь, владеющий файлами, и добавить веб-группу sftponly
.
Настройка SSH
SFTP является подсистемой SSH и поддерживает все механизмы аутентификации SSH.
Откройте файл конфигурации SSH в /etc/ssh/sshd_config
в текстовом редакторе:
|
|
Поиск строки начинается с Subsystem sftp
, как правило, в конце файла. Если строка начинается с хеша, #
удалите хеш #
и измените его следующим образом:
|
|
Ближе к концу файла следующий блок настроек:
|
|
Директива ChrootDirectory
указывает путь к каталогу корневым. %h
означает домашний каталог пользователя. Этот каталог должен принадлежать пользователю root и недоступен для записи любому другому пользователю или группе.
Будьте особенно осторожны при изменении файла конфигурации SSH. Неправильная конфигурация может привести к сбою службы SSH.
Когда вы закончите, сохраните файл и перезапустите службу SSH, чтобы применить изменения:
|
|
В CentOS и Fedora служба ssh называется sshd
:
|
|
Тестирование конфигурации
Теперь, когда вы настроили SFTP chroot, вы можете попытаться войти на удаленный компьютер через SFTP, используя учетные данные пользователя chroot. В большинстве случаев вы будете использовать настольный SFTP-клиент, такой как FileZilla, но в этом примере мы будем использовать команду sftp.
Откройте соединение SFTP с помощью команды sftp, за которой следуют имя пользователя удаленного сервера и IP-адрес сервера или имя домена:
|
|
Вам будет предложено ввести пароль пользователя. После подключения удаленный сервер отобразит подтверждающее сообщение и приглашение sftp>
:
|
|
Запустите команду pwd
, как показано ниже, и, если все работает, как ожидается, команда должна вернуться /
.
|
|
Вы также можете перечислить удаленные файлы и каталоги, используя команду ls
, и вы должны увидеть каталоги, которые мы создали ранее:
|
|
Заключение
Из этой статьи вы узнали, как настроить среду SFTP Chroot Jail на сервере Linux и ограничить доступ пользователей к их домашнему каталогу.
По умолчанию SSH прослушивает порт 22. Изменение порта SSH по умолчанию добавляет дополнительный уровень безопасности вашему серверу, снижая риск автоматических атак. Вы также можете настроить аутентификацию на основе ключей SSH и подключиться к серверу без ввода пароля.