Опубликован: 20.02.2007 | Доступ: свободный | Студентов: 3481 / 786 | Оценка: 4.42 / 4.03 | Длительность: 40:03:00
Лекция 17:

Инструментальные средства проверки TCP/IP-стека

< Лекция 16 || Лекция 17: 12345 || Лекция 18 >

Iptest

Утилита Iptest формализует типы тестов, которые комплект isic выполняет свободно. У нее много различных опций, которые вы можете использовать, чтобы сгенерировать результаты очень узкоспециализированного тестирования, типа случайных значений TTL в заголовке IP или TCP-пакетах с порядковыми номерами пакетов, попадающих на определенные разрядные границы. Это тестирование выросло из проекта Unix IP Filter (http://coombs.anu.edu.au/ipfilter/). Фильтр IP является брандмауэром и программным обеспечением NAT для ядра BSD и Linux 2.0.x (плюс версии для Solaris, HP-UX и QNX). Его первоначальная цель заключалась в проверке на устойчивость брандмауэра к ошибкам в критических сетевых условиях.

Реализация

Все тесты требуют четырех опций для определения отправителя и получателя каждого пакета. IP-адрес отправителя определяется опцией -s; получатель всегда задается последним аргументом (без флага опции).

# iptest -s 172.16.34.213 192.168.12.84

Если IP-адрес отправителя не принадлежит физической сетевой карте (NIC), использующейся для генерации трафика, вам может понадобиться определить также сетевой интерфейс ( -d ) и шлюз ( -g ) в командной строке.

# iptest -s 10.87.34.213 -d le0 -g 192.168.12.1 192.168.12.84

Затем вы можете позволить инструменту Iptest пройти весь список встроенных тестов, или выбрать более узко направленные тесты с помощью опций -n и -pt, где n - число в интервале от одного до семи, а t - номер "точечного теста" (point test) для соответствующего n. Другими словами, вы выбираете опцию между единицей и семеркой. Например, опция пять ( -5 ) содержит большинство TCP-тестов. В пределах пятой опции есть восемь точечных тестов ( -p ). Окончательно команда, предназначенная для выполнения пятой опции с ее первым точечным тестом, будет выглядеть следующим образом:

# iptest -s 10.87.34.213-d le0-g 192.168.12.1 -5 -p1 192.168.12.84

В этом примере будут проверены все комбинации флагов TCP. В таблице 17.3 описаны более полезные опции меню.

Таблица 17.3. Опции утилиты iptest и их точечные тесты
Номер опции Точечный тест Описание
Опции iptest
-1 7 Генерирует пакеты с фрагментами нулевой длины.
-1 8 Создает пакеты длиной более 64 килобайт после сборки. Это могло бы вызвать переполнение буфера в плохих сетевых стеках.
-2 1 Создает пакеты с длиной опции IP, которая больше, чем длина пакета.
-6 n/a Генерирует фрагменты пакета, которые перекрываются при реконструкции. Это может наносить ущерб менее устойчивым стекам TCP/IP. Если вы используете этот тест, выполняйте его отдельно от других.
-7 n/a Генерирует 1024 случайных IP-пакета. Поля IP-уровня будут правильны, но данные пакета - случайны.
Опции UDP теста
-4 1,2 Создает длину полезной нагрузки UDP протокола, которая меньше (1) или больше (2), чем длина пакета.
-4 3,4 Создает UDP-пакет, в котором номер порта отправителя (3) или получателя (4) попадает на границу байта: например, 0, 1, 32767, 32768, 65535. Этот тест может обнаружить граничные (off-by-one) ошибки.
Опции ICMP теста
-3 с 1 по 7 Генерирует различные нестандартные ICMP-типы и коды. Может выявить ошибки в списке контроля доступа ACL, которые, как предполагается, блокируют ICMP-сообщения.
Опции TCP теста
-5 1 Генерирует все возможные комбинации флагов опций TCP. Этот тест может выявить логические проблемы в способах, которыми стек TCP/IP обрабатывает или игнорирует пакеты.
-5 2,3 Создает пакеты, в которых номера пакетов (2) и номера подтверждения (3) попадают на границы байта. Этот тест может выявить граничные ( off-by-one ) ошибки.
-5 4 Создает SYN -пакеты различных размеров. SYN -пакет с нулевым размером является повсеместным пакетом сканирования порта. Система обнаружения вторжений или брандмауэр должны отслеживать все виды SYN -пакетов, соответствующих подозрительной деятельности.
-5 7,8 Создает пакеты, в которых номер порта отправителя (7) или порта получателя (8) попадает на границу байта. Например, 0, 1, 32767, 32768, 65535. Может выявить граничные ошибки ( off-by-one ).

Пример из жизни. Эксплуатационные качества брандмауэра

Сетевых администраторов всегда интересует, как хорошо брандмауэр защищает сеть, как он действует при активных нападениях (таких как атаки, вызывающие отказ в обслуживании, и интенсивное сканирование) и как он справляется с тяжелыми нагрузками. В связи с этим Джек намерен проверить свой брандмауэр. Он берет следующий сценарий и загружает его на свой лэптоп с системой FreeBSD. Этот лэптоп помещен перед брандмауэром. Это означает, что он представляет трафик, приходящий из интернета.

#!/bin/sh
# IP Stack test
# usage: test.sh gateway source destination
# note, change "le1" to your interface
iptest -1 -d le1 -g $1 -s $2 $3
iptest -2 -d le1 -g $1 -s $2 $3
iptest -3 -d le1 -g $1 -s $2 $3
iptest -4 -d le1 -g $1 -s $2 $3
iptest -5 -d le1 -g $1 -s $2 $3
iptest -6 -d le1 -g $1 -s $2 $3
iptest -7 -d le1 -g $1 -s $2 $3
isic -s $2 -d $3 -p10000
tcpsic -s $2 -d $3 -p10000

Затем берет другой лэптоп и размещает его за брандмауэром. Эта сеть имеет высокую пропускную способность. Она содержит только коммутаторы, и это значит, что ему надо будет подключиться к так называемому спэн-порту (span - Switched Port Analyzer), чтобы перехватить весь трафик с помощью утилиты tcpdump. К счастью, система обнаружения вторжений уже находится на спэн-порте. Поскольку система обнаружения вторжений (IDS) не уловила никаких атак в течение последних двух месяцев, и тест выполняется после окончания рабочего времени, то никто не может пожаловаться, что IDS была выключена в течение нескольких минут. Джек отключает IDS и подключает свой лэптоп, выполняющий tcpdump. Он запускает тест :, но ничего не происходит!

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

< Лекция 16 || Лекция 17: 12345 || Лекция 18 >