Проведемо установку і настройку сервісу 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.