Настройка FTP в CentOS 8

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-серверу. Для этого найдем следующие параметры убедимся, что их значения соответствуют строкам ниже:

anonymous_enable=NO
local_enable=YES

Раскомментируйте параметр 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 примерно следующего содержания:

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
chroot_local_user=YES
listen=NO
listen_ipv6=YES
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

Выйдете из редактора подтвердив сохранение файла конфигурации и перезапустите службу 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. Спасибо за прочтение.

Один комментарий

  1. Аватар Изи 12 февраля, 2020 Ответить

Ответить

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: