Установка vsftpd на CentOS 7

Проведём установку и настройку сервиса vsftpd на CentOS 7. Чтобы установить его, нужно выполнить следующую команду:

yum install vsftpd

Запустим и разрешим сервису запускаться во время загрузки:

systemctl start vsftpd
systemctl enable vsftpd

Вы можете проверить, что служба vsftpd запущена, выполнив команду:

systemctl status vsftpd

Вывод будем примерно таким:

● vsftpd.service - Vsftpd ftp daemon
   Loaded: loaded (/usr/lib/systemd/system/vsftpd.service; enabled; vendor preset: disabled)
   Active: active (running) since Thu 2021-01-29 12:51:24 UTC; 10s ago
 Main PID: 28841 (vsftpd)
   CGroup: /system.slice/vsftpd.service
           └─28841 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf

Настройка vsftpd

Настройка службы vsftpd выполняется через файл /etc/vsftpd/vsftpd.conf.

Откройте файл конфигурации vsftpd для настройки:

nano /etc/vsftpd/vsftpd.conf

Включение доступа по FTP

Сделаем так, что разрешить подключатся к серверу только локальным пользователям. Для этого надо в пунктах anonymous_enable и local_enable изменить значение:

anonymous_enable=NO
local_enable=YES

Настройка загрузки файлов

Раскомментируйте write_enable параметр, чтобы разрешить загрузку и удаление файлов.

write_enable=YES

Так же укажем параметр local_umask — чтобы на загруженный файлы устанавливались права 655, а на директории 755:

local_umask=055

Настройка домашнего FTP каталога для пользователя

Чтобы пользователи не смогли получить доступ в другие каталоги кроме своей, измените параметр chroot_local_user:

chroot_local_user=YES

По умолчанию, когда включен chroot, vsftpd откажется загружать файлы, если каталог, в котором заблокированы пользователи, доступен для записи. Это сделано для предотвращения уязвимости системы безопасности.

Так же, укажем значение следующей директиве, чтобы предоставить пользователю доступ с правом записи к его домашнему каталогу

allow_writeable_chroot=YES

Директория пользователя для FTP устанавливается в конфигурационный файл с параметром local_root, Вы можете изменить директорию на своё усмотрение, например:

local_root=/home/$USER/SUPER_FTP

Мы так же можем создать файл .message в каталоге пользователя и написать туда какое-либо приветствие, которое будет показываться при входе в каталог. Чтобы включить данную функцию — добавьте в конфигурационный файл строку:

dirmessage_enable=YES

 

Настройка FTP-соединение

Укажем минимальный и максимальный диапазон портов для соединения:

pasv_min_port=30000
pasv_max_port=31000

 

Настройка ограничения входа пользователя

Чтобы разрешить вход на сервер только конкретным пользователям — добавьте следующие строки после строки:

userlist_file=/etc/vsftpd/user_list
userlist_deny=NO

Когда этот параметр включен, вам необходимо указать какие пользователи могут входить в систему, добавив имена пользователей в файл /etc/vsftpd/user_list, при этом каждый пользователь должен быть прописан с новой строки.

Настройка защищенного соединения SSL/TLS

Чтобы включить защищённые FTP-передачи с помощью SSL/TLS — потребуется сертификат SSL.Вы можете использовать существующий сертификат SSL, подписанный доверенным центром сертификации, или создать самоподписный сертификат. Если у вас есть домен или поддомен, указывающий на IP-адрес FTP-сервера, вы можете легко создать бесплатный SSL-сертификат Let’s Encrypt. В другом случае, мы можем создать 2048-битный закрытый ключ и самозаверяющий сертификат, действительный в течение 10 лет. выполните эту команду и сертификат с ключём будет созранён в одном файле:

openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/vsftpd/vsftpd.pem -out /etc/vsftpd/vsftpd.pem

После создания SSL-сертификата откройте файл конфигурации vsftpd. Найдите строки и пропишите путь к созданному файлу с сертификатом и ключём:

rsa_cert_file=/etc/vsftpd/vsftpd.pem
rsa_private_key_file=/etc/vsftpd/vsftpd.pem
ssl_enable=YES

После изменений перезапустите службу vsftpd:

systemctl start vsftpd

Окончательный конфигурационный файл должен выглядеть так:

anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
connect_from_port_20=YES
chroot_local_user=YES
listen=NO
pam_service_name=vsftpd
userlist_enable=YES
userlist_file=/etc/vsftpd/user_list
userlist_deny=NO
tcp_wrappers=YES
user_sub_token=$USER
local_root=/home/$USER/ftp
pasv_min_port=30000
pasv_max_port=31000
rsa_cert_file=/etc/vsftpd/vsftpd.pem
rsa_private_key_file=/etc/vsftpd/vsftpd.pem
ssl_enable=YES

Если Вам принципиально отслеживание всех действий FTP пользователей, тогда пропишите в конфигурационный файл:

xferlog_std_format=YES
xferlog_enable=YES

Тем самым мы включили логи всех действий, которые будут происходить на FTP-сервере.

Настройка iptables

Если вы используете брандмауэр, вам необходимо разрешить FTP-трафик.Чтобы открыть порты 21, 20 и диапазон портов 30000-31000, выполните следующие команды:

iptables -A INPUT -p tcp --match multiport --dports 20:21-j ACCEPT
iptables -A INPUT -p tcp --match multiport --dports 30000:31000-j ACCEPT

 

Создание пользователя FTP

Чтобы создать нового пользователя myftpuser, выполним команду:

adduser myftpuser

Далее необходимо установить пароль пользователя :

passwd myftpuser

Добавьте пользователя в список разрешенных пользователей FTP:

echo "myftpuser" | sudo tee -a /etc/vsftpd/user_list

После чего нужно создать каталоги и устаноить необходимые права:

mkdir -p /home/myftpuser/ftp/upload
chmod 550 /home/myftpuser/ftp
chmod 750 /home/myftpuser/ftp/upload
chown -R myftpuser: /home/myftpuser/ftp

После чего, пользователь сможет загружать свои файлы в директорию ftp/upload.

На этом настройка vsftpd закончена. Вы можете подключаться к своему серверу с помощью любого FTP-клиента, например FileZilla .

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *