Как разорвать соединения, СВЯЗАННЫЕ с другими разорванными соединениями?

Как разорвать соединения, СВЯЗАННЫЕ с другими разорванными соединениями?

Сценарий:Я написал 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

Заранее спасибо за любые предложения.

решение1

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

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