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

17.01.2011 - 23:32

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

За 24 часов, Vsftpd обслужил 2.6TB с одновременным число пользователей более 1500. Это на одной машине!

Основные функциональные характеристики:
* Виртуальные IP;
* Виртуальные пользователи;
* работает как отдельно так и через inetd;
* Мощная система конфигурирования для каждого пользователя;
* Полосы пропускания;
* Настройка для каждого IP;
* Установка лимитов для каждого IP;
* Поддержка протокола IPv6;
* Поддержка шифрования SSL путем интеграции;

Прошел кратко по офсайту и увидел список FTP-серверов которые доверяют vsftpd. После того, как увидел в нем ftp.freebsd.org, решил нужно ставить.
Обновляем порты удобным вам способом и начинаем инсталить:

[root@srv /]# cd /usr/ports/ftp/vsftpd
[root@srv /usr/ports/ftp/vsftpd]# make config

В окне "Options for vsftpd 2.3.2" выбираем:
[X] RC_NG       install RC_NG script(установим скрипты управления демоном в /usr/local/etc/rc.d)
[ ] VSFTPD_SSL  Include support for SSL
[ ] PIDFILE     unofficial support for pidfile

[root@srv /usr/ports/ftp/vsftpd]# make install clean

Настроим vsftpd с авторизацией пользователей по login\password, для этого соответственно отредактируем конфиг:
[root@srv /usr/local/etc]#cat /usr/local/etc/vsftpd.conf
# По желанию, можно задать на каком интерфейсе слушать запросы или закомментировать(слушать все!).
listen_address=192.168.0.1

# Выключение анонимного режима FTP.
anonymous_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO

# Разрешаем работать в фоновом режиме.
background=YES

# Запираем каждого юзера в свою клелку.
chroot_local_user=YES

# Каждый путь к клетке юзера, берется из домашних директорий с /etc/passwd.
passwd_chroot_enable=YES

# Если "chroot_local_user=NO", тогда в файле /etc/ftp_chroot_list прописываем кого, куда чрутить.
#chroot_list_enable=YES
#chroot_list_file=/etc/ftp_chroot_list

# Разрешаем локальным юзерам использовать FTP-сервер.
local_enable=YES

# Разрешить просматривать каталоги рекурсивно с опцией "-R" для ls.
ls_recurse_enable=YES

# Разрешаем или запрещаем юзерам записывать файлы
write_enable=YES

# Работать в автономном режиме?
listen=YES

# Разрешения, с которыми создаются закачиваемые файлы.
file_open_mode=0600

# Этот каталог должен быть пустым, так как он используется chroot() клеткой во время, когда vsftpd не запрашивает доступ к файловой системе.
secure_chroot_dir=/var/empty

# Указываем  диапазон портов для пассивного режима например (30000:50000). Так же не забываем потом их открыть у у себя на фаерволе.
pasv_min_port=30000
pasv_max_port=50000

# Максимально разрешенная скорость передачи данных (байт/c), для локальных пользователей.
local_max_rate=25600

# Разрешить использование списка пользователей .
userlist_enable=YES

# Путь к файлу списка разрешенных или запрещенных пользователей.
userlist_file=/etc/user_list

# Включаем userlist, указываем расположение файла, а так же действие.
# "userlist_deny=NO" - Список будет белым. Запрещены все, кто явно не разрешены.
# "userlist_deny=YES" - Список будет черным. Расрешены все, кто явно не запрещены.
userlist_deny=NO

# Разрешаем записывать в лог, кто чего делал.
xferlog_enable=YES

# Местоположение того самого лога.
xferlog_file=/var/log/vsftpd.log

# Разрешаем соединение по 20-м порту.
connect_from_port_20=YES

# Поддержка древних FTP клиентов.
async_abor_enable=YES

# Используем родное время, а не GMT.
use_localtime=YES

# Ограничение на количество сесий с одного IP.
max_per_ip=4

# Что бы юзеры создавали файлы с правами - 775.
local_umask=001

# Данные будут скачиваться и закачиваться  в аски.
ascii_download_enable=YES
ascii_upload_enable=YES

# Приветствие при входе.
ftpd_banner=Hello! This my FTP!

# Разрешить просматривать файлы которые начинаются с точки (скрытые)
force_dot_files=NO

Создаем файл для пользователей, каджый пользователь с новой строки.
[root@srv /]# touch /etc/user_list

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

Создаем каталоги:

[root@srv /]# mkdir -p /var/ftp/incoming
[root@srv /]# mkdir -p /var/ftp/public
[root@srv /]# chmod 777 /var/ftp/incoming/
[root@srv /]# chmod 555 /var/ftp/public/
[root@srv /]# chmod 555 /var/ftp
[root@srv /]# chown -R ftp:wheel /var/ftp

Добавим в /etc/rc.conf для автостарта:

vsftpd_enable="YES"

Запускаем:
[root@srv /]# /usr/local/etc/rc.d/vsftpd start
Starting vsftpd.

Смотрим поднялся ли он?
[root@srv /]# /usr/local/etc/rc.d/vsftpd status
vsftpd is running as pid 11564.

Пробуем коннектиться:

[root@srv /]# ftp 192.168.0.1
Connected to 192.168.0.1.
220 Hello! This my FTP!
Name (192.168.0.1:root): ftp
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>

Обсуждения на форуме: тут.
Удачи!

Ваша оценка: Нет Средняя: 4.2 (12 votes)