FTP (File Transfer Protocol) - это клиент-серверный сетевой протокол, позволяющий пользователям передавать файлы в удаленную сеть и скачивать их из нее. Для систем на базе Linux разработано несколько FTP-серверов с открытым исходным кодом. Наиболее популярные из них - PureFTPd, ProFTPD и vsftpd.
В этой статье мы разберемся как установить FTP CentOS 8 на примере vsftpd. Это стабильный, безопасный и быстрый FTP-сервер. Мы также покажем вам, настройку vsftpd, чтобы ограничить пользователей их домашним каталогом и шифровать все передачи с использованием SSL/TLS.
Содержание статьи
Установка FTP сервера CentOS
Для более безопасной и быстрой передачи данных используйте SCP или SFTP. Внимание! Все команды необходимо выполнять от имени пользователя sudo.
sudo su

Пакет vsftpd доступен по умолчанию в репозиториях CentOS. Для его установки, выполните следующую команду:
yum install vsftpd

Установка FTP CentOS завершена, далее надо запустить службу vsftpd и поместить ее в автозагрузку:
systemctl start vsftpd

systemctl enable vsftpd

Теперь проверим успешность запуска службы vsftpd набрав команду:
systemctl status vsftpd

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

Настройка vsftpd на CentOS
Настройка vsftp CentOS 8 производится редактированием конфигурационного файла /etc/vsftpd/vsftpd.conf. Основные параметры хорошо задокументированы в файле конфигурации. Все доступные варианты конфигураций можно найти на официальном сайте vsftpd.
В статье мы рассмотрим некоторые важные аспекты, необходимые для настройки и безопасной установки vsftpd. Для начала откройте конфигурационный файл vsftpd:
sudo nano /etc/vsftpd/vsftpd.conf

1. Доступ по FTP
Мы разрешим только локальным пользователям доступ к FTP-серверу. Для этого найдем следующие параметры убедимся, что их значения соответствуют строкам ниже:

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

2. Включение chroot
Запретим пользователям, работающим по FTP, доступ к файлам вне их домашнего каталога, раскомментировав параметр chroot:
chroot_local_user=YES

По умолчанию, когда chroot включен, vsftpd откажется загружать файлы, даже если каталог, в которым ограничен пользователь, доступен для записи. Это сделано для предотвращения нарушений безопасности.
Используйте один из следующих способов для включения загрузки chroot.
Способ 1. Рекомендуемый способ разрешить загрузку - оставить chroot включенным и настроить каталоги FTP. По этому способу мы создадим каталог ftp на домашнем каталоге пользователя, который будет служить chroot и записываемым каталогом для загрузки файлов.
user_sub_token=$USER
local_root=/home/$USER/ftp

Способ 2. Другой вариант - добавить следующий параметр в файл конфигурации vsftpd. Используйте этот параметр, если вы хотите предоставить пользователям права на запись в их домашнюю директорию.
allow_writeable_chroot=YES

3. Пассивные FTP соединения
Сервер vsftpd может использовать любой порт для пассивных FTP-соединений. Мы определим диапазон портов используемый для соединений, а затем откроем их в нашем брандмауэре. Добавьте следующие строки в файл конфигурации:
pasv_min_port=30000
pasv_max_port=31000

4. Ограничение входа пользователей
Чтобы разрешить доступ к FTP-серверу только определенным пользователям, добавьте после строки userlist_enable = YES следующие строки:
userlist_file=/etc/vsftpd/user_list
userlist_deny=NO

Если этот параметр активен, то вам нужно явно перечислить, какие пользователи могут входить в систему, указав имена пользователей в файле находящемся по пути /etc/vsftpd/user_list (по одному пользователю на каждую новую строку).
5. Настройка SSL / TLS
Для обеспечения безопасности передачи файлов применяют шифрование FTP-передачи с использованием SSL / TLS. Осуществляя настройку шифрования вам необходимо иметь SSL-сертификат и настроить FTP-сервер для его использования.
Вы можете использовать как существующий сертификат SSL, подписанный доверенным корневым центром сертификации, или же создать самоподписный сертификат на вашем сервере. Команда, приведенная ниже, создаст 2048-битный закрытый ключ и самоподписный сертификат, который будет действовать в течение 10 лет.
Закрытый ключ и сертификат будут сохранены в одном файле:
sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/vsftpd/vsftpd.pem -out /etc/vsftpd/vsftpd.pem

После создания SSL сертификата откройте файл конфигурации vsftpd:
sudo nano /etc/vsftpd/vsftpd.conf

