Як налаштувати vsftpd для роботи з пасивним режимом


49

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

 Error: Failed to retrieve directory listing

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

Відповіді:


86

Для налаштування пасивного режиму для 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 .


Цікаво, чому ви ставите maxпорт після min..., але ще важливіше, якщо ви відкриєте порти 10090 до 10100, це 11 портів, а не 10, як ви кажете.
Alexis Wilke

Я вважаю, що це за алфавітом, це насправді не має значення, оскільки це окремі директиви.
user9517 підтримує GoFundMonica

3
Для мене це не працює pasv_address.
fbmd

мені знадобилося віки, щоб знайти це, жоден із посібників vsftpd не перераховує це ... блискуче
Піт

Чудово - ця конфігурація vsftp вирішила всі мої проблеми з FTP-брандмауером :)
BurninLeo

24

Щоб увімкнути пасивний режим, встановіть наступні параметри конфігурації у своєму vsftp.conf:

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

Звичайно, ви можете змінити порт початку та кінця і замінити ххх на відкритий IP вашого сервера.

Крім того, слід відкрити діапазон портів пасивного режиму у брандмауері. На центсі ви можете завантажити ip_conntrack_ftpмодуль для обробки ftp-з'єднань у вашому брандмауері. Відредагуйте /etc/sysconfig/iptables-configта додайте ip_conntrack_ftp до параметра IPTABLES_MODULES. Після цього перезапустіть iptables:

/sbin/service iptables restart

3
pasv_addressце те, що робить фокус, коли все інше було встановлено, і воно все ще не працює.
fbmd

1
@fbmd перед тим, як спробувати pasv_address, слід також перевірити, чи обидва pasv_max та min_port у правильному порядку. Мені траплялося, що у мене було налаштоване максимальне значення в pasv_min_port, і vsftpd просто ігнорує це. Це відомий мовчазний недолік / помилка, який візуально змусить вас думати, що порти pasv налаштовані коректно, але вони не є. Це сталося зі мною і вирішило мою проблему.
Педро Суса

Якщо ви хочете вказати DNS-адресу pasv_address, вам слід додати pasv_addr_resolve=YES(за замовчуванням NO)
Pierre-Damien

6

Поруч із цим 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

У стандартній системі CentOS є iptables -A INPUT ...
бланк

Переконайтеся, що ви включили pasv_addressу файл vsftpd.conf.
Педро Мадрид

3

Зазвичай, це не ftp-сервер vsftpd, а брандмауер на зразок iptable, який запобігає використанню пасивного режиму (блокування з'єднання tcp, необхідного для передачі даних).


Насправді vsftpd міг бути досить розумним, щоб відкрити порт у брандмауері ... але з відповідей, які я бачу тут, не схоже, що він здатний на такий подвиг.
Alexis Wilke

3
@ Алексис. Немає сенсу в брандмауері, якщо програми просто ігнорують правила та відкривають порти.
екернер
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.