Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Безопасность системы протоколов интернет.docx
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
298.48 Кб
Скачать

5.11 Затопление syn-пакетами

Пожалуй, затопление SYN-пакетами ("SYN flooding") - самый известный способ напакостить ближнему, с того времени, как хакерский электронный журнал "2600" опубликовал исходные тексты программы, позволяющие занятьсе этим даже неквалифицированным пользователям. Следует заметить, что впервые эта атака была упомянута еще в 1986 году все тем же Робертом Т. Моррисом. Вспомним, как работает TCP/IP в случае входящих соединений. Система отвечает на пришедший C-SYN-пакет S-SYN/C-ACK-пакетом, переводит сессию в состояние SYN_RECEIVED и заносит ее в очередь. Если в течении заданного времени от клиента не придет S-ACK, соединение удаляется из очереди, в противном случае соединение переводится в состояние ESTABLISHED. Рассмотрим случай, когда очередь входных соединений уже заполнена, а система получает SYN-пакет, приглашающий к установке соединения. По RFC он будет молча проигнорирован. Затопление SYN-пакетами основано на переполнении очереди сервера, после чего сервер перестает отвечать на запросы пользователей. Самая известная атака такого рода - атака на Panix, нью-йоркского провайдера. Panix не работал в течении 2-х недель. В различных системах работа с очередью реализована по разному. Так, в BSD-системах, каждый порт имеет свою собственную очередь размером в 16 элементов. В системах SunOS, напротив, такого разделения и нет и система просто располагает большой общей очередью. Соответственно, для того, что бы заблокировать, к примеру, WWW-порт на BSD достаточно 16 SYN-пакетов, а для Solaris 2.5 их количество будет гораздо больше. После истечение некоторого времени (зависит от реализации) система удаляет запросы из очереди. Однако ничего не мешает крэкеру послать новую порцию запросов. Таким образом, даже находясь на соединение 2400 bps, крэкер может посылать каждые полторы минуты по 20-30 пакетов на FreeBSD-сервер, поддерживая его в нерабочем состоянии (естественно, эта ошибка была скорректирована в последних версиях FreeBSD). Как обычно, крэкер может воспользоваться случайными обратными IP-адресами при формировании пакетов, что затрудняет его обнаружение и фильтрацию его трафика. Детектирование несложно -- большое количество соединений в состоянии SYN_RECEIVED, игнорирование попыток соединится с данным портом. В качестве защиты можно порекомендовать патчи, которые реализуют автоматическое "прорежение" очереди, например, на основе алгоритма Early Random Drop. Для того, что бы узнать, если к Вашей системе защита от SYN-затопления, обратитесь к поставщику системы. Другой вариант защиты - настроить firewall так, что бы все входящие TCP/IP-соединения устанавливал он сам, и только после этого перебрасывал их внутрь сети на заданную машину. Это позволит Вам ограничить SYN-затопление и не пропустить его внутрь сети.

6 User Datagram Protocol

дословный перевод [протокол дайтограмм пользователя], он предназначен для передачи данных между прикладными процессами и обменом дейтаграммами между компьютерами входящими в единую сеть.

Биты

10

11

12

13

14

15

16

17

18

19

210

211

212

213

214

215

216

217

218

219

320

121

122

223

224

225

226

227

128

129

130

231

0-31

Порт отправителя (Source port)

Порт получателя (Destination port)

32-63

Длина датаграммы (Length)

Контрольная сумма (Checksum)

64-...

Данные (Data)

Длина пакета в UDP измеряется в октетах, дейтаграммы пользователя включают заголовок и данные. Это означает, что минимальная величина длины четыре байта. Протокол UDP является транспортным и он не устанавливает логического соединения, а также не упорядочивает пакеты данных. То есть пакеты могут прийти не в том порядке в котором они были отправлены и UDP не обеспечивает достоверность доставки пакетов. Но данные, отправляемые через модуль UDP, достигают места назначения как единое целое. Главная особенность UDP заключается в том, что он сохраняет границы сообщений и никогда не объединяет несколько сообщений в одно.  Взаимодействие между процессами и модулем UDP осуществляется через UDP-порты. Адресом назначения является номер порта прикладного сервиса. В протоколе так же используется IP который является адресом узла . У UDP так же как и у TCP существуют зарезервированные порты. Присвоением сервисам собственных номеров занимается организация IANA (Internet Assigned Numbers Authority). Всего в UDP используется от 0 до 65535 портов. При этом от 0 до 1023 главные порты, от 1024 до 49151 порты выделенные под крупные проекты и частные порты, от 49152 до 65535 предусмотрены для любого программиста который захочет использовать данный протокол. 

Вот список от 1 до 20 портов из списка номеров портов от организации IANA:  Порт       Описание    1     TCP Port Service Multiplexer    2     Management Utility    3     Compression Process    4     Unassigned    5     Remote Job Entry    6     Unassigned    7     Echo    8     Unassigned    9      Discard    10    Unassigned    11    Active Users    12    Unassigned    13    Daytime (RFC 867)    14    Unassigned    15    Unassigned    16    Unassigned    17    Quote of the Day    18    Message Send Protocol    19    Character Generator    20    File Transfer [Default Data]  Подробную информацию смотри в RCF IANA  Так же есть возможность локально присвоить номер порта. Для этого необходимо приложение связать с доступом и при этом выбрать любое число, но при этом необходимо помнить о том что существуют уже зарезервированные порты.  Преимущество протокола UDP состоит в том, что он позволяет прикладным программам отправлять сообщения другим приложениям используя минимальное количество параметров протокола.