"Человек - самое уязвимое место в системе безопасности.."

Утилиты сетевого тестирования

Ping

Утилита ping нужна для проверки доступности сетевой службы или удаленного хоста, и почти всегда используется для проверки наличия отсутствия связи в сетях. Утилита отправляет ICMP пакет на узел хоста и ждет ответа. Время между отправкой такого запроса и получением ответа говорит о пропускной способности линии связи.

Утилита ping присутствует во всех сетевых ОС. Утилита разрешает тестировать сеть IP-пакетами любого размера (64 байт до 64 КБ). Нужно помнить, что маршрутизаторы могут иметь правила на блокирование ICMP пакетов, так как это самый просто способ DDOS атак. На рис.1 виден результат реализации команды ping.

Утилиты сетевого тестированияРисунок — 1

Определить пропускную способность сети можно с помощью графика зависимости, где оси обозначают время обращения и размер ICMP-пакета. Нужно знать, что в Ethernet сети пакет более 1.5 кбайт дробиться на более меньшие куски.

Traceroute (tracert)

Утилита traceroute разрешает увидеть маршрут, по которому передается IP-датаграммы между узлами. Не факт что две последовательные датаграммы пройдут по одному и тому же пути. Утилита traceroute как и ping, реализует пакет ICMP и поле в IP-заголовке TTL. TTL — время жизни пакета — 8-битовое по размеру. Значение задается отправителем (зависит от ОС). Каждый маршрутизатор, который принимает датаграмму, уменьшает значение TTL ровно на количество секунд (задержка на самом маршрутизаторе) или на 1.

Утилита работает следующим образом. На хост отправителя передается IP(UDP)-датаграмма с значением TTL — 1. Каждая последующая отправка увеличивает значение на 1. Таким образом, 1ая посылка уничтожиться на первом маршрутизаторе, так как значение TTL — 1. В ответ маршрутизатор отправляет ICMP-пакет отправителю об истечении времени. Вторая посылка уничтожается на втором маршрутизаторе, и так пока не будет достигнута хоста назначения. В UDP-датаграммах, которые передаются с помощью traceroute, номер порта ставится более 30000. Результат работы утилиты показана на рис.2. Также отметим, что команда traceroute для *unix ОС, а tracert для WIN*. Если в результате присутствуют *** вместо адреса узла, значит пакет потерял или маршрутизатор не имеет право отправлять ICMP пакеты.

результат работы утилиты tracertРисунок — 2

netstat

Утилита netstat показывает текущее состояние разных данных связанных с сетью. Можно узнать таблицу маршрутизации, текущих TCP — соединениях и тд. Существует много параметров, которые разрешают смотреть разные данные. Сейчас рассмотрим стандартный вариант просмотра активных открытых соединений. netstat -a.

  • CLOSED — закрытое, сокет не используется
  • LISTEN — ожидание входящих соединений
  • SYN_SENT — попытка создать соединение
  • SYN RECEIVED — процесс начальной синхронизации соединения
  • ESTABLISHED — соединение установлено
  • CLOSE_WAIT — удаленная сторона отключилась, ожидание закрытия сокета
  • FIN_WAIT_1 — сокет закрыт, отключение соединения
  • LAST_ACK — удаленная сторона отключилась, сокет закрыт. ожидания подтверждения
  • FIN_WAIT_2 — сокет закрыт, ожидание отключения от удаленной стороны (ожидания флага FIN)
  • TIME_WAIT — ожидание после закрытия повторной передачи, отключение удаленной стороны

результат работы утилиты nestatРисунок — 3

tcpdump

Утилита tcpdump нужна для перехвата трафика на конкретном интерфейсе канального уровня. Сетевая плата переходит в специальный режим promiscuous. Стандартный вид команды:

  • tcpdump [-c count] [-s snaplen] [-w file] [expression]

В файл будут записаны несколько (count) первых попавшихся кадров, удовлетворяющих маске (expression (пример: not port 25)). Если длина кадра более (snaplen), то кадр будет усечен до этой величины.

Примеры реализации tcpdump:

  • Вывести все отправленные и принятые пакеты с IP-адресом 192.168.1.1:
    • tcpdump host 192.168.1.1
  • Вывести все пакеты между хостом ace и всеми остальными кроме helios:
    • tcpdump ip host ace and not helios
  • Вывести первый и последний пакеты TCP-сеанса связи (SYN/FIN сегменты, где принимал участие компьютер с нелокальным IP-адресом:
    • tcpdump ‘tcp[tcpflags] & (tcp-syn|tcp-fin) != 0 and not src and dst net localnet
  • Вывести все IP-пакеты по размеру больше 576 байт, пришедшие через маршрутизатор snup:
    • tcpdump ‘gateway snup and ip[2:2] > 576’
  • Вывести все пакеты с IP-адресами класса D (групповая рассылка), которые были инкапсулированы и отправлены не в широковещательных кадрах и не в кадрах групповой рассылки ethernet:
    • tcpdump ‘ether[0] & 1 = 0 and ip[16] >= 224’
  • Вывести все ICMP-пакеты, которые были созданы утилитой ping (не эхо-апросы/ответы):
    • tcpdump ‘icmp[icmptype] != icmp-echo and icmp[icmptype] != icmp-echoreply’