1

У меня странная проблема с моим брандмауэром iptables: если я установил два последовательных идентичных правила, первое - ACCEPT а второе - DENY , входящий пакет отклоняется (и регистрируется как таковой).

Как это возможно, что входящий пакет игнорируется первым правилом и перехватывается вторым?

Представление fwbuilder здесь:

Вот дамп iptables :

Chain INPUT (policy DROP)
target     prot opt source               destination         
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            state     RELATED,ESTABLISHED
In_RULE_0  all  --  0.0.0.0/0            0.0.0.0/0            state NEW
In_RULE_1  all  --  0.0.0.0/0            0.0.0.0/0           

Chain FORWARD (policy DROP)
target     prot opt source               destination         
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
In_RULE_0  all  --  0.0.0.0/0            0.0.0.0/0            state NEW
In_RULE_1  all  --  0.0.0.0/0            0.0.0.0/0           

Chain OUTPUT (policy DROP)
target     prot opt source               destination         
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED

Chain In_RULE_0 (2 references)
target     prot opt source               destination         
LOG        all  --  0.0.0.0/0            0.0.0.0/0            LOG flags 0     level 6 prefix "FW RULE 0 -- ACCEPT "
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           

Chain In_RULE_1 (2 references)
target     prot opt source               destination         
LOG        all  --  0.0.0.0/0            0.0.0.0/0            LOG flags 0 level 6 prefix "FW RULE 1 -- DENY "
DROP       all  --  0.0.0.0/0            0.0.0.0/0  

Я также попробовал с одним правилом ACCEPT и оно не ловит.

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

3 ответа3

0

ОК, я нашел это. Оказывается, мой FW был совершенно хорош, но виртуальный хост был неправильно настроен. У меня не было ошибок, но iptables не был разрешен. Когда я позволил это, FW начал работать ... Не удивительно, почему мы не смогли найти ошибку на уровне iptables ... Спасибо за помощь :)

0

Вы должны знать, что: правило с опцией -I iptables помещает правило в НАЧАЛО списка; Правило с опцией -A помещает правило в конец списка.

В вашем случае: я думаю, что вы могли использовать «-I» в обоих ваших (почти идентичных) правилах iptables, второе правило вставляется в начало списка перед первым правилом, и поэтому вы создали список правил с правилами в порядке:

match -s x.x.x.x action DROP
match -s x.x.x.x action ACCEPT

Поскольку ваш пакет соответствует обоим этим правилам, первый (DROP) в порядке фактической операционной таблицы (которая находится в ОЗУ) вступит в силу. Заказ не имеет ничего общего с заказом в вашем конфигурационном файле iptable.

Поменяйте порядок, и результат будет другим.

0

Ваш iptables In_RULE_0 применяется только к НОВЫМ соединениям, когда вы используете state NEW .

Он также установлен в вашей цепочке FORWARD (пакеты через сервер), а не в цепочке INPUT (пакеты на сервер).

Как вы тестируете? Вы пингуете определенный интерфейс сервера?

Можете ли вы опубликовать полный вывод:

iptables -vnL

Попробуйте следующее правило для регистрации трафика в цепочке INPUT (пинг до интерфейса сервера)

iptables -I INPUT 1 -j In_RULE_0

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .