iptables это пользовательский интерфейс (утилита) к инфраструктуре фильтрации сетевых пакетов ядра, Сетевой фильтр.
Netfilter — это просто фильтр пакетов, он фильтрует то, что вы настроили для фильтрации. Он просматривает байты пакета, проверяет, какие порты, адреса и другие параметры установлены, и решает, что делать с пакетом. Делает это просто пакет за пакетом, почти не ссылаясь на ранее просмотренные пакеты. С помощью средства отслеживания соединений он иногда может определить, является ли пакет продолжением или иным образом связан с каким-либо другим пакетом, обозначая их все как связь, это уже совсем изыски. Также он может изменять пакеты, используя предопределенные правила (включая трансляцию сетевых адресов). Но это почти все, для чего предназначен Netfilter.
То, о чем вы говорите, обнаружение сканирования портов, это совсем другая задача обнаружения определенных шаблонов трафика.Недостаточно просматривать пакет за пакетом или только соединения. Вы должны рассмотреть существенный моментальный снимок трафика, чтобы увидеть закономерность. И это работа совершенно другого типа программного обеспечения, Система обнаружения вторжений (IDS) и анализатор трафика в целом. Есть некоторые системы с открытым исходным кодом, такие как Snort, и есть множество подобных коммерческих систем.
И, как вы уже догадались, это очень сложные и... неточные детекторы. Вы не можете быть точны в этой области. Вероятность того, что эти 5000 компьютеров опрашивают 65000 различных портов машины за короткий промежуток времени, очень мала, но не равна нулю; всегда есть некоторая неопределенность, является ли это законным трафиком или сканированием. И это обнаружение сканирования трафика, я полагаю, является одним из самых простых паттернов, которые можно заметить; есть много других случаев, о которых еще труднее рассказать, но еще легче спрятать и прокрасться через IDS. Это та область, где все они соревнуются друг с другом, у кого лучше обнаружение, с более правильным обнаружением аномалий и меньшим количеством ложных срабатываний, поэтому алгоритмы обнаружения часто являются их самой ценной интеллектуальной собственностью.
Наконец, IDS может стать Система предотвращения вторжений (IPS) в сочетании с фильтрацией пакетов. Например, вы можете настроить его таким образом, чтобы он устанавливал правило в Netfilter, когда считает, что обнаруживает сканирование, которое предотвратит дальнейшие действия с этих IP-адресов. Но Netfilter сам по себе не является IPS, он не обнаруживает, поэтому неудивительно, что вы не достигли своей цели.
Некоторые антивирусные программы считают себя умными и берут на себя роль «IPS для бедных». Обычно они делают это довольно плохо, и, на мой взгляд, это создает больше проблем, чем решает.
Главный вопрос: Почему тебе это нужно? Что для вас плохого в этих сканах? Я скажу иначе: предположим, что кто-то сканирует порт на вашей машине. Очень вероятно, что они обнаружат, что почти ни один порт не отвечает, или большинство ответов «порт недоступен».И что в этом плохого?