iptables: использование модулей «conntrack» и «recent» для блокировки незапрашиваемых пакетов

Когда я разрешаю только пакеты RELATED и ESTABLISHED , а DROP все остальное, мои правила брандмауэра работают отлично, и у меня нет проблем:

 ### VARIANT A -A INPUT -i wlan0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT -A INPUT -i wlan0 -j DROP 

Тем не менее, я хочу сделать еще один шаг, а в черный список – любой IP который отправил мне «незапрашиваемый» пакет. Я изменил свое правило:

 ### VARIANT B -A INPUT -i wlan0 -m recent --name PORTSCAN --update --seconds 3600 -j DROP -A INPUT -i wlan0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT -A INPUT -i wlan0 -m recent --name PORTSCAN --set -j DROP 

Правила действуют следующим образом:

 Rule 1: checks whether IP address is already blacklisted and drops it if yes Rule 2: allows RELATED,ESTABLISHED packets Rule 3: all other packets which fail RELATED,ESTABLISHED test are blacklisted 

Эти правила работают по назначению в 99,9% случаев, но только на нескольких сайтах у меня проблемы. Веб-сайты Stack Exchange являются одним из таких примеров. Похоже, что stackexchange.com отправляет мне пакеты, которые модуль conntrack не распознает как связанные или установленные. Следовательно, эти пакеты не передают rule 2 и занесены в черный список по rule 3 .

Обычно это происходит, когда я нахожусь в режиме редактирования (например, задаю вопрос или редактирую существующий вопрос).

В таком случае я должен очистить черный список:

 echo / >/proc/net/xt_recent/PORTSCAN 

и тогда все работает снова.

Это может быть два объяснения:

 a) the conntrack module is deficient, in that it does not recognize legitimate packets as being RELATED/ESTABLISHED b) SE websites are indeed sending unsolicited packets 

Я считаю, что b , скорее всего, будет правдой из-за следующих рассуждений:

вариант A моих правил iptables отбрасывает все пакеты, которые он не распознает как RELATED/ESTABLISHED . Поскольку все работает отлично, эти пакеты не нужны для моей сессии. Это действительно незапрошенные пакеты, которые не должны были быть отправлены мне в первую очередь.

Вариант B моих правил iptables просто идет дальше, поскольку он «наказывает» нарушающий IP и добавляет его в черный список.

В: Как изменить правила iptables, чтобы он работал с сайтами SE?

Я также хотел бы получить комментарии относительно моего анализа проблемы

вот мой связанный пост на meta.unix.stackexchange.com: stackexchange.com отправляет мне незатребованные пакеты (и, следовательно, блокируется брандмауэром)

Linux и Unix - лучшая ОС в мире.