Перейти к содержимому

Syn cookies что это

  • автор:

SYN cookies SYN cookie техника противодействия SYN флуд атаке Изобретатель техники Daniel J Bernstein en определил SYN c

SYN cookie — техника противодействия SYN-флуд-атаке. Изобретатель техники Daniel J. Bernstein [en] определил SYN cookie как «особый выбор начальной TCP-последовательности со стороны сервера». Использование SYN cookie позволяет серверу избегать сброса новых соединений, когда очередь TCP-соединений переполнена. Сервер отправляет обратно клиенту правильную последовательность SYN+ACK, но не сохраняет новое соединение в очереди. Если сервер затем получит ACK ответ от клиента, то он сможет восстановить своё значение SYN последовательности по принятому от клиента значению.

Реализация править

Для создания TCP-соединения клиент отправляет серверу TCP-пакет с флагом SYN и своим номером последовательности. В ответ сервер отправляет пакет с флагами SYN+ACK, номером последовательности клиента и своим собственным номером последовательности. По этим номерам собирается весь TCP-поток. Спецификация TCP определяет, что начальные значение этих номеров последовательности определяются самими клиентом и сервером. SYN cookies — это как раз такой номер последовательности, который аккуратно собирается сервером по следующим правилам:

  • пусть t будет медленно увеличивающаяся метка времени (обычно результат функции time(), логически сдвинутый на 6 позиций вправо, что даёт новые значение каждые 64 секунды)
  • пусть m будет максимальным размером сегмента (MSS), которое сервер будет хранить в номере последовательности SYN
  • пусть s будет результатом криптографической хеш-функции длиной 24 бита над адресами и портами сервера и клиента и значения t

Тогда SYN cookie вычисляется как:

  • старшие 5 бит: t mod 32
  • средние 3 бита: кодированное m (всего будет 8 типов всех возможных MSS)
  • младшие 24 бита: s

Когда клиент отправляет на сервер завершающий рукопожатие пакет с флагом ACK, он отправляет первоначальный номер последовательности сервера увеличенный на единицу. Для проверки корректности SYN cookie, сервер отнимает от неё единицу и выполняет следующие проверки:

  • проверяет значение t, чтобы проверить, что сессия не просрочилась;
  • восстанавливает s для проверки действительности SYN cookie;
  • раскодирует значение m для дальнейшего построения элементов очереди.

С этого момента соединение работает как обычно.

Недостатки править

Использование SYN cookie не нарушает работу TCP и других протоколов. Однако в данной технике есть два ограничения:

  1. возможность использовать только 8 различных значений для MSS;
  2. серверу придётся игнорировать все TCP-опции (увеличенный размер окна, метки времени и др.), так как они отправляются в первоначальном SYN-запросе.

В то время как эти ограничения ведут к неоптимальному использованию протокола TCP, негативные последствия редко отражаются на клиентах, так как SYN cookie должны использоваться только при атаках на сервер. Игнорирование некоторых возможностей протокола TCP в угоду доступности сервера является разумным компромиссом.

Однако проблема возрастает когда теряется финальный ACK-пакет от клиента, а протокол прикладного уровня требует, чтобы сервер был инициатором дальнейшего взаимодействия (например, протоколы SMTP и SSH). В этом случае клиент предполагает, что соединение установлено успешно и ждёт от сервера пригласительный баннер или повторную пересылку SYN+ACK пакета. Однако сервер не будет отправлять такой пакет, так как забракует сессию. В конечном итоге клиент тоже сбросит сессию, но для этого может потребоваться много времени.

В ядро Линукс 2.6.26 добавлена ограниченная поддержка некоторых опций TCP, которые кодируются в метку времени.

Более новый стандарт TCP Cookie Transactions (TCPCT) спроектирован для избежания подобных проблем и улучшает ещё некоторые аспекты. Но это надстройка над TCP и поэтому должна поддерживаться обеими сторонами.

Особенности со стороны безопасности править

Простые межсетевые экраны, которые разрешают любой исходящий трафик и разрешают входящий трафик только к определённым портам, будут блокировать SYN-запросы только к закрытым портам. Если SYN cookie включены, то необходимо обратить внимание, что злоумышленник не может обойти такие межсетевые экраны отправкой ACK-пакетов с произвольным номером последовательности пока не подберёт правильный. SYN cookies нужно включать только для публично доступных портов.

Примечания править

  1. [1] от 22 июля 2009 на Wayback Machine, cr.yp.to September 1996

Ссылки править

Википедия, чтение, книга, библиотека, поиск, нажмите, истории, книги, статьи, wikipedia, учить, информация, история, скачать, скачать бесплатно, mp3, видео, mp4, 3gp, jpg, jpeg, gif, png, картинка, музыка, песня, фильм, игра, игры

Дата публикации: Декабрь 24, 2023, 12:52 pm
Самые читаемые

Битва при Фимбрарах

Битва при Фермопилах (191 до н. э.)

Битва при Тиндарисе

Битва при Спотсильвейни

Битва при Силаре (71 до н. э.)

Битва при Рефухио

Битва при Ментане

Битва при Макте

Битва при Канштадте

Битва при Буссако

© Copyright 2021, Все права защищены.

