Приветствую всех. Сегодня я расскажу о настройке простого и в то же время безопасного FTP сервера vsftpd, который распространяется под лицензией GPL, работающий на UNIX системах, включая Linux. Он является безопасным и быстрым в работе, так же стоит отметить его стабильность.
Особенности:
- поддержка виртуальных хостов
- возможность создания виртуальных пользователей
- может работать как самостоятельный демон или совместно с inetd
- гибкая конфигурация
- поддержка ограничения скорости канала
- поддержка IPv6
- поддержка SSL
- и многое другое
vsftpd используется такими популярными проектами, как FreeBSD, GNU, KDE (полный список).
Теперь ближе к делу... Лезем в порты и ставим сервер:
# cd /usr/ports/ftp/vsftpd
# make install clean
По окончанию установки правим конфиг, у меня он получился таким:
# Разрешить анонимным пользователям вход на FTP сервер?
anonymous_enable=NO
#
# Разрешить локальным пользователям входить на сервер.
local_enable=YES
#
# Разрешить любые FTP команды записи.
write_enable=YES
#
# Маска для новых файлов
local_umask=027
#
# Разрешить анонимным пользователям заливать файлы на сервер.
# Не забудьте создать директорию с правами на запись, принадлежащую
# пользователю FTP.
anon_upload_enable=NO
#
# Разрешить анонимным пользователям создавать новые директории.
anon_mkdir_write_enable=NO
#
# Активировать сообщения в директориях.
dirmessage_enable=YES
#
# Включить лог закачки/скачки.
xferlog_enable=YES
#
# Передавать данные через 20 порт (ftp-data)?
connect_from_port_20=NO
#
# Если вы хотите сделать так, чтобы загруженными файлами анонимных
# пользователей владел другой пользователь, то включите эту опцию.
# Не рекомендуются использовать для этих целей пользователя - 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
#
# Здесь рекомендуется указывать непривилегированного пользователя в системе
nopriv_user=nobody
#
# Включить, чтобы сервер обрабатывал асинхронные ABOR запросы.
# Не рекомендуется по соображениям безопасности.
async_abor_enable=NO
#
# Разрешить скачку/закачку в ASCII режиме. На некоторых ftp серверах
# через подобнуу фичу можно вызвать отказ в обслуживании (DoS),
# используя команду "SIZE /big/file" в ASCII режиме.
# vsftp может определить подобную атаку и предотвратить.
ascii_upload_enable=NO
ascii_download_enable=NO
#
# Приветственное сообщение:
ftpd_banner=Welcome to FTP server.
#
# Вы можете указать запрещенные email адреса для входа анонимным пользователям.
#deny_email_enable=YES
# (default follows)
#banned_email_file=/etc/vsftpd.banned_emails
#
# chroot,ить локальных пользователей в домашнюю папку?
# Так же вы можете указать список пользователей, которых нужно chroot,ить.
# Если chroot_local_user включено, тогда пользователи в том списке
# не будут запираться в домашней папке.
chroot_local_user=YES
chroot_list_enable=NO
# (default follows)
#chroot_list_file=/etc/vsftpd.chroot_list
#
# Включить обработку опции "-R" в команде ls. Эта фишка отключена по умолчанию,
# для исключения ситуации, при которой удаленные пользователи могут вызвать
# большое количество операций ввода/вывода.
ls_recurse_enable=YES
#
# При включенной опции, vsftpd работает в режиме демона.
# Эта опция не может совместно использоваться с listen_ipv6.
listen=NO
#
# Подключать клиентов через IPv6 сокеты. Для подключения клиентов через IPv4 и IPv6
# сокеты, вы должны запускать два демона vsftpd, то есть использовать два конф. файла.
# Одна из опций listen всегда должна быть закомментирована!!
#listen_ipv6=YES
secure_chroot_dir=/usr/local/share/vsftpd/empty
# Для использования vsftpd в режиме демона, раскомментируйте следующие две строки:
# listen=YES
# background=YES
# The maximum port to allocate for PASV style data connections.
# Can be used to specify a narrow port range to assist fire-
# walling.
pasv_max_port=65000
# The minimum port to allocate for PASV style data connections.
# Can be used to specify a narrow port range to assist fire-
# walling.
pasv_min_port=60000
Теперь, когда конфиг готов, запустим установленный сервис. У меня он будет работать через inted, поэтому в файл /etc/inetd.conf я добавил следующую строку:
ftp stream tcp nowait root /usr/local/libexec/vsftpd vsftpd /usr/local/etc/vsftpd.conf
Заставляем inetd перечитать конфиг:
# service inetd reload
Проверим, висит ли сервис на нужном порту:
# sockstat -4 | grep 21
root inetd 1220 5 tcp4 *:21 *:*
Если сервис работает, то на этом настройка FTP сервера закончена. Если же нет, то читайте логи и проверяйте конфиг.
Добавить комментарий