Добавьте строки rsa_cert_file и rsa_private_key_file и укажите в их значениях pam на путь к созданному файлу сертификата. Затем добавьте строку ssl_enable установив для нее значение YES:
rsa_cert_file=/etc/vsftpd/vsftpd.pemrsa_private_key_file=/etc/vsftpd/vsftpd.pem
ssl_enable=YES

После произведенной настройки, если не указано иное, FTP-сервер всегда будет использовать TLS для установления защищенных соединений с клиентом. Перезапустите службу vsftpd.
После внесения всех изменений, за исключением комментариев, вы должны получить файл конфигурации vsftpd примерно следующего содержания:
Выйдете из редактора подтвердив сохранение файла конфигурации и перезапустите службу vsftpd, чтобы применить изменения выполнив следующую команду:
sudo systemctl restart vsftpd

6. Открытие портов брандмауэра
Если вы используете брандмауэр, вам нужно разрешить FTP-трафик открыв порт 21 (порт команд FTP), порт 20 (порт данных FTP) и 30000-31000 (диапазон пассивных портов), набрав следующие команды:
sudo firewall-cmd --permanent --add-port=20-21/tcp
sudo firewall-cmd --permanent --add-port=30000-31000/tcp

Для применения изменений потребуется перезапуск брандмауэра:
firewall-cmd --reload

Настройка ftp CentOS практически завершена.
7. Создание пользователя FTP
Пришло время протестировать наш FTP-сервер создав нового пользователя.
- Если у вас уже есть пользователь, которому вы хотите предоставить доступ по FTP, пропустите первую команду.
- Если вы установили allow_writeable_chroot = YES в своем файле конфигурации, пропустите третью команду.
Чтобы создать ftp пользователя centos 8 с именем newftpuser выполните:
sudo adduser newftpuser

Добавим пользователя в список разрешенных пользователей FTP:
echo "newftpuser" | sudo tee -a /etc/vsftpd/user_list

Создадим каталоги FTP и установим для них правильные разрешения:
sudo mkdir -p /home/newftpuser/ftp/upload
sudo chmod 550 /home/newftpuser/ftp
sudo chmod 750 /home/newftpuser/ftp/upload
sudo chown -R newftpuser: /home/newftpuser/ftp

Как писалось в предыдущем разделе, пользователь сможет загружать свои файлы в каталог ftp/upload. На этом этапе мы полностью настроили FTP-сервер, и вы, используя любой FTP-клиент настроенный на использование шифрования TLS, сможете подключиться к вашему серверу.
8. Отключение доступа к SSH
По умолчанию при создании у нового пользователя, если это не указывалось явно, появляется SSH-доступ к серверу. Чтобы отключить доступ по SSH, создадим новую оболочку, которая просто будет показывать сообщение, уведомляющее пользователя о том, что его учетная запись ограничена только FTP доступом.
Наберите следующие команды, для создания /bin/ftponly оболочки и назначения ее исполняемой по умолчанию:
echo -e '#!/bin/sh\necho "This account is limited to FTP access only."' | sudo tee -a /bin/ftponly
sudo chmod a+x /bin/ftponly

Затем добавьте новую оболочку в список допустимых оболочек в файле /etc/shells :
echo "/bin/ftponly" | sudo tee -a /etc/shells

Теперь измените оболочку пользователя по умолчанию на /bin/ftponly:
sudo usermod newftpuser -s /bin/ftponly

Используйте ту же команду, чтобы изменить оболочку для всех пользователей, которым вы хотите предоставить только FTP доступ.
Заключение
Из нашей статьи вы смогли узнать, как легко и быстро выполняется установка и настройка ftp centos 8. Это популярный, быстрый и безопасный FTP-сервер для вашей системы под управлением CentOS 8. Спасибо за прочтение.
Если вы искали альтернативу почтовому сервису Gmail, который уважает вашу конфиденциальность, обратите внимание на ProtonMail. Ваши письма автоматически шифруются сквозным шифрованием, поэтому читать их можете только вы и получатель. ProtonMail не собирает ваши персональные данные и базируется в Швейцарии, где действуют одни из самых строгих законов о конфиденциальности. Посмотреть детали





rsa_cert_file=/*********
rsa_private_key_file=/*****
ssl_enable=YES
При добавлении выдает ошибку конфига
Hello good tutorial.
Now can you tell me how I put color on
Prompt terminal shell.
Centos 8.1 1911
Ok
Thank you
Please Whats your email address
безполезная статья
точнее 2\3 безполезно
все что по позданию FTP-акааунта верно
но все что далее....
ssl вообще мимо как не пытайся
точнее для него нужно еше кучу шаманства кроме простого указания сертефиката и правил в фаерволе
по пользователям так же такая картина что это писал тот, кому рассказывали как ето все делать
со слов записано может и верно, но тот кто говорил явно не вдавался в детали
вообщем 3 из 10