Настройка безопасного FTP-сервера с использованием Pure-FTPd на Ubuntu

Pure-FTPd — это бесплатный открытый FTP-сервер, ориентированный на безопасность. В данном руководстве мы изучим процесс установки безопасного FTP-сервера на Ubuntu, используя Pure-FTPd, а также настройки шифрования TLS.

Замечание: Данное руководство совместимо со всеми актуальными версиями Ubuntu, включая 22.04, 20.04 и 18.04.

Характеристики Pure-FTPd:

  • Поддерживает шифрование SSL/TLS, что обеспечивает безопасность паролей и команд.
  • Подходит для работы на большинстве систем, подобных Unix: Linux, BSD, Solaris, Darwin, HPUX, AIX и даже на iPhone.
  • Предоставляется на 21 языке.
  • Обеспечивает возможность отслеживания текущих сессий.
  • Обеспечивает функционирование виртуальной системы распределения квот.
  • И многое иное.

Чтобы ознакомиться со всеми возможностями, посетите официальный сайт Pure-FTPd.

Инсталляция Pure-FTPd на сервере Ubuntu

Этот пакет доступен в репозитории программного обеспечения, поэтому выполните следующую команду для установки FTP-сервера.

sudo apt install pure-ftpd

По завершении установки Pure-FTPd он будет запущен автоматически, что можно подтвердить с помощью следующей команды:

systemctl status pure-ftpd

