Журнал LinuxFormat - перейти на главную

LXF94:Следим за сетью

Материал из Linuxformat
Перейти к: навигация, поиск

Содержание

Wireshark: Ловите данные в сети

Исследуя вашу сеть, можно добыть массу полезной информации. Грэм Моррисон применит пакетный анализатор, чтобы продемонстрировать беззащитность ваших данных.

Не нужно быть специалистом по сетям, чтобы интересоваться их мониторингом. Столь же необязательно родиться крутым хакером. Ясное представление о процессах, происходящих в вашей сети, способствует её максимальной защищенности. Оно даже может подвигнуть вас на полезные действия.

Но для понимания этих процессов, вы должны достаточно близко познакомиться с пакетами, пересылаемыми в вашей сети, чтобы видеть их в упор. Для этой работы есть только один инструмент, и он известен как «сниффер» [«обнюхиватель», ищейка, англ.] пакетов или сетевой анализатор. Такие приложения захватывают необработанные биты и байты потока данных, пока они передаются по вашей сети, и анализируют их для определения используемого сетевого протокола. Затем вы можете «пройти по следу» сетевого соединения и отследить пути взаимодействия между клиентом и сервером.

На этом уроке я собираюсь открыть вам глаза, чтобы вы поняли, насколько в действительности доступны в сети ваши данные. Используя анализатор, мы захватим стандартные пакеты, пересылаемые, когда вы пользуетесь клиентом мгновенных сообщений Gaim для общения с друзьями; затем выделим текст сообщений и убедимся, что он действительно открыт для просмотра всем желающим. Будет полезно хоть чуть-чуть понимать, как работает сеть, но экспертом быть не обязательно. На самом деле, просмотр сетевых пакетов и точный анализ того, что передается по проводам и в эфире вокруг вас – превосходный способ обучения.

Самый популярный анализатор для Linux – инструмент под названием Wireshark, но более вероятно, что вы слышали об инструменте под названием Ethereal. На самом деле Wireshark – это и есть Ethereal, а имя поменялось после того, как главный разработчик, Джеральд Комбс [Gerald Combs], сменил работодателя. Его бывшая компания имела права на имя Ethereal, но не на код приложения, выпущенный под лицензией GPL. Поэтому все, что Комбс должен был сделать после ухода – это настроить новый репозиторий Subversion для своей собственной версии исходного кода и придумать новое имя. В июне 2006 г. Ethereal превратился в Wireshark.

Для перехвата пакетов вашей сети Wireshark использует системную библиотеку под названием libpcap. Если вы используете какой-то экзотический сетевой протокол, не поддерживаемый libpcap, то Wireshark также не сможет ничего выяснить. Но тем, кто использует пециализированные сетевые протоколы, которые даже libpcap не понимает, вряд ли понадобится наш урок. Теперь, когда вы знаете всю подоплеку, давайте начнем.

Часть 1: Перехват данных

Важнейшее решение при сетевом анализе – где запускать сниффер. Для личных экспериментов лучше всего сделать это на вашей собственной машине. Если же вы хотите анализировать реальный мир данных вашей сети, запустите Wireshark на сервере. Это означает, что любой клиент (не только ваша машина), использующий сервер для передачи данных «в» и «из» Интернет(а), будет виден приложению захвата пакетов. Но ввиду неэтичности этого занятия, нужны веские основания для подобных действий.

После выбора машины для работы настает момент установки Wireshark посредством менеджера пакетов. Сниффер включен во множество дистрибутивов по умолчанию и является самодостаточным приложением, использующим GUI для выполнения всех задач – в отличие от многих других инструментов системного администрирования. Хотя вам, может быть, стоит поискать ‘Ethereal’: системы вроде Ubuntu используют это старое имя для обеспечения совместимости пакетов.

Wireshark требует запуска с привилегиями системного администратора – что обычно означает запуск приложения от имени root. Если вы беспокоитесь о проблемах безопасности, связанных с запуском такого низкоуровневого инструмента на критичном для системы сервере (чего вы не должны делать в любом случае), хорошим компромиссом может быть запустить Wireshark на краткое время, для захвата достаточного количества сетевых данных, и использовать приложение на пользовательском уровне для их анализа.

Надзор за устройствами

Вы можете запустить Wireshark из командной строки, набрав wireshark. Через пару мгновений появится его GTK 2-интерфейс. На данный момент он больше похож на шестнадцатеричный/двоичный редактор, чем на инструмент анализа сети, просто потому, что пока не содержит данных. Получение данных для приложения – следующий шаг.

Щелкните на первой иконке панели инструментов или выберите Интерфейсы [Interfaces] в меню Захват [Capture]. В открывшемся окне будет приведен список всех имеющихся сетевых устройств. В нем также начнется вывод числа пакетов, проходящих через каждое устройство. Этот список полностью зависит от конфигурации вашей системы. Если ваша машина использует беспроводное подключение к сети, вы, вероятно, увидите устройства wifi0 или ath0; если проводное, то скорее всего они будут озаглавлены eth0 или, для второй карты, eth1. Другие стандартные устройства – slip0 и ppp0 для соединений по последовательной линии, используемой в dialup-сетях (помните такие?) [помним, помним. ppp0 – частый гость на компьютерах современных домашних пользователей, использующих для доступа к провайдеру протоколы PPTP или PPPoE, а также услуги сотовых сетей GPRS/CDMA, – прим. ред.]

Вы также увидите еще два устройства. Одно из них будет обозначено как lo, это стандартное кольцевое устройство, реализованное в ядре Linux для тестирования: оно соответствует локальной машине. Другое обозначено как anу – это мета-устройство, используемое Wireshark для объединения всех сетевых подключений к машине. Оно пригодится, если вам необходимо захватывать все, а объем генерируемых данных может оказаться не поддающимся обработке. Намного легче начать с порта, который, как вы точно знаете, используется определенными протоколами, и только потом перейти к захвату данных с других интерфейсов.

Захват без разбора

Щелчок на кнопке Подготовка [Prepare] рядом с интересующим вас устройством позволит вам произвести тонкую настройку процесса сбора данных. Большинство опций можно оставить как есть, но пару из них вы, вероятно, захотите изменить. Наиболее важный параметр обозначен как Захват пакетов без разбора [Capture Packets In Promiscuous Mode]. Во включенном состоянии он позволяет Wireshark перехватывать и сохранять каждый отдельный байт сетевого пакета на самом нижнем уровне. Вне этого режима важная информация о пересылке может быть упущена. Но может ли ваша система работать в нем или нет, зависит от имеющегося драйвера Ethernet, хотя большинство устройств этот режим поддерживают. Другой важный параметр на этой странице назван Обновлять список пакетов в реальном времени [Update List Of Packets In Real Time]. Вероятно, вам не следует пользоваться им при первых попытках применения Wireshark, но он очень полезен при быстром анализе. По своей сути он позволяет вам пощупать и просеять сетевые данные без предварительного их захвата – ценно, если вы хотите заметить некоторую специфическую активность в сети.

Внимание, эксперимент!

Удовлетворившись настройками для выбранных вами устройств, нажмите или кнопку Старт [Start] на странице настройки, или кнопку Захват [Capture] в списке интерфейсов. После этого Wireshark запишет каждый байт данных, прошедший через ваше сетевое устройство. Чтобы повысить ценность этого упражнения, не мешает сделать через ваше сетевое соединение что-нибудь интересное. Лично я запустил клиента мгновенных сообщений Gaim и начал разговор с одним из моих контактов. Есть и другие вещи, которые стоит попробовать, от просмотра нескольких защищенных и не защищенных сайтов (попробуйте купить что-либо в сети!) до передачи/приема электронной почты. Но помните: все, что вы делаете, будет захвачено Wireshark. Когда вы сочтете, что накопили достаточно данных для анализа, просто остановите ведение журнала. После этого Wireshark загрузит данные в главное окно.

Часть 2: Анализ данных

Сетевые данные – это двоичные данные; вы вряд ли что-либо поймете, загрузив их в текстовый редактор. Сила Wireshark в его способности декодировать информационные поля, содержащиеся в захваченных двоичных данных. Путем поиска определенных шаблонов в данных, Wireshark может точно определить тип используемого протокола, а по нему извлечь необходимую дополнительную информацию.

Главное окно данных в Wireshark (см. ниже) показывает разборку содержимого каждого пакета сетевых данных, которые Wireshark умеет распознавать. Первый левый столбец – порядковый номер пакета, в соответствии с его получением. Рядом находится время получения пакета. Справа от времени расположены IP-адреса отправителя и получателя, найденные в пакете – откуда пакет послан и куда направляется. Столбец Протокол [Protocol] отображает аббревиатуру найденного протокола для пакета, а в последнем столбце выводится ценная информация, извлеченная благодаря тому, что Wireshark распознал протокол, и какие данные в пакете наиболее полезны.

Фильтр свирепствует

Послание в бутылке


Тактика защиты от вторжений

Персональные инструменты
купить
подписаться
Яндекс.Метрика