Я не говорю просто о блокировке портов.
Я помню, как нашел хост, который при обычном сканировании 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 метода:
Метод ловушки:
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
Нормальный способ:
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 или другое сканирование, сообщите мне обновить свой ответ.
вы можете найти этот Интересно, что он описывает, как обнаруживать и блокировать сканирование портов в реальном времени.