Vsftpd. Centos 7

Материал из Wiki
Перейти к навигации Перейти к поиску

Предварительные настройки

Отключаем 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

Готово!