Vsftpd. Centos 7
Предварительные настройки
Отключаем SELinux
setenforce 0
sed -i "s/SELINUX=enforcing/SELINUX=disabled/" /etc/selinux/config
reboot
Обновляем систему
yum update -y
Установка
Запускаем процесс установки
yum install vsftpd
Правим конфиг
nano /etc/vsftpd/vsftpd.conf
anonymous_enable=NO local_enable=YES write_enable=YES local_umask=022 dirmessage_enable=YES log_ftp_protocol=YES xferlog_enable=YES xferlog_file=/var/log/vsftpd.log connect_from_port_20=YES chroot_local_user=YES listen=YES pam_service_name=vsftpd userlist_enable=YES userlist_deny=NO userlist_file=/etc/vsftpd/user_list tcp_wrappers=YES allow_writeable_chroot=YES pasv_min_port=40900 pasv_max_port=40999 # Показывать файлы, начинающиеся с точки #force_dot_files=YES
anonymous_enable - разрешает подключение анонимных пользователей, поэтому мы отключаем такую возможность
chroot_local_user - запрещает выход за пределы домашней директории пользователя
allow_writeable_chroot - разрешает подключения пользователю, у которого есть права на запись в корневую директорию
pasv_min_port=40900; pasv_max_port=40999 - это диапазон динамических портов, которые будут использоваться vsFTPd. Данный диапазон важно указывать, если используется брандмауэр. Сам диапазон можно задать любой из незарегистрированных портов.
Комментируем строчку в файле /etc/pam.d/vsftpd
В противном случае будет ошибка 503
Эта строка запрещает логиниться пользователям, которым запрещено логиниться shell'ом
nano /etc/pam.d/vsftpd
... #auth required pam_shells.so ...
Добавляем правила в брандмауэр для корректной работы FTP-сервера
firewall-cmd --permanent --add-port=20-21/tcp
firewall-cmd --permanent --add-port=40900-40999/tcp
firewall-cmd --reload
Лог файл
touch /var/log/vsftpd.log && chmod 600 /var/log/vsftpd.log
Разрешаем автозапуск vsFTPd и запускаем его:
systemctl enable vsftpd
systemctl start vsftpd
По умолчанию, к vsFTPd нельзя подключиться с использованием учетной записи root. Поэтому нужно использовать другую пользовательскую запись или создать новую следующей командой
useradd ftpuser -d /home/ftpuser -s /sbin/nologin
ftpuser - имя учетной записи
/home/ftpuser - домашняя директория
/sbin/nologin - запрещает локальный вход в систему
Задаем пароль новому пользователю
passwd ftpuser
Добавляем пользователя в список пользователей, разрешенных для подключения по фтп
echo 'ftpuser' >> /etc/vsftpd/user_list
Базовая настройка закончена — можно пробовать подключаться к FTP-серверу.
Далее можно настроить шифрование передачи данных
vsFTPd через TLS
TLS позволяет настроить безопасный FTP, передача данных через который осуществляется по зашифрованному каналу.
Создаем сертификат:
* в данном примере мы создаем самоподписный сертификат на 4 года для URL test.domain.local или test.
Обратите внимание, это один файл, в котором содержится открытый и закрытый ключи.
openssl req -new -x509 -days 1461 -nodes -out /etc/vsftpd/vsftpd.pem -keyout /etc/vsftpd/vsftpd.pem -subj "/C=RU/ST=SPb/L=SPb/O=Global Security/OU=IT Department/CN=test.domain.local/CN=test"
Открываем на редактирование конфигурационный файл vsFTPd
И дописываем в него следующее:
nano /etc/vsftpd/vsftpd.conf
... ssl_enable=YES allow_anon_ssl=NO force_local_data_ssl=NO force_local_logins_ssl=NO ssl_tlsv1=YES ssl_sslv2=NO ssl_sslv3=NO rsa_cert_file=/etc/vsftpd/vsftpd.pem
ssl_enable - разрешает использование шифрования;
allow_anon_ssl - разрешает использовать SSL анонимным пользователям;
force_local_data_ssl - требует использования шифрования, и если установить YES, клиенты без шифрования не смогут подключиться;
force_local_logins_ssl - также требует подключение по SSL;
ssl_tlsv1 - использовать TLS версии 1;
ssl_sslv2 - использовать SSL версии 2;
ssl_sslv3 - использовать SSL версии 3;
rsa_cert_file - путь к сертификату.
Перезапускаем FTP-сервер:
systemctl restart vsftpd
Готово!