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