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