Поиск по сайту:

Безопасные соединения ProFTPD с использованием протокола TLS/SSL в RHEL/CentOS 7


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

Требования

  1. Установка сервера ProFTPD на RHEL/CentOS 7
  2. Включить анонимную учетную запись для сервера Proftpd в RHEL/CentOS 7

Из этого руководства вы узнаете, как защитить и зашифровать FTP-соединение на сервере ProFTPd в CentOS/RHEL 7. , используя TLS (Transport Layer Security) с расширением Explicit FTPS (подумайте о FTPS как о HTTPS для протокола HTTP).

Шаг 1. Создайте файл конфигурации модуля Proftpd TLS.

1. Как обсуждалось в предыдущем руководстве Proftpd, посвященном анонимной учетной записи, в этом руководстве также будет использоваться тот же подход для управления файлами будущих конфигураций Proftpd как модулями с помощью enabled_mod и < b>disabled_mod, в которых будут храниться все расширенные возможности сервера.

Итак, создайте новый файл в вашем любимом текстовом редакторе с именем tls.conf в пути disabled_mod Proftpd и добавьте следующие директивы.

nano /etc/proftpd/disabled_mod/tls.conf

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

<IfModule mod_tls.c>
TLSEngine                               on
TLSLog                                  /var/log/proftpd/tls.log
TLSProtocol                             SSLv23
 
TLSRSACertificateFile                   /etc/ssl/certs/proftpd.crt
TLSRSACertificateKeyFile                /etc/ssl/private/proftpd.key

#TLSCACertificateFile                                     /etc/ssl/certs/CA.pem
TLSOptions                      NoCertRequest EnableDiags NoSessionReuseRequired
TLSVerifyClient                         off
TLSRequired                             on
TLSRenegotiate                          required on
</IfModule>

2. Если вы используете браузеры или FTP-клиенты, которые не поддерживают соединения TLS, прокомментируйте строку TLSRquired on, чтобы одновременно разрешить соединения TLS и не-TLS, и избегайте сообщения об ошибке, как на скриншоте ниже.

Шаг 2. Создайте файлы сертификатов SSL для TLS.

3. После создания файла конфигурации модуля TLS. который включит FTP через TLS на Proftpd, вам необходимо сгенерировать сертификат и ключ SSL, чтобы использовать безопасную связь через сервер ProFTPD с помощью пакета OpenSSL.

yum install openssl

Вы можете использовать одну длинную команду для создания пар сертификата и ключа SSL, но для упрощения вы можете создать простой сценарий bash, который будет генерировать пары SSL с нужным именем и назначать правильные разрешения для файла ключа.

Создайте файл bash с именем proftpd_gen_ssl в /usr/local/bin/ или по любому другому системному пути к исполняемому файлу (определенному переменной ` PATH). ).

nano /usr/local/bin/proftpd_gen_ssl

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

#!/bin/bash
echo -e "\nPlease enter a name for your SSL Certificate and Key pairs:"
read name
 openssl req -x509 -newkey rsa:1024 \
          -keyout /etc/ssl/private/$name.key -out /etc/ssl/certs/$name.crt \
          -nodes -days 365\

 chmod 0600 /etc/ssl/private/$name.key

4. После того, как вы создали указанный выше файл, назначьте ему разрешения на выполнение, убедитесь, что каталог /etc/ssl/private существует, и запустите сценарий для создания сертификата и ключа SSL. пары.

chmod +x /usr/local/bin/proftpd_gen_ssl
mkdir -p /etc/ssl/private
proftpd_gen_ssl

Предоставьте SSL-сертификат необходимой информации, которая не требует пояснений, но обратите внимание на Общее имя, чтобы оно соответствовало Полному доменному имени вашего хоста – FQDN.

Шаг 3. Включите TLS на сервере ProFTPD.

5. Поскольку файл конфигурации TLS, созданный ранее, уже указывает на правильный файл сертификата и ключа SSL, остается только активировать модуль TLS, создав символическую ссылку на tls.conf в каталог enabled-mod и перезапустите демон ProFTPD, чтобы применить изменения.

ln -s /etc/proftpd/disabled_mod/tls.conf  /etc/proftpd/enabled_mod/
systemctl restart proftpd

6. Чтобы отключить модуль TLS, просто удалите символическую ссылку tls.conf из каталога enabled_mod и перезапустите сервер ProFTPD, чтобы изменения вступили в силу.

rm /etc/proftpd/enabled_mod/tls.conf
systemctl restart proftpd

Шаг 4. Откройте брандмауэр, чтобы разрешить FTP через TLS-связь.

7. Чтобы клиенты могли получить доступ к ProFTPD и безопасно передавать файлы в пассивном режиме, необходимо открыть весь диапазон портов между 1024 и . 65534 на брандмауэре RHEL/CentOS, используя следующие команды.

firewall-cmd --add-port=1024-65534/tcp  
firewall-cmd --add-port=1024-65534/tcp --permanent
firewall-cmd --list-ports
firewall-cmd --list-services
firewall-cmd --reload

Вот и все. Теперь ваша система готова принимать FTP-связь через TLS со стороны клиента.

Шаг 5. Доступ к ProFTPD через TLS от клиентов

8. Веб-браузеры обычно не имеют встроенной поддержки протокола FTP через TLS, поэтому все транзакции доставляются по незашифрованному FTP. Одним из лучших FTP-клиентов является FileZilla, который полностью имеет открытый исходный код и может работать практически на всех основных операционных системах.

Чтобы получить доступ к FTP через TLS из FileZilla, откройте Менеджер сайта, выберите FTP в разделе Протокол и Требовать явный FTP через TLS в разделе В раскрывающемся меню Шифрование выберите Тип входа как Нормальный, введите свои учетные данные FTP и нажмите Подключиться для связи. с сервером.

9. Если вы впервые подключаетесь к серверу ProFTPD, должно появиться всплывающее окно с новым сертификатом, установите флажок с надписью Всегда доверять сертификату в будущем. сессии и нажмите ОК, чтобы принять сертификат и пройти аутентификацию на сервере ProFTPD.

Если вы планируете использовать другие клиенты, кроме FileZilla, для безопасного доступа к FTP-ресурсам, убедитесь, что они поддерживают протокол FTP через TLS. Хорошими примерами FTP-клиентов, поддерживающих FTPS, являются WinSCP для платформ Windows и gFTP или LFTP (командная строка) для NIX.