Раздел: Документация
0 ... 31 32 33 34 35 36 37 ... 125 фильтровать по указанному в них адресу назначения, разрешая доступ только к определенным адресам. Полезно также поле с указанием протокола, для которого предназначен пакет. Это может быть, например, протокол TCP или UDP, два основных транспортных протокола в Internet, либо протокол ICMP. Как правило, следует отбрасывать пакеты любых протоколов, не используемых в вашей сети или позволяющих изменить ее настройки. Например, посредством ICMP-пакетов удается изменить таблицу маршрутизации или сообщить о недоступности определенного узла. Если вы хотите взглянуть на полный список сообщений ICMP, найдите при помощи поисковой машины документ RFC 1700. Порт источника (16 бит) Порт адресата (16 бит) Последовательный номер (32 бита) Номер подтверждения (32 бита) ш 1 * гаев -° ь d ivo а га О
Контрольная сумма (16 бит) Окно (16 бит) Указатель срочных данных Опции и заполнение Рис. 5.2 Фильтрация пакетов может осуществляться также с помощью заголовка протокола TCP Информация в заголовке TCP и UDP Каждый уровень в стеке протоколов добавляет к данным, получаемым им от верхнего уровня свой заголовок. Поскольку IP используется другими протоколами, такими как TCP и UDP, можно предполагать, что в области данных IP-пакета должен находиться заголовок этих протоколов. Информация в нем может оказаться очень полезной для фильтрации пакетов. На рис. 5.2 показаны поля заголовка TCP, который иногда называется TCP Protocol Data Unit (Модуль данных протокола TCP). Как вы помните, протокол TCP отвечает за установку надежного соединения между двумя приложениями в сети. TCP получает данные (они называются сообщениями) от слоев, находящихся выше него в стеке протоколов, вставляет ТСР-заголовок, а затем посылает их уровню IP, который добавляет свой заголовок. Сообщение, передаваемое TCP от приложений, расположенных выше по стеку, обычно называется потоком данных (stream of data), поскольку объем данных может изменяться и не ограничен определенным числом битов. TCP принимает эти сообщения и, если они не помещаются в один пакет, разбивает их на фрагменты меньшего размера, каждый из которых передается в отдельном пакете. Уровень TCP на принимающем конце снова собирает их, а затем отсылает приложению. Большая часть рассмотренной нами информации из IP-заголовка нужна для маршрутизации пакета в Internet - например адреса отправителя и получателя. Сведения в TCP-заголовке предназначены для других целей, таких как обеспечение надежности соединения и соблюдение порядка сообщений. Взгляните на описание полей ТСР-заголовка: О порт отправителя. 16-битное поле, определяющее порт, используемый приложением, передающим данные; О порт адресата. 16-битное поле, обозначающее порт, на который доставляется пакет на принимающем конце соединения; О последовательный номер. 32-битное поле, указывающее местоположение фрагмента в сообщении, если оно было разбито на части при передаче; О номер подтверждения. 32-битное поле, в котором назначается очередной последовательный номер; О смещение данных. 4-битное поле, задающее число 32-битных слов, образующих заголовок. Служит для вычисления начала области данных в пакете; О зарезервированное поле. 6 бит, зарезервированных для будущего использования. Должны быть равны нулю; О флаг АСК. Если этот бит равен 1, то поле «срочный указатель» определяет часть данных в пакете, которые считаются срочными; О флаг PSH. Равный 1, этот флаг обозначает функцию push, иначе он равен 0; О флаг RST. Равен 1, если соединение должно быть сброшено, если нет - 0; О флаг SYN. Когда этот бит равен 1, нужно синхронизировать последовательные номера, в противном случае в этом нет необходимости; О флаг FIN. Если данный бит равен 1, значит, отправитель закончил передачу данных, в других случаях бит равен 0; О окно. 16-битное поле, определяющее число блоков данных, которые компьютер может принять; О контрольная сумма. 16-битное поле, посредством которого проверяется целостность заголовка и данных пакета; О указатель на срочные данные. Когда установлен флаг URG, это 16-битное поле указывает на смещение от поля последовательного номера области данных пакета, в которой находятся срочные данные. Используется не протоколом TCP, а приложениями, находящимися выше него в стеке протоколов; О опции. Поле переменной длины, аналогичное полю опций в IP-заголовке. Служит, в частности, для задания максимального размера сегмента. Поскольку размер поля опций бывает различным, заголовок дополняется нулями, чтобы его размер был кратным 32 битам. Вся эта информация доступна протоколу TCP, поэтому он способен эффективно управлять соединением. Но, манипулируя некоторыми из этих полей,
Рис. 5.3. Протокол UDP использует заголовок меньшего размера хакеры также в состоянии получить контроль над соединением. Так, с помощью битов АСК и SYN хакерам удается осуществить атаку SYN flooding типа «отказ от обслуживания». Располагая информацией в TCP-заголовке, особенно номерами последовательности и подтверждения, можно «захватить» ТСР-соединение. Заголовок UDP намного меньше заголовка TCP; он состоит всего лишь из четырех полей, только два из которых - порты отправителя и адресата - годятся для фильтрации пакетов (рис. 5.3). UDP - это протокол без установки соединения, который не гарантирует доставку, а просто пересылает данные по сети. Порты и сокеты Для фильтрации пакетов предназначены два важных поля, которые содержатся в каждом из этих двух заголовков - порты отправителя и адресата. Если вы не прочитали введение в TCP/IP (глава 2), то, возможно, не знаете, для чего требуется порт. Для идентификации двух обменивающихся пакетами компьютеров в сети применяются адреса отправителя и получателя. Зачем же нужны порты? Порты используются для обозначения конечных точек соединения. Поскольку несколько приложений на одном и том же компьютере могут одновременно работать со стеком TCP, должен существовать какой-то способ различать пакеты от разных приложений. Предположим, например, что вы установили сеанс Telnet с удаленным компьютером и решили загрузить с него файл. Но Telnet не позволяет передавать файлы, поэтому вам придется создать еще одно соединение по протоколу FTP. Так как адреса отправителя и назначения в IP-пакетах будут одинаковыми для обоих этих соединений, приложения обозначаются номерами портов. Объединяя адрес и номер порта, мы получим идентификатор, однозначно определяющий обе конечные точки соединения. Эта комбинация чисел называется 140.176.22.123 (порт 23) 140.176.22.123 (порт 20) Сеанс Telnet Сеанс FTP (данные) 145.33.233.11 (порт 23) 145.33.233.11 (порт 20) Рис. 5.4 Сокет, состоящий из адреса и порта, однозначно идентифицирует конечные точки сетевого соединения 0 ... 31 32 33 34 35 36 37 ... 125
|