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

CentOS - разрешить доступ по FTP через IPtables

Извините, ребята, за глупый вопрос, но я не могу открыть свой FTP (ProFTPd) из браузера на CentOS 6.5. Когда я останавливаю IPtables, у меня нет проблем, но когда я работаю, у меня есть.

Порт 21 открыт, порт 20 нет (не знаю, как его открыть).

РЕДАКТИРОВАТЬ 1:

Вывод из "iptables -L -n"

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED 
ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22 
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:80 
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:21 
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:8000 
REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination 

РЕДАКТИРОВАТЬ 2: @HBruijn Его способ работает для меня.

Ваш вопрос сформулирован не очень хорошо, но описанные вами симптомы указывают на то, что пассивный FTP не работает правильно в сочетании с вашим брандмауэром.

Обычно команда insmod nf_conntrack_ftp достаточно для загрузки вспомогательного модуля FTP в плохо настроенном брандмауэре RHEL6 или CentOS.

Чтобы сделать это постоянным:

Отредактируйте файл конфигурации /etc/sysconfig/iptables-config и добавляем вспомогательный модуль nf_conntrack_ftp в переменную IPTABLES_MODULES:

IPTABLES_MODULES="nf_conntrack_ftp"

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

Вы можете напрямую отредактировать файл конфигурации iptables /etc/sysconfig/iptables затем перезапустите службу iptables. Или измените и сохраните текущую конфигурацию. Как root или sudo:

# If using a custom chain for this sort of thing, APPEND port to chain:
iptables -A MYCHAIN -m state --state NEW -p tcp --dport 20 -j ACCEPT
service iptables save

Если у вас есть строка REJECT в вашей цепочке INPUT, вам нужно убедиться, что порт, который вы добавляете в брандмауэр, вставлен перед REJECT:

# List the Chain with line numbers
iptables -L INPUT -n --line-numbers

# in this example 7 is REJECT line from the above,  this will push the REJECT line down
# and insert this right above it:
iptables -I INPUT 7 -m state --state NEW -p tcp --dport 20 -j ACCEPT
service iptables save

также не забудьте сделать то же самое для ip6tables если необходимо.