Я изучаю DDOS и методы его смягчения. TCP Keepalive используется для проверки, работает ли другой хост, и если хост не подтверждает сообщение tcp keep alive, соединение разрывается.
Мне интересно, можно ли использовать эти сообщения для смягчения DDOS-атак. Атакованный сервер может сократить время, в течение которого он связывается с клиентом, независимо от того, активен он или нет. Сервер может использовать одноадресную переадресацию обратного пути для предотвращения подмены IP-адреса, и если атака осуществляется с легитимных хостов с использованием ботнетов, может ли сервер использовать технику сообщений keepalive tcp в любом случае, чтобы закрыть мертвые соединения и предотвратить DDOS-атаки? Есть ли способ обнаружить полуоткрытые TCP-соединения и закрыть их с помощью tcp keep alive?
DDOS - это очень широкий термин, включающий в себя множество атак. Поддержание активности TCP актуально только для уже установленных TCP-соединений, что обычно исключает атаки с использованием IP-спуфинга. Это означает, что это не имеет отношения к большинству DDOS-атак, которые представляют собой атаки с использованием высокой пропускной способности (например, атаки с усилением с использованием поддельных IP-адресов) или SYN-лавинную рассылку.
Это оставляет атаки вроде Slowloris которые пытаются связать ресурсы на серверах, оставляя много соединений открытыми, или атакуют, которые выполняют правильное рукопожатие TCP из приложения пользовательского пространства, а затем прерывают соединение без закрытия. Сохранение активности TCP не будет работать с первым, поскольку есть правильный клиент, который, как и ожидалось, отвечает на сохранение активности TCP. Во втором случае это может помочь с наивной реализацией, но это может быть изменено для обработки TCP keep alive без использования дополнительной памяти.
Вкратце: это может помочь для очень специфических и редких видов DDOS. Но даже для этого DDOS может быть более эффективным использовать вместо этого тайм-аут простоя для соединений и динамически адаптировать тайм-аут в зависимости от количества открытых соединений и конкретного состояния соединения. Это, вероятно, охватило бы больше видов атак.
Ваша машина не может узнать, был ли подделан исходный IP-адрес пакета. В первом приближении RPF применяется только к маршрутизаторам. Если у вас есть несколько интерфейсов к нескольким вышестоящим провайдерам, это сократит трафик в N раз, где N, конечно же, количество интерфейсов; сколько апстримов делать у тебя есть?
TCP KEEPALIVE тут ни при чем. Возможно, вы думаете о файлах cookie tcp syn, которые можно включить с помощью соответствующей опции sysctl.
В любом случае все это в основном не имеет значения, за исключением случаев, когда ваша модель угроз - это пара детей, которым больше нечего делать. DDOS-атаки уже очень давно просто засоряют ваш входящий канал. Не имеет значения, смогут ли ваши машины работать, если у них не осталось каналов связи для приема полезного трафика!
Если вас действительно беспокоит решительный злоумышленник, вам потребуется защита от вашего вышестоящего провайдера, а в более серьезных случаях - от специальной службы защиты от ddos (легко найти, я не хочу продвигать какую-либо конкретную услугу).
Надеюсь это поможет.