
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 текущего пакета совпадает с пакетом, который попал в правило --set. Это может быть полезно, если у вас есть проблемы с людьми, подделывающими свой исходный адрес, чтобы провести DoS-атаку через этот модуль, запретив другим доступ к вашему сайту, отправляя вам поддельные пакеты.
Сработает ли это или я что-то упускаю?
решение1
Есть пара проблем с использованием опции TTL для этой цели. По сути, вы предлагаете использовать TTL как дополнительный компонент идентификации при идентификации адресов.
Однако точно так же, как злоумышленники могут подделывать IP-адреса, чтобы заблокировать легитимных клиентов, они также могут подделывать значения TTL пакетов; любой может генерировать пакеты с произвольными значениями TTL, они не ограничены началом с предполагаемого начального значения.
Кроме того, по мере изменения сетевой инфраструктуры количество переходов между вами и злоумышленником будет меняться с течением времени, что ограничивает практическую полезность TTL как уникального идентификатора.
Последняя проблема с этой техникой заключается в том, что вполне возможно, что злоумышленник окажется с таким же количеством переходов между собой и вами, как и между многими легитимными хостами и вами. Поэтому даже без подмены TTL они, вероятно, смогут достичь некоторого уровня DoS-атаки.
решение2
Это не совсем ответ на ваш вопрос, потому что это что-то за пределами iptables, но если вы хотите защититься от сканирования портов, PSAD — лучший вариант. Вы можете настроить его на блокировку любого ip, который сканирует порты вашей системы. http://cipherdyne.org/psad/
Здесь используется iptables, но это не обязательно просто правило iptables.