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


Всякий раз, когда я устанавливаю vsftpd на centos, я устанавливаю только среду jail для пользователей, а rest - по умолчанию vsftpd. Я создаю пользователя и пытаюсь подключиться к файловому клиенту filezila, но я не мог подключиться к пассивному режиму. Я всегда меняю «параметры передачи» на активный режим, чтобы успешно подключиться к ftp-серверу, иначе я получаю

 Error: Failed to retrieve directory listing

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

Обновление: благодаря всем хорошо работающим с ответами.


45
2017-08-25 16:22


Источник




Ответы:


Чтобы настроить пассивный режим для 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 режимы Вот.


80
2017-08-25 16:48



Подумайте, почему вы max порт после min... но что более важно, если вы открываете порты от 10090 до 10100, это 11 портов, а не 10, как вы говорите. - Alexis Wilke
Я считаю, что это алфавит, это действительно не имеет значения, поскольку они являются отдельными директивами. - Iain
Это не работает для меня без pasv_address, - fbmd
взял меня на себя, чтобы найти это, ни один из руководств vsftpd не перечисляет это ... блестящее - Willshaw Media
Wonderful - эта конфигурация vsftp решила все мои проблемы с FTP-брандмауэром :) - BurninLeo


Чтобы включить пассивный режим, задайте следующие параметры конфигурации в файле 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

22
2017-08-25 16:47



pasv_address это то, что делает трюк, когда все остальное настроено и оно все еще не работает. - fbmd
@fbmd перед попыткой pasv_address, нужно также проверить, находятся ли оба pasv_max и min_port в правильном порядке. Случилось так, что у меня было максимальное значение, настроенное в pasv_min_port, и vsftpd просто игнорирует это. Это известный тихий недостаток / ошибка, который визуально заставит вас думать, что порты pasv настроены на соответствие, но это не так. Это случилось со мной и решило мою проблему. - Pedro Sousa


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

pasv_min_port=50000
pasv_max_port=50999
port_enable=YES

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

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

4
2017-08-25 16:47



В стандартной системе CentOS существует скрытая DROP, которая вызывает правила, добавленные с помощью iptables -A INPUT ...  игнорировать - Iain
Убедитесь, что вы включили pasv_address в файле vsftpd.conf. - Pedro Madrid


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


2
2017-08-25 16:40



Фактически, vsftpd может быть достаточно умным, чтобы открыть порт в брандмауэре ... но из ответов, которые я вижу здесь, не похоже, что он способен на такой подвиг. - Alexis Wilke
@Alexsis. Нет смысла использовать брандмауэр, если приложения просто игнорируют правила и открывают порты в любом случае. - ekerner