Как настроить vsftpd для работы в пассивном режиме

Как настроить vsftpd для работы в пассивном режиме

Всякий раз, когда я устанавливаю vsftpdна centos, я настраиваю только среду jail для пользователей, а остальное — это конфигурация по умолчанию vsftpd. Я создаю пользователя и пытаюсь подключиться с помощью filezilaftp-клиента, но не могу подключиться в пассивном режиме. Я всегда меняю transfer settingsна активный режим, чтобы успешно подключиться к , ftp serverиначе я получаю

 Error: Failed to retrieve directory listing

Так есть ли способ изменить любую директиву в vsftp.confфайле и подключиться к серверу в пассивном режиме?

решение1

Чтобы настроить пассивный режим для vsftpd, вам необходимо задать некоторые параметры в vsftpd.conf.

pasv_enable=Yes
pasv_max_port=10100
pasv_min_port=10090

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

iptables -I INPUT -p tcp --destination-port 10090:10100 -j ACCEPT

Если после проверки все заработало, сохраните состояние вашего брандмауэра с помощью

service iptables save

что обновит /etc/sysconfig/iptablesфайл.

Чтобы сделать это в CentOS 7, вам придется использовать новый firewalld, а не iptables:

Найдите свою зону:

# firewall-cmd --get-active-zones
public
  interfaces: eth0

Моя зона — «публичная», поэтому я устанавливаю ее как публичную, добавляю диапазон портов, и после этого перезагружаюсь:

# firewall-cmd --permanent --zone=public --add-port=10090-10100/tcp
# firewall-cmd --reload

Что происходит, когда вы устанавливаете связь

  • Ваш клиент подключается к серверу vsftpd через порт 21.

  • Сервер отвечает клиенту, сообщая ему, к какому порту из указанного выше диапазона подключиться.

  • Клиент устанавливает соединение для передачи данных через указанный порт, и сеанс продолжается.

Есть отличное объяснение различных ftpрежимыздесь.

решение2

Чтобы включить пассивный режим, задайте следующие параметры конфигурации в файле vsftp.conf:

pasv_enable=YES
pasv_min_port=41361
pasv_max_port=65534
pasv_address=xxx.xxx.xxx.xxx

Конечно, вы можете изменить начальный и конечный порт, а вместо xxx следует указать публичный IP-адрес вашего сервера.

Кроме того, вам следует открыть диапазон портов пассивного режима в вашем брандмауэре. На CentOS вы можете загрузить модуль ip_conntrack_ftpдля обработки ftp-подключений в вашем брандмауэре. Отредактируйте /etc/sysconfig/iptables-configи добавьте ip_conntrack_ftp в параметр IPTABLES_MODULES. После этого перезапустите iptables:

/sbin/service iptables restart

решение3

Рядом с pasv_enable=YESукажите диапазон портов, в котором VSFTP будет работать в режиме PASV:

pasv_min_port=50000
pasv_max_port=50999
pasv_enable=YES

Не забудьте настроить iptables так, чтобы он разрешал передачу пакетов на этих портах:

iptables -I INPUT -p tcp --dport 50000:50999 -j ACCEPT

решение4

Обычно не FTP-сервер, vsftpd, а брандмауэр, такой как iptable, препятствует использованию пассивного режима (блокируя TCP-соединение, необходимое для передачи данных).

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