Как настроить PureFTPd для принятия TLS-сессий на CentOS 5.5
Версия 1.0
Автор: Falko Timme
Следите за автором в Twitter
1 Предварительная заметка
FTP передаёт пароли и данные в открытом виде, поэтому без шифрования это небезопасно. TLS (Transport Layer Security) шифрует сеанс и делает передачу данных через FTP гораздо безопаснее. В этом руководстве показано, как настроить PureFTPd на CentOS 5.5 для приёма TLS-сессий.
Важно: у вас уже должна быть рабочая установка PureFTPd на CentOS 5.5. Например, используйте инструкцию «Virtual Hosting With PureFTPd And MySQL (Incl. Quota And Bandwidth Management) On CentOS 5.3», которая также применима к 5.5.
2 Установка OpenSSL
OpenSSL необходим для TLS. Установите его командой:
yum install openssl3 Настройка PureFTPd
Откройте файл конфигурации PureFTPd:
vi /etc/pure-ftpd/pure-ftpd.confНайдите параметр TLS и установите нужное значение:
- 0 — отключить SSL/TLS (чистый FTP).
- 1 — принимать как традиционные, так и зашифрованные сессии (совместимость).
- 2 — принимать только защищённые сессии (отклонять незашифрованные).
Если вы хотите разрешить и FTP, и TLS, установите TLS в 1:
[...]
# This option can accept three values :
# 0 : disable SSL/TLS encryption layer (default).
# 1 : accept both traditional and encrypted sessions.
# 2 : refuse connections that don't use SSL/TLS security mechanisms,
# including anonymous sessions.
# Do _not_ uncomment this blindly. Be sure that :
# 1) Your server has been compiled with SSL/TLS support (--with-tls),
# 2) A valid certificate is in place,
# 3) Only compatible clients will log in.
TLS 1
[...]Если хотите принимать только TLS-сессии, установите TLS в 2:
[...]
# This option can accept three values :
# 0 : disable SSL/TLS encryption layer (default).
# 1 : accept both traditional and encrypted sessions.
# 2 : refuse connections that don't use SSL/TLS security mechanisms,
# including anonymous sessions.
# Do _not_ uncomment this blindly. Be sure that :
# 1) Your server has been compiled with SSL/TLS support (--with-tls),
# 2) A valid certificate is in place,
# 3) Only compatible clients will log in.
TLS 2
[...]Чтобы полностью отключить TLS и использовать только FTP, установите TLS в 0:
[...]
# This option can accept three values :
# 0 : disable SSL/TLS encryption layer (default).
# 1 : accept both traditional and encrypted sessions.
# 2 : refuse connections that don't use SSL/TLS security mechanisms,
# including anonymous sessions.
# Do _not_ uncomment this blindly. Be sure that :
# 1) Your server has been compiled with SSL/TLS support (--with-tls),
# 2) A valid certificate is in place,
# 3) Only compatible clients will log in.
TLS 0
[...]Важно: перед принудительным включением TLS (значение 2) убедитесь, что все клиенты, использующие сервер, поддерживают TLS. Иначе вы потеряете доступ у тех, кто не умеет работать через TLS.
4 Создание SSL-сертификата для TLS
TLS требует сертификат. Часто сначала создают самоподписанный сертификат в /etc/ssl/private/:
mkdir -p /etc/ssl/private/Сгенерируйте сертификат и приватный ключ в одном файле:
openssl req -x509 -nodes -days 7300 -newkey rsa:2048 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pemПри интерактивном создании вам будут заданы вопросы. Примеры ответов:
Country Name (2 letter code) [GB]: <– Введите код страны, например DE State or Province Name (full name) [Berkshire]: <– Регион или область Locality Name (eg, city) [Newbury]: <– Город Organization Name (eg, company) [My Company Ltd]: <– Название организации Organizational Unit Name (eg, section) []: <– Отдел, например IT Common Name (eg, your name or your server’s hostname) []: <– FQDN сервера, например server1.example.com Email Address []: <– Адрес электронной почты
Защитите файл сертификата:
chmod 600 /etc/ssl/private/pure-ftpd.pemПерезапустите PureFTPd, чтобы применить изменения:
/etc/init.d/pure-ftpd restartТеперь можно пробовать подключаться клиентом, настроенным на TLS.
5 Настройка FileZilla для TLS
Для работы через TLS нужен FTP-клиент с поддержкой TLS, например FileZilla.
Откройте Менеджер сайтов (Server Manager) в FileZilla. Выберите ваш сервер и в поле «Тип сервера» (Server Type) установите FTPES (FTP over explicit TLS) вместо обычного FTP.

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

После успешной проверки вы должны войти на сервер:

6 Когда это не работает
- Клиент не поддерживает TLS.
- Сертификат отсутствует, неверен или имеет неправильные права.
- Сервер был собран без поддержки SSL/TLS.
- Межсетевой экран или NAT мешают установке защищённого канала (особенно активный/пассивный режим FTP требует настройки портов).
Проверки:
- Посмотрите лог PureFTPd на ошибки при старте.
- Проверьте, что файл /etc/ssl/private/pure-ftpd.pem существует и имеет права 600.
- Тестируйте с FileZilla (FTPES) и с другой машины, чтобы исключить локальные блокировки.
7 Альтернативные подходы
- Использовать SFTP (SSH File Transfer Protocol) через OpenSSH вместо FTP+TLS — обычно проще в настройке, использует один порт (22) и более широко поддерживается.
- Развернуть FTPS с сертификатом, выданным доверенным центром сертификации (CA), чтобы избежать предупреждений клиента.
- Использовать VPN между клиентами и сервером, если TLS по каким-то причинам невозможен.
8 Быстрая методология проверки (mini-метод)
- Убедитесь, что PureFTPd собран с поддержкой TLS (–with-tls).
- Установите OpenSSL и создайте сертификат.
- Настройте TLS=1 и перезапустите сервис.
- Подключитесь через FileZilla в режиме FTPES.
- Если всё работает, поэтапно переключайте на TLS=2 и повторно тестируйте.
9 Чек-лист ролей
Администратор сервера:
- Установить openssl.
- Сгенерировать /etc/ssl/private/pure-ftpd.pem и установить права.
- Проверить опцию TLS в /etc/pure-ftpd/pure-ftpd.conf.
- Перезапустить pure-ftpd и просмотреть логи.
Администратор сети:
- Открыть нужные порты в фаерволе (21 и диапазон портов пассивного режима).
- Настроить NAT/порт-форвардинг для пассивных соединений.
Пользователь/тестировщик:
- Настроить клиент (FileZilla) на FTPES.
- Принять сертификат при первом подключении.
- Проверить передачу файлов, листинг и права.
10 Рекомендации по безопасности
- По возможности используйте сертификат, выданный доверенным CA, чтобы избежать ошибок клиента.
- Ограничьте доступ к файлу с ключом (600).
- Рассмотрите переход на SFTP для упрощения сетевой конфигурации и повышения безопасности.
- Логируйте и мониторьте неудачные попытки входа.
11 Краткий глоссарий
- TLS — протокол шифрования транспортного уровня для защиты трафика.
- FTPS/FTPES — FTP поверх TLS (explicit/implicit); FTPES обычно означает явное (explicit) TLS.
- SFTP — безопасный протокол передачи файлов поверх SSH, не связанный с FTP.
12 Ссылки
- PureFTPd: http://www.pureftpd.org/
- FileZilla: http://filezilla-project.org/
- CentOS: http://www.centos.org/
Краткое резюме: настройка PureFTPd для приема TLS — это комбинация установки OpenSSL, корректной конфигурации параметра TLS, генерации сертификата и проверки через клиент (например, FileZilla). Начинайте с режима совместимости (TLS=1), тестируйте и только потом переводите сервер в принудительный TLS (TLS=2).
Важно: всегда тестируйте доступность и совместимость клиентов после изменения параметров TLS, чтобы не прервать рабочие подключения.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента