Vsftpd. Centos 7: различия между версиями
Cless (обсуждение | вклад) (Создана пустая страница) |
Cless (обсуждение | вклад) |
||
| (не показана 1 промежуточная версия этого же участника) | |||
| Строка 1: | Строка 1: | ||
== Предварительные настройки == | |||
Отключаем SELinux | |||
<code>setenforce 0</code> | |||
<code>sed -i "s/SELINUX=enforcing/SELINUX=disabled/" /etc/selinux/config</code> | |||
<code>reboot</code> | |||
Обновляем систему | |||
<code>yum update -y</code> | |||
== Установка == | |||
Запускаем процесс установки | |||
<code>yum install vsftpd</code> | |||
Правим конфиг | |||
<code>nano /etc/vsftpd/vsftpd.conf</code> | |||
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'ом | |||
<code>nano /etc/pam.d/vsftpd</code> | |||
... | |||
#auth required pam_shells.so | |||
... | |||
Добавляем правила в брандмауэр для корректной работы FTP-сервера | |||
<code>firewall-cmd --permanent --add-port=20-21/tcp</code> | |||
<code>firewall-cmd --permanent --add-port=40900-40999/tcp</code> | |||
<code>firewall-cmd --reload</code> | |||
Лог файл | |||
<code>touch /var/log/vsftpd.log && chmod 600 /var/log/vsftpd.log</code> | |||
Разрешаем автозапуск vsFTPd и запускаем его: | |||
<code>systemctl enable vsftpd</code> | |||
<code>systemctl start vsftpd</code> | |||
По умолчанию, к vsFTPd нельзя подключиться с использованием учетной записи root. Поэтому нужно использовать другую пользовательскую запись или создать новую следующей командой | |||
<code>useradd ftpuser -d /home/ftpuser -s /sbin/nologin</code> | |||
'''''ftpuser''''' - имя учетной записи | |||
'''''/home/ftpuser''''' - домашняя директория | |||
'''''/sbin/nologin''''' - запрещает локальный вход в систему | |||
Задаем пароль новому пользователю | |||
<code>passwd ftpuser</code> | |||
Добавляем пользователя в список пользователей, разрешенных для подключения по фтп | |||
<code>echo 'ftpuser' >> /etc/vsftpd/user_list</code> | |||
Базовая настройка закончена — можно пробовать подключаться к FTP-серверу. | |||
Далее можно настроить шифрование передачи данных | |||
== vsFTPd через TLS == | |||
TLS позволяет настроить безопасный FTP, передача данных через который осуществляется по зашифрованному каналу. | |||
Создаем сертификат:<blockquote>* в данном примере мы создаем самоподписный сертификат на 4 года для URL test.domain.local или test.</blockquote>Обратите внимание, это один файл, в котором содержится открытый и закрытый ключи. | |||
<code>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"</code> | |||
Открываем на редактирование конфигурационный файл vsFTPd | |||
И дописываем в него следующее: | |||
<code>nano /etc/vsftpd/vsftpd.conf</code> | |||
... | |||
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-сервер: | |||
<code>systemctl restart vsftpd</code> | |||
Готово! | |||
[[Категория:Vsftpd]] | |||
[[Категория:FTP]] | |||
__ОБЯЗАТЕЛЬНОЕ_ОГЛАВЛЕНИЕ__ | |||
Текущая версия на 22:32, 13 июля 2023
Предварительные настройки
Отключаем 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
Готово!