Назад | Перейти на главную страницу

FTPS с использованием Vsftp беды

У меня есть проблемы с Vstpd, и я не знаю, связаны они или нет.

Одна из проблем заключается в том, что FireFTP не может пройти этап перечисления каталогов - он просто застревает там навсегда, никаких сообщений об ошибках. Filezilla работает, но тоже иногда зависает. В частности, есть некоторые файлы, которые просто не загружаются - они тоже застревают навсегда, иногда проходят несколько байтов; здесь тоже нет сообщений об ошибках на стороне сервера, а только тайм-аут на стороне клиента. Другие клиенты кажутся совершенно незатронутыми (в частности, Cyberduck на Windows и Transmit на Mac всегда работали безупречно).

С FileZilla файл, который я пытаюсь загрузить, будет создан на сервере с нулевым размером байта, но ничего не будет загружено. Если файл уже был там, он будет очищен. Я также могу загружать другие файлы в тот же каталог, так что это не проблема с разрешениями.

Есть ли проблема с моей конфигурацией? Я использую устаревшую версию? (Это Ubuntu 10.04). Вот vsftpd.conf. Использование самозаверяющего сертификата.

Может это проблема линукса ??? Использование Ubuntu 12.04 в качестве клиентской ОС.

listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
dual_log_enable=YES
xferlog_std_format=NO
xferlog_file=/var/log/vsftpd.log
session_support=YES

connect_from_port_20=YES
chroot_local_user=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/private/vsftpd.pem

ssl_enable=YES
require_ssl_reuse=NO
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=YES
ssl_sslv3=YES
ssl_ciphers=HIGH

Оказывается, проблема была на клиенте, а не на сервере!

Я продолжил расследование и обнаружил, что наиболее вероятным виновником является Gnutls версия, установленная на машине клиента (это Ubuntu 12.04, GnuTLS 2.12.14).

Чтобы убедиться в этом, я загрузил версию FileZilla для Windows, которая статически связана с версией 2.10, и запустил ее с помощью Wine. Оно работает!!

Покопавшись в багтрекере FileZilla, я наконец нашел подтверждение: http://trac.filezilla-project.org/ticket/7837

Это связано с пассивным FTP или FTPS. 100%

Это не будет работать безопасно для FTPS - тогда вам нужно будет настроить и открыть более высокие порты вручную в брандмауэрах и установить фиксированный диапазон с помощью pasv_min_port & pasv_max_port в vsftpd.conf.

Для не-SSL:

http://slacksite.com/other/ftp.html

  1. Обязательно загрузите модули ip_nat_ftp (если вы используете NAT на ЭТОМ СЕРВЕРЕ) и ip_conntrack_ftp

  2. Используйте "ftp helper" в конфигурации iptables для FTP:

    -m helper --helper ftp

В случае RHEL / Fedora / Centos вы можете найти специальную строку для модулей в /etc/sysconfig/iptables-config и добавьте помощника в правила для /etc/sysconfig/iptables

Это на всякий случай.

Если вы находитесь за NAT / Firewall - он должен поддерживать и отслеживать FTP-соединения.