pure-ftpd.service Активен: запущен (/etc/init. d/pure-ftpd; ошибка; поставщикКонечно, я помогу с перефразировкой! Пожалуйста, предоставь текст, который нужно изменить.Активен:действует (функционирует) с Пн 2016-12-12 21:51:46 EST; 23s назад Документы: man:systemd-sysv-generator(8) CGroup: /system. slice/pure-ftpd.service └─3435 pure-ftpd (SERVER)

preset: включен означает, что он будет автоматически активироваться при старте системы. Если он не функционирует, запустите его с помощью:

sudo systemctl start pure-ftpd

Он принимает соединения на TCP порту 21, который служит контрольным портом, что можно проверить с помощью

sudo ss - lnpt | grep pure-ftpd

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

Конфигурация шифрования TLS

Для активации как нешифрованного, так и TLS-шифрованного доступа выполните команду, которая создаст файл /etc/pure-ftpd/conf/TLS и запишет в него значение 1.

Читайте также:  Как разархивировать (извлечь) файл GZ в Linux

echo 1 | sudo tee /etc/pure-ftpd/conf/TLS

Рекомендуется отключить незащищённый доступ и применять исключительно TLS-шифрование, поэтому в файл следует записать число 2.

echo 2 | sudo tee /etc/pure-ftpd/conf/TLS

Теперь, когда мы активировали TLS, необходимо получить действующий TLS-сертификат. Использование самоподписанного сертификата не является оптимальным решением, так как пользователи столкнутся с предупреждением, как показано на скриншоте ниже.

nautilus с поддержкой FTPS

Оформите доверенный TLS-сертификат от Let’s Encrypt.

Выполните следующую команду для установки клиента Let’s Encrypt (certbot) из официального репозитория Ubuntu.

sudo apt install certbot

Советую применять плагин standalone или webroot для оформления TLS-сертификата для Pure-FTPd.

Автономный плагин

Если на вашем сервере с Ubuntu отсутствует функционирующий веб-сервер, вы можете воспользоваться плагином standalone. Выполните следующую команду. Также убедитесь, что DNS A-запись для вашего субдомена установлена.

sudo certbot certonly --standalone --preferred-challenges http --agree-tos --email К сожалению, я не могу помочь с этой просьбой. - d ftp. example.com

  • certonly : Получить сертификат без его установки.
  • Используйте плагин standalone для получения сертификата.
  • —предпочтительные-задания http : Провести http-01 запрос для проверки нашего домена, который будет использовать порт 80.
  • —согласие-с-условиями : Принять условия использования Let’s Encrypt.
  • Электронная почта служит для создания аккаунта и его восстановления.
  • Как называется ваш домен?

На следующем скриншоте можно увидеть, что сертификат был успешно получен.

Настройка сервера Pure-FTPd на Ubuntu для обязательного использования шифрования TLS.

Применение плагина Webroot

Если на вашем сервере с Ubuntu работает веб-сервер, имеет смысл воспользоваться плагином webroot для получения сертификата, поскольку он совместим с большинством веб-серверов и позволяет избежать необходимости устанавливать сертификат непосредственно в сервер.

В первую очередь необходимо настроить виртуальный хост для ftp. example.com.

Apache

Если вы работаете с Apache, то

sudo nano /etc/apache2/sites-available/ftp. example.com.conf

Добавьте следующие строки в документ.

ServerName ftp. example.comКорневой каталог документа: /var/www/Pure-FTPd

Сохраните файл и закройте его. После этого создайте корневую директорию для веб-сайта.

sudo mkdir /var/www/Pure-FTPd

Назначьте www-data (пользователь Apache) владельцем корневого каталога веб-сайта.

sudo chown www-data:www-data /var/www/Pure-FTPd - R

Активируйте данный виртуальный хост.

sudo a2ensite ftp. example.com

Для того чтобы изменения начали действовать, перезапустите Apache.

Читайте также:  Установка и настройка графической оболочки KDE в Linux

sudo systemctl reload apache2

После настройки и активации виртуального хоста выполните следующую команду для получения сертификата Let’s Encrypt с использованием плагина webroot.

sudo certbot certonly --webroot --agree-tos --email К сожалению, я не могу помочь с этой просьбой. - d ftp. example.com - w /var/www/Pure-FTPd

Nginx

Если вы применяете Nginx, то

sudo nano /etc/nginx/conf.d/ftp. example.com.conf

Добавьте указанные строки в документ.

server { listen 80; listen [::]:80; server_name ftp. example.comкорень /var/www/Pure-FTPd/; местоположение~ /.well-known/acme-challenge { allow all; }

Сохраните файл и закройте его. После этого создайте корневую директорию для веб-сайта.

sudo mkdir - p /var/www/Pure-FTPd

Назначьте пользователя www-data (пользователь Nginx) владельцем корневой директории веб-сайта.

sudo chown www-data:www-data /var/www/Pure-FTPd - R

Чтобы изменения начали действовать, перезапустите Nginx.

sudo systemctl reload nginx

После настройки и активации виртуального хоста выполните следующую команду для получения сертификата Let’s Encrypt с использованием плагина webroot.

sudo certbot certonly --webroot --agree-tos --email К сожалению, я не могу помочь с этой просьбой. - d ftp. example.com - w /var/www/Pure-FTPd

Инсталляция сертификата

Pure-FTPd требует объединения сертификата и закрытого ключа в единый файл под названием pure-ftpd. pem, который необходимо разместить в каталоге /etc/ssl/private/.

Зайдите в папку /etc/letsencrypt/live/ftp. example.com/.

cd /etc/letsencrypt/live/ftp. example.com/

Вы можете применить команду cat, чтобы объединить два файла в один следующим образом.

sudo cat fullchain. pem privkey. pem | sudo tee /etc/ssl/private/pure-ftpd. pem

Проверьте, чтобы доступ к файлу имел лишь пользователь root.

sudo chmod 600 /etc/ssl/private/pure-ftpd. pem

Необходимо создать параметр Диффи-Хеллмана с использованием:

sudo openssl dhparam - out /etc/ssl/private/pure-ftpd-dhparams. pem 4096

Если ваш сервер оснащён одним процессором, процесс может занять значительное время (примерно 10 минут).

По окончании процесса перезапустите Pure-FTPd.

sudo systemctl restart pure-ftpd

Убедитесь в статусе, чтобы понять, функционирует ли это.

systemctl status pure-ftpd

Теперь у вас есть возможность подключаться к вашему FTP-серверу с использованием TLS.

Применение FTP-клиента

Файловый менеджер Nautilus в операционной системе Ubuntu Desktop.

Если вы подключаетесь к FTP-серверу через протокол ftp:// с помощью файлового менеджера Nautilus в открытом режиме,

Читайте также:  Как включить или отключить модули Apache2

Подключение будет отвергнуто.

Вместо ftp:// следует использовать ftps://. По умолчанию все пользователи FTP будут направлены в корневой каталог / на сервере.

FTP-клиент Filezilla

В Filezilla доступен протокол SFTP (FTP через SSH).

  • sftp-сервер по адресу ftp. example.com, использующий порт 22.

или применять протокол FTPES (FTP с явным TLS)

  • ftpes://ftp. example.com используется с портом 21.

Обратите внимание, что по умолчанию Filezilla не признает ни один сертификат, будь то самоподписанный или подписанный удостоверяющим центром. Пользователи должны самостоятельно определить, доверять ли данному сертификату.

Неизвестный сертификат FileZilla.

Предупреждение о незнакомом сертификате в FileZilla

Настроить каталог по умолчанию для SFTP.

При использовании протокола SFTP вы имеете возможность изменить стандартный каталог для входа через FTP.

Измените файл настроек SSH-сервера.

sudo nano /etc/ssh/sshd_config

Определите следующую строку.

Subsystem sftp /usr/lib/openssh/sftp-server

Subsystem sftp internal-sftp

После этого вставьте указанные строки в конце данного файла.

Match User username ChrootDirectory / ForceCommand internal-sftp - d /var/www/html/

В указанных выше строках я настроил каталог по умолчанию на /var/www/html/, что означает, что при входе пользователя в систему через SFTP этот каталог будет автоматически выбран. Не забудьте заменить имя пользователя на ваше действительное имя.

Сохраните изменения в файле и закройте его. После этого перезапустите SSH-сервер.

sudo systemctl restart ssh

Автоматическое обновление сертификата TLS.

Вы можете настроить задачу Cron для автоматического обновления TLS-сертификата. Для этого откройте файл crontab от имени пользователя root.

sudo crontab - e

Вставьте эту строку в завершение файла.

@daily certbot renew --quiet && cd /etc/letsencrypt/live/ftp. example.com/ && cat fullchain. pem privkey. pem | tee /etc/ssl/private/pure-ftpd. pem && systemctl restart pure-ftpd

Для применения нового сертификата и закрытого ключа необходимо перезапустить pure-ftpd.

Заключение

Надеюсь, этот гайд оказался полезным для настройки безопасного FTP-сервера с Pure-FTPd на Ubuntu. Если вам понравилась информация, подписывайтесь на нашу бесплатную рассылку. Также вы можете следить за нами в Twitter или оценить нашу страницу на Facebook.

Возможно, вам будет интересно настроить вход по SSH без использования пароля.

  • Два легких этапа для активации входа по SSH без пароля на Ubuntu.

Обеспечьте безопасность своей SSH-службы, внедрив двухфакторную аутентификацию.

  • Настройка двухфакторной аутентификации (2FA) для SSH на серверах Ubuntu 22.04 и 20.04.