Vsftpd. Centos 7: различия между версиями

Материал из Wiki
Перейти к навигации Перейти к поиску
(Создана пустая страница)
 
 
(не показана 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

Готово!