Как ограничить доступ к папкам пользователей с помощью VSFTP?

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

Я пытаюсь использовать VSFTPD с следующей конфигурацией на виртуальной машине с Ubuntu 14.04. Я могу войти на свой виртуальный sftp-сервер нормально, но пользователь client может перемещаться между папками, где этого не должно быть. Кто-нибудь знает, почему это происходит?

# Пример конфигурационного файла /etc/vsftpd.conf
#
# Скомпилированные настройки по умолчанию довольно осторожны. Этот пример файла
# немного ослабляет ограничения, чтобы сделать ftp-демона более удобным.
# Пожалуйста, смотрите vsftpd.conf.5 для всех скомпилированных параметров по умолчанию.
#
# ПРОЧИТАЙТЕ ЭТО: Этот пример файла НЕ является исчерпывающим списком опций vsftpd.
# Пожалуйста, ознакомьтесь с руководством vsftpd.conf.5, чтобы получить полное представление о возможностях vsftpd.
#
#
# Запуск в отдельном режиме? vsftpd может работать как из inetd, так и как отдельный
# демон, запущенный из initscript.
listen=YES
#
# Запуск в отдельном режиме с IPv6?
# Подобно параметру listen, но vsftpd будет слушать на сокете IPv6
# вместо сокета IPv4. Этот параметр и параметр listen являются взаимоисключающими.
#listen_ipv6=YES
#
# Разрешить анонимный FTP? (Отключено по умолчанию)
anonymous_enable=NO
#
# Уберите комментарий, чтобы разрешить локальным пользователям входить в систему.
local_enable=YES
#
# Уберите комментарий, чтобы включить любую форму FTP-команды записи.
write_enable=YES
#
# Значение umask по умолчанию для локальных пользователей - 077. Вы можете изменить его на 022,
# если ваши пользователи этого ожидают (022 используется многими другими ftpd)
#local_umask=022
#
# Уберите комментарий, чтобы позволить анонимному FTP-пользователю загружать файлы. Это будет
# иметь эффект только если вышеуказанное глобальное разрешение записи активно. Также вам
# очевидно нужно будет создать директорию, доступную для записи FTP-пользователем.
#anon_upload_enable=YES
#
# Уберите комментарий, если хотите, чтобы анонимный FTP-пользователь мог создавать
# новые директории.
#anon_mkdir_write_enable=YES
#
# Активировать сообщения о директориях - сообщения, отправляемые удаленным пользователям, когда они
# заходят в определенную директорию.
dirmessage_enable=YES
#
# Если включено, vsftpd будет отображать списки директорий с временем
# в вашем местном часовом поясе. По умолчанию отображается GMT. Времена, возвращаемые 
# командой FTP MDTM, также подвержены действию этого
# параметра.
use_localtime=YES
#
# Активировать ведение логов загрузок/выгрузок.
xferlog_enable=YES
#
# Убедитесь, что соединения передачи PORT происходят с порта 20 (ftp-data).
connect_from_port_20=YES
#
# Если хотите, вы можете организовать так, чтобы загруженные анонимные файлы принадлежали
# другому пользователю. Внимание! Использование "root" для загруженных файлов не
# рекомендуется!
#chown_uploads=YES
#chown_username=whoever
#
# Вы можете переопределить место, куда будет записываться файл журнала, если хотите. По умолчанию это показано
# ниже.
#xferlog_file=/var/log/vsftpd.log
#
# Если хотите, вы можете иметь свой файл журнала в стандартном формате ftpd xferlog.
# Обратите внимание, что в этом случае местоположение файла журнала по умолчанию - /var/log/xferlog.
#xferlog_std_format=YES
#
# Вы можете изменить значение по умолчанию для таймаута бездействующей сессии.
#idle_session_timeout=600
#
# Вы можете изменить значение по умолчанию для таймаута соединения данных.
#data_connection_timeout=120
#
# Рекомендуется определить на вашей системе уникального пользователя, который будет
# использоваться ftp-сервером как полностью изолированный и неприоритетный пользователь.
#nopriv_user=ftpsecure
#
# Включите это, и сервер будет распознавать асинхронные запросы ABOR. Не
# рекомендуется для безопасности (код не тривиален). Не включая это,
# вы можете запутать старые FTP-клиенты.
#async_abor_enable=YES
#
# По умолчанию сервер будет делать вид, что разрешает ASCII-режим, но на самом деле игнорирует
# запрос. Включите следующие параметры, чтобы сервер действительно выполнял
# ASCII-искажение файлов в ASCII-режиме.
# Обратите внимание, что на некоторых FTP-серверах поддержка ASCII позволяет осуществить атаку отказа в обслуживании
# (DoS) через команду "SIZE /big/file" в ASCII-режиме. vsftpd
# предсказал эту атаку и всегда оставался безопасным, сообщая размер
# необработанного файла.
# ASCII-искажение - ужасная особенность протокола.
#ascii_upload_enable=YES
#ascii_download_enable=YES
#
# Вы можете полностью настроить строку баннера для входа:
#ftpd_banner=Добро пожаловать в blah FTP-сервис.
#
# Вы можете указать файл с запрещенными анонимными адресами электронной почты. Это, по-видимому,
# полезно для борьбы с некоторыми атаками DoS.
#deny_email_enable=YES
# (по умолчанию)
#banned_email_file=/etc/vsftpd.banned_emails
#
# Вы можете ограничить локальных пользователей только их домашними директориями. Смотрите FAQ для
# возможных рисков перед использованием chroot_local_user или
# chroot_list_enable ниже.
chroot_local_user=YES
#
# Вы можете указать явный список локальных пользователей, которых следует chroot() к их домашней
# директории. Если chroot_local_user установлен на YES, тогда этот список станет списком
# пользователей, которых НЕ следует chroot().
# (Внимание! chroot может быть очень опасным. Если используете chroot, убедитесь, что
# пользователь не имеет прав на запись в верхнюю директорию внутри
# chroot)
#chroot_local_user=YES
#chroot_list_enable=YES
# (по умолчанию)
#chroot_list_file=/etc/vsftpd.chroot_list
#
# Вы можете активировать опцию "-R" для встроенной команды ls. Это отключено по
# умолчанию, чтобы избежать чрезмерного ввода-вывода со стороны удаленных пользователей на больших
# сайтах. Тем не менее, некоторые неработающие FTP-клиенты, такие как "ncftp" и "mirror", предполагают
# наличие опции "-R", поэтому есть серьезные основания для ее включения.
#ls_recurse_enable=YES
#
# Настройка
#
# Некоторые из настроек vsftpd по умолчанию не подходят для файловой системы.
#
# Эта опция должна быть именем директории, которая пуста. Также,
# директория не должна быть записываемой пользователем ftp. Эта директория используется 
# как безопасная тюрьма chroot() в те моменты, когда vsftpd не требует доступа к файловой системе.
secure_chroot_dir=/var/run/vsftpd/empty
#
# Эта строка - имя сервиса PAM, который будет использовать vsftpd.
pam_service_name=vsftpd
#
# Эта опция указывает местоположение RSA-сертификата, который будет использоваться для SSL
# зашифрованных соединений.
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
# Эта опция указывает местоположение RSA-ключа, который будет использоваться для SSL
# зашифрованных соединений.
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
require_ssl_reuse=NO
ssl_ciphers=HIGH

Насколько я понимаю, vsftpd использует существующих системных пользователей. И у них всегда
одни и те же права доступа, что и у этого пользователя.

Если вы хотите, чтобы кто-то мог получать доступ только к определенным папкам, вам нужно будет добавить нового системного пользователя (или виртуального пользователя) с соответствующими правами доступа и использовать его для входа в систему.

https://serverfault.com/questions/544850/create-new-vsftpd-user-and-lock-to-specify-home-login-directory

Вам нужно будет раскомментировать строку:

chroot_local_user=YES

Также измените режим доступа на 555

sudo chmod [the_users_directory] 555

Затем перезапустите сервис vsftpd, чтобы изменения вступили в силу:

sudo restart vsftpd

Вы также можете указать это поведение только для определенных пользователей, раскомментировав строки chroot_list_enable=YES и chroot_list_file=/etc/vsftpd.chroot_list и создав список конкретных пользователей в файле /etc/vsftpd.chroot_list.

Для конкретных пользователей (строки в /etc/vsftpd.conf, которые затрагиваются):

chroot_list_enable=YES
chroot_list_enable=YES

Ответ или решение

Чтобы ограничить доступ к пользовательской папке с помощью VSFTPD на вашем сервере Ubuntu 14.04, необходимо внести некоторые изменения в файл конфигурации vsftpd.conf и убедиться, что права доступа к папкам настроены правильно. Вот подробное руководство по этому процессу:

1. Откройте файл конфигурации vsftpd

Сначала вы должны отредактировать файл конфигурации vsftpd. Откройте терминал и выполните следующую команду:

sudo nano /etc/vsftpd.conf

2. Включите переменные chroot

Чтобы ограничить пользователей их домашними директориями, вам нужно раскомментировать следующие строки в файле конфигурации:

chroot_local_user=YES

Это ограничит всех местных пользователей их домашними папками.

Если вы хотите ограничить только определённых пользователей, раскомментируйте следующие строки:

chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list

3. Настройка прав доступа к папкам

Папка, к которой вы хотите ограничить доступ, должна иметь правильные права доступа. Обычно это права 555, что представляет собой режим только для чтения. Для этого выполните следующую команду:

sudo chmod 555 /path/to/user/directory

Замените /path/to/user/directory на реальный путь к директории пользователя.

4. Создание файла chroot_list (при необходимости)

Если вы выбрали опцию ограничения доступа только для некоторых пользователей, создайте файл /etc/vsftpd.chroot_list и добавьте в него имена пользователей, которых вы хотите ограничить. Например:

sudo nano /etc/vsftpd.chroot_list

Добавьте имена пользователей (по одному на строку), которым вы хотите запретить доступ к другим директориям:

user1
user2

5. Перезапустите службу vsftpd

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

sudo service vsftpd restart

6. Проверка конфигурации

После перезапуска службы проверьте, может ли пользователь входить в систему и ограничен ли он своей домашней директорией. Попробуйте подключиться к FTP-серверу от имени пользователя и убедитесь, что он не может перемещаться за пределами своей домашней директории.

Заключение

Следуя этим шагам, вы сможете успешно ограничить доступ пользователей к их домашним папкам на сервере с установленным VSFTPD. Обязательно проверяйте права доступа и настройки безопасности, чтобы обеспечить надёжность вашего FTP-сервера. Если у вас возникли вопросы или трудности, обратитесь к документации к VSFTPD или к сообществам, специализирующимся на администрировании серверов.

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

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