Гид по технологиям

Безопасный FTP с ProFTPd и TLS на Ubuntu 16.04

• 7 min read • Linux • Обновлено 22 Nov 2025
ProFTPd с TLS на Ubuntu 16.04 — инструкция
ProFTPd с TLS на Ubuntu 16.04 — инструкция

Коротко: стандартный FTP передаёт пароли и данные в открытом виде — используйте TLS (FTPS) для шифрования соединения. В этой инструкции показано, как установить ProFTPd, сгенерировать самоподписанный сертификат, включить TLS, добавить FTP-пользователя и подключиться безопасно через FileZilla. В конце — чеклисты, варианты и план действий при проблемах.

1 Предварительное замечание

В этой инструкции используется имя хоста server1.example.com и IP 192.168.1.100. Замените эти значения на ваши, где это необходимо.

Все шаги нужно выполнять с правами root. Вы можете либо предварять команды sudo, либо получить root-произвольную оболочку командой:

sudo -s

Я буду использовать редактор nano для правки конфигурационных файлов. Если хотите тоже его установить, выполните:

apt-get -y install nano

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

2 Установка ProFTPd и OpenSSL

OpenSSL необходим для TLS. Установите ProFTPd и OpenSSL одной командой:

apt-get -y install proftpd openssl

Инсталлятор спросит: Run proftpd: <– standalone — выберите режим, подходящий для вашей системы (standalone чаще используется на серверах).

Для повышения безопасности добавьте в /etc/proftpd/proftpd.conf следующие строки (пример настройки):

nano /etc/proftpd/proftpd.conf
[...]  
DefaultRoot ~  
ServerIdent on "FTP Server ready."  
[...]

DefaultRoot переводит пользователей в их домашние каталоги (chroot). ServerIdent позволяет показывать нейтральное сообщение без деталей о версии сервера и ОС — это уменьшает раскрытие информации потенциальному злоумышленнику.

3 Создание SSL-сертификата для TLS

Чтобы включить TLS, нужно создать SSL-сертификат. Я буду хранить его в /etc/proftpd/ssl — сначала создадим директорию:

mkdir /etc/proftpd/ssl

Затем сгенерируем самоподписанный сертификат и приватный ключ:

openssl req -new -x509 -days 365 -nodes -out /etc/proftpd/ssl/proftpd.cert.pem -keyout /etc/proftpd/ssl/proftpd.key.pem

При генерации заполните поля, например:

  • Country Name (2 letter code) — код вашей страны, например “DE”.
  • State or Province Name — регион или область.
  • Locality Name — город.
  • Organization Name — название организации или компании.
  • Organizational Unit Name — подразделение, например “IT”.
  • Common Name — полное доменное имя сервера, например server1.example.com.
  • Email Address — контактный e‑mail.

Защитите файлы сертификата и ключа правами доступа:

chmod 600 /etc/proftpd/ssl/proftpd.*

Важно: самоподписанный сертификат подойдёт для внутренних лабораторий и небольших инфраструктур, но для публичных серверов используйте сертификат от доверенного центра (CA) или бесплатный от Let’s Encrypt.

4 Включение TLS в ProFTPd

Откройте основной конфигурационный файл:

nano /etc/proftpd/proftpd.conf

Раскомментируйте строку Include /etc/proftpd/tls.conf, чтобы подключить конфигурацию TLS:

[...]  
#  
# This is used for FTPS connections  
#  
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.
  • TLSProtocol TLSv1.2 — принудительный выбор TLS 1.2 (безопаснее старых версий). При необходимости можно разрешить TLSv1.3, если ваша версия ProFTPd/OpenSSL это поддерживает.
  • TLSCipherSuite — подбор безопасных шифров.
  • TLSRequired on — запретить нешифрованные подключения. Включайте, когда все клиенты поддерживают TLS.

После внесения изменений перезапустите сервис:

systemctl restart proftpd.service

Если возникнут ошибки TLS, проверьте лог: /var/log/proftpd/tls.log

Важно: при включённом TLSRequired off/закомментированном параметре будут разрешены как TLS, так и не-TLS соединения — это уменьшает безопасность, но улучшает совместимость со старыми клиентами.

