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

Нужно ли останавливать iptables, когда вы находитесь за маршрутизатором для доступа к httpd (centos на wmware)?

У меня странное поведение, когда я пытаюсь получить доступ к своему веб-серверу, который прослушивает порт 8011. Я настроил iptables для включения этого порта, и он выглядит следующим образом:

> :INPUT ACCEPT [0:0] :FORWARD ACCEPT
> [0:0] :OUTPUT ACCEPT [844:101801]
> :RH-Firewall-1-INPUT - [0:0]
> -A INPUT -j RH-Firewall-1-INPUT
> -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
> -A INPUT -p tcp -m tcp --dport 8011 -j ACCEPT
> -A INPUT -p tcp -m tcp --dport 81 -j ACCEPT
> -A FORWARD -j RH-Firewall-1-INPUT
> -A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT
> -A RH-Firewall-1-INPUT -i lo -j ACCEPT
> -A RH-Firewall-1-INPUT -p icmp -m icmp --icmp-type any -j ACCEPT
> -A RH-Firewall-1-INPUT -p esp -j ACCEPT
> -A RH-Firewall-1-INPUT -p ah -j ACCEPT
> -A RH-Firewall-1-INPUT -d 224.0.0.251 -p udp -m udp --dport 5353 -j ACCEPT
> -A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
> -A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
> -A RH-Firewall-1-INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
> -A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
> -A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited

Я запускаю сервер Centos 5.5 на wmware и пытаюсь получить доступ к веб-серверу с того же локального компьютера. Когда я пытаюсь получить доступ к веб-серверу с помощью Centos с lynx 10.0.0.3:8011, я могу получить доступ к серверу.
Значит, закрытие iptable - единственное решение?

Вы почти правы. проблема в том, что ваш пакет никогда не возвращается в цепочку INPUT, потому что есть отклонение по умолчанию, которое соответствует всему, что не имеет разрешения в конце RH-Firewall-1-INPUT.

Чтобы разбить то, что происходит в вашей цепочке:

:INPUT ACCEPT [0:0] :FORWARD ACCEPT
[0:0] :OUTPUT ACCEPT [844:101801]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT

Все, что есть во входном интерфейсе, будет обрабатываться RH-Firewall-1-INPUT, мы вернемся сюда, если пакет не будет сопоставлен цепочкой.

-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 8011 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 81 -j ACCEPT

Они будут обработаны ПОСЛЕ RH-Firewall-1-INPUT тогда и только тогда, когда совпадений нет.

-A FORWARD -j RH-Firewall-1-INPUT

В вашей прямой цепочке также применены правила RH-Firewall-1-INPUT

-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp -m icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p esp -j ACCEPT
-A RH-Firewall-1-INPUT -p ah -j ACCEPT
-A RH-Firewall-1-INPUT -d 224.0.0.251 -p udp -m udp --dport 5353 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT

Это некоторые параметры RH по умолчанию -A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host -hibited Это правило соответствует ВСЕ пакеты. и отклоняет их, поскольку мы сопоставляем все пакеты, которые никогда не возвращаемся в цепочку INPUT.

Вы можете сделать пару вещей, чтобы исправить это. Мое первое предложение - это то, что я рекомендую сохранять единообразие. Вы бы изменили цепочку RH-Firewall-1-INPUT следующим образом:

-A RH-Firewall-1-INPUT -p tcp -m tcp -m state --state NEW --dport 443 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp -m state --state NEW --dport 8011 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp -m state --state NEW--dport 81 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp -m icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p esp -j ACCEPT
-A RH-Firewall-1-INPUT -p ah -j ACCEPT
-A RH-Firewall-1-INPUT -d 224.0.0.251 -p udp -m udp --dport 5353 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT

Второй вариант - прыгнуть после того, как вы введете правила. Я действительно не предлагаю этого, поскольку это может привести к некоторым уродливым правилам, но это правильное решение, поэтому я помещу его здесь:

:INPUT ACCEPT [0:0] :FORWARD ACCEPT
[0:0] :OUTPUT ACCEPT [844:101801]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 8011 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 81 -j ACCEPT
-A INPUT -j RH-Firewall-1-INPUT

Поскольку вы используете VMWare, есть вероятность, что сеть виртуальных машин отличается от вашей, например, ваша сетевая маска может быть другой и т.д., если вы выполните ipconfig на машине Windows и ifconfig в поле centos и опубликуете результаты, вы можете получить лучший ответ .