Как включить FTPS в Plesk?

Вопрос или проблема

У меня установлена версия Plesk Obsidian 18.0.66 на Ubuntu 18.04.

При попытке подключиться к FTP через TLS с помощью FileZilla я получил следующий вывод:

02:51:25 Status:        Disconnected from server
02:51:25 Status:        Connecting to 1.2.3.4:21...
02:51:25 Status:        Connection established, waiting for welcome message...
02:51:26 Response:      220 ProFTPD Server (ProFTPD) [1.2.3.4]
02:51:26 Command:       AUTH TLS
02:51:26 Response:      504 Command not implemented for that parameter
02:51:26 Command:       AUTH SSL
02:51:26 Response:      504 Command not implemented for that parameter
02:51:26 Error:         Critical error: Could not connect to server

Я выполнил следующие шаги:

  1. Перейти в Tools & Settings > Security Policy, и в разделе Secure FTP выбрал Allow only secure FTPS connections
  2. Запустил эти команды:
    plesk sbin pci_compliance_resolver --enable dovecot
    plesk sbin pci_compliance_resolver --enable postfix
    

При использовании FileZilla я использую опцию Require explicit FTP over TLS.

Я проверил файл ftp_tls.log, однако я смог получить только следующее:

> tail -n0 -f /var/log/plesk/ftp_tls.log
2025-01-18 19:48:21,045 mod_tls/2.9.2[19660]: added 1 certs from '/opt/psa/admin/conf/httpsd.pem' to SSL_CTX certificate chain
2025-01-18 19:49:10,540 mod_tls/2.9.2[20439]: added 1 certs from '/opt/psa/admin/conf/httpsd.pem' to SSL_CTX certificate chain
2025-01-18 19:51:26,204 mod_tls/2.9.2[22004]: added 1 certs from '/opt/psa/admin/conf/httpsd.pem' to SSL_CTX certificate chain

Обратите внимание, что если я использую небезопасное FTP-соединение, я могу получить доступ к FTP. Однако я хочу использовать соединение FTPS.

Обратите внимание, что /opt/psa/admin/conf/httpsd.pem содержит действительный сертификат. Я подтвердил это, используя инструмент SSL Certificate Decoder для проверки сертификата. Срок действия сертификата истекает 15 апреля 2025 года.

Согласно этой документации, если я запущу эту команду на сервере, я получу сертификат:

openssl s_client -connect 127.0.0.1:21 -starttls ftp

Как я понимаю, после подключения к моему серверу Plesk клиент отправляет команды AUTH TLS и AUTH SSL, но затем сервер отклоняет команды. Это похоже на то, что сервер не поддерживает эти две команды.

Не уверен, поможет ли это, но нет службы proftpd. Каждый раз, когда я изменяю настройки proftpd, мне нужно перезапускать службу xinetd.

Я что-то упустил здесь?

Я пытаюсь разобраться с этой проблемой уже несколько дней, но не могу найти никаких зацепок. Поэтому буду признателен за любые советы или предложения.

Дополнительная информация:

> openssl version
OpenSSL 1.1.1  11 Sep 2018

> openssl ciphers -v | awk '{print $2}' | sort | uniq
SSLv3
TLSv1
TLSv1.2
TLSv1.3

> cat /etc/proftpd.conf
...
<IfModule mod_tls.c>
        # common settings for all virtual hosts
        TLSEngine on
        TLSRequired on

        TLSLog /var/log/plesk/ftp_tls.log

        TLSRSACertificateFile /opt/psa/admin/conf/httpsd.pem
        TLSRSACertificateKeyFile /opt/psa/admin/conf/httpsd.pem
        TLSCertificateChainFile /opt/psa/admin/conf/httpsd.pem

        # Authenticate clients that want to use FTP over TLS?
        TLSVerifyClient off

        # Allow SSL/TLS renegotiations when the client requests them, but
        # do not force the renegotations.  Some clients do not support
        # SSL/TLS renegotiations; when mod_tls forces a renegotiation, these
        # clients will close the data connection, or there will be a timeout
        # on an idle data connection.
        TLSRenegotiate none

        # As of ProFTPD 1.3.3rc1, mod_tls only accepts SSL/TLS data connections
        # that reuse the SSL session of the control connection, as a security measure.
        # Unfortunately, there are some clients (e.g. curl) which do not reuse SSL sessions.
        TLSOptions NoSessionReuseRequired
</IfModule>
...

> cat /etc/proftpd.d/ssl.conf
<Global>
<IfModule mod_tls.c>
#TLSProtocol TLSv1 TLSv1.1 TLSv1.2
TLSProtocol TLSv1.2 TLSv1.3
TLSCipherSuite EECDH+AESGCM+AES128:EECDH+AESGCM+AES256:EECDH+CHACHA20:EDH+AESGCM+AES128:EDH+AESGCM+AES256:EDH+CHACHA20:EECDH+SHA256+AES128:EECDH+SHA384+AES256:EDH+SHA256+AES128:EDH+SHA256+AES256:EECDH+SHA1+AES128:EECDH+SHA1+AES256:EDH+SHA1+AES128:EDH+SHA1+AES256:EECDH+HIGH:EDH+HIGH:AESGCM+AES128:AESGCM+AES256:CHACHA20:SHA256+AES128:SHA256+AES256:SHA1+AES128:SHA1+AES256:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK:!KRB5:!aECDH
TLSServerCipherPreference on
</IfModule>
</Global>