5 Добавление FTP-пользователя

ProFTPD по умолчанию аутентифицирует пользователей через системные учётные записи (/etc/passwd, /etc/shadow). Для FTP-учёта мы создадим пользователя tom без shell-доступа.

Создайте пользователя без интерактивного шелла:

useradd --shell /bin/false tom

Создайте домашнюю директорию и назначьте владельца:

mkdir /home/tom  
chown tom:tom /home/tom/

Альтернатива: указать другой каталог домашней директории и создать её автоматически:

useradd --home /srv/tomftp --create-home --shell /bin/false tom

Затем задайте пароль для tom:

passwd tom

Введите пароль дважды.

Примечание: /bin/false предотвращает вход по SSH, но разрешает FTP-подключение. При необходимости используйте более гранулированную политику доступа через PAM или отдельный механизм аутентификации.

6 Настройка FileZilla для TLS

Для подключения используйте FTP‑клиент с поддержкой TLS, например FileZilla.

Откройте «Диспетчер сайтов» (Site Manager) в FileZilla.

Диспетчер сайтов FileZilla, выбор сервера и настроек подключения.

Выберите запись сервера, в качестве протокола укажите FTP, а в поле менеджера шифрования — Требовать явный TLS (Explicit FTP over TLS) или аналогичный пункт в вашей локализации.

Детали входа FTP — выбор протокола и режима TLS.

При подключении FileZilla запросит пароль пользователя.

Диалог ввода пароля для FTP-подключения.

При первом соединении вы увидите запрос на принятие SSL‑сертификата сервера — проверьте отпечаток и подтвердите, если всё верно.

Подтверждение нового SSL-сертификата сервера в FileZilla.

Если всё настроено правильно, вы увидите успешный вход и список файлов в вашей домашней директории.

Успешный вход в FileZilla и отображение содержимого домашнего каталога.

7 Скачивание готовой виртуальной машины (опционально)

Готовая конфигурация, описанная в этой инструкции, доступна как виртуальная машина в формате OVA/OVF (VMWare/VirtualBox). Параметры примерной VM:

  • SSH-пользователь: administrator / пароль: howtoforge (имеет sudo).
  • FTP-пользователь: tom / пароль: howtoforge.
  • IP: 192.168.1.100 — меняется в /etc/network/interfaces.

Обязательно смените пароли перед использованием в продуктиве.

8 Ссылки


Дополнительные рекомендации и практическая ценность

Ниже собраны практические добавки: альтернативы, чеклисты, runbook при проблемах и критерии приёмки. Эти материалы помогут администратору принять решение и безопасно внедрить ProFTPd с TLS.

Когда этот подход не подходит

  • Если вам нужен доступ по SFTP (SSH File Transfer Protocol), то ProFTPd+TLS не заменит SFTP — это другой протокол поверх SSH. SFTP часто проще для управления ключами и более совместим со средствами автоматизации.
  • Если у вас много пользователей и нужна централизованная аутентификация (LDAP/Active Directory), рассмотрите интеграцию ProFTPd с PAM/LDAP или используйте решение, которое уже поддерживает такую интеграцию нативно.
  • Для публичных сервисов с высокой нагрузкой и строгими требованиями к журналированию имеет смысл сравнить производительность и возможности логирования с другими FTP/FTPS-серверами.

Альтернативные подходы

  • SFTP (через OpenSSH): безопасный протокол, работает поверх SSH, не требует отдельного TLS. Подходит для сценариев, где важна интеграция с SSH-ключами.
  • vsftpd: лёгкий FTP-сервер с хорошей репутацией безопасности и поддержкой SSL/TLS.
  • ProFTPd с модулем mod_sftp: если хотите объединить возможности ProFTPd и SFTP.

Критерии выбора: совместимость клиентов, требования к шифрованию, упрощение управления пользователями и ключами.

Мини‑методология внедрения (шаги)

  1. Подготовить тестовую среду (VM) с IP и FQDN.
  2. Установить ProFTPd и OpenSSL.
  3. Сгенерировать сертификат и настроить права доступа.
  4. Включить TLS в конфигурации, настроить шифры и протокол.
  5. Добавить тестового пользователя и проверить chroot.
  6. Проверить подключение из FileZilla и других клиентов.
  7. Перенести изменения в production, обеспечить мониторинг логов.

