В Archwiki есть статья с предложениями по межсетевой экран iptables с отслеживанием состояния. Они рекомендуют некоторые правила обмануть сканеры портов, но советуем открыть уязвимость для DoS-атак. В частности, запрещая доступ к IP-адресам, которые постоянно пытаются получить доступ к закрытым портам, потенциальный злоумышленник может отправить эти пакеты с поддельным IP-адресом, чтобы мой брандмауэр заблокировал законных пользователей.
Предлагаемые правила TCP следующие:
# iptables -I TCP -p tcp -m recent --update --rsource --seconds 60 --name TCP-PORTSCAN -j REJECT --reject-with tcp-reset
# iptables -A INPUT -p tcp -m recent --set --rsource --name TCP-PORTSCAN -j REJECT --reject-with tcp-reset
У меня вопрос: могу ли я ограничить эффективность упомянутой DoS-атаки, если я добавлю TTL пакета в правила? В соответствии с страница руководства iptables:
--rttl: [···] это сузит совпадение до тех пор, пока адрес находится в списке, а TTL текущего пакета совпадает с TTL пакета, который попадает под правило --set. Это может быть полезно, если у вас есть проблемы с людьми, которые подделывают свой исходный адрес, чтобы атаковать вас с помощью этого модуля, запрещая другим доступ к вашему сайту, отправляя вам поддельные пакеты.
Будет ли это работать или я что-то упускаю?
На самом деле это не отвечает на ваш вопрос, потому что это что-то за пределами iptables, но если вы хотите защитить себя от сканирования портов, PSAD - лучший вариант. Вы можете настроить его на блокировку любого IP-адреса, который порт сканирует вашу систему. http://cipherdyne.org/psad/
Это использует iptables, но это не обязательно просто правило iptables.
Есть несколько проблем с использованием для этой цели параметра TTL. По сути, вы предлагаете использовать TTL как дополнительный компонент идентификации при идентификации адресов.
Однако так же, как злоумышленники могут подделывать IP-адреса, чтобы заблокировать законных клиентов, они также могут подделывать значения TTL пакетов; любой может генерировать пакеты с произвольными значениями TTL, они не ограничиваются запуском с предполагаемым начальным значением.
Кроме того, естественно, что при изменении сетевой инфраструктуры количество переходов между вами и злоумышленником со временем будет меняться, ограничивая практическую полезность TTL как уникального идентификатора.
Последняя проблема с этой техникой заключается в том, что вполне возможно, что у злоумышленника будет такое же количество переходов между вами и вами, как и между многими законными хостами и вами. Поэтому даже без спуфинга TTL они, вероятно, могли бы достичь некоторого уровня DoS-атаки.