Вопрос или проблема
У меня установлена версия 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
Я выполнил следующие шаги:
- Перейти в Tools & Settings > Security Policy, и в разделе Secure FTP выбрал Allow only secure FTPS connections
- Запустил эти команды:
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):
-
Проверка конфигурации 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
верны и сертификаты действительны. -
Перезапуск и проверка службы ProFTPD:
Так как нет самостоятельной службыproftpd
, которая бы запускалась вне зависимости отxinetd
, следует перезапустить именноxinetd
, выполняя:sudo systemctl restart xinetd
Убедитесь, что
xinetd
действительно запускаетproftpd
. Проверьте его конфигурации в/etc/xinetd.d/proftpd
(если такой файл существует). -
Проверка сетевых портов:
Убедитесь, что порт 21 открыт для соединения и что пассивные порты (49152-65535) также не заблокированы брандмауэром. Это критично для корректной работы FTPS. -
Убедитесь в поддержке TLS:
Удостоверьтесь, что поддержка TLS активирована, как указано в файле конфигурации/etc/proftpd.d/ssl.conf
. Следующие протоколы и шифры должны быть включены:TLSProtocol TLSv1.2 TLSv1.3
-
Проверьте совместимость клиента:
Убедитесь, что клиент (например, FileZilla) настроен правильно. В настройках FileZilla выберите "Require explicit FTP over TLS". -
Логи и отладка:
Ознакомьтесь с логами/var/log/plesk/ftp_tls.log
для выявления конкретных ошибок. Логи могут указать на проблемы с сертификатами или другим аспектом FTPS. -
Диагностика OpenSSL:
Проверьте возможности вашего сервера при помощи команды:openssl s_client -connect 127.0.0.1:21 -starttls ftp
Это позволит диагностировать проблемы на уровне SSL-соединения.
-
Проверка соответствия PCI:
Команда, которую вы применили:plesk sbin pci_compliance_resolver --enable dovecot plesk sbin pci_compliance_resolver --enable postfix
Эта команда предназначена для обеспечения соответствия PCI DSS для почтовых серверов и не влияет на FTP. Поэтому необходимо удостовериться в том, что изменений в ProFTPD достаточно для работы FTPS.
Пройдя шаги выше, вы должны устранить проблемы, связанные с подключением по FTPS на вашем сервере Plesk. Если проблема не исчезла, возможно, потребуется более детальная диагностика или консультация с поддержкой Plesk.