Блеск и нищета защиты от SYN Spoof DDOS

Перед вами на картинке — стандартная трехфазовая система установки соеденение TCP/IP.

Сервер, сокет которого слушает запросы от клиента:

  1. Для установки соеденения клиент выбирает CISN для пакета и отправляет его с флагом SYN, обычно это называют SYN пакетом. Когда сервер получает SYN пакет, он создает новое соеденение TCP, которое отнимает память.
  2. На второй фазе установки TCP соеденения сервер выбирает SISN для пакета и отправляет его клиенту с SYN и ACK. Это обычно называется SYN/ACK пакет. При получении клиент проверяет свой CISN.
  3. На финальной фазе клиент подтверждает прием SISN, возвращая его в пакете с битом ACK. После этого сервер завершает открытие TCP соеденения и обе машины могут обмениваться данными.

Проблема — SYN может быть с поддельным IP

Это значит, что сервер никогда не получит ответ SYN/ACK и его коннект будет висеть в памяти, пока не закроется. И это первая проблема.

От SYN Spoof атаки память на сервере кончается быстрее, чем забивается канал

Конечно, скажет неискушенный читатель, ведь для таких случаев в Linux был придуман механизм защиты, называемый syncookies, который позволяет сохранить память, храня только хеш вместо полного набора параметров. Более подробно об этом можнопрочитать в патенте IBM и сравнить с реализацией в Linux.

Так вот, дорогой мой читатель — это тоже не поможет. При массированной бомбардировке, а SYN пакеты маленькие (64 байта), сервер будет полностью занят операциями вида вычисления хешей.

От SYN Spoof атаки нагрузка на сервер возрастает сильнее, чем нагрузка на канал

Более искушенные читатели конечно не забудут напомнить, что число SYN трафика можно лимитировать, оставив большую часть канала под легитимный трафик, это значит что новым соеденениям будет сложнее открыть связь, но старые пройдут без проблем. Отлично, дорогие мои, а что если в этот самый момент к SYN SPoof присоеденяется классический DDOS?

SYN Spoof + DDOS = смерть сервера

Разумеется сервер будет жить — в физическом смысле и даже, вероятно будет доступен. Но легальный пользователь не сможет установить коннект, так как на 100 SYN пакетов будет приходится только один с реальным адресом, а на 1000 реальных пакетов только один от реального посетителя. Остальные пойдут от ботнета. Более того.

Источник SYN Spoof будет всегда неизвестным

Если классический ботнет может иметь географическую привязку и заблокирован по этому принципу на аплинке или через geoip на сервере, то SYN Spoof может иметь в заголовках китайский IP, а отправленым быть из Урюпинска. И наконец последнее.

Если сила SYN атаки забьет полностью канал, то вы ничего не сможете сделать

И это действительно так. Если ваш Дата Центр не обладает мощной системой и множеством аплинков — сервер перестанет существовать. По крайней мере для обычных людей в интернете.

Хорошие новости

Этим атакам можно противостоять, установив зеркала и настроив DNS для ловли SYN пакетов по геопризнаку. Эта методика похожа на выбрс ловушек, которыми самолет прикрывает себя от ракет.

Плохие новости

Поддержка такой инфраструктуры стоит достаточно больших средств. Необходимо поддерживать все зеркала и при этом большую часть времени они будут стоять без дела, просто в режиме готовности.