> cat /etc/proftpd.d/55-passive-ports.conf
<Global>
PassivePorts 49152 65535
</Global>

> cat /etc/proftpd.d/50-plesk.conf
#ВНИМАНИЕ!
#
#НЕ ИЗМЕНЯЙТЕ ЭТОТ ФАЙЛ, ПОСКОЛЬКУ ОН БЫЛ СГЕНЕРИРОВАН АВТОМАТИЧЕСКИ,
#ПОЭТОМУ ВСЕ ВАШИ ИЗМЕНЕНИЯ БУДУТ ПОТЕРЯНЫ ПРИ СЛЕДУЮЩЕМ ГЕНЕРАЦИИ ФАЙЛА.

# Глобальный раздел
<Global>
RequireValidShell off

<IfModule mod_tls.c>
    TLSEngine on
    TLSRequired on
</IfModule>
</Global>

Ответ или решение

Чтобы настроить FTPS (FTP Secure) в Plesk Obsidian версии 18.0.66, установленной на Ubuntu 18.04, важно учитывать несколько критических аспектов. Процесс может вызвать трудности, особенно если сервер отказывается обрабатывать команды AUTH TLS и AUTH SSL, как это отображается в логах FileZilla. Ниже представлена пошаговая инструкция по решению данной проблемы.

Объяснение теории (Theory):

FTPS расширяет FTP, добавляя поддержку TLS (Transport Layer Security), который обеспечивает шифрование передачи данных. Это критично для защиты передаваемой информации от перехвата. Проблемы с подключением могут возникнуть из-за неправильной конфигурации ProFTPD, который служит FTP-сервером в вашем устройстве Plesk.

Пример (Example):

Ваш вывод FileZilla показывает, что сервер отклоняет команды AUTH TLS и AUTH SSL с ответом "504 Command not implemented for that parameter". Это указывает на проблему в поддержке TLS в конфигурации ProFTPD.

Применение (Application):

  1. Проверка конфигурации ProFTPD:
    Убедитесь, что модуль mod_tls загружается корректно и что его настройки активны. Для этого в файле /etc/proftpd.conf должны быть следующие активные директивы:

    <IfModule mod_tls.c>
       TLSEngine on
       TLSRequired on
       TLSLog /var/log/plesk/ftp_tls.log
    
       TLSRSACertificateFile /opt/psa/admin/conf/httpsd.pem
       TLSRSACertificateKeyFile /opt/psa/admin/conf/httpsd.pem
       TLSCertificateChainFile /opt/psa/admin/conf/httpsd.pem
    
       TLSVerifyClient off
       TLSRenegotiate none
       TLSOptions NoSessionReuseRequired
    </IfModule>

    Убедитесь, что пути к сертификатам файла /opt/psa/admin/conf/httpsd.pem верны и сертификаты действительны.

  2. Перезапуск и проверка службы ProFTPD:
    Так как нет самостоятельной службы proftpd, которая бы запускалась вне зависимости от xinetd, следует перезапустить именно xinetd, выполняя:

    sudo systemctl restart xinetd

    Убедитесь, что xinetd действительно запускает proftpd. Проверьте его конфигурации в /etc/xinetd.d/proftpd (если такой файл существует).

  3. Проверка сетевых портов:
    Убедитесь, что порт 21 открыт для соединения и что пассивные порты (49152-65535) также не заблокированы брандмауэром. Это критично для корректной работы FTPS.

  4. Убедитесь в поддержке TLS:
    Удостоверьтесь, что поддержка TLS активирована, как указано в файле конфигурации /etc/proftpd.d/ssl.conf. Следующие протоколы и шифры должны быть включены:

    TLSProtocol TLSv1.2 TLSv1.3
  5. Проверьте совместимость клиента:
    Убедитесь, что клиент (например, FileZilla) настроен правильно. В настройках FileZilla выберите "Require explicit FTP over TLS".

  6. Логи и отладка:
    Ознакомьтесь с логами /var/log/plesk/ftp_tls.log для выявления конкретных ошибок. Логи могут указать на проблемы с сертификатами или другим аспектом FTPS.

  7. Диагностика OpenSSL:
    Проверьте возможности вашего сервера при помощи команды:

    openssl s_client -connect 127.0.0.1:21 -starttls ftp

    Это позволит диагностировать проблемы на уровне SSL-соединения.

  8. Проверка соответствия PCI:
    Команда, которую вы применили:

    plesk sbin pci_compliance_resolver --enable dovecot
    plesk sbin pci_compliance_resolver --enable postfix

    Эта команда предназначена для обеспечения соответствия PCI DSS для почтовых серверов и не влияет на FTP. Поэтому необходимо удостовериться в том, что изменений в ProFTPD достаточно для работы FTPS.

Пройдя шаги выше, вы должны устранить проблемы, связанные с подключением по FTPS на вашем сервере Plesk. Если проблема не исчезла, возможно, потребуется более детальная диагностика или консультация с поддержкой Plesk.

Оцените материал
Добавить комментарий

Капча загружается...