FTP (расшифровывается как «Протокол передачи файлов») – это стандартный и старый сетевой протокол, используемый для передачи файлов между клиентом и сервером в компьютерной сети.
Он построен на архитектуре модели клиент-сервер, которая предлагает доступ к файлам и каталогам через FTP-клиент, для загрузки файлов на сервер, а также для загрузки файлов с него.
В этой статье мы хотим описать, как установить, настроить и защитить FTP-сервер на RHEL 8 для базового обмена файлами между компьютерами.
Установите FTP-сервер на RHEL 8
1. Чтобы установить защищенный FTP-пакет, используйте следующую команду dnf.
# dnf install vsftpd
2. После завершения установки вам необходимо запустить службу vsftpd, включить ее автоматический запуск в системе используя следующие команды systemctl.
# systemctl start vsftpd # systemctl enable vsftpd # systemctl status vsftpd
3. Затем вам нужно открыть ftp порт 21 на системном брандмауэре, чтобы разрешить доступ к службам ftp из внешних систем.
# firewall-cmd --zone=public --permanent --add-port=21/tcp # firewall-cmd --zone=public --permanent --add-port=45073/tcp # firewall-cmd --reload
Настройте FTP-сервер на RHEL 8
4. Для настройки на FTP-сервер необходимо использовать файл конфигурации файла резервной копии /etc/vsftpd/vsftpd.conf с помощью следующей команды копирования.
# cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.orig
5. Затем откройте файл конфигурации, используя ваш любимый редактор командной строки.
# vi /etc/vsftpd/vsftpd.conf
Установите следующие параметры с этими соответствующими значениями (см. Man vsftpd.conf для просмотра значений параметров конфигурации):
anonymous_enable=NO local_enable=YES write_enable=YES local_umask=022 dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES xferlog_std_format=YES listen=NO listen_ipv6=YES pam_service_name=vsftpd
6. Далее необходимо настроить ftp, чтобы разрешить / запретить пользователям доступ к службам ftp на основе файла списка пользователей /etc/vsftpd.userlist.
По умолчанию пользователям, перечисленным в файле /etc/vsftpd.userlist, запрещен доступ с параметром userlist_deny, установленным на YES, если userlist_enable = YES, он разрешает доступ.
Но, установив параметр userlist_deny = NO, вы установите другие параметры, что означает, что только пользователи явно перечисленые в userlist_file = /etc/ vsftpd.userlist смогут войти в систему.
Поэтому добавьте следующие строки в файл конфигурации vsftpd.conf (или, если он уже существует, раскомментируйте их и установите их значения, как показано далее):
userlist_enable=YES # разрешить доступ к списку имен пользователей из userlist_file userlist_file=/etc/vsftpd.userlist # хранит имена пользователей. userlist_deny=NO
7. Теперь добавьте следующие строки в файл конфигурации vsftpd.conf, чтобы ограничить пользователей FTP их домашними каталогами.
chroot_local_user=YES #means local users will be placed in a chroot jail, their home directory after login by default settings. user_sub_token=$USER local_root=/home/$USER/ftp
Сохраните изменения в файле и закройте его.
8. Установите следующее логическое правило SELinux, чтобы разрешить FTP читать / записывать файлы домашнего каталога пользователя.
# semanage boolean -m ftpd_full_access --on
9. Наконец, перезапустите службу vsftpd, чтобы внести все изменения, которые мы сделали выше:
# systemctl restart vsftpd
Тестирование FTP-сервера на RHEL 8
10. Чтобы проверить, работает ли вышеуказанная настройка FTP, начните с создания пользователя FTP с помощью команды useradd и создайте пароль для этого пользователя.
# useradd -m -c "Tecmint HowTos" -s /bin/bash tecmint # passwd tecmint
11. Затем добавьте пользовательский tecmint в файл /etc/vsftpd.userlist с помощью команды echo следующим образом.
# echo "tecmint" | tee -a /etc/vsftpd.userlist # cat /etc/vsftpd.userlist
12. Затем создайте альтернативный локальный корневой каталог для пользователя (tecmint, ваш, вероятно, другой) и установите соответствующие разрешения для этого каталога.
# mkdir -p /home/tecmint/ftp # chown nobody:nobody /home/tecmint/ftp # chmod a-w /home/tecmint/ftp
13. Затем создайте каталог внутри локального корневого каталога, где пользователь хочет хранить свои файлы.
# mkdir /home/tecmint/ftp/files # chown tecmint:tecmint /home/tecmint/ftp/files # chmod 0700 /home/tecmint/ftp/files/
14. Теперь подключитесь к серверу ftp, используя любой клиент ftp, следующим образом.
# ftp tecmint@192.168.56.100
Пример вывода
Connected to 192.168.56.100 220 Welcome to TecMint.com FTP service. 331 Please specify the password. Password: 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files. ftp> ls