SFTP (SSH File Transfer Protocol) — это защищенный протокол передачи файлов, который позволяет осуществлять доступ, управление и обмен файлами через зашифрованную сессию SSH. Понятие «пользователь только для SFTP» подразумевает создание учетной записи, предназначенной исключительно для доступа к серверу через SFTP, без возможности использовать SSH-оболочку. Это гарантирует безопасный канал, позволяющий предоставлять ограниченный доступ к конкретным файлам и папкам.
В данном посте блога рассматривается процесс создания пользователей только для SFTP без доступа к оболочке в системах Ubuntu и Debian.
Для начала вам необходимо установить SSH-сервер, если он еще не установлен. Это можно сделать с помощью команды:
sudo apt update
sudo apt install openssh-server
После установки SSH-сервера, выполните следующие шаги для создания пользователя только для SFTP:
- Создайте новую учетную запись пользователя: Используйте команду:
- Создайте директорию для загрузки файлов: Определите, куда будет загружать файлы ваш пользователь, и создайте нужную директорию:
- Измените владельца и права доступа: Установите владельцем директории вашего нового пользователя:
- Настройте SSH для ограничения доступа: Откройте файл конфигурации SSH:
- Перезапустите SSH-сервер: После внесения изменений в конфигурацию перезапустите SSH-сервер:
sudo adduser имя_пользователя
sudo mkdir -p /home/имя_пользователя/uploads
sudo chown имя_пользователя:имя_пользователя /home/имя_пользователя/uploads
sudo nano /etc/ssh/sshd_config
Добавьте следующие строки в конец файла:
Match User имя_пользователя
ForceCommand internal-sftp
ChrootDirectory /home/имя_пользователя
AllowTcpForwarding no
X11Forwarding no
sudo systemctl restart ssh
Теперь ваш пользователь сможет подключаться только через SFTP и будет ограничен доступом к своей директории. Это позволяет обеспечить безопасность и контроль над файлами на вашем сервере.
Для проверки соединения вы можете использовать любой SFTP-клиент, например, FileZilla или встроенные средства командной строки, такие как:
sftp имя_пользователя@ваш_сервер
Эти шаги помогут вам создать безопасного пользователя только для SFTP в Ubuntu и Debian, обеспечивая при этом необходимые меры безопасности.
Содержание статьи
Шаг 1 — Создание нового пользователя
В первую очередь создайте учетную запись пользователя, которую вы будете использовать в качестве SFTP-пользователя. Воспользуйтесь следующей командой для создания новой учетной записи с именем sftpuser без доступа к оболочке. Вы можете выбрать любое имя для пользователя по своему усмотрению.
При выполнении команды вам будет предложено ввести пароль для новой учетной записи. Убедитесь, что пароль надежный, содержащий как минимум 8 символов, включая заглавные и строчные буквы, цифры и специальные символы. Это повысит безопасность вашей учетной записи.
Если вы хотите создать пользователя с ограниченными правами, добавьте опцию -s /sbin/nologin к команде создания пользователя, чтобы запретить доступ к оболочке. Например, команда может выглядеть так:
sudo useradd -s /sbin/nologin sftpuser
После создания пользователя рекомендуется сразу установить права доступа к директории, чтобы обеспечить безопасность данных. Для этого создайте для пользователя домашнюю директорию и измените права доступа с помощью команды:
sudo mkdir /home/sftpusersudo chown root:root /home/sftpusersudo chmod 755 /home/sftpuser
После этого создайте подкаталог, в который пользователь сможет загружать файлы:
sudo mkdir /home/sftpuser/uploadssudo chown sftpuser:sftpuser /home/sftpuser/uploads
Теперь вы можете перейти к следующему шагу настройки SFTP-сервера.
Создание каталога для SFTP
Теперь создайте структуру каталогов, которая будет доступна пользователю SFTP.
В данном случае мы предоставим доступ только к каталогу «files». Для этого выполните команду:
mkdir -p /var/sftp/files
Затем измените владельца каталога на sftpuser, чтобы SFTP-пользователь имел возможность читать и записывать только в этой директории. Файлы за пределами этой директории будут недоступны. Для изменения владельца используйте:
chown root:sftpuser /var/sftp
Установите владельцем и группой владельца для /var/sftp пользователя root. Это обеспечит root-учетной записи права на чтение и запись. Члены группы и другие учетные записи будут иметь только права на чтение и выполнение. Чтобы установить нужные права, выполните:
chmod 755 /var/sftp
Такой подход ограничит пользователей SFTP от записи файлов в каталоге /var/sftp. Также рекомендуется настроить параметры конфигурации сервера SFTP в файле sshd_config для дальнейшего ограничения прав доступа, добавив следующие строки:
Match User sftpuser
ChrootDirectory /var/sftp
ForceCommand internal-sftp
AllowTcpForwarding no
После внесения изменений не забудьте перезапустить службу SSH для применения новых настроек:
systemctl restart sshd
Эти шаги помогут вам создать безопасное окружение для пользователей SFTP, ограничивая их доступ к файловой системе.
Настройка sshd для работы только с SFTP
Файл /etc/ssh/sshd_config — это основной конфигурационный файл сервера OpenSSH. Будьте внимательны при его редактировании, так как ошибка может привести к потере подключения.
Отредактируйте файл конфигурации SSH в любом текстовом редакторе:
Затем добавьте следующие строки в конец файла.
Match User sftpuser ForceCommand internal-sftp PasswordAuthentication yes ChrootDirectory /var/sftp PermitTunnel no AllowAgentForwarding no AllowTcpForwarding no X11Forwarding no
Сохраните изменения и закройте файл.
Вот пояснение к директивам:
- Пользователь Match определяет имя пользователя, для которого будут применяться только настройки SFTP. В нашем случае это: sftpuser.
- ForceCommand internal-sftp заставляет пользователей использовать только SFTP-доступ и исключает возможность доступа к оболочке.
- Парольная аутентификация разрешена для данного пользователя.
- ChrootDirectory /var/sftp ограничивает пользователя доступом только к каталогам в этом пути. Здесь /var/sftp служит корневым каталогом для пользователя.
- Запретить пересылку агента нет. Это указывает, разрешена ли пересылка ssh-агента. По умолчанию — да.
- Запретить TCP-перенаправление. Это определяет, разрешено ли TCP-перенаправление. По умолчанию — да.
- X11Forwarding отключен. Указывает, разрешено ли графическому приложению работать.
Для повышения безопасности рекомендуется создать пользователя и директорию SFTP следующим образом:
sudo useradd -m sftpuser
sudo passwd sftpuser
sudo mkdir /var/sftp
sudo chown root:root /var/sftp
sudo chmod 755 /var/sftp
sudo mkdir /var/sftp/sftpuser
sudo chown sftpuser:sftpuser /var/sftp/sftpuser
Эти команды создадут пользователя sftpuser и настроят для него корневую директорию SFTP.
Перезапустите службу SSH для применения новых настроек:
sudo systemctl restart sshd
Важно отметить, что при использовании SFTP в режиме Chroot необходимо следить за правами доступа к директориям. Корневая директория Chroot должна принадлежать пользователю root, а все вложенные директории должны иметь права доступа 755 или 750.
Также рекомендуется регулярно обновлять сервер, чтобы защитить его от известных уязвимостей. Используйте команды:
sudo apt update
sudo apt upgrade
Всё готово. Вы успешно прошли инструкцию по созданию пользователя только для SFTP на системах Debian. Обязательно тестируйте подключение к SFTP после внесения изменений, чтобы убедиться, что всё работает корректно.
Советы по безопасности (Опции)
Вот несколько важных рекомендаций по безопасности для учетных записей SFTP в рабочей среде.
- Запускайте SSH-сервер на нестандартном порту.
- Запретите аутентификацию по паролю и настройте аутентификацию на основе ключей.
- Убедитесь, что брандмауэр ограничивает доступ только определенными IP-адресами.
- Держите пакет OpenSSH в актуальном состоянии.
- Регулярно проверяйте журналы доступа для выявления подозрительной активности.
- Используйте инструменты мониторинга для отслеживания состояния сервера и его безопасности.
- Ограничьте права пользователей, предоставляя им доступ только к необходимым ресурсам.
- Настройте автоматическое завершение сеансов после определенного времени бездействия.
- Используйте двухфакторную аутентификацию (2FA) для дополнительного уровня защиты.
- Регулярно создавайте резервные копии важных данных и конфигураций.
- Используйте шифрование для передаваемых данных для защиты информации в пути.
- Создавайте учетные записи с ограниченным доступом и минимальными правами.
- Периодически проводите аудит безопасности для выявления уязвимостей.
- Обучайте пользователей основам безопасности и правильному обращению с учетными записями.
Этот учебник описывает процесс создания пользователей только для SFTP в системе Ubuntu, отключая доступ к оболочке и ограничивая пользователей определенной директорией.
Добавлены пункты, касающиеся двухфакторной аутентификации, резервного копирования и шифрования данных.

