Настройка vsftpd в Ubuntu

Несмотря на популярность облачных систем хранения, достаточно часто появляется задача развертывания FTP-сервера. Рассмотрим как настроить vsftpd приложение с поддержкой SSL и IPv6 под ОС Ubuntu.

Vsftpd является акронимом и его следует понимать как Very Secure FTP Daemon - очень защищенный FTP-сервер.

Процесс установки разделим на два этапа - установку и настройку.

Установка в Ubuntu:

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

sudo apt-get update

sudo apt-get upgrade

sudo reboot

Теперь устанавливаем vsftpd:

sudo apt-get install vsftpd

Установка в CentOS:

Обновляем компоненты системы и перезагружаемся

yum update

reboot

Устанавливаем vsftpd:

yum install vsftpd

Запускаем службу:

service vsftpd start

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

Настроим vsftpd.

Отредактируем конфигурационные файлы. Важно помнить, что конфиги, в разных ОС, находятся в разных директориях.

Ubuntu:
nano /etc/vsftpd.conf

CentOS:

nano /etc/vsftpd/vsftpd.conf

Если анонимном доступе нет необходимости, то первым делом исправляем это в конфигурационном файле. Для этого находим строчку:

anonymous_enable=YES

Заменяем YES на NO. В последних версиях Ubuntu это не требуется, но проверка не будет лишней.

Следует обратить внимание, что некоторые строки закомментированы, т.е. перед ними стоит знак # (решетка/шарп). Для того чтобы пользователи могли записывать файлы в директорию, следует раскомментировать строки (т.е. удалить в самом начале строки символ #):

local_enable=YES

write_enable=YES

Соответственно, если по умолчанию указан параметр NO, то заменяем на YES.

Чтобы пользователи не получили доступ в другие каталоги сервера, раскомментируем строку:

chroot_local_user=YES

Также, если по умолчанию указан параметр NO, то заменяем на YES.

Сохраняем конфигурационный файл и перезапускаем сервер командой:

service vsftpd restart

Проверяем запустилась ли служба:

service vsftpd status

Если все успешно, то система выведет соответствующее сообщение.

Иногда, при запуске, появляется сообщение "refusing to run with writable root inside chroot". Данная ошибка появляется в последних версиях vsftpd, когда служба запускается не от пользователя root. Исправляем.

Создаем пользователя:

adduser <USER_NAME>

Добавляем пользователя в sudo:

adduser <USER_NAME> sudo

Создаем директорию внутри пользовательской:

mkdir /home/<USER_NAME>/userfiles

Меняем владельца каталога на root:

chown root:root /home/<USER_NAME>

Перезапускаем службу:

sudo service vsftpd restart

Если подключение не удается - настраиваем файрволл.

В Ubuntu это делается с помощью ufw:

sudo ufw allow 20/tcp

sudo ufw allow 21/tcp

В CentOS, как и во всех остальных случаях, можно использовать iptables:

sudo iptables -A INPUT -p tcp --dport 20 -m state --state NEW,ESTABLISHED -j ACCEPT

sudo iptables -A OUTPUT -p tcp --sport 20 -m state --state ESTABLISHED -j ACCEPT

sudo iptables -A INPUT -p tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT

sudo iptables -A OUTPUT -p tcp --sport 21 -m state --state ESTABLISHED -j ACCEPT

Проверка соединения выполняется подключением к серверу, например, из окна браузера по ссылке вида: ftp://<IP-address>

Система запросит ввод логина и пароля. Следует указать системные пользовательские данные.

Также, можно использовать любой ftp-клиент, например Filezilla.