Библиотека сайта rus-linux.net
Использование Wireshark для исследования сетей
Оригинал: Wireshark for Network analysis
Автор: Riccardo Capecchi
Дата публикации: 22 сентября 2010 г.
Перевод: А.Панин
Дата публикации перевода: 27 ноября 2012 г.
В сети Интернет можно найти сотни замечательных программ с открытым исходным кодом, которые могут использоваться для исследования сетей, но их использует ограниченный круг технических специалистов. Но среди них есть ряд решений, которые действительно эффективны и могут помочь в ежедневной работе по обслуживанию сетей. В первой статье я расскажу о Wireshark - полезном инструменте для исследования сетей.
Wireshark
Программа Wireshark (ранее программа была известна под названием Ethereal) стала стандартом де-факто при исследовании сетей и анализе протоколов среди приложений с открытым исходным кодом. Она предоставляет возможность проводить низкоуровневую фильтрацию пакетов и их анализ. Файлы с захваченными данными из сети (trace files) могут быть открыты в Wireshark и рассмотрены вплоть до каждого пакета.
- Администраторы сетей используют ее для выявления причин неполадок в сетях.
- Специалисты по безопасности сетей используют ее для поиска проблем с безопасностью.
- Разработчики используют ее для отладки реализаций протоколов.
- Пользователи используют ее для изучения принципов работы сетевых протоколов.
Помимо этих примеров, Wireshark может помочь и в других ситуациях.
Установочные пакеты Wireshark доступны в официальном репозитории Ubuntu 10.04 (пакеты доступны также для более поздних версий Ubuntu и других популярных дистрибутивов - прим.пер.), поэтому для установки потребуется всего лишь использовать команду: sudo aptitude install wireshark
.
Как только установка завершится, запустите программу из терминала при помощи команды sudo wireshark
; да, в этом случае программа будет выполняться с правами пользователя root, что является не самым безопасным решением, но альтернативный вариант запуска без прав суперпользователя требует множества действий по конфигурации системы, с ним вы можете познакомиться по ссылке (работает только в Linux).
После запуска программы вы увидите на экране главное окно программы:
Под заголовком "Interface List" вы должны увидеть список всех сетевых интерфейсов вашей системы, для начала захвата пакетов достаточно просто выбрать интересующий вас интерфейс при помощи клика, после чего вы увидите пакеты, проходящие через интерфейс в новом окне.
Очень частой проблемой при работе со стандартными настройками является то обстоятельство, что пользователю предоставляется огромный объем информации, а интересующую информацию становится очень сложно найти.
Большой объем информации уводит из поля зрения нужную информацию.
- Фильтры захвата: используются для указания на то, какие данные должны записываться в журнал данных. Эти фильтры задаются до начала захвата данных.
- Фильтры отображения: используются для поиска внутри журнала данных. Эти фильтры могут быть изменены в процессе захвата данных.
Так что же использовать: фильтры захвата или фильтры отображения?
Задачи этих фильтров отличаются.
Фильтр захвата используется в первую очередь для сокращения объема захваченных данных с целью предотвращения чрезмерного увеличения в объеме журнала данных.
Фильтр отображения является более мощным (и сложным); он позволяет вам искать именно те данные, которые вам необходимы.
Фильтры захвата
Синтаксис фильтров захвата аналогичен синтаксису фильтров программ на основе библиотек libpcap
(Linux) или winpcap
(Windows), таких, как известная программа TCPdump. Фильтр захвата должен быть задан до начала захвата пакетов при помощи Wireshark, в этом состоит отличие от фильтров отображения, которые можно редактировать в любое время в течение процесса захвата.
Следующие шаги позволяют настроить фильтр захвата:
- В меню окна выберите пункт "Capture -> options
".
-Заполните текстовое поле "Capture filter
" или нажмите на кнопку "Capture filter
" для указания имени вашего фильтра с целью его повторного использования в последующих захватах данных.
-Нажмите кнопку "Start
" для начала захвата данных.
Синтаксис:
Если вам необходим фильтр для какого-либо протокола, следует рассмотреть описание протоколов.
Протокол Направление Узел(узлы) Значение Логические_операции Другое_выражение
Примеры:
host 172.18.5.4
net 192.168.0.0/24
net 192.168.0.0 mask 255.255.255.0
src net 192.168.0.0/24
src net 192.168.0.0 mask 255.255.255.0
dst net 192.168.0.0/24
dst net 192.168.0.0 mask 255.255.255.0
port 53
host www.example.com and not (port 80 or port 25) host www.example.com and not port 80 and not port 25
port not 53 and not arp
(tcp[0:2] > 1500 and tcp[0:2] < 1550) or (tcp[2:2] > 1500 and tcp[2:2] < 1550)
(src host 10.4.1.12 or src net 10.6.0.0/16) and tcp dst portrange 200-10000 and dst net 10.0.0.0/8
Фильтры отображения
Wireshark использует фильтры отображения главным образом для фильтрации выводимых пользователю данных с использованием различных цветов в соответствии с правилами использования цветов.
Основные положения и синтаксис фильтров отображения описаны в руководстве пользователя.
Примеры:
ip.src==192.168.0.0/16 and ip.dst==192.168.0.0/16
tcp.window_size == 0 && tcp.flags.reset != 1
http.request.uri matches "gl=se$"
Примечание: Символ $ является пунктуационным символом PCRE, который обозначает окончание строки, а в данном случае окончание поля http.request.uri. |
ip.src != xxx.xxx.xxx.xxx && ip.dst != xxx.xxx.xxx.xxx && sip
С официальным руководством пользователя можно ознакомиться по ссылке.
Эта статья описывает лишь ту информацию, которая может пригодиться при знакомстве с Wireshark, для получения дополнительной информации следует обратиться к wiki проекта с огромным количеством полезных статей.
В следующей статье будет рассмотрен вопрос об использовании фильтров в программе Wireshark.