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

Как сбросить соединения, связанные с другими разорванными соединениями?

Сценарий: я написал iptables правила для хоста, на котором движок DPI наблюдает за очередями Netfilter: правила брандмауэра ставят трафик, входящий на этот хост, в разные очереди Netfilter в зависимости от того, идет ли трафик из определенного ipset мой.

в FORWARD цепочке, все соединения ставятся в очередь в разных NFQUEUES: Движок DPI наблюдает в очередях пользовательского пространства за пакетами, отправленными iptables, если обнаружено запрещенное соединение, он помечает пакет специальным значением; Механизм DPI повторно вставляет запрещенные пакеты в стек; в POSTROUTING цепь Я проверяю, помечены ли соединения этим специальным значением, если да, то я DROP их.

Все работает нормально, но ...

Проблема: движок DPI в порядке, но не идеален: иногда,

  1. трафик, который должен быть идентифицирован как запрещенный, не идентифицируется как таковой и поэтому не блокируется;
  2. запрещенный трафик блокируется, но не сразу, а запрещенное соединение тем временем может открыть другое соединение (RELATED, согласно машине conntrack), который не помечен как запрещенный, но я также хотел бы заблокировать соответствующее соединение.

Во втором случае я хочу принять меры: в качестве примера для случая 2 представьте, что механизм DPI хочет заблокировать YouTube, но ему не удается сделать это быстро; он позволяет соединению YouTube открывать другое соединение, помеченное как SSL от механизма DPI; Механизм DPI, наконец, блокирует YouTube, но соединение SSL дико и свободно; Я не могу указать движку DPI блокировать SSL-соединения, независимо от того, какие соединения их открывали.

Соображения: как объяснено в Сценарий, приходящие пакеты POSTROUTING цепочка может быть помечена 0 (это значение по умолчанию, поэтому механизм DPI не предпринимал никаких действий) или этим специальным значением (механизм DPI обнаружил запрещенное соединение и пометил его): простой

iptables -t mangle -A POSTROUTING -m mark --mark DROPVALUE -j DROP

почти всегда достаточно, но в Проблема В разделе я написал, что соединения, ОТНОСЯЩИЕСЯ к запрещенным, но не рассматриваются как таковые движком DPI, потому что даже если они были созданы с помощью запрещенного соединения, его протокол не заносится в черный список, и по этой причине они не считаются запрещенными. Это правильно, потому что я не могу занести в черный список SSL и HTTPS.

Мне нужно заблокировать соединения RELATED запрещенным: RELATED и ESTABLISHED (если я хорошо понял) не относятся к конкретным соединениям, но мне нужно сослаться на запрещенные соединения.

Вопрос: можно ли сбрасывать соединения RELATED к соединениям для сброса (или уже сброшенных) в iptables? Или какой-нибудь взлом с conntrack это необходимо?

Заранее благодарим за любое предложение.

Ты не понимаешь RELATED. Это не используется для каждого соединения, которое может установить один адрес. Он используется только для фактически связанных данных, таких как поток данных FTP, связанный с управляющим FTP-соединением, или сообщения об ошибках ICMP, связанные с открытым соединением. Очень мало таких подключений, которые действительно будут соответствовать RELATED.