Как предотвратить выход пользователей SSH за пределы их домашнего каталога в Rocky Linux 9

Вопрос или проблема

У меня есть 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», которые изолируют пользователя в специально определённой директории.

Пример реализации

  1. Создание нового пользователя:

    Для начала создайте пользователя с именем, допустим, sftpuser, который будет иметь доступ только через SFTP и чьи действия будут ограничены определённой директорией:

    sudo useradd -m -d /var/www/html -s /usr/sbin/nologin sftpuser

    Команда выше создаёт пользователя с домашним каталогом /var/www/html и входом в систему, запрещённым через оболочку (использован nologin).

  2. Назначение прав владельца:

    Нужно удостовериться, что данной директории назначены правильные права:

    sudo chown root:root /var/www
    sudo chown -R apache:apache /var/www/html
    • /var/www должен принадлежать root, чтобы предотвратить доступ к более высоким уровням.
    • /var/www/html принадлежит apache, чтобы пользователь мог управлять контентом внутри.
  3. Настройка конфигурации 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 отключены для безопасности.
  4. Настройка прав доступа и безопасности:

    Убедитесь, что прав доступа для /var/www установлены таким образом, чтобы предотвратить запись или серию операций, которые позволяют обойти ограничения:

    sudo chmod 755 /var/www
    sudo chmod -R 775 /var/www/html
  5. Перезапуск службы SSH:

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

    sudo systemctl restart sshd

Применение и тестирование

После выполненных настроек, важно протестировать систему:

  • Попробуйте подключиться к серверу через SFTP как пользователь sftpuser и убедитесь, что возможности ограничены только директорией /var/www/html.
  • Проверьте, что пользователь не может выполнять SSH-команды и переходить на более высокий уровень файловой системы.

Заключение

При настройке ограниченного доступа для пользователей через SFTP важно правильно настроить права доступа и использовать средства изоляции, такие как chroot. Это поможет предотвратить возможность доступа пользователей к критичным системным файлам и защитить данные. В описанном подходе использованы принципы минимально необходимых прав и сегрегации прав для достижения безопасности и функциональности системы.

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

Капча загружается...