iptables ловит DENY, но не ACCEPT, расположенный до него в цепочке

iptables ловит DENY, но не ACCEPT, расположенный до него в цепочке

У меня странная проблема с моим брандмауэром 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, но оно одинаково для десятков брандмауэров, которые я уже настроил и которые работают нормально.

решение1

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

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

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

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

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

решение2

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

решение3

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

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

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

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

iptables -vnL

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

iptables -I INPUT 1 -j In_RULE_0

Связанный контент