Основы сетевых портов. Часть 1
Начальные сведения о портах TCP/IP
Протокол TCP/IP представляет собой фундамент Internet, с помощью
которого компьютеры отправляют и принимают информацию из любой точки
земного шара, независимо от географического положения. Обратиться к
компьютеру с TCP/IP в другой стране так же просто, как к компьютеру,
который находится в соседней комнате. Процедура доступа в обоих случаях
идентична, хотя для соединения с машиной в другой стране может
потребоваться на несколько миллисекунд больше. В результате граждане
любой страны могут без труда делать покупки в Amazon.com; однако из-за
логической близости усложняется задача информационной защиты: любой
владелец подключенного к Internet компьютера в любой точке мира может
попытаться установить несанкционированное соединение с любой другой
машиной.
Обязанность ИТ-специалистов — установить брандмауэры и системы
обнаружения подозрительного трафика. В ходе анализа пакетов извлекается
информация об IP-адресах отправителя и назначения и задействованных
сетевых портах. Значение сетевых портов не уступает IP-адресам; это
важнейшие критерии для отделения полезного трафика от фальшивых и
вредных посылок, поступающих в сеть и исходящих из нее. Основная часть
сетевого трафика Internet состоит из пакетов TCP и UDP, которые содержат
информацию о сетевых портах, используемых компьютерами для того, чтобы
направлять трафик от одного приложения в другое. Необходимое условие
безопасности брандмауэра и сети — исчерпывающее понимание
администратором принципов использования этих портов компьютерами и
сетевыми устройствами.
Изучаем порты
Знание основных принципов работы сетевых портов пригодится любому
системному администратору. Имея базовые знания об устройстве портов TCP
и UDP, администратор может самостоятельно выполнить диагностику
отказавшего сетевого приложения или защитить компьютер, которому
предстоит обратиться в Internet, не вызывая сетевого инженера или
консультанта по брандмауэрам.
В первой части данной статьи (состоящей из двух частей) дается описание
основных понятий, необходимых для рассмотрения сетевых портов. Будет
показано место сетевых портов в общей сетевой модели и роль сетевых
портов и NAT (Network Address Translation — трансляция сетевых адресов)
брандмауэра в соединениях компьютеров компании с Internet. И наконец,
будут указаны точки сети, в которых удобно идентифицировать и
фильтровать сетевой трафик по соответствующим сетевым портам. Во второй
части рассматриваются некоторые порты, используемые широко
распространенными приложениями и операционными системами, и
рассказывается о некоторых инструментах для поиска открытых портов сети.
Краткий обзор сетевых протоколов
TCP/IP — набор сетевых протоколов, через которые компьютеры
устанавливают связь друг с другом. Набор TCP/IP — не более чем фрагменты
программного кода, установленные в операционной системе и открывающие
доступ к этим протоколам. TCP/IP является стандартом, поэтому приложения
TCP/IP на компьютере Windows должны успешно обмениваться данными с
аналогичным приложением на машине UNIX. В начальный период развития
сетей, в 1983 г., инженеры разработали семиуровневую модель
взаимодействия OSI для описания процессов сетевого обмена компьютеров,
от кабеля до приложения. Модель OSI состоит из физического, канального,
сетевого, транспортного, сеансового представления данных и прикладного
уровней. Администраторы, постоянно работающие с Internet и TCP/IP, в
основном имеют дело с сетевым, транспортным и прикладным уровнями, но
для успешной диагностики необходимо знать и другие уровни. Несмотря на
солидный возраст модели OSI, ею по-прежнему пользуются многие
специалисты. Например, когда сетевой инженер говорит о коммутаторах
уровней 1 или 2, а поставщик брандмауэров — о контроле на уровне 7, они
имеют в виду уровни, определенные в модели OSI.
В данной статье рассказывается о сетевых портах, расположенных на уровне
4 — транспортном. В наборе TCP/IP эти порты используются протоколами TCP
и UDP. Но прежде чем перейти к подробному описанию одного уровня,
необходимо кратко ознакомиться с семью уровнями OSI и той ролью, которую
они выполняют в современных сетях TCP/IP.
Уровни 1 и 2: физические кабели и адреса MAC
Уровень 1, физический, представляет собственно среду, в которой
распространяется сигнал, — например, медный кабель, волоконно-оптический
кабель или радиосигналы (в случае Wi-Fi). Уровень 2, канальный,
описывает формат данных для передачи в физической среде. На уровне 2
пакеты организуются в кадры и могут быть реализованы базовые функции
управления потоком данных и обработки ошибок. Стандарт IEEE 802.3, более
известный как Ethernet,— самый распространенный стандарт уровня 2 для
современных локальных сетей. Обычный сетевой коммутатор — устройство
уровня 2, с помощью которого несколько компьютеров физически
подключаются и обмениваются данными друг с другом. Иногда два компьютера
не могут установить соединение друг с другом, хотя IP-адреса кажутся
корректными: причиной неполадки могут быть ошибки в кэше протокола
преобразования адресов ARP (Address Resolution Protocol), что
свидетельствует о неисправности на уровне 2. Кроме того, некоторые
беспроводные точки доступа (Access Point, AP) обеспечивают фильтрацию
адресов MAC, разрешающую соединение с беспроводной AP только сетевым
адаптерам с конкретным MAC-адресом.
Уровни 3 и 4: IP-адреса и сетевые порты
Уровень 3, сетевой, поддерживает маршрутизацию. В TCP/IP маршрутизация
реализована в IP. IP-адрес пакета принадлежат уровню 3. Сетевые
маршрутизаторы — устройства уровня 3, которые анализируют IP-адреса
пакетов и пересылают пакеты другому маршрутизатору или доставляют пакеты
в локальные компьютеры. Если в сети обнаружен подозрительный пакет, то в
первую очередь следует проверить IP-адрес пакета, чтобы установить место
происхождения пакета.
Вместе с сетевым уровнем 4-й уровень (транспортный) — хорошая отправная
точка для диагностики сетевых неисправностей. В Internet уровень 4
содержит протоколы TCP и UDP и информацию о сетевом порте, который
связывает пакет с конкретным приложением. Сетевой стек компьютера
использует связь сетевого порта TCP или UDP с приложением, чтобы
направить сетевой трафик в это приложение. Например, TCP-порт 80 связан
с приложением Web-сервера. Такое соответствие портов с приложениями
известно как служба.
TCP и UDP различаются. В сущности, TCP обеспечивает надежное соединение
для обмена данными между двумя приложениями. Прежде чем начать обмен
данными, два приложения должны установить связь, выполнив трехшаговый
процесс установления сязи TCP. Для протокола UDP в большей степени
характерен подход «активизировать и забыть». Надежность связи для
приложений TCP обеспечивается протоколом, а приложению UDP приходится
самостоятельно проверять надежность соединения.
Сетевой порт представляет собой число от 1 до 65535, указанное и
известное обоим приложениям, между которыми устанавливается связь.
Например, клиент, как правило, посылает незашифрованный запрос в сервер
по целевому адресу на TCP-порт 80. Обычно компьютер посылает запрос DNS
на DNS-сервер по целевому адресу на UDP-порт 53. Клиент и сервер имеют
IP-адрес источника и назначения, а также сетевой порт источника и
назначения, которые могут различаться. Исторически все номера портов
ниже 1024 получили название «известных номеров портов» и
зарегистрированы в организации IANA (Internet Assigned Numbers
Authority). В некоторых операционных системах только системные процессы
могут использовать порты этого диапазона. Кроме того, организации могут
зарегистрировать в IANA порты с 1024 по 49151-й, чтобы связать порт со
своим приложением. Такая регистрация обеспечивает структуру, которая
помогает избежать конфликтов между приложениями, стремящимися
использовать порт с одним номером. Однако в целом ничто не мешает
приложению запросить конкретный порт, если он не занят другой активной
программой.
Исторически сложилось так, что сервер может прослушивать порты с малыми
номерами, а клиент — инициировать соединение от порта с большим номером
(выше 1024). Например, Web-клиент может открыть соединение с Web-сервером
через порт назначения 80, но ассоциировать произвольно выбранный
порт-источник, например TCP-порт 1025. Отвечая клиенту, Web-сервер
адресует пакет клиенту с портом-источником 80 и портом назначения 1025.
Комбинация IP-адреса и порта называется сокетом (socket), она должна
быть уникальной в компьютере. По этой причине при организации Web-сервера
с двумя отдельными Web-сайтами на одном компьютере необходимо
использовать несколько IP-адресов, например address1:80 и address2:80,
или настроить Web-сервер на прослушивание нескольких сетевых портов,
таких как address1:80 и address1:81. Некоторые Web-серверы обеспечивают
работу нескольких Web-сайтов через один порт, запрашивая хост-заголовок,
но в действительности эта функция выполняется приложением Web-сервера на
более высоком уровне 7.
По мере того как в операционных системах и приложениях появлялись
сетевые функции, программисты начали использовать порты с номерами выше
1024, без регистрации всех приложений в IANA. Выполнив в Internet поиск
для любого сетевого порта, как правило, удается быстро найти информацию
о приложениях, которые используют этот порт. Или же можно провести поиск
по словам Well Known Ports и отыскать множество сайтов со списками
наиболее типичных портов.
При блокировании сетевых приложений компьютера или устранении изъянов в
брандмауэре основная часть работы приходится на классификацию и
фильтрацию IP-адресов уровня 3, а также протоколов и сетевых портов
уровня 4. Чтобы быстро отличать легальный и подозрительный трафик,
следует научиться распознавать 20 наиболее широко используемых на
предприятии портов TCP и UDP.
Умение распознавать сетевые порты и знакомство с ними не ограничивается
назначением правил для брандмауэра. Например, в некоторых исправлениях
для системы безопасности Microsoft описана процедура закрытия портов
NetBIOS. Эта мера позволяет ограничить распространение «червей»,
проникающих через уязвимые места операционной системы. Зная, как и где
следует закрыть эти порты, можно уменьшить угрозу безопасности сети во
время подготовки к развертыванию важного исправления.
И сразу к уровню 7
В настоящее время редко приходится слышать об уровне 5 (сеансовом) и
уровне 6 (представления данных), но уровень 7 (прикладной) — горячая
тема среди поставщиков брандмауэров. Новейшая тенденция в развитии
сетевых брандмауэров — контроль на уровне 7, который описывает методы,
используемые для анализа работы приложения с сетевыми протоколами.
Анализируя полезную информацию сетевого пакета, брандмауэр может
определить законность проходящего через него трафика. Например, Web-запрос
содержит оператор GET внутри пакета уровня 4 (TCP-порт 80). Если в
брандмауэре реализованы функции уровня 7, то можно проверить
корректность оператора GET. Другой пример — многие одноранговые (P2P)
программы обмена файлами могут захватить порт 80. В результате
постороннее лицо может настроить программу на использование порта по
собственному выбору — скорее всего, порта, который должен оставаться
открытым в данном брандмауэре. Если сотрудникам компании нужен выход в
Internet, необходимо открыть порт 80, но, чтобы отличить законный Web-трафик
от трафика P2P, направленного кем-то в порт 80, брандмауэр должен
обеспечивать контроль на уровне 7.
Роль брандмауэра
Описав сетевые уровни, можно перейти к описанию механизма связи между
сетевыми приложениями через брандмауэры, уделив особое внимание
используемым при этом сетевым портам. В следующем примере клиентский
браузер устанавливает связь с Web-сервером по другую сторону брандмауэра,
подобно тому как сотрудник компании обращается к Web-серверу в Internet.
Большинство Internet-брандмауэров работает на уровнях 3 и 4, чтобы
исследовать, а затем разрешить или блокировать входящий и исходящий
сетевой трафик. В целом администратор составляет списки управления
доступом (ACL), которые определяют IP-адреса и сетевые порты
блокируемого или разрешенного трафика. Например, чтобы обратиться в Web,
нужно запустить браузер и нацелить его на Web-узел. Компьютер инициирует
исходящее соединение, посылая последовательность IP-пакетов, состоящих
из заголовка и полезной информации. Заголовок содержит информацию о
маршруте и другие атрибуты пакета. Правила брандмауэра часто
составляются с учетом информации о маршруте и обычно содержат IP-адреса
источника и места назначения (уровень 3) и протокола пакета (уровень 4).
При перемещениях по Web IP-адрес назначения принадлежит Web-серверу, а
протокол и порт назначения (по умолчанию) — TCP 80. IP-адрес источника
представляет собой адрес компьютера, с которого пользователь выходит в
Web, а порт источника — обычно динамически назначаемое число,
превышающее 1024. Полезная информация не зависит от заголовка и
генерируется приложением пользователя; в данном случае это запрос Web-серверу
на предоставление Web-страницы.
Брандмауэр анализирует исходящий трафик и разрешает его в соответствии с
правилами брандмауэра. Многие компании разрешают весь исходящий трафик
из своей сети. Такой подход упрощает настройку и развертывание, но из-за
отсутствия контроля данных, покидающих сеть, снижается безопасность.
Например, «троянский конь» может заразить компьютер в сети предприятия и
посылать информацию с этого компьютера другому компьютеру в Internet.
Имеет смысл составить списки управления доступом для блокирования такой
исходящей информации.
В отличие от принятого во многих брандмауэрах подхода к исходящему
трафику, большинство из них настроено на блокирование входящего трафика.
Как правило, брандмауэры разрешают входящий трафик только в двух случаях.
Первый — трафик, поступающий в ответ на исходящий запрос, посланный
ранее пользователем. Например, если указать в браузере адрес Web-страницы,
то брандмауэр пропускает в сеть программный код HTML и другие компоненты
Web-страницы. Второй случай — размещение в Internet внутренней службы,
такой как почтовый сервер, Web- или FTP-узел. Размещение такой службы
обычно называется трансляцией порта или публикацией сервера. Реализация
трансляции порта у разных поставщиков брандмауэров различна, но в основе
лежит единый принцип. Администратор определяет службу, такую как TCP-порт
80 для Web-сервера и внутренний сервер для размещения службы. Если
пакеты поступают в брандмауэр через внешний интерфейс, соответствующий
данной службе, то механизм трансляции портов пересылает их на конкретный
компьютер сети, скрытый за брандмауэром. Трансляция порта используется в
сочетании со службой NAT, описанной ниже.
Основы NAT
Благодаря NAT многочисленные компьютеры компании могут совместно
занимать небольшое пространство общедоступных IP-адресов. DHCP-сервер
компании может выделять IP-адрес из одного из блоков частных, Internet-немаршрутизируемых
IP-адресов, определенных в документе Request for Comments (RFC) № 1918.
Несколько компаний также могут совместно использовать одно пространство
частных IP-адресов. Примеры частных IP-подсетей — 10.0.0.0/8,
172.16.0.0/12 и 192.168.0.0/16. Маршрутизаторы Internet блокируют любые
пакеты, направляемые в один из частных адресов. NAT — функция
брандмауэра, с помощью которой компании, в которых используются частные
IP-адреса, устанавливают связь с другими компьютерами в Internet.
Брандмауэру известно, как транслировать входящий и исходящий трафик для
частных внутренних IP-адресов, чтобы каждый компьютер имел доступ в
Internet.
На рис. 1 показана базовая схема NAT-соединения между клиентом и Web-сервером.
На этапе 1 трафик, направляемый в Internet с компьютера корпоративной
сети, поступает на внутренний интерфейс брандмауэра. Брандмауэр получает
пакет и делает запись в таблице отслеживания соединений, которая
управляет преобразованием адресов. Затем брандмауэр подменяет частный
адрес источника пакета собственным внешним общедоступным IP-адресом и
посылает пакет по месту назначения в Internet (этап 2). Компьютер
назначения получает пакет и передает ответ в брандмауэр (этап 3).
Получив этот пакет, брандмауэр отыскивает отправителя исходного пакета в
таблице отслеживания соединений, заменяет IP-адрес назначения на
соответствующий частный IP-адрес и передает пакет на исходный компьютер
(этап 4). Поскольку брандмауэр посылает пакеты от имени всех внутренних
компьютеров, он изменяет исходный сетевой порт, и данная информация
хранится в таблице отслеживания соединений брандмауэра. Это необходимо,
чтобы исходящие сокеты оставались уникальными.
Важно понимать принципы работы NAT, так как NAT изменяет IP-адрес и
сетевые порты пакетов трафика. Такое понимание помогает в диагностике
неисправностей. Например, становится понятным, почему один трафик может
иметь разные IP-адреса и сетевые порты на внешнем и внутреннем
интерфейсах брандмауэра.
Сначала фундамент, потом структура
Понимание основных принципов организации сети со стороны приложения,
брандмауэра и порта необходимо не только сетевым инженерам. Сегодня
редко встречается компьютерная система, не подключенная к сети, и даже
системным администраторам гораздо проще решать свои проблемы, понимая
хотя бы основы использования сетевых портов для связи приложений через
Internet.
Во второй части статьи будет рассмотрен инструментарий для обнаружения
приложений в сети путем анализа задействованных сетевых портов. Чтобы
отыскать приложения, открывающие порты на прослушивание и доступные по
сети, компьютер опрашивается через сеть (сканирование портов) и локально
(хост-сканирование). Кроме того, просматривая журналы брандмауэра, можно
исследовать сетевой трафик, который пересекает границу сети, и заглянуть
в различные сетевые порты, используемые приложениями Windows и UNIX.
Автор: Джеф Феллинг
Источник: www.morepc.ru