Чеклист администратора перед запуском

  • Сгенерирован сертификат и установлен в /etc/proftpd/ssl/.
  • Приваты ключи защищены chmod 600.
  • TLSEngine включён, TLSRequired настроен в соответствии с политикой.
  • Проверен TLSLog (/var/log/proftpd/tls.log) на ошибки.
  • Пользователи находятся в chroot (DefaultRoot ~).
  • Логи вращаются и архивируются (logrotate).
  • Настроен брандмауэр: разрешён только нужный порт (обычно 21 + диапазон пассивных портов).
  • Документированы отпечатки сертификатов для администраторов и клиентов.

Чеклист для ролей

Администратор сервера:

  • Настроить сервер и сертификаты.
  • Настроить резервное копирование конфигураций.
  • Мониторить TLS-логи и доступность.

Оператор поддержки:

  • Проверять логи при жалобах пользователей.
  • Помогать принять/проверить сертификат клиента.

Пользователь FTP:

  • Подключаться только по FTPS (Explicit TLS).
  • Проверять отпечаток сертификата при первом подключении.

Runbook: распространённые проблемы и устранение

Проблема: Клиент не может установить TLS‑соединение.

  • Шаг 1: Проверить /var/log/proftpd/tls.log на сообщения об ошибке.
  • Шаг 2: Убедиться, что сертификат и ключ существуют и права доступа 600.
  • Шаг 3: Проверить соответствие путей TLSRSACertificateFile и TLSRSACertificateKeyFile.
  • Шаг 4: Убедиться, что OpenSSL поддерживает выбранную версию TLS (openssl version).
  • Шаг 5: Если используется TLSProtocol TLSv1.2, попробовать временно разрешить TLSv1.1/1.0 для диагностики (только в тесте).

Проблема: После включения TLSRequired on часть клиентов не подключается.

  • Решение: временно вернуть TLSRequired off и уведомить пользователей о необходимости обновить клиенты; затем постепенно включайте TLSRequired снова.

Проблема: Ошибка передачи данных в пассивном режиме.

  • Убедитесь, что правильно настроен диапазон пассивных портов и они открыты в брандмауэре/нате.
  • Пропишите PassivePorts в конфигурации proftpd и проверьте external IP/NAT settings.

Критерии приёмки

  • Установлено зашифрованное соединение (TLS) и передача данных проходит по шифрованному каналу.
  • Пользователь tom подключается и видит только свой домашний каталог.
  • TLS логи не содержат критических ошибок в течение 24 часов тестовой нагрузки.
  • Сертификат корректно отображается клиентом и отпечатки сверены с документацией.

Факты и короткие числа

  • Стандартная продолжительность самоподписанного сертификата в примере: 365 дней.
  • Рекомендуемый минимальный протокол: TLS 1.2 (TLS 1.3 — если поддерживается).

Короткий словарь (1‑строчные определения)

  • FTPS: FTP поверх TLS/SSL (шифрует управляющий канал и/или данные).
  • TLS: Transport Layer Security — криптографический протокол для защиты трафика.
  • SFTP: файл-протокол по SSH (не путать с FTPS).
  • chroot: механизм ограничения доступа процесса к части файловой системы.

Безопасность и примечания для GDPR/конфиденциальности

  • Шифрование канала (TLS) защищает персональные данные при передаче.
  • Хранение паролей остаётся на сервере ( /etc/shadow ) — соблюдайте общие политики хранения и rotation паролей.
  • Логи могут содержать метаданные доступа — определите политику хранение/удаления логов согласно требованиям соответствия.

Резюме

Использование ProFTPd с TLS значительно повышает безопасность передачи файлов по сравнению с нешифрованным FTP. Следуйте чеклистам, контролируйте логирование и хранение сертификатов, а для публичных сервисов предпочтительно использовать сертификат от доверенного CA. В идеале рассмотрите SFTP как альтернативу для сценариев со строгим управлением доступом.

Важно: перед переводом сервера в продуктив обязательно провести тесты совместимости клиентов и восстановления конфигурации из резервной копии.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро