Инструменты пользователя

Инструменты сайта


vsftpd

Установка и настройка vsftpd

vsftpd - Very Secure FTP Daemon.
Программное обеспечение vsftpd являеться FTP-сервером «по умолчанию» для многих операционных систем. Обслуживает репозитории крупные репозитории Debian/RedHat/FreeBSD/OpenBSD 1).

Ссылки

Настройка

Перед началом настройки рекомендуется проанализировать риски, связанные с внедрением ftp-сервера в существующую инфраструктуру.

Настройка vsftpd выполняется путём редактирования файла vsftpd.conf. Ниже представлены описания некоторых ключевых параметров2).

Основные настройки

Общие настройки

  • dirmessage_enable=YES - разрешить вывод сообщения из .message при переходе в каталог;
  • xferlog_enable=YES - разрешить ведение лога операций (создание / удаление). Включать обязательно!
    • следует обратить внимание, что в руководстве есть описание параметра dual_log_enable. Подобная практика вводится на случай, если отчёты о работе ftp-сервера требуется просматривать не только root, но и другому пользователю.
  • connect_from_port_20=YES - разрешить использование порт 20;
  • xferlog_std_format=YES - ведение лога в «стандартном» формате для xferlog (дата и время в формате UNIX, например);
  • idle_session_timeout=1200 - значение интервала (в секундах) после достижения которого сессия будет разорвана сервером;
  • data_connection_timeout=240 - аналогично idle_session_timeout, но касается передачи данных;
  • ascii_upload_enable=NO - запретить загрузку файлов в режиме ASCII3);
  • ascii_download_enable=NO - запретить скачивание файлов в режиме ASCII4);
  • userlist_enable=YES - запрет на выполнение входа пользователям из файла user_list (root, nobody и т.д.). Если потребуется заблокировать доступ к ftp-серверу какому-либо пользователю, то достаточно добавить имя в user_list;
  • listen=YES - указываем на режим запуска в качестве «фонового приложения»;
  • ls_recurse_enable=NO - запретить выполнение ls -R, т.к. при большом количестве файлов/каталогов выполнение команды может заметно загрузить сервер;
  • ftpd_banner=$your_text_here - приветствие при входа на FTP-сервер;
  • banner_file=$path_to_file - сообщение при выполнение операции login. На многих (преимущественно «публичных») серверах в тексте сообщения размещаются такие важные данные, как license agreement или privacy policies;
  • local_umask=022 - маска при создании файла;
  • file_open_mode=0666 - режим chmod для Apache (в том случае, если планируется разворачивать web-хостинг).

Если установлены директивы local_umask=022 и file_open_mode=0666, то файлы будут создаваться с правами 644, а каталоги с 755, что идеально подходит для большинства условий хостинга;

  • chmod_enable=YES - возможность установки прав на файл. Менять данный параметр рекомендуется лишь в случае работы ftp-сервера с анонимными пользователями.
  • cmds_allowed=[ABOR,APPE,CWD,DELE,HELP,LIST,MDTM,MKD,NLST,PASS,PASV,PWD,QUIT,RETR,RMD,RNFR,RNTO,SIZE,STOR,TYPE,USER] - список разрешённых команд. Я бы рекомендовал дополнить список командами: NOOP, CDUP.

Доступ для анонимных пользователей

  • anonymous_enable=YES - разрешить подключение для анонимных пользователей, чтение файлов;
  • anon_upload_enable=YES - разрешить анонимным пользователям загружать файлы;
  • anon_mkdir_write_enable=YES - разрешить анонимным пользователям создавать директории.

Доступ по имени/паролю

Основные настройки

  • установить значение anonymous_enable=NO, остальные строки anon_* закомментировать;
  • local_enable=YES - разрешить авторизацию для локальных пользователей;
  • write_enable=YES - разрешить любую форму записи (команды: STOR, DELE, RNFR, RNTO, MKD, RMD, APPE, SITE; однако директива cmds_allowed является вышестоящей и может частично или полностью отменить набор команд).

Ограничение пользователей домашней директорией (chroot)
Зачастую бывает необходимо ограничить доступ пользователя только входом в домашнюю директорию. С точки зрения безопасности настоятельно рекомендуется использовать именно этот метод.

  • chroot_list_enable=YES - использовать список пользователей для которых доступ ограничен только домашней директорией;
  • chroot_list_file=$path_to_file[chroot_list] - расположение списка пользователей для которых ограничен доступ.

Вопросы и ответы

  • Q: Как предоставить доступ пользователю (в том числе на запись), если его рабочее пространство ограничено домашним каталогом?
  • A: С помощью команды mount –bind.

Пример. Необходимо предоставить пользователю user1 в группе group1 доступ к каталогу /var/www/html.

  • # cd /home/user1
  • # mkdir html
  • # chown user1:group1 html
  • # mount –bind /home/user1/html /var/www/html

Если требуется монтировать директорию при каждом запуске (а не on-demad), то следует отредактировать файл /etc/fstab:

/home/user1/html   /var/www/html                    bind    defaults,bind   0 0

  • Q: Как ограничить пользователя в использовании места на жёстком диске?
  • A: Использовать дисковые квоты:
  • 1. Отредактировать /etc/fstab:
/dev/mapper/vg_test-lv_root / ext4   defaults,usrjquota=aquota.user,grpjquota=aquota.grp,acl,jqfmt=vfsv0    1 1
  • 2. Создать файлы квот:
# quotacheck -cvugm /
  • 3. Установить квоту для пользователя. Для этого следует отредактировать значения soft и hard. В данном примере для пользователя user1 установлено ограничение на 10 Gb без предупреждения о приближении к пороговому значению (напоминаю, что значение квоты указывается в блоках по формуле: 10000MB x 1024K = 10240000 blocks [10 Gb]):
# edquota user1
...
Disk quotas for user user1 (uid 1001):
  Filesystem                   blocks       soft       hard     inodes     soft     hard
  /dev/mapper/vg_test-lv_root       4          0   10240000          1        0        0
  • 4. Включить квоту:
# quotaon -avug
  • 5. Проверить состояние квоты:
# quota user1
...
для всех пользователей:
# repquota -a

  • Q: Как ограничить количество подключений с одного IP или всего?
  • A: Использовать директивы max_clients и max_per_ip в конфигурационном файле vsftpd.conf.

  • Q: Какие настройки нужно выполнить чтобы пользователя мог подключаться только по ftp (а работа с ssh/telnet/ pst была запрещена)?
  • A: Необходимо отредактировать файл /etc/passwd, указав в качестве shell /sbin/nologin.

Пример. Необходимо ограничить вход пользователя в систему, запретив подключение по ssh/telnet/pst, разрешив при этом доступ по ftp.

# vi /etc/passwd
~
...
user1:x:1001:2001::/home/user1:/sbin/nologin
:wq

  • Q: Пример конфигурационного файла (Linux CentOS).
  • A: /etc/vsftpd/vsftpd.conf:
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
idle_session_timeout=1200
data_connection_timeout=240
ftpd_banner=Welcome to unixlikeos.ru server!
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
2) последовательно; в соответствии с расположением в vsftpd
3) , 4) защита от DoS атак
vsftpd.txt · Последние изменения: 2014/05/22 10:39 — Alex