SYN cookie tehnika protivodejstviya SYN flud atake Izobretatel tehniki Daniel J Bernstein en opredelil SYN cookie kak osobyj vybor nachalnoj TCP posledovatelnosti so storony servera Ispolzovanie SYN cookie pozvolyaet serveru izbegat sbrosa novyh soedinenij kogda ochered TCP soedinenij perepolnena Server otpravlyaet obratno klientu pravilnuyu posledovatelnost SYN ACK no ne sohranyaet novoe soedinenie v ocheredi Esli server zatem poluchit ACK otvet ot klienta to on smozhet vosstanovit svoyo znachenie SYN posledovatelnosti po prinyatomu ot klienta znacheniyu Soderzhanie 1 Realizaciya 2 Nedostatki 3 Osobennosti so storony bezopasnosti 4 Primechaniya 5 SsylkiRealizaciya pravitDlya sozdaniya TCP soedineniya klient otpravlyaet serveru TCP paket s flagom SYN i svoim nomerom posledovatelnosti V otvet server otpravlyaet paket s flagami SYN ACK nomerom posledovatelnosti klienta i svoim sobstvennym nomerom posledovatelnosti Po etim nomeram sobiraetsya ves TCP potok Specifikaciya TCP opredelyaet chto nachalnye znachenie etih nomerov posledovatelnosti opredelyayutsya samimi klientom i serverom SYN cookies eto kak raz takoj nomer posledovatelnosti kotoryj akkuratno sobiraetsya serverom po sleduyushim pravilam pust t budet medlenno uvelichivayushayasya metka vremeni obychno rezultat funkcii time logicheski sdvinutyj na 6 pozicij vpravo chto dayot novye znachenie kazhdye 64 sekundy pust m budet maksimalnym razmerom segmenta MSS kotoroe server budet hranit v nomere posledovatelnosti SYN pust s budet rezultatom kriptograficheskoj hesh funkcii dlinoj 24 bita nad adresami i portami servera i klienta i znacheniya tTogda SYN cookie vychislyaetsya kak starshie 5 bit t mod 32 srednie 3 bita kodirovannoe m vsego budet 8 tipov vseh vozmozhnyh MSS mladshie 24 bita sKogda klient otpravlyaet na server zavershayushij rukopozhatie paket s flagom ACK on otpravlyaet pervonachalnyj nomer posledovatelnosti servera uvelichennyj na edinicu Dlya proverki korrektnosti SYN cookie server otnimaet ot neyo edinicu i vypolnyaet sleduyushie proverki proveryaet znachenie t chtoby proverit chto sessiya ne prosrochilas vosstanavlivaet s dlya proverki dejstvitelnosti SYN cookie raskodiruet znachenie m dlya dalnejshego postroeniya elementov ocheredi S etogo momenta soedinenie rabotaet kak obychno Nedostatki pravitIspolzovanie SYN cookie ne narushaet rabotu TCP i drugih protokolov Odnako v dannoj tehnike est dva ogranicheniya 1 vozmozhnost ispolzovat tolko 8 razlichnyh znachenij dlya MSS serveru pridyotsya ignorirovat vse TCP opcii uvelichennyj razmer okna metki vremeni i dr tak kak oni otpravlyayutsya v pervonachalnom SYN zaprose V to vremya kak eti ogranicheniya vedut k neoptimalnomu ispolzovaniyu protokola TCP negativnye posledstviya redko otrazhayutsya na klientah tak kak SYN cookie dolzhny ispolzovatsya tolko pri atakah na server Ignorirovanie nekotoryh vozmozhnostej protokola TCP v ugodu dostupnosti servera yavlyaetsya razumnym kompromissom Odnako problema vozrastaet kogda teryaetsya finalnyj ACK paket ot klienta a protokol prikladnogo urovnya trebuet chtoby server byl iniciatorom dalnejshego vzaimodejstviya naprimer protokoly SMTP i SSH V etom sluchae klient predpolagaet chto soedinenie ustanovleno uspeshno i zhdyot ot servera priglasitelnyj banner ili povtornuyu peresylku SYN ACK paketa Odnako server ne budet otpravlyat takoj paket tak kak zabrakuet sessiyu V konechnom itoge klient tozhe sbrosit sessiyu no dlya etogo mozhet potrebovatsya mnogo vremeni V yadro Linuks 2 6 26 dobavlena ogranichennaya podderzhka nekotoryh opcij TCP kotorye kodiruyutsya v metku vremeni Bolee novyj standart TCP Cookie Transactions TCPCT sproektirovan dlya izbezhaniya podobnyh problem i uluchshaet eshyo nekotorye aspekty No eto nadstrojka nad TCP i poetomu dolzhna podderzhivatsya obeimi storonami Osobennosti so storony bezopasnosti pravitProstye mezhsetevye ekrany kotorye razreshayut lyuboj ishodyashij trafik i razreshayut vhodyashij trafik tolko k opredelyonnym portam budut blokirovat SYN zaprosy tolko k zakrytym portam Esli SYN cookie vklyucheny to neobhodimo obratit vnimanie chto zloumyshlennik ne mozhet obojti takie mezhsetevye ekrany otpravkoj ACK paketov s proizvolnym nomerom posledovatelnosti poka ne podberyot pravilnyj SYN cookies nuzhno vklyuchat tolko dlya publichno dostupnyh portov Primechaniya pravit 1 Arhivnaya kopiya ot 22 iyulya 2009 na Wayback Machine cr yp to September 1996Ssylki pravitD J Bernstein s own explanation of SYN cookies Istochnik https ru wikipedia org w index php title SYN cookies amp oldid 131491823

SYN cookie

В SYN печенье ( syncookies ) являются частными значениями начальных последовательностей чисел , генерируемых сервером (ISN: Начальный порядковый номер) на запрос соединения TCP . Реализованный метод позволяет, в частности, защищаться от атак путем лавинной рассылки SYN-запросов и, в частности, с помощью IP-спуфинга . Однако у него есть несколько недостатков, таких как подделка и потеря информации из пакета SYN. Было предложено несколько улучшений для преодоления этих недостатков. Также были разработаны расширения, особенно в контексте множественной адресации .

Резюме

  • 1 принцип
    • 1.1 Определение
    • 1.2 Значение SYN cookie
      • 1.2.1 Структура
      • 1.2.2 Кодирование
      • 1.3.1 Трехфазное согласование
      • 1.3.2 Проверка файла cookie SYN
      • 2.1 Манипуляции с подключением
      • 2.2 Потеря информации о пакете SYN
      • 2.3 Другие недостатки
      • 3.1 Окна
      • 3.2 Linux
      • 5.1 Потоковые файлы cookie
      • 5.2 Файлы cookie M-SYN

      Принцип

      Определение

      SYN Cookie — это особый выбор начального порядкового номера (ISN), сделанный сервером при запросе TCP- соединения . Это позволяет серверу сохранять состояние полуоткрытых соединений с начальным порядковым номером, возвращаемым клиенту при инициализации соединения. Этот механизм позволяет защититься от атаки путем лавинной рассылки SYN-запросов, которые стремятся из фальсифицированного SYN- пакета со случайными адресами источника выделить всю память сервера, чтобы он не мог отвечать законным клиентам. Эта защита активируется только тогда, когда имеется слишком много полуоткрытых соединений. Однако создание и проверка файла cookie SYN потребляет много ресурсов ЦП , что делает этот метод эффективным только в случае атаки с рассылкой небольших запросов SYN.

      Значение SYN cookie

      Состав

      SYN cookie имеет следующую структуру:

      Значение SYN Cookie.

      • Первые 5 бит равны , где — 5-битный счетчик времени, который увеличивается каждые 64 секунды; Т мод 3 2 > 2> Т
      • Следующие 3 бита представляют максимальный размер сегмента (MSS), который сервер выбрал в ответ на MSS, указанный клиентом;
      • Последние 24 бита получаются с помощью криптографической хеш-функции .

      Этот выбор порядкового номера был мотивирован тем фактом, что протокол TCP требует, чтобы порядковые номера увеличивались медленно. В этом случае начальный порядковый номер сервера увеличивается немного быстрее, чем начальный порядковый номер клиента.

      Кодирование

      Точный механизм кодирования состояния в порядковом номере SYN + ACK может зависеть от реализации. В Linux файлы cookie SYN кодируются следующим образом:

      s y нет против о о k я е знак равно ЧАС ( s 1 , s в , s п , d в , d п ) + я S НЕТ против + ( т × 2 24 ) + ( ЧАС ( s 2 , s в , s п , d в , d п , т ) мод 2 24 ) + M S S я , sa, sp, da, dp) + ISN_ + (t \ times 2 ^ ) + (H (s_ , sa, sp, da , dp, t) <\ bmod > ^ ) + MSS_ >

      где представляет собой начальный порядковый номер пакета SYN , выбранный клиентом, представляет собой 5-битный счетчик времени увеличивая каждые 64 секунд, представляет собой MSS закодированное значение между и , и представляют секретные ключи , которые знают только сервер, представляет собой криптографическую хэш — функцию такие как MD5 или SHA-1 , , , и , соответственно , представляют собой адрес источника, то доставки источника, адрес назначения и порт назначения пакета SYN. я S НЕТ против > т M S S я > 0 7 s 1 > s 2 > ЧАС s в s п d в d п

      Процесс TCP-соединения с SYN Cookie

      3-фазное согласование

      Трехфазное TCP-согласование с использованием SYN Cookie

      Поток TCP-соединения с использованием SYN Cookie аналогичен потоку типичного TCP-соединения. Это осуществляется с помощью трехфазного согласования .

      1. SYN: клиент хочет подключиться к TCP- серверу . Для этого он отправляет SYN- пакет, содержащий начальный порядковый номер, отмеченный как порядковый номер. я S НЕТ против >
      2. SYN + ACK: сервер, когда он получает пакет SYN от клиента, вычисляет отмеченный SYN Cookie , увеличивает и отправляет пакет SYN + ACK, содержащий как порядковый номер, так и как номер подтверждения. я S НЕТ s > я S НЕТ против > я S НЕТ s > я S НЕТ против >
      3. ACK: после получения пакета SYN + ACK от сервера клиент увеличивает и отправляет серверу пакет ACK, содержащий в качестве номера подтверждения. я S НЕТ s > я S НЕТ s >

      Затем сервер проверяет действительность номера подтверждения пакета ACK. Если это действительно так, сервер выделяет память для подключения и меняет свое состояние на режим ESTABLISHED . В противном случае пакет ACK отклоняется.

      Проверка файлов cookie SYN

      Механизм проверки порядкового номера SYN + ACK зависит от его кодировки. В Linux файлы cookie SYN проверяются следующим образом:

      M S S я 2 знак равно в против k нет ты м — s е q нет ты м — т × 2 24 — ЧАС ( s 1 , s в , s п , d в , d п ) — ( ЧАС ( s 2 , s в , s п , d в , d п , т ) мод 2 24 ) > = acknum-seqnum-t \ times 2 ^ -H (s_ , sa, sp, da, dp) — (H (s_ , sa, sp, da, dp, t) <\ bmod > ^ )>

      где и соответственно представляют номер подтверждения и порядковый номер пакета ACK, представляют 5-битный счетчик времени, увеличивающийся каждые 64 секунды, и представляют секретные ключи, которые знает только сервер, представляет собой криптографическую хеш-функцию, такую ​​как MD5 или SHA-1 , , , и , соответственно , представляют собой адрес источника, то доставки источника, адрес назначения и порт назначения пакета ACK. в против k нет ты м s е q нет ты м т s 1 > s 2 > ЧАС s в s п d в d п

      Если находится между и , пакет ACK считается допустимым. Затем сервер создает соединение с соответствующим MSS . В случае фальсификации пакета значение обычно сильно различается между и . M S S я 2 >> 0 7 M S S я 2 >> M S S я 2 >> 0 7

      Недостатки

      Подделка логина

      Было показано, что файлы cookie SYN зависят только от последнего пакета ACK. Действительно, поскольку сервер не сохраняет состояние соединения, он не может узнать, был ли потерян пакет SYN + ACK, и, следовательно, не может повторно передать его. Это представляет собой уязвимость системы безопасности: злоумышленник может попытаться переполнить сервер пакетов SYN, чтобы он решил использовать SYN Cookie. Затем он может заполнить сервер поддельным пакетом ACK, то есть пакетом ACK, содержащим случайные порядковые номера, надеясь, что один из них является SYN Cookie, который сервер считает действительным.

      Также было показано, что нет необходимости угадывать 32 бита начального порядкового номера и что достаточно угадывать последние 24 бита. Таким образом, злоумышленник может надеяться угадать правильное значение SYN Cookie с вероятностью . Это связано с тем, что, поскольку его пакеты подделываются случайными IP-адресами , он не может узнать, была ли попытка подключения успешной. Если злоумышленник желает подделать одно соединение в минуту, он должен отправить среднее количество пакетов ACK, что соответствует скорости 85 Мбит / с. Этот тип атаки, в отличие от атаки лавинной рассылки SYN-запросов , не предназначен для использования памяти сервера. Скорее, он стремится использовать свой ЦП , заставляя его проверять все файлы cookie SYN, которые по большей части недействительны, поскольку генерируются случайным образом. Эта атака не только использует процессор сервера, но и снижает его пропускную способность . 1 / 2 24 > 2 24 >

      Потеря информации о пакете SYN

      Одним из недостатков использования файлов cookie SYN является снижение производительности сервера . Действительно, он не принимает во внимание параметры, содержащиеся в поле «options», когда клиент отправляет свой сегмент SYN. Эти параметры, такие как размер окна приема, выборочное подтверждение, Round-Trip Time (RTT), защищают от Wrapped последовательностей (PAWS) или MSS позволяют более эффективные коммуникации. Однако эта потеря не является постоянной, поскольку SYN-файлы cookie активируются только тогда, когда сервер подвергается атаке, то есть когда все ресурсы сервера заняты полуоткрытыми соединениями. В остальное время файлы cookie SYN отключены.

      Прочие недостатки

      Другими недостатками использования файлов cookie SYN являются:

      • Непригоден для защиты виртуальных машин из-за слишком быстрой перегрузки ЦП во время атаки путем лавинной рассылки SYN-запросов , даже небольших;
      • Дополнительные вычислительные затраты, необходимые для обработки входящих пакетов SYN и ACK;
      • Отсутствие повторной передачи пакетов SYN + ACK.

      Активация SYN Cookie

      Окна

      В Windows можно активировать метод, аналогичный вызову SYN Cookie SynAttackProtect . Для этого присвойте рекомендуемое значение 2 разделу реестра, SynAttackProtect расположенному в HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TcpIp\Parameters . Также можно выбрать, с какого порога будет обнаруживаться атака путем лавинной рассылки SYN-запросов , изменив ключи реестра TcpMaxHalfOpen , TcpMaxHalfOpenRetried и TcpMaxPortsExhausted .

      Linux

      В Linux можно проверить, что файлы cookie SYN в настоящее время включены на уровне ядра, либо с помощью команды, sysctl -n net.ipv4.tcp_syncookies либо с помощью команды cat /proc/sys/net/ipv4/tcp_syncookies . Если значение, возвращаемое одной из этих двух команд, равно 1 , SYN Cookies уже активированы. В противном случае, вы должны отредактировать файл /etc/sysctl.conf , передать значение net.ipv4.tcp_syncookies для 1 вместо 0 и перезагрузить конфигурацию , используя команду sysctl -p или перезагрузить сервер.

      Улучшения производительности

      В 2006 году KhakAbi предложил усовершенствовать хранение информации о пакете SYN, такой как параметры TCP , размер окна и MSS, в хеш-таблице . Поскольку этот метод сохраняет состояние соединения, он может использовать эту информацию для обеспечения оптимального соединения. Это также подразумевает, что файлы cookie SYN могут использоваться, даже если сервер не подвергается атаке лавинной рассылки запросов SYN . Кроме того, серверу больше не нужно иметь устройство обнаружения.

      В 2007 году было предложено несколько улучшений. Хан Цзяньин и др. предложил усовершенствование, заключающееся в временном хранении основной информации пакета SYN для определения его законности. Это улучшение направлено на борьбу с лавинной рассылкой запросов ACK. Хотя это помогает снизить загрузку ЦП , но требует дополнительного дискового пространства. Peng Di et al. со своей стороны предложили усовершенствование, заключающееся в изменении процесса ответа протокола TCP для пакета SYN на уровне системы защиты. Этот метод сокращает время, необходимое для проверки файла cookie, и повышает эффективность системы защиты. Однако это применимо только в том случае, если система защиты отделена от сервера.

      В 2008 году Цзянь Сяочунь и др. предложил улучшение, заключающееся в ожидании повторной передачи SYN-пакета от клиента. Этот метод позволяет сократить аспекты расчета. Однако для этого требуются дополнительные системные ресурсы, поскольку для этого требуется ведение хеш-таблицы. Это также увеличивает время отклика для обычного TCP-соединения.

      В 2009 году Бо Ханг и др. предложили улучшение, заключающееся в изменении алгоритма, используемого для расчета SYN-файлов cookie. Их метод основан на 3 компонентах: контроллер, обнаружение атаки и ответ на атаку. Именно в случае обнаружения атак используется новый алгоритм. Этот алгоритм переопределяет начальный 32-битный порядковый номер следующим образом: один бит для метки времени cookie и 31 бит для значения cookie вместо 8 бит для метки времени и 24 бита для значения cookie. Новый алгоритм использует метод шифрования Blowfish с 32-битным ключом, который работает быстрее, чем криптографические хеш-функции . Это значительно снизило сложность расчета и сэкономило около 30% времени расчета файла cookie.

      Расширения SYN cookie

      Flow-куки

      Схема работы потоковых файлов cookie.

      Потоковые cookie-файлы — это механизм, в котором веб-сервер взаимодействует с посредником, называемым ящиком cookie , подключенным к высокоскоростной ссылке . Этот механизм позволяет использовать широкую полосу пропускания блока cookie для фильтрации пакетов . Весь трафик к защищенному веб-серверу или от него должен проходить через ящик cookie . Это гарантирует, что все пакеты, проходящие между ним и сервером, принадлежат законному потоку TCP с действительным отправителем. Для этого коробка cookie помещает SYN Cookie в каждый пакет, покидающий сеть сервера. Веб-сервер также может запросить блок cookie для фильтрации IP- адреса клиента с ненормальным поведением.

      Файлы cookie M-SYN

      Протокол обмена состояниями соединения с M-SYN Cookie.

      M-SYN cookie — это модифицированный SYN cookie для многосетевых сред, включая идентификационный номер межсетевого экрана . Последний предназначен для обмена состояниями соединения между брандмауэрами через определенный выбор порядкового номера TCP .

      M-SYN Cookie использует идентификатор брандмауэра вместо индекса MSS SYN cookie, чтобы безопасно записывать информацию об отправителе cookie. Проверка пакетов SYN + ACK выполняется хэш-функцией по ключу. Чтобы использовать эту функцию, все межсетевые экраны должны использовать один и тот же секретный ключ. Протокол обмена состояниями соединения с M-SYN Cookie:

      1. Клиент отправляет SYN- пакет, который поступает на межсетевой экран 1;
      2. Межсетевой экран 1 проверяет пакет в соответствии с его правилами фильтрации пакетов;
      3. Межсетевой экран 1 заменяет M-SYN Cookie и сохраняет информацию о соединении в своей таблице состояний; я S НЕТ против >
      4. Межсетевой экран 1 отправляет на сервер измененный SYN-пакет ;
      5. Сервер отправляет клиенту пакет SYN + ACK, который проходит через межсетевой экран 2;
      6. Межсетевой экран 2 проверяет пакет SYN + ACK и извлекает идентификатор из межсетевого экрана 1. Если пакет недействителен, он отбрасывается;
      7. Межсетевой экран 2 пересылает пакет SYN + ACK межсетевому экрану 1;
      8. Брандмауэр 1 проверяет информацию о подключении пакета и отправляет его брандмауэру 2 с пакетом SYN + ACK. Если нет соответствующей информации о соединении, межсетевой экран 1 отбрасывает пакет;
      9. Межсетевой экран 2 обновляет свою таблицу состояний и заменяет номер подтверждения пакета SYN + ACK на ; я S НЕТ против + 1 +1>
      10. Межсетевой экран 2 отправляет клиенту измененный пакет SYN + ACK.

      Этот протокол позволяет межсетевому экрану 1 и межсетевому экрану 2 обмениваться информацией о соединении. Будущие пакеты, включая соответствующий пакет ACK, могут проходить напрямую через оба межсетевых экрана.

      SYN Cookie в Интернете вещей

      Было проведено исследование использования SYN Cookie на уровне систем класса 2, то есть устройств Интернета вещей (IoT) с ограниченными ресурсами с памятью от 50 до 250 ko . Эти системы особенно уязвимы для этого типа атак из-за небольшого объема памяти. Это происходит потому, что поток низкой скорости SYN запросов или даже внезапное увеличение входящего трафика может нарушить это устройство , если оно выступает в качестве сервера . Это исследование показало, что файлы cookie SYN были более эффективны, чем переработка старых полуоткрытых соединений, в противодействии атаке небольшого потока запросов SYN.

      Альтернативы SYN Cookie

      Существует несколько альтернатив SYN cookie для защиты от атак флуд-запросов SYN :

      История

      Фил Карн (en) первым разработал Интернет-протокол, который использует файлы cookie для защиты от атак типа «отказ в обслуживании» . В 16 сентября 1996 г. У DJ Bernstein возникла идея использовать файлы cookie SYN для защиты от атак путем переполнения запросов SYN , которые до этого считались неразрешимой проблемой. DJ Bernstein и Eric Schenk работали над деталями реализации в течение следующих недель. Эрику Шенку пришла в голову идея добавить что-нибудь к начальному порядковому номеру клиента, чтобы соответствовать требованиям TCP . Наконец, DJ Bernstein предположил, что файлы cookie зависят от времени, чтобы предотвратить, во-первых, сбор действительных файлов cookie злоумышленником на общедоступном компьютере и, во-вторых, их повторное использование из другого места. В Октябрь 1996 Джефф Вайсберг выпустил реализацию файлов cookie SYN для SunOS . Через несколько месяцев в Февраль 1997 г. Эрик Шенк также опубликовал реализацию файлов cookie SYN для Linux .

      Рекомендации

      Библиография

      : Документ, использованный для написания статьи.

      • (в) DJ Bernstein, » SYN печенье » на cr.yp.to (доступ на 1 — е декабря 2019 года )
      • (ru) Энди Клин, « syncookie.c » , на github.com (по состоянию на 8 февраля 2020 г. )
      • (en) CL Schuba , IV Krsul , MG Kuhn и EH Spafford , « Анализ атаки отказа в обслуживании на TCP » , Proceedings. 1997 IEEE симпозиум по безопасности и конфиденциальности (кат. № 97CB36097) , IEEE, 1997 г. , стр. 208–223 ( ISBN978-0-8186-7828-8 , DOI10.1109 / SECPRI.1997.601338 , читать онлайн , по состоянию на 8 февраля 2020 г. )
      • (ru) Дэвид Ветералл , « 10 сетевых статей: материалы для разработки протокола » , ACM SIGCOMM Computer Communication Review , vol. 36, п о 3, 5 июля 2006 г. , стр. 77 ( DOI10,1145 / 1140086,1140096 , читать онлайн , доступ к 1 — й декабря 2019 )
      • (ru) Джин-Хо Ким , Хиджо Ли и Сэвун Бахк , « Протокол управления соединениями для межсетевых экранов с отслеживанием состояния в многодомных сетях » , Journal of Communications and Networks , vol. 10, п о 4, декабрь 2008 , стр. 455-464 ( ISSN1229-2370 и 1976-5541 , DOI10,1109 / JCN.2008.6389863 , читать онлайн , доступ к 1 — й декабря 2019 )
      • (ru) Дунцин Юань и Цзилин Чжун , « Лабораторная реализация атаки и защиты SYN flood » , Материалы 9-й конференции ACM SIGITE по образованию в области информационных технологий — SIGITE ’08 , ACM Press, 2008 г. , стр. 57 ( ISBN978-1-60558-329-7 , DOI10,1145 / 1414558,1414575 , читать онлайн , доступ к 1 — й декабря 2019 )
      • (ru) Бо Ханг и Руимин Ху , « Новый метод SYN Cookie для DDoS-атаки на уровне TCP » , Международная конференция по будущей биомедицинской информационной инженерии (FBIE) , 2009 г. декабрь 2009 г. , стр. 445-448 ( DOI10,1109 / FBIE.2009.5405818 , читать онлайн , доступ к 1 — й декабря 2019 )
      • (in) Бо Ханг , Руимин Ху и Вэй Ши , » Улучшенный метод защиты SYN-файлов cookie для TCP DDoS-атак » , Journal of Networks , vol. 6, п о 8, 1 — го августа 2011 , стр. 1206-1213 ( ISSN1796-2056 , DOI10,4304 / jnw.6.8.1206-1213 , читать онлайн , доступ к 1 — й декабря 2019 )
      • (ru) Хуан Хосе Эчеваррия , Пабло Гараисар и Джон Легарда , « Экспериментальное исследование применимости файлов cookie SYN к сетевым устройствам с ограничениями: файлы cookie SYN для устройств с ограничениями » , Программное обеспечение: практика и опыт , том. 48, п о 3, март 2018 , стр. 740-749 ( DOI10.1002 / spe.2510 , читать онлайн , доступ к 1 — й декабря 2019 )
      • (ru) К. Смит и А. Матрави , « Сравнение реализаций в операционных системах защиты от наводнений SYN (файлы cookie) » , 24-й двухгодичный симпозиум по коммуникациям , 2008 г. , июнь 2008 г. , стр. 243-246 ( DOI10,1109 / BSC.2008.4563248 , читать онлайн , доступ к 1 — й декабря 2019 )
      • (ru) Пи-Э Лю и Чжун-Хуа Шэн , « Защита от переполнения TCP-синхронизатора с помощью син-агента нового типа » , Международная конференция по машинному обучению и кибернетике , 2008 г. , т. 2, июль 2008 г. , стр. 1218-1221 ( DOI10,1109 / ICMLC.2008.4620589 , читать онлайн , доступ к 1 — й декабря 2019 )
      • (ru) Андраш Корн , Механизмы защиты от сетевых атак и червей , 2011 г. ( читать онлайн )
      • (ru) Фэнли Чжан , Цзи Гэн , Чжигуан Цинь и Минтянь Чжоу , « Обнаружение DDoS-атак на основе прокси-сервера SYN и фильтра числа переходов » , Международная конференция по коммуникациям, схемам и системам 2007 г. , Июль 2007 г. , стр. 457-461 ( DOI10,1109 / ICCCAS.2007.6251605 , читать онлайн , доступ к 1 — й декабря 2019 )
      • (ru) Удая Киран Тупакула , Виджай Варадхараджан и Срини Рао Пандаланени , « DoSTRACK: система защиты от DoS-атак » , Материалы симпозиума ACM 2009 года по прикладным вычислениям — SAC ’09 , ACM Press, 2009 г. , стр. 47 ( ISBN978-1-60558-166-8 , DOI10,1145 / 1529282,1529291 , читать онлайн , доступ к 1 — й декабря 2019 )
      • (о) Shaila Ghanti и GM Найк , « Эффективная Скорость передачи данных и скорость Обеспеченных систем Ethernet Interface » , Международные научные исследования Извещение , т. 2016, 2016 г. , стр. 1-8 ( ISSN2356-7872 , PMID28116350 , PMCIDPMC5223014 , DOI10,1155 / 2016/9458627 , читать онлайн , доступ к 1 — й декабря 2019 )
      • (ru) М. Касадо , П. Цао , А. Акелла и Н. Провос , « Потоковые cookie-файлы: использование увеличения пропускной способности для защиты от атак DDoS- флуда » , 14-й международный семинар IEEE по качеству обслуживания , 2006 г. , июнь 2006 г. , стр. 286-287 ( DOI10,1109 / IWQOS.2006.250484 , читать онлайн , доступ к 1 — й декабря 2019 )
      • (en) Хэл Бергел , « Взлом сети » , Сообщения ACM , т. 45, п о 4, 1 — го апреля 2002 , стр. 23 ( DOI10,1145 / 505248,505263 , читать онлайн , доступ к 1 — й декабря 2019 )
      • (ru) Андре Сукете , «Улучшение функциональности файлов cookie SYN» , в Advanced Communications and Multimedia Security , vol. 100, США Springer, 2002 г. ( ISBN978-1-4757-4405-7 , DOI10.1007 / 978-0-387-35612-9_6 , читать онлайн ) , стр. 57–77
      • (ru) Марко де Виво , Габриэла О. де Виво , Роберто Коенеке и Жерминал Изерн , « Интернет-уязвимости, связанные с TCP / IP и T / TCP » , ACM SIGCOMM Computer Communication Review , vol. 29, п о 1, 1 — го января 1999 , стр. 81 ( DOI10,1145 / 505754,505760 , читать онлайн , доступ к 1 — й декабря 2019 )
      • (ru) Пол Шеньон , Дайан Аджавон , Кахина Лазри и Жером Франсуа , « Разгрузка служб безопасности в облачной инфраструктуре » , Материалы семинара 2018 года по безопасности в программно-программных сетях: перспективы и проблемы — SecSoN ’18 , ACM Press, 2018 г. , стр. 27-32 ( ISBN978-1-4503-5912-2 , DOI10,1145 / 3229616,3229624 , читать онлайн , доступ к 1 — й декабря 2019 )
      • (ru) С. ХакАби , « Предотвращение DoS-атак SYN flood (Аннотация) Улучшение файлов cookie SYN » , Международная конференция IEEE по разведке и информатике безопасности , 2009 г. , Июнь 2009 г. , стр. 235-235 ( DOI10,1109 / ISI.2009.5137317 , читать онлайн , доступ к 1 — й декабря 2019 )
      • (ru) Эдоардо Бьяджони , « Предотвращение атак с усилением наводнения UDP с помощью слабой аутентификации » , Международная конференция по вычислениям, сетям и коммуникациям (ICNC) 2019 г. , IEEE, февраль 2019 , стр. 78-82 ( ISBN978-1-5386-9223-3 , DOI10,1109 / ICCNC.2019.8685648 , читать онлайн , доступ к 1 — й декабря 2019 )
      • (ru) Йогеш Прем Свами и Ханнес Чофениг , « Защита мобильных устройств от атак TCP- лавинной рассылки » , Материалы первого международного семинара ACM / IEEE по мобильности в развивающейся архитектуре Интернета — MobiArch ’06 , ACM Press, 2006 г. , стр. 63 ( ISBN978-1-59593-566-3 , DOI10,1145 / 1186699,1186717 , читать онлайн , доступ к 1 — й декабря 2019 )
      • (ru) Питер Г. Нойман , « Риски для общества в компьютерах и связанных с ними системах » , ACM SIGSOFT Software Engineering Notes , vol. 22, п о 2 1 — го марта 1997 , стр. 19-24 ( DOI10,1145 / 251880,251918 , читать онлайн , доступ к 1 — й декабря 2019 )
      • (о) H. K Molia , SM Gambhir и MD Titiya , « на основе TCP SYN Flood Attack-анализ, обнаружение и предотвращение » , 3 — я Международная конференция по междисциплинарным исследованиям и практике , т. 4, п о 1, 24 декабря 2016 г. , стр. 249-253 ( читать онлайн , доступ к 1 — й декабря 2019 )
      • (ru) Дакшил Шах и Варшали Кумар , « Уязвимость TCP SYN cookie » , arXiv: 1807.08026 [cs] , 20 июля 2018 г. ( Читать на сайте , доступ к 1 — й декабря 2019 )
      • (en) У. Эдди, « Атаки TCP SYN Flooding и общие меры противодействия » , на tools.ietf.org , август 2007 г. (доступ на 1 — е декабря 2019 )
      • (ru) П. Карн, Qualcomm, В. Симпсон и DayDreamer, « Photuris: протокол управления сеансовыми ключами» , на tools.ietf.org , Март 1999 г. (по состоянию на 8 декабря 2020 г. )
      • (ru) Л. Риччулли , П. Линкольн и П. Каккар , « Защита TCP SYN от флуда » , CNDS , Январь 1999 г. ( Читать на сайте , доступ к 1 — й декабря 2019 )
      • (ru) Р. Ши и Дж. Лю , « Понимание влияния атак типа« отказ в обслуживании »на виртуальные машины » , 20-й международный семинар IEEE по качеству обслуживания , 2012 г. , Июнь 2012 г. , стр. 1-9 ( DOI10,1109 / IWQoS.2012.6245975 , читать онлайн , доступ к 1 — й декабря 2019 )
      • (ru) Рамон Касерес , Фред Дуглис , Аня Фельдманн и Гидеон Гласс , « Кэширование веб-прокси: дьявол кроется в деталях » , ACM SIGMETRICS Performance Evaluation Review , vol. 26, п о 3, 1 — го декабря 1998 , стр. 11-15 ( DOI10,1145 / 306225,306230 , читать онлайн , доступ к 1 — й декабря 2019 )
      • (ru) Бьянка Шредер и Мор Харчол-Балтер , « Веб-серверы в условиях перегрузки: как может помочь планирование » , ACM Transactions on Internet Technology , vol. 6, п о 1, 1 — го февраля 2006 , стр. 20-52 ( DOI10,1145 / 1125274,1125276 , читать онлайн , доступ к 1 — й декабря 2019 )

      SYN-куки

      SYN Cookie — ключевой элемент метода используемого для защиты от SYN Flood. Использование SYN Cookie позволяет серверу избегать игнорирования сетевых соединений, во время переполнения очереди SYN-запросов.

      Присоединяйтесь к нам:

      Продукты и решения

      Инструкции и документы

      • Защита и ускорение сайтов -20%
      • Защищенный хостинг -10%
      • Защищенный VDS -15%
      • Защищенные выделенные серверы -20%
      • Защита сети -50%
      • Bot Mitigation
      • WAF
      • Аудит безопасности
      • Инструкции
      • Термины
      • Технологии
      • Политика использования
      • Политика в отношении обработки персональных данных
      • Соглашение о доступе к сервисам
      • Политика использования «cookie»

      Stable IT

      Итак, давайте определимся, чем же опасен для нас SYN флуд? Он опасен в первую очередь тем, что вынуждает сервер создавать тысячи и миллионы записей в системных таблицах/хэшах трекинга соединений. Это вызывает две проблемы — замедление обработки и возможность упереться в лимит размера соотвествующей таблицы соединений. В этом случае самый очевидны способ спастись — не сохранять информацию о каждом пришедшем соединении.

      Именно это и делает SYN cookie. В ответ на клиентский SYN пакет мы НЕ сохраняем никакой информации о соединении, а пакуем ее в ответный SYN+ACK пакет и отправляем клиенту. И лишь в случае, когда клиент ответит нам своим ACK передав эту информацию — мы ее проверим, распакуем информацию содержащуюся в нем и создадим запись о таком соединении и откроем обмен данными.

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

      Как известно, эта фича включается так:

      sysctl -w net.ipv4.tcp_syncookies = 1

      Но когда именно они включаются? Как работают? Всегда ли это панацея? На эти вопросы я постараюсь ответить ниже.

      Вся обработка входящего tcp соединения начинается в файле net/ipv4/tcp_input.c в функции tcp_conn_request. Там сразу после приема пакета осуществляется следующая проверка:

      if ((sysctl_tcp_syncookies == 2 || inet_csk_reqsk_queue_is_full(sk)) && !isn) < want_cookie = tcp_syn_flood_action(sk, skb, rsk_ops->slab_name); >

      Дословно она означает, что syn cookie включаются (не посылаются! А просто включаются!) если параметр sysctl -w net.ipv4.tcp_syncookies = 2 либо когда переполнится syn очередь для сокета (а она в свою очередь задается через параметр net.ipv4.tcp_max_syn_backlog = 2048).

      Уже сейчас можно понять, что 2048 — это очень много и почти любое приложение после получения такого числа запросов на подключение погибнет. При этом syn cookie включенные в режиме «1» еще даже не включатся!

      Чуточку дальше в том же файле tcp_input.c осуществляется проверка — а не переполнена ли очередь ожидания на слушающем (listen) сокете, она в свою очередь задается на уровне приложения, через второй аргумент системного вызова listen. И если она полна — то соединение просто отбрасывается, безотносительно режиму syn cookie вообще! Система предполагает, что приложение не может больше отработать и в принципе не принимает трафик. На этом обработка кончается. Если же очередь не забита — мы движемся дальше.

      Обращаю внимание! Что syn cookie еще НЕ был отправлен! Даже если он был включен на какой-то из предыдущих проверок.

      Теперь мы вызываем функцию cookie_init_sequence, которая в свою очередь дергает cookie_v4_init_sequence, которая объявлена в net/ipv4/syncookies.c. И там параметры входящего соединения хэшируются с помощью хэш функции sha1 (secure_tcp_syn_cookie). В свою очередь, стоит обратить внимание, что sha1 — это довольно тяжелая функция для процессора и довольно серьезный Intel E5 2620 может хэшировать не более 400 мегабайт/секунду в расчете на 1 ядро. Постойте пугаться! Не съедят syn cookie Ваш процессор, даже довольно слабый 2620 может обработать до 32Gb/s чисто на хэшировании, это огромные цифры, так что нагрузки на процессор пугаться не стоит — я просто привел информацию о том, что это не бесплатная операция.

      И после того как эта cookie сформирована, мы посылаем ее клиенту. Как можно заметить — режим «2» работы syn cookie на сервере, где ожидаются атаки — предпочтительнее. Но стоит понимать, что syn cookie — это хак, который не особо согласуется с протоколом tcp и бывает, что он приводит к неработоспособности ряда фич, поэтому использовать его нужно лишь после тщательных тестов. Но при этом такой подход все равно не защищает приложения должным образом.

      Как хорошее и надежное решение данной проблемы стоит использовать iptables/netfilter цель SYN PROXY, которая блокирует syn флуд раньше, чем они пойдет в обработку ядром (на этапе фильтрации через netfilter). Но тут стоит отметить, что данный функционал был добавлен в 3.12 ядре и присутствует только в RHEL/CentOS 7, в более младших версиях дистрибутивов такой возможности нету и вряд ли появится.

      Но я бы хотел добавить, что syn cookie должны быть ВКЛЮЧЕНЫ в обязательном порядке. Вообще без них Linux упадет от самой слабой атаки syn флудом.

      В чем же отличия 1 и 2го режимов syn cookie? В первом режиме они подключаются, когда переполняется очередь syn соединений на 1 порт, а во втором режиме они включаются безусловно даже очередь пуста. То есть для ВСЕХ соединений.

      Подробнее читайте в документации ядра Linux — тут 🙂 Все рассуждения основаны на анализе ядра ядра 3.18, в Вашей версии ядра все может быть ИНАЧЕ!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *