Подходящие правила iptables для FTP-сервера в активном \ пассивном режиме
Я установил сервер ProFTPD на CentOS6. Если я создаю ftp localhost, я могу правильно подключиться, но если я попробую извне, я получаю сообщение "нет маршрута к хосту". Но есть маршрут к хосту, потому что я подключен через SSH.
Я попытался добавить следующие правила iptable:
iptables -A INPUT -p tcp -m tcp --dport 21 -m conntrack --ctstate ESTABLISHED -j ACCEPT -m comment --comment "Allow ftp connections on port 21"
iptables -A OUTPUT -p tcp -m tcp --dport 21 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT -m comment --comment "Allow ftp connections on port 21"
iptables -A INPUT -p tcp -m tcp --dport 20 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT -m comment --comment "Allow ftp connections on port 20"
iptables -A OUTPUT -p tcp -m tcp --dport 20 -m conntrack --ctstate ESTABLISHED -j ACCEPT -m comment --comment "Allow ftp connections on port 20"
iptables -A INPUT -p tcp -m tcp --sport 1024: --dport 1024: -m conntrack --ctstate ESTABLISHED -j ACCEPT -m comment --comment "Allow passive inbound connections"
iptables -A OUTPUT -p tcp -m tcp --sport 1024: --dport 1024: -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT -m comment --comment "Allow passive inbound connections"
и перезапустил оба сервиса proftpd и iptables. Что я могу сделать, чтобы устранить эту проблему?
1 ответ
Чтобы разрешить FTP, вам нужны следующие правила на сервере:
Разрешите управляющие соединения, инициированные клиентом, к порту 21 следующим образом:
iptables -A INPUT -p tcp -m tcp --dport 21 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT -m comment --comment "Allow ftp connections on port 21" iptables -A OUTPUT -p tcp -m tcp --sport 21 -m conntrack --ctstate ESTABLISHED -j ACCEPT -m comment --comment "Allow ftp connections on port 21"
В активном режиме разрешите подключения для передачи данных, инициированные сервером через порт 20, следующим образом:
iptables -A OUTPUT -p tcp -m tcp --sport 20 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT -m comment --comment "Allow ftp connections on port 20" iptables -A INPUT -p tcp -m tcp --dport 20 -m conntrack --ctstate ESTABLISHED -j ACCEPT -m comment --comment "Allow ftp connections on port 20"
Для пассивного режима разрешите подключения данных, инициированные клиентом на непривилегированных портах:
iptables -A INPUT -p tcp -m tcp --sport 1024: --dport 1024: -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT -m comment --comment "Allow passive inbound connections" iptables -A OUTPUT -p tcp -m tcp --sport 1024: --dport 1024: -m conntrack --ctstate ESTABLISHED -j ACCEPT -m comment --comment "Allow passive inbound connections"
Обычный conntrack
модули должны правильно отслеживать, когда RELATED
соединение для передачи данных установлено в активном режиме, однако вам может потребоваться загрузить nf_conntrack_ftp
модуль для корректного отслеживания, когда такие соединения устанавливаются в пассивном режиме:
- Проверьте, загружен ли он
lsmod | grep nf_conntrack_ftp
, - Загрузите это с
modprobe nf_conntrack_ftp
,
Кроме того, вы можете заменить RELATED
состояние с NEW
состояние, которое менее безопасно, но определенно сделало бы работу.
Эта ссылка содержит краткое изложение обоснования вышеуказанных правил.