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

Правила брандмауэра, которые вызовут проблемы для Nmap

Я не говорю просто о блокировке портов.

Я помню, как нашел хост, который при обычном сканировании tcp nmap hostname, nmap не вернет никаких значимых результатов. Были проблемы с тайм-аутами. Если я установил значение тайм-аута на что-то довольно низкое и установил --max-retries 0 тогда это сработает.

Кто-нибудь знает о наборах правил iptables, которые вызывают проблемы для nmap?

Да. Я не помню точных деталей, но поищите у меня "вопрос" (на самом деле, вики сообщества) с заголовком "iptables Советы и хитрости". Там вы можете найти правило iptables, специально разработанное для остановки nmap.

Кроме того, я развертываю TARPIT цель в INPUT цепь. TARPIT в основном «ловит» любого, кто пытается открыть TCP-соединение, разрешая трехстороннее TCP-рукопожатие, но затем блокируя размер окна TCP на 0 и сбрасывая все состояния, касающиеся этого соединения, в брандмауэре. Хост, который пытался открыть порт, теперь заблокирован: соединение установлено, но он не может ничего отправить, и, поскольку он никогда не получает FIN или RST, он застревает в состоянии TCP-Established до истечения времени ожидания TCP *. Между тем, брандмауэр просто весело пыхтит, поскольку он сбросил все состояния этого соединения, поэтому ресурсы не используются.

Сочетание того и другого успешно поставило в тупик все виды сканеров портов. Они умирают, когда касаются моего файрволла :)

* Тайм-аут TCP - это много дольше таймаута TCP SYN. Примерно на три порядка больше, IIRC. Таким образом, сканеры портов будут работать чрезвычайно медленно, поскольку его потоки застревают в ожидании тайм-аута TCP.

Если вы хотите предотвратить синхронное сканирование хоста, вы можете использовать 2 метода:

  1. Метод ловушки:

    iptables -A INPUT -p tcp -m multiport --dports 23,79 --tcp-flags ALL SYN -m limit --limit 3 / m --limit-burst 6 -m Recent --name blacklist --set -j УДАЛИТЬ

    iptables -A INPUT -m latest --rcheck --nam blacklist -j DROP

  2. Нормальный способ:

    iptables -A INPUT -p tcp --syn -m limit --limit 7 / s -m latest --name blacklist --set -j DROP

    iptables -A INPUT -m latest --rcheck --nam blacklist -j DROP

если вы хотите, чтобы ваш хост не сканировал FIN, ACK, Xmas или другое сканирование, сообщите мне обновить свой ответ.

вы можете найти этот Интересно, что он описывает, как обнаруживать и блокировать сканирование портов в реальном времени.