Вопрос или проблема
У меня есть root-пользователь, который может перемещаться по всей файловой структуре и делать все, что мне нужно. Он может входить в систему через ssh и sftp. Однако мне нужен другой пользователь, который может получить доступ только к sftp и иметь доступ только к ftp, без команд ssh. Пользователь должен быть ограничен директорией /var/www/html (которая принадлежит Apache и группе Apache, но пользователь также должен быть в группе Apache) и иметь возможность видеть все директории и файлы внутри, удалять, редактировать, перемещать и т. д., но не иметь возможности попасть в /var/www или выше, а тем более делать там что-либо.
Мне удалось заставить пользователя начинать с нужной папки, и большинство ftp клиентов, кажется, ограничивают его движение наверх после входа. Однако у многих программ также есть опция в конфигурации подключения для установки начального пути, и если пользователь установит его на /, то он начнет с вершины директории!
Что можно сделать, чтобы предотвратить это, не прибегая к очень сложным вещам? Я каким-то образом смог это сделать на моем старом сервере, поэтому знаю, что это возможно, просто не помню, что из всего, что я пробовал, сработало.
Спасибо.
Ответ или решение
Для решения задачи, связанной с ограничением доступа пользователей через SSH и SFTP в системе Rocky Linux 9, необходимо рассмотреть несколько важных аспектов. Основная задача состоит в том, чтобы с использованием SFTP урезать возможности пользователя, предоставив ему доступ только к определённой директории и запретив доступ выше заданной структуры каталогов.
Теоретическая часть
SSH (Secure Shell) — это сеть протоколов, предоставляющая безопасные методы шифрования для удаленного управления системой и передачи файлов. В данном случае, необходимо ограничить возможности пользователя исключительно SFTP-доступом (SSH File Transfer Protocol — протокол передачи файлов через SSH), позволив ему работать только в пределах определённого каталога, но запретив использование SSH-команд и доступ к более высоким уровням файловой системы. Для достижения этих целей можно использовать так называемые «chroot jail», которые изолируют пользователя в специально определённой директории.
Пример реализации
-
Создание нового пользователя:
Для начала создайте пользователя с именем, допустим,
sftpuser
, который будет иметь доступ только через SFTP и чьи действия будут ограничены определённой директорией:sudo useradd -m -d /var/www/html -s /usr/sbin/nologin sftpuser
Команда выше создаёт пользователя с домашним каталогом
/var/www/html
и входом в систему, запрещённым через оболочку (использованnologin
). -
Назначение прав владельца:
Нужно удостовериться, что данной директории назначены правильные права:
sudo chown root:root /var/www sudo chown -R apache:apache /var/www/html
/var/www
должен принадлежатьroot
, чтобы предотвратить доступ к более высоким уровням./var/www/html
принадлежитapache
, чтобы пользователь мог управлять контентом внутри.
-
Настройка конфигурации SSH:
Произведите изменения в конфигурационном файле
/etc/ssh/sshd_config
для настройки ограничения доступа:Subsystem sftp internal-sftp Match User sftpuser ChrootDirectory /var/www ForceCommand internal-sftp AllowTcpForwarding no X11Forwarding no
ChrootDirectory
устанавливает базовую директорию для пользователя.ForceCommand internal-sftp
предотвращает выполнение каких-либо команд, кроме SFTP.AllowTcpForwarding
иX11Forwarding
отключены для безопасности.
-
Настройка прав доступа и безопасности:
Убедитесь, что прав доступа для
/var/www
установлены таким образом, чтобы предотвратить запись или серию операций, которые позволяют обойти ограничения:sudo chmod 755 /var/www sudo chmod -R 775 /var/www/html
-
Перезапуск службы SSH:
После изменений конфигурации, необходимо перезапустить службу SSH для применения настроек:
sudo systemctl restart sshd
Применение и тестирование
После выполненных настроек, важно протестировать систему:
- Попробуйте подключиться к серверу через SFTP как пользователь
sftpuser
и убедитесь, что возможности ограничены только директорией/var/www/html
. - Проверьте, что пользователь не может выполнять SSH-команды и переходить на более высокий уровень файловой системы.
Заключение
При настройке ограниченного доступа для пользователей через SFTP важно правильно настроить права доступа и использовать средства изоляции, такие как chroot
. Это поможет предотвратить возможность доступа пользователей к критичным системным файлам и защитить данные. В описанном подходе использованы принципы минимально необходимых прав и сегрегации прав для достижения безопасности и функциональности системы.