
- •2. Версии iPv4 и iPv6
- •3. Пакеты и их инкапсуляция
- •4. Адресация пакетов
- •Глава 14. Сети tcp/ip 505
- •6. Cidr: протокол бесклассовой междоменной маршрутизации
- •7. Частные адреса и система nat
- •8. Маршрутизация
- •9. Таблицы маршрутизации
- •10. Arp: протокол преобразования адресов
- •11. Dhcp: протокол динамического конфигурирования узлов
- •12. Ррр: протокол двухточечного соединения
- •13. Команда ifconfig: конфигурирование сетевых интерфейсов
- •14. Демоны маршрутизации
- •Глава 15. Маршрутизация 571
- •15. Основные протоколы маршрутизации
- •Глава 15. Маршрутизация 567
- •16. Технология Ethernet: сетевая панацея
- •17. Беспроводной стандарт: локальная сеть для кочевников
- •18. Dsl и кабельные модемы: “последняя миля” 8
- •Глава 16. Сетевые аппаратные средства 593
- •20. Основные задачи системы dns
- •Глава 18. Сетевой протокол Network File System 737
- •22. Серверная часть протокола nfs
- •Глава 18. Сетевой протокол Network File System 745
- •23. Клиентская часть протокола nfs
- •Глава 18. Сетевой протокол Network File System 753
- •24. Ldap: упрощенный протокол доступа к каталогам
- •25. Структура данных ldap
- •Глава 19. Совместное использование системных файлов 775
- •26. Nis: Сетевая информационная служба
- •27. Системы электронной почты
- •Глава 20. Электронная почта 789
- •28. Протоколы smtp, pop3.
- •30. Почтовые серверы
- •Часть II. Работа в сети
- •31. Cпам и вредоносные программы
- •Глава 20. Электронная почта 813 ip range
- •32. Фильтрация почты
- •33. Почтовый агент sendmail
- •34. Почтовый агент Postfix
- •Глава 20. Электронная почта 877
- •35. Поиск неисправностей в сетях
- •Глава 21. Управление сетями 911
- •36. Kоманда traceroute: трассировка ip-пакетов
- •Глава 21. Управление сетями 915
- •37. Команда netstat: получение информации о состоянии сети
- •Глава 21. Управление сетями 919
- •39. Snmp: простой протокол управления сетями
- •40. Протокол NetFlow: мониторинг соединений
- •Глава 21. Управление сетями 939
- •41. Ключевые аспекты безопасности
- •Глава 22. Безопасность 951
- •42. Пароли и учетные записи пользователей
- •43. Эффективное использование команды chroot
- •44. Команда nmap: сканирование сетевых портов
- •45. Bro: программная система для распознавания вторжения в сеть
- •Глава 22. Безопасность 967
- •46. Мандатное управление доступом
- •47. Ssh: безопасная оболочка
- •48. Брандмауэры
- •Глава 22. Безопасность 983
- •49. Функциональный стек lamp
- •50. Обнаружение ресурсов в сети веб
- •Глава 23. Веб-хостинг 1003
- •51. Принцип работы http
- •52. Конфигурирование сервера Apache
- •Глава 23. Веб-хостинг 1011
- •53. Виртуальные интерфейсы
- •54. Протокол Secure Sockets Layes
- •Глава 23. Веб-хостинг 1017
Глава 21. Управление сетями 919
linux$ netstat -lp
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 23858/sshd
tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 10342/sendmail
udp 0 0 0.0.0.0:53 0.0.0.0:* 30016/named
udp 0 0 0.0.0.0:962 0.0.0.0:* 38221/mudd
Служба mudd с идентификатором PID 38221 прослушивает UD-порт 962. Если вы не знаете, что такое служба mudd, уточните в справочной системе.
Для безопасности полезно смотреть на компьютеры с точки зрения внешнего поль зователя, запускающего сканер порта. Для этого очень полезна команда nmap (см. раз дел 22.8).
Проверка таблицы маршрутизации
Команда netstat -r отображает таблицу маршрутизации ядра. Следующие резуль таты получены на компьютере, который имеет два сетевых интерфейса.
redhat$ netstat -r -n Kernel IP routing table
Destination
192.168.1.0
192.168.2.0
127.0.0.0
0.0.0.0 192.168.1.254 0.0.0.0 UG 0 0 0 eth0
Пункты назначения и шлюзы могут быть представлены доменными именами либо IP-адресами. Флаг -n задает вывод IР-адресов.
В колонке Flags отображаются флаги, характеризующие маршрут: U (up) — актив ный, G (gateway) — шлюзовой, Н (host) — узловой (связан с конкретным адресом, а не се тью). Флаг D (не показан) обозначает маршрут, полученный в результате переадресации по протоколу ICMP. Флаги G и H, стоящие вместе, обозначают маршрут к компьюте ру, проходящий через промежуточный шлюз. Остальные поля содержат статистические данные о маршруте: текущее число TCP-соединений по этому маршруту, количество от правленных пакетов и имя используемого интерфейса.
О таблицах маршрутизации рассказывалось в разделе 14.5.
Рассмотренный вариант команды netstat полезен для проверки правильности та блицы маршрутизации. Особенно важно убедиться в наличии и корректности стандарт ного маршрута. Он обозначается в виде адреса со всеми нулями (0.0.0.0) или словом default. Стандартный маршрут может не существовать, но такая конфигурация крайне нетипична.
38. Анализаторы пакетов
Программы tcpdump и Wireshark относятся к классу утилит, известных как анализа торы пакетов. Они следят за трафиком в сети и регистрируют либо выводят на экран пакеты, удовлетворяющие заданным критериям. Например, можно перехватывать все пакеты, посылаемые на какой-то компьютер или с него, либо TCP-пакеты, относящие ся к конкретному сетевому соединению.
Анализаторы пакетов полезны как для решения известных проблем, так и для выяв ления абсолютно новых. Важно время от времени запускать эти программы и проверять, нормально ли обрабатывается сетевой трафик.
Поскольку анализаторы должны уметь перехватывать пакеты, которые локальный компьютер обычно не получает (или на которые не обращает внимания), базовые се тевые аппаратные средства должны разрешать доступ к каждому пакету. Это характерно для широковещательных технологий, в частности Ethernet, а также для большинства со временных локальных сетей.
Анализаторы пакетов должны иметь доступ к низкоуровневому трафику, поэтому их работе могут мешать коммутаторы, одной из функций которых является препятствие распространению “ненужных” пакетов. Однако с помощью анализаторов удается полу чить полезную информацию даже в коммутируемых сетях. Можно, к примеру, обнару жить проблемы, затрагивающие широковещательные и групповые пакеты. Объем вы даваемой информации зависит от модели коммутатора.
О коммутаторах рассказывалось в разделе 16.1.
Аппаратный интерфейс должен не только иметь возможность получать доступ ко всем сетевым пакетам, но и содержать механизм, обеспечивающий передачу этих па кетов вверх на программный уровень. Ведь обычно адреса пакетов проверяются на ап паратном уровне, а ядру предоставляются лишь широковещательные/групповые пакеты и те, которые адресованы данному компьютеру. В беспорядочном режиме (promiscuous mode) интерфейс позволяет ядру получать все сетевые пакеты, даже если они предна значены для других компьютеров.
Анализаторы понимают многие форматы пакетов, используемые стандартными де монами, и часто могут отображать содержимое пакетов в удобном для восприятия виде. Это облегчает пользователю анализ сеанса между двумя программами. Существуют ана лизаторы, которые, кроме заголовка пакета, выводят и его содержимое в текстовом виде, что полезно при исследовании протоколов верхних уровней.

Глава 21. Управление сетями 923
Некоторые из этих протоколов пересылают информацию (в том числе и пароли) по сети в незашифрованном виде, поэтому следует заботиться о сохранении конфиденци альности пользовательских данных. С другой стороны, ничто так не подчеркивает не обходимость шифрования, как вид паролей, пересылаемых в открытом виде в сетевом пакете.
В связи с тем что анализатору необходим доступ к пакетам на самом низком уров не, он должен запускаться от имени пользователя root. Подобное ограничение снижает шансы обычных пользователей получить доступ ко всему сетевому трафику, но на самом деле этот барьер можно преодолеть. Во многих организациях анализаторы пакетов уда лены с большинства компьютеров с целью уменьшения риска злоупотребления этими программами. Если такая мера невозможна, следует проверять интерфейсы системы, чтобы они не работали в “беспорядочном” режиме без ведома или согласия администра тора. В Linux интерфейс, работающий в “беспорядочном” режиме, помечается в выводе команды ifconfig флагом PROMISC. В системах семейства Linux факт, что интерфейс был переключен в “беспорядочный режим”, также записывается в журнал ядра.
Утилита tcpdump: стандартный анализатор
Замечательный анализатор пакетов tcpdump, написанный Ваном Якобсоном (Van Jacobson), входит в состав большинства дистрибутивов Linux. Он уже давно считается промышленным стандартом, и другие анализаторы читают и/или записывают файлы трассировки в формате tcpdump, который в настоящее время называется libpcap.
По умолчанию утилита tcpdump использует первый найденный ею сетевой интер фейс. Если она выбрала не тот интерфейс, то посредством опции -i следует задать нуж ный. В случае неисправности службы DNS или если необходимо видеть адреса компью теров, воспользуйтесь опцией -n. Эта опция имеет большое значение, так как медленная работа DNS может привести к удалению пакетов еще до того, как они будут проанали зированы утилитой tcpdump.
Опция -v позволяет получить более детальное описание каждого пакета, а самые подробные результаты выдаются при задании опции -w. Если указана опция -w, утилита сохраняет перехваченные пакеты в файле. Для чтения пакетов из файла предназначена опция -r.
Отметим, что команда tcpdump -w по умолчанию сохраняет только заголовки па кетов. Это сделано для уменьшения размеров распечаток, но при этом можно потерять наиболее полезную и релевантную информацию. Поэтому, если вы уверены, что, кроме заголовков, вам нужна дополнительная информация, используйте флаг -s со значени ем, которое равно 1056 (фактические значения зависят от максимального размера пакета (MTU)), чтобы иметь возможность проанализировать весь пакет.
В качестве примера рассмотрим укороченный вариант распечатки, полученной на машине nubark. Спецификация фильтра host bull ограничивает вывод пакета на экран только информацией, относящейся к машине bull, которая может быть как ис точником, так и получателем.
$ sudo tcpdump host bull
12:35:23.519339 bull.41537 > nubark.domain: A? atrust.com. (28) (DF) 12:35:23.519961 nubark.domain > bull.41537: A 66.77.122.161 (112) (DF)
Первый пакет свидетельствует о том, что компьютер bull послал компьютеру nubark запрос на поиск домена atrust.com в системе DNS. Ответом является IР-адрес машины, связанной с этим именем, т.е. 66.77.122.161. Обратите внимание на временную метку в левой части строки и на то, что команда tcpdump понимает протокол на уровне
924 Часть II. Работа в сети
приложения (в данном случае DNS). Номер порта на компьютере bull является про извольным и записывается в виде числа (41537), но поскольку номер порта на сервере хорошо известен (53), команда tcpdump выводит его символическое имя domain.
Анализаторы пакетов могут порождать огромные массивы информации, неподъем ные не только для человека, но и для операционной системы. Для того чтобы избежать перегрузки сети, утилита tcpdump позволяет задавать сложные фильтры. Например, сле дующий фильтр собирает только входящий веб-трафик из одной подсети.
$ sudo tcpdump src net 192.168.1.0/24 and dst port 80
Справочная страница утилиты tcpdump содержит несколько хороших примеров
сложных фильтров, а также список примитивов.7
Система Solaris содержит анализатор, работающий так же, как tcpdump. Он называется snoop. Дистрибутивные пакеты систем HP-UX, AIX и большин ства систем семейства Linux не содержат таких утилит
solaris$ snoop
Using device /dev/e1000g0 (promiscuous mode)
nubark -> solaris TCP D=22 S=58689 Ack-2141650294 Seq=3569652094 Len=0
Win=15008 Options=<nop,nop,tstamp 292567745 289381342>
nubark -> solaris TCP D=22 S=58689 Ack=2141650358 Seq=3569652094 Len=0
Win=15008 Options=<nop,nop,tstamp 292567745 289381342>
? -> (multicast) ETHER Type=023C (LLC/802.3), size = 53 bytes
Если вы используете зоны Solaris, обратите внимание на то, что утилита snoop рабо тает правильно, только если вы устраняете проблему в локальной зоне.
Утилиты Wireshark и TShark: усовершенствованный вариант tcpdump
Утилита tcpdump появилась довольно давно, но в последнее время все более по пулярным становится новый открытый пакет под названием Wireshark (который ранее назывался Ethereal). Пакет Wireshark активно совершенствуется и содержит больше функциональных возможностей, чем большинство коммерческих приложений. Это не обычайно мощный инструмент анализа, который должен входить в инструментальный набор каждого эксперта. Кроме того, он незаменим при обучении.
Пакет Wireshark содержит как пользовательский графический интерфейс (wireshark), так и интерфейс командной строки (tshark). В системе Linux он ин сталлируется автоматически. Администраторы системы UNIX должны посетить сайт wireshark.org, на котором хранится открытый код и множество скомпилированных модулей.
Программа Wireshark может читать и записывать файлы слежения в форматах, ис пользуемых многими другими анализаторами пакетов. Еще одна удобная функциональ ная возможность заключается в том, что одним щелчком мыши можно выбрать любой пакет в сеансе TCP и попросить программу Wireshark заново собрать (соединить вместе) данные, включенные во все пакеты, находящиеся в потоке. Эта возможность полезна, если вы хотите проверить данные, переданные в ходе полного TCP-обмена, например, какое соединение было использовано для передачи сообщения об ошибке по сети.
7 Если ваши требования, касающиеся фильтрации, превосходят возможности утилиты tcpdump, обратите внимание на утилиту ngrep (ngrep.sourсеforge.net), которая может филь
тровать пакеты в соответствии с их содержимым.
Глава 21. Управление сетями 925
Фильтры перехвата программы Wireshark функционально идентичны фильтрам ути литы tcpdump, поскольку программа Wireshark использует ту же самую библиотеку libpcap. Тем не менее следует быть внимательным: важный нюанс заключается в том, что программа Wireshark имеет дополнительную функцию “фильтры дисплея”, которая влияет на внешний вид данных, а не содержание, перехваченное анализатором. Фильтр дисплея имеет более мощный синтаксис, чем библиотека libpcap, поддерживаемая в момент перехвата. Фильтры дисплея похожи на фильтры библиотеки libpcap, но они не совпадают с ними.
Программа Wireshark имеет встроенные дешифраторы для многих сетевых протоко лов, включая многочисленные протоколы, используемые для реализации сетей хранения данных. Она преобразует пакет в структурированное информационное дерево, в котором каждый бит информации описан на английском языке.
На рис. 21.2 показан перехват DNS-запроса и ответа на него в программе Wireshark.
Рис. 21.2. Пара DNS-пакетов в программе Wireshark
В таблице, расположенной в верхней части рисунка, указаны два пакета. Первый пакет представляет собой запрос на пересылку на DNS-сервер, а второй пакет являет ся полученным ответом. Выбран пакет запроса, поэтому в среднем окне показана его структура. В нижнем окне пакет представлен в виде набора байтов.
Раскрытый раздел дерева демонстрирует данные, содержащиеся в пакете. Содержание пакета в виде байтов также может представлять интерес, потому что иногда он содер жит фрагменты, которые могут подсказать, что именно произошло. Сканировать текст особенно удобно, когда нет встроенного анализатора текущего протокола. Справочное меню программы Wireshark содержит массу примеров, с которыми можно начинать ра ботать. Экспериментируйте!
926 Часть II. Работа в сети
Следует сделать одно предупреждение, касающееся программы Wireshark: несмотря на множество прекрасных функциональных возможностей, она еще требует многолет ней доработки с точки зрения безопасности. Запустите текущую версию, но не остав ляйте ее работать постоянно на важных компьютерах; программа Wireshark может стать потенциальным проводником для атаки.
21.8. Служба Netalizr Института ICSI
Мы рассмотрели несколько инструментов для отладки сети и анализа сетевой кон фигурации. Но даже при самом тщательном мониторинге полезно иметь инструмент, который время от времени будет просматривать вашу сеть. Netalyzr — это служба, пре доставляемая Международным институтом компьютерных наук из Беркли (International Computer Science Institute at Berkeley), которая представляет собой полезную альтерна тиву. Для ее использования просто зайдите на сайт netalyzr.icsi.berkeley.edu (об ратите внимание на то, что буква ‘е’ пропущена специально), включив в вашем браузере поддержку языка Java.
Служба Netalyzr проверяет ваше интернет-соединение разными способами. Очень полезно иметь доступ к вашей сети как изнутри (через программу Java, выполняемую в вашем браузере), так и с серверов института ICSI.
На рис. 21.3 показан отчет службы Netalyzr для рабочей станции в частной сети, сое диненной с внешним миром связью DSL. Служба Netalyzr отлично устанавливается, но имеет небольшие проблемы с веб-сервером Apache (тем не менее блокирование неверно составленных HTTP-запросов может оказаться полезным).
Полный отчет состоит из разделов, содержащих информацию о IP-соединениях, полосе пропускания, простоях, буферизации, обработке фрагментированных пакетов и других аспектах. Особенно сильны тесты для выявления аномалий в системе DNS и протоколе HTTP.