
В настоящее время я пытаюсь настроить 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.
У кого-нибудь есть идеи?