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/shnecho "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. Спасибо за прочтение.