Настройка ProFTPd с TLS на Ubuntu 15.10
Этот гид показывает, как зашифровать FTP с помощью TLS: установка ProFTPd и OpenSSL, генерация SSL-сертификата, включение TLS в конфигурации, создание FTP-пользователя и подключение через FileZilla (FTPS/FTPES). В конце — чеклист для админа, варианты замены и рекомендации по безопасности.
О чём статья
Цель: обеспечить защищённый FTP-трафик путём добавления TLS (FTPS) к ProFTPd на сервере Ubuntu 15.10. Подходит, если клиент поддерживает FTPS/FTPES. Альтернатива — SFTP (SSH File Transfer Protocol) для простоты и совместимости.
Краткий план действий
- Установить proftpd и openssl.
- Сгенерировать SSL-сертификат в /etc/proftpd/ssl.
- Включить модуль TLS в конфиге ProFTPd и настроить параметры.
- Добавить системного пользователя для FTP и задать пароль.
- Настроить FileZilla (FTPES) для безопасного подключения.
1 Предварительная заметка
В примерах используется имя хоста server1.example.com и IP 192.168.1.100. Замените эти значения на ваши. Все команды требуют прав root — используйте sudo перед командами или переключитесь в root:
sudo suДля редактирования файлов в этом руководстве используется nano. Чтобы установить nano:
apt-get install nanoПримечание: команды и пути в примерах сохраняются как в оригинале — проверьте корректность путей на вашей системе.
2 Установка ProFTPd и OpenSSL
OpenSSL нужен для TLS. Установите ProFTPd и OpenSSL:
apt-get install proftpd opensslВ процессе установки установщик спросит о режиме запуска proftpd. Для простоты и автономности выбирайте standalone.
Рекомендуется добавить в /etc/proftpd/proftpd.conf следующие строки для изоляции пользователей и скрытия детальной информации о сервере:
nano /etc/proftpd/proftpd.confВставьте или убедитесь, что присутствуют:
[...]
DefaultRoot ~
ServerIdent on "FTP Server ready."
[...]DefaultRoot ограничивает пользователя его домашней директорией (chroot), а ServerIdent выводит нейтральное сообщение без версии и сведений о ПО.
3 Создание SSL-сертификата для TLS
Создадим директорию для сертификатов и сгенерируем самоподписанный сертификат, используемый ProFTPd:
mkdir /etc/proftpd/sslopenssl req -new -x509 -days 365 -nodes -out /etc/proftpd/ssl/proftpd.cert.pem -keyout /etc/proftpd/ssl/proftpd.key.pemПри запросах укажите реальные данные: страна (DE/ RU и т.п.), область, город, организация и обязательно Common Name — FQDN сервера, например server1.example.com.
Защитите файлы сертификата:
chmod 600 /etc/proftpd/ssl/proftpd.*Fact box — ключевые числа
- Срок действия примера сертификата: 365 дней.
- Размещение сертификата: /etc/proftpd/ssl/proftpd.cert.pem и /etc/proftpd/ssl/proftpd.key.pem.
4 Включение TLS в ProFTPd
Откройте главный конфиг и раскомментируйте подключение tls.conf:
nano /etc/proftpd/proftpd.confНайдите и активируйте строку
Include /etc/proftpd/tls.confОтредактируйте /etc/proftpd/tls.conf так, как показано ниже:
nano /etc/proftpd/tls.conf
TLSEngine on
TLSLog /var/log/proftpd/tls.log
TLSProtocol TLSv1.2
TLSCipherSuite AES128+EECDH:AES128+EDH
TLSOptions NoCertRequest AllowClientRenegotiations
TLSRSACertificateFile /etc/proftpd/ssl/proftpd.cert.pem
TLSRSACertificateKeyFile /etc/proftpd/ssl/proftpd.key.pem
TLSVerifyClient off
TLSRequired on
RequireValidShell no
Пояснения к ключевым параметрам
- TLSEngine on — включает поддержку TLS в ProFTPd.
- TLSProtocol TLSv1.2 — использует TLS 1.2; при необходимости вы можете включить TLSv1.3, если ваша версия OpenSSL и ProFTPd это поддерживают.
- TLSRequired on — разрешены только TLS-соединения; если оставить off, будут допускаться и незашифрованные подключения.
Примените изменения:
systemctl restart proftpd.serviceЕсли возникнут ошибки TLS, смотрите лог: /var/log/proftpd/tls.log
Важно
Если вы включите TLSRequired on, клиенты без поддержки TLS не смогут подключиться.
5 Добавление FTP-пользователя
ProFTPD в этой конфигурации использует системную базу пользователей (/etc/passwd и /etc/shadow). Пример добавления пользователя tom, который будет доступен только по FTP:
useradd --shell /bin/false tomЭто создаёт пользователя с оболочкой /bin/false, то есть без возможности SSH-входа. Домашняя директория по умолчанию — /home/tom. Если нужно указать собственную директорию:
useradd --home /srv/tomftp --create-home --shell /bin/false tomЗадайте пароль:
passwd tomВведите пароль дважды по запросу.
Критерии приёмки
- Пользователь может подключиться по FTPS и увидеть только свою домашнюю директорию.
- Подключение без TLS блокируется при TLSRequired on.
- Логи TLS не показывают ошибок при подключении клиента.
6 Настройка FileZilla для TLS
Используйте клиент, поддерживающий TLS, например FileZilla. В менеджере сайтов выберите тип подключения FTPES (FTP over explicit TLS) — это безопасный выбор для FTPS.



При первом подключении FileZilla предложит принять самоподписанный сертификат — проверьте fingerprint и подтвердите, если он совпадает с тем, что вы ожидали.

После успешного подключения вы увидите список файлов и папок пользователя:

Совет по совместимости
Если клиент не подключается с TLS, попробуйте временно отключить TLSRequired или проверить настройки CipherSuite. Также проверьте, не блокирует ли межсетевой экран пассивные порты FTP.
7 Скачать готовую виртуальную машину
Готовая ВМ в формате OVA/OVF доступна подписчикам HowtoForge (VMWare/VirtualBox). Основные данные ВМ:
- SSH-пользователь: administrator / howtoforge (имеет sudo).
- FTP-пользователь: tom / tom.
- IP по умолчанию: 192.168.1.100 (можно изменить в /etc/network/interfaces).
Обязательно смените пароли перед запуском в продуктивной среде.
8 Ссылки
- ProFTPd: http://www.proftpd.org/
- FileZilla: http://filezilla-project.org/
- Ubuntu: http://www.ubuntu.com/
Когда FTPS подходит, а когда лучше SFTP
- FTPS хорош, если вы обязаны поддерживать стандарт FTP/FTPS для совместимости с клиентами или интеграциями.
- SFTP (через SSH) проще в настройке с точки зрения защиты, работает через один порт (22) и часто проще настраивается в брандмауэрах — используйте SFTP, если нет требования к FTP-протоколу.
Пример, когда FTPS не подойдет
- Если у вас сложная сеть с NAT и вы не хотите настраивать пассивные порты.
- Если клиенты не умеют FTPS, но поддерживают SFTP.
Безопасность и жёсткие рекомендации
- Используйте TLSv1.2 или выше.
- Рассмотрите получение сертификата от доверенного CA для рабочих систем (Let’s Encrypt поддерживает лишь TLS для HTTPS, для FTPS нужен другой подход или использование самоподписанных сертификатов с ручной верификацией).
- Ограничьте список CipherSuite до сильных шифров.
- Защитите приватный ключ правами 600 и храните его вне публичного доступа.
- Включите аудит логов и мониторинг попыток подключения.
Риск-матрица и рекомендации
- Утечка приватного ключа: немедленно отозвать сертификат и сгенерировать новый.
- Слабые шифры: обновить TLSCipherSuite и OpenSSL.
- Клиентские ошибки: проверить настройки менеджера сайтов клиента и пассивные порты.
Чеклист для администратора перед вводом в эксплуатацию
- Сертификат создан и защищён (chmod 600).
- /etc/proftpd/tls.conf проверен и TLSEngine on.
- TLSRequired установлен согласно политике (on для принудительного шифрования).
- Пользователи имеют корректные домашние директории и оболочки.
- Протестировано подключение из FileZilla с FTPES.
- Логи TLS и системные логи настроены и доступны для аудита.
Ролевые контрольные списки
- Администратор: установить пакеты, сгенерировать сертификат, настроить права, рестарт сервиса.
- Девопс/Инфраструктура: открыть порты FTP/пассива в брандмауэре, проверить NAT/маршрутизацию.
- Аудитор: проверить политики шифрования и хранение ключей.
Методология быстрого развертывания (SOP)
- Подготовить сервер и обновить пакеты.
- Установить proftpd и openssl.
- Создать /etc/proftpd/ssl, сгенерировать сертификат и защитить ключ.
- Включить Include /etc/proftpd/tls.conf в основном конфиге.
- Настроить tls.conf, протестировать restart.
- Добавить FTP-пользователей, задать пароли, проверить chroot.
- Протестировать из FileZilla и проверить /var/log/proftpd/tls.log.
Отмена и откат изменений
Если после включения TLS сервис перестал работать и требуется откат:
- Отключите Include /etc/proftpd/tls.conf в /etc/proftpd/proftpd.conf (закомментируйте).
- Перезапустите proftpd: systemctl restart proftpd.service.
- Проверьте логи на причину ошибки и восстановите рабочую конфигурацию.
Пример решения проблем
Проблема: клиент не проходит TLS-рукопожатие.
Действия: проверить /var/log/proftpd/tls.log, сверить версию OpenSSL, проверить права на ключ, попробовать временно сменить TLSProtocol на TLSv1.2,TLSv1.3 при поддержке.
Решение по выбору протокола — диаграмма
flowchart TD
A[Начало: нужен защищённый обмен файлами?] --> B{Требуется FTP-протокол?}
B -- Да --> C[Настроить ProFTPd + TLS 'FTPS']
B -- Нет --> D{Клиенты поддерживают SSH?}
D -- Да --> E[Использовать SFTP 'через SSH']
D -- Нет --> F[Рассмотреть HTTPS API или WebDAV + TLS]
C --> G[Тестирование и деплой]
E --> G
F --> GКраткое резюме
- FTPS через ProFTPd даёт шифрование FTP-трафика с помощью TLS.
- Настройка включает установку пакетов, генерацию сертификата, настройку tls.conf и перезапуск сервиса.
- Тестируйте подключение из клиента, например FileZilla (FTPES).
- Рассмотрите SFTP, если хотите упростить конфигурацию и обходить проблемы с пассивными портами.
Краткий итог
FTPS с TLS повышает безопасность FTP, но требует внимания к сертификатам, CipherSuite и сетевым настройкам. Следуйте чеклисту и тестируйте подключение на каждом шаге.
Похожие материалы
Как ухаживать за Nintendo Switch в жару
Изменение шрифта по умолчанию в PowerPoint
Бесплатный логотип в VistaCreate — пошаговое руководство
Поиск в Windows 8: руководство и советы
Планировщик задач Windows: автоматический запуск и напоминания