VSFTPD TLS и явный режим

VSFTPD TLS и явный режим

В настоящее время я пытаюсь настроить VSFTPD на сервере Ubuntu 16.04 и хочу использовать FTPS (в идеале я бы использовал SFTP, но, к сожалению, я ограничен устаревшей системой)

Мне удалось настроить его с использованием конфигурации по умолчанию и без TLS, и я могу нормально подключиться через Filezilla. Хотя в течение последних 2 дней я пытался включить TLS, и никакие вопросы на SE или где-либо еще, похоже, не привели к положительному результату.

Данные моего сертификата в файле vsftpd.conf выглядят следующим образом:

rsa_cert_file=/path/to/fullchain.pem
rsa_private_key_file=/path/to/privkey.pem
allow_anon_ssl=NO
ssl_enable=YES
force_local_data_ssl=YES
force_local_logins_ssl=YES

Однако я больше не могу подключиться, и в консоли Filezilla отображается следующее:

Status:         Verifying certificate...
Status:         TLS connection established.
Status:         Server does not support non-ASCII characters.
Status:         Logged in
Status:         Retrieving directory listing...
Status:         Server sent passive reply with unroutable address. Using server address instead.
Command:    LIST
Error:      Connection timed out after 20 seconds of inactivity
Error:      Failed to retrieve directory listing

Это мой первый опыт настройки VSFTPD, поэтому я следовал некоторым руководствам в сети. Они также включали UFW, и я открыл порты, как показано.

Я также попробовал добавить следующие строки в мой файл vsftpd.conf

  ssl_tlsv1=YES
  ssl_sslv2=NO
  ssl_sslv3=NO

  require_ssl_reuse=NO
  ssl_ciphers=HIGH

Я видел другие посты, в которых упоминалась опция pasv_address.

поэтому я попытался добавить это в свою конфигурацию с внешним IP моего сервера - обратите внимание, что он размещен на Google Compute Engine, и я также обновил свои правила брандмауэра в Compute, чтобы разрешить те же порты и т. д., которые были указаны в руководстве. Но это тоже не работает.

Я могу только предположить, что это как-то связано с портами/брандмауэрами или другими опциями TLS, но я в полном тупике. Думаю, не помогает то, что у меня есть сетевой брандмауэр Google Cloud, а затем UFW (хотя отключение UFW не дает никакого эффекта)

Мои правила ufw выглядят следующим образом:

20/tcp                     ALLOW       Anywhere                  
21/tcp                     ALLOW       Anywhere                                   
990/tcp                    ALLOW       Anywhere                  
40000:50000/tcp            ALLOW       Anywhere 

и если кто-то хочет узнать больше, то вот руководство, которому я следовал:настройка-ftp-доступа

Похоже, в vsftpd.log нет никаких записей, которые могли бы указывать на проблему, но включение подробного ведения журнала в filezilla показывает следующее:

Привязка IP-адреса источника подключения к данным к IP-адресу источника подключения управления 192.168.1.100

что, как я предполагаю, может быть проблемой, так как это похоже на локальный IP. Хотя я в тупике, как это исправить, особенно с учетом того, что у меня также есть следующее в моем файле vsftpd.conf:

pasv_address=(ВНЕШНИЙ IP GOOGLE COMPUTE)

Мои правила брандмауэра Google Cloud следующие:

IP ranges: 0.0.0.0/0
tcp:20-21   
Allow
1000
default

pass-ports
sftp    
IP ranges: 0.0.0.0/0
tcp:40000-50000

(в конечном итоге они будут заблокированы по IP, но даже при тестировании со всеми ними я не могу заставить это работать)

А также в моем файле vsftpd.conf я, по-моему, добавил эти порты как те, которые будут использоваться через:

port_enable=YES
pasv_enable=YES
pasv_min_port=40000
pasv_max_port=41000

Обновлять

Теперь я могу подключиться к нему с самого устройства, используя lftp и следующие аргументы

установить ftp:ssl-force true

Я подключаюсь через доменное имя, а не через IP, поскольку сертификат привязан к домену, поэтому с IP он работать не будет.

Затем я могу создавать новые каталоги и т. д. через командную строку. Однако если я попытаюсь это сделать, lsто ls at 0 [Making data connection...]он просто зависнет. Я также получаю ошибку через внешний FTP-клиент, такой как filezilla. Это просто тайм-аут на LISTкоманду

Command:    LIST
Error:          The data connection could not be established: ETIMEDOUT - Connection attempt timed out
Response:   425 Failed to establish connection.
Error:          Failed to retrieve directory listing
Error:          GnuTLS error -15: An unexpected TLS packet was received.
Status:         Disconnected from server: ECONNABORTED - Connection aborted

Единственная другая информация, которая, как я думаю, может быть релевантной, заключается в том, что домен перенаправляется портом NGINX в приложение узла. Но я предполагаю, что это должно делать только для портов 80 и 443, поэтому не должно влиять на порт 21.

У кого-нибудь есть идеи?

Связанный контент