Http порты. Протокол TCP

Протокол 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.

Всем привет сегодня расскажу чем отличается протокол TCP от UDP. Протоколы транспортного уровня, следующие в иерархии за IP, используются для передачи данных между прикладными процессами, реализующимися в сетевых узлах. Пакет данных, поступивший от одного компьютера другому через Интернет, должен быть передан процессу-обработчику, и именно по конкретному назначению. Транспортный уровень принимает на себя ответственность за это. На этом уровне два основных протокола – TCP и UDP.

Что означают TCP и UDP

TCP – транспортный протокол передачи данных в сетях TCP/IP, предварительно устанавливающий соединение с сетью.

UDP – транспортный протокол, передающий сообщения-датаграммы без необходимости установки соединения в IP-сети.

Напоминаю, что оба протокола работают на транспортном уровне модели OSI или TCP/IP, и понимание того чем они отличаются очень важно.

Разница между протоколами TCP и UDP

Разница между протоколами TCP и UDP – в так называемой “гарантии доставки”. TCP требует отклика от клиента, которому доставлен пакет данных, подтверждения доставки, и для этого ему необходимо установленное заранее соединение. Также протокол TCP считается надежным, тогда как UDP получил даже именование “протокол ненадежных датаграмм. TCP исключает потери данных, дублирование и перемешивание пакетов, задержки. UDP все это допускает, и соединение для работы ему не требуется. Процессы, которым данные передаются по UDP, должны обходиться полученным, даже и с потерями. TCP контролирует загруженность соединения, UDP не контролирует ничего, кроме целостности полученных датаграмм.

С другой стороны, благодаря такой не избирательности и бесконтрольности, UDP доставляет пакеты данных (датаграммы) гораздо быстрее, потому для приложений, которые рассчитаны на широкую пропускную способность и быстрый обмен, UDP можно считать оптимальным протоколом. К таковым относятся сетевые и браузерные игры, а также программы просмотра потокового видео и приложения для видеосвязи (или голосовой): от потери пакета, полной или частичной, ничего не меняется, повторять запрос не обязательно, зато загрузка происходит намного быстрее. Протокол TCP, как более надежный, с успехом применяется даже в почтовых программах, позволяя контролировать не только трафик, но и длину сообщения и скорость обмена трафиком.

Давайте рассмотрим основные отличия tcp от udp.

  1. TCP гарантирует доставку пакетов данных в неизменных виде, последовательности и без потерь, UDP ничего не гарантирует.
  2. TCP нумерует пакеты при передаче, а UDP нет
  3. TCP работает в дуплексном режиме, в одном пакете можно отправлять информацию и подтверждать получение предыдущего пакета.
  4. TCP требует заранее установленного соединения, UDP соединения не требует, у него это просто поток данных.
  5. UDP обеспечивает более высокую скорость передачи данных.
  6. TCP надежнее и осуществляет контроль над процессом обмена данными.
  7. UDP предпочтительнее для программ, воспроизводящих потоковое видео, видеофонии и телефонии, сетевых игр.
  8. UPD не содержит функций восстановления данных

Примерами UDP приложений, например можно привести, передачу DNS зон, в Active Directory, там не требуется надежность. Очень часто такие вопросы любят спрашивать на собеседованиях, так, что очень важно знать tcp и udp отличия.

Заголовки TCP и UDP

Давайте рассмотрим как выглядят заголовки двух транспортных протоколов, так как и тут отличия кардинальные.

Заголовок UDP

  • 16 битный порт источника > Указание порта источника для UDP необязательно. Если это поле используется, получатель может отправить ответ этому порту.
  • 16 битный порт назначения > Номер порта назначения
  • 16 битная длина UDP > Длина сообщения, включая заголовок и данные.
  • 16 битная контрольная сумма > Контрольная сумма заголовка и данных для проверки

Заголовок TCP

  • 16 битный порт источника > Номер порта источника
  • 16 битный порт назначения > Номер порта назначения
  • 32 битный последовательный номер > Последовательный номер генерируется источником и используется назначением, чтобы переупорядочить пакеты для создания исходного сообщения и отправить подтверждение источнику.
  • 32 битный номер подтверждения > Если установлен бит АСК поля "Управление", в данном поле содержит следующий ожидаемый последовательный номер.
  • 4 бита длина заголовка > Информация о начале пакета данных.
  • резерв > Резервируются для будущего использования.
  • 16 битная контрольная сумма > Контрольная сумма заголовка и данных; по ней определяется, был ли искажен пакет.
  • 16 битный указатель срочности > В этом поле целевое устройство получает информацию о срочности данных.
  • Параметры > Необязательные значения, которые указываются при необходимости.

Размер окна позволяет экономить трафик, рассмотрим когда его значение равно 1, тут на каждый отправленный ответ, отправитель ждет подтверждения, не совсем рационально.

При размере окна 3, отправитель отправляет уже по 3 кадра, и ждет от 4, который подразумевает, что все три кадра у него есть, +1.

Надеюсь у вас теперь есть представления об отличиях tcp udp протоколов.

Сетевые порты могут дать важнейшую информацию о приложениях, которые обращаются к компьютерам по сети. Зная приложения, которые используют сеть, и соответствующие сетевые порты, можно составить точные правила для брандмауэра, и настроить хост-компьютеры таким образом, чтобы они пропускали только полезный трафик. Построив профиль сети и разместив инструменты для распознавания сетевого трафика, можно более эффективно обнаруживать взломщиков - иногда просто анализируя генерируемый ими сетевой трафик. Эту тему мы начали рассматривать в первой части статьи, опубликованной в предыдущем номере журнала. Там приводились основные сведения о портах TCP/IP как фундаменте сетевой безопасности. Во второй части будут описаны некоторые методы для сетей и хост-компьютеров, с помощью которых можно определить приложения, прослушивающие сеть. Далее в статье будет рассказано о том, как оценить трафик, проходящий через сеть.

Блокирование сетевых приложений

Поверхность атаки по сети - общепринятый термин для описания уязвимости сети. Многие сетевые нападения проходят через уязвимые приложения, и можно существенно уменьшить площадь атаки, сократив число активных приложений в сети. Другими словами, следует отключить неиспользуемые службы, установить брандмауэр на выделенной системе для проверки законности трафика и составить исчерпывающий список управления доступом (access control list - ACL) для брандмауэра на периметре сети.

Каждый открытый сетевой порт представляет приложение, прослушивающее сеть. Поверхность атаки каждого сервера, подключенного к сети, можно уменьшить, отключив все необязательные сетевые службы и приложения. Версия Windows Server 2003 превосходит предшествующие версии операционной системы, так как в ней по умолчанию активизируется меньше сетевых служб. Однако аудит все же необходим, чтобы обнаружить вновь установленные приложения и изменения в конфигурации, которые открывают лишние сетевые порты.

Каждый открытый порт - потенциальная лазейка для взломщиков, которые используют пробелы в хост-приложении или тайком обращаются к приложению с именем и паролем другого пользователя (либо применяют другой законный метод аутентификации). В любом случае, важный первый шаг для защиты сети - просто отключить неиспользуемые сетевые приложения.

Сканирование портов

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

Внешнее сканирование портов брандмауэра позволяет обнаружить все откликающиеся службы (например, Web или электронная почта), размещенные на внутренних серверах. Эти серверы также следует защитить. Настройте привычный сканер портов (например, Network Mapper - Nmap) на проверку нужной группы портов UDP или TCP. Как правило, сканирование портов TCP - процедура более надежная, чем сканирование UDP, благодаря более глубокой обратной связи с ориентированными на соединения протоколами TCP. Существуют версии Nmap как для Windows, так и для Unix. Запустить базовую процедуру сканирования просто, хотя в программе реализованы и гораздо более сложные функции. Для поиска открытых портов на тестовом компьютере я запустил команду

Nmap 192.168.0.161

На экране 1 показаны результаты сеанса сканирования - в данном случае компьютера Windows 2003 в стандартной конфигурации. Данные, собранные в результате сканирования портов, показывают наличие шести открытых портов TCP.

Экран 1. Базовый сеанс сканирования Nmap
  • Порт 135 используется функцией отображения конечных точек RPC, реализованной во многих технологиях Windows - например, приложениях COM/DCOM, DFS, журналах событий, механизмах репликации файлов, формирования очередей сообщений и Microsoft Outlook. Данный порт должен быть блокирован в брандмауэре на периметре сети, но трудно закрыть его и одновременно сохранить функциональность Windows.
  • Порт 139 используется сеансовой службой NetBIOS, которая активизирует браузер поиска других компьютеров, службы совместного использования файлов, Net Logon и службу сервера. Его трудно закрыть, как и порт 135.
  • Порт 445 используется Windows для совместной работы с файлами. Чтобы закрыть этот порт, следует блокировать File and Printer Sharing for Microsoft Networks. Закрытие этого порта не мешает соединению компьютера с другими удаленными ресурсами; однако другие компьютеры не смогут подключиться к данной системе.
  • Порты 1025 и 1026 открываются динамически и используются другими системными процессами Windows, в частности различными службами.
  • Порт 3389 используется Remote Desktop, которая не активизирована по умолчанию, но на моем тестовом компьютере активна. Чтобы закрыть порт, следует перейти к вкладке Remote в диалоговом окне System Properties и сбросить флажок Allow users to connect remotely to this computer.

Обязательно следует выполнить поиск открытых портов UDP и закрыть лишние. Программа сканирования показывает открытые порты компьютера, которые видны из сети. Аналогичные результаты можно получить с помощью инструментов, расположенных на хост-системе.

Хост-сканирование

Помимо использования сетевого сканера портов, открытые порты на хост-системе можно обнаружить с помощью следующей команды (запускается на хост-системе):

Netstat -an

Эта команда работает как в Windows, так и в UNIX. Netstat выдает список активных портов компьютера. В Windows 2003 Windows XP следует добавить параметр -o, чтобы получить соответствующий идентификатор процесса (program identifier - PID). На экране 2 показаны выходные результаты Netstat для того же компьютера, сканирование портов которого выполнялось ранее. Следует обратить внимание на то, что закрыто несколько портов, которые прежде были активны.

Аудит журнала брандмауэра

Еще один полезный способ обнаружения сетевых приложений, которые отправляют или получают данные по сети, - собирать и анализировать больше данных в журнале брандмауэра. Записи Deny, в которых приводится информация с внешнего интерфейса брандмауэра, вряд ли будут полезны из-за «шумового трафика» (например, от червей, сканеров, тестирования по ping), засоряющего Internet. Но если записывать в журнал разрешенные пакеты с внутреннего интерфейса, то можно увидеть весь входящий и исходящий сетевой трафик.

Чтобы увидеть «сырые» данные трафика в сети, можно установить сетевой анализатор, который подключается к сети и записывает все обнаруженные сетевые пакеты. Самый широко распространенный бесплатный сетевой анализатор - Tcpdump для UNIX (версия для Windows называется Windump), который легко устанавливается на компьютере. После установки программы следует настроить ее для работы в режиме приема всех сетевых пакетов, чтобы регистрировать весь трафик, а затем подключить к монитору порта на сетевом коммутаторе и отслеживать весь трафик, проходящий через сеть. О настройке монитора порта будет рассказано ниже. Tcpdump - чрезвычайно гибкая программа, с помощью которой можно просматривать сетевой трафик с использованием специализированных фильтров и показывать только информацию об IP-адресах и портах либо все пакеты. Трудно просмотреть сетевые дампы в больших сетях без помощи соответствующих фильтров, но следует соблюдать осторожность, чтобы не потерять важные данные.

Объединение компонентов

До сих пор мы рассматривали различные методы и инструменты, с помощью которых можно обнаружить приложения, использующие сеть. Пришло время объединить их и показать, как определить открытые сетевые порты. Поразительно, как «болтливы» компьютеры в сети! Во-первых, рекомендуется познакомиться с документом Microsoft «Service overview and network port requirements for the Windows Server system» (http://support.microsoft.com/default.aspx?scid=kb;en-us;832017 ), в котором перечислены протоколы (TCP и UDP) и номера портов, используемые приложениями и большинством основных служб Windows Server. В документе описаны эти службы и используемые ими ассоциированные сетевые порты. Рекомендуется загрузить и распечатать это полезное для администраторов сетей Windows справочное руководство.

Настройка сетевого анализатора

Ранее отмечалось, что один из способов определить порты, используемые приложениями, - отслеживать трафик между компьютерами с помощью сетевого анализатора. Чтобы увидеть весь трафик, необходимо подключить сетевой анализатор к концентратору или монитору портов в коммутаторе. Каждому порту концентратора виден весь трафик каждого компьютера, подключенного к этому концентратору, но концентраторы - устаревшая технология, и большинство компаний заменяют их коммутаторами, которые обеспечивают хорошую производительность, но неудобны для анализа: каждый порт коммутатора принимает только трафик, направляемый одному компьютеру, подключенному к данному порту. Чтобы анализировать всю сеть, нужно отслеживать трафик, направляемый в каждый порт коммутатора.

Для этого требуется настроить монитор порта (разные поставщики называют его span port или mirrored port) в коммутаторе. Установить монитор порта в коммутаторе Cisco Catalyst компании Cisco Systems не составляет труда. Нужно зарегистрироваться на коммутаторе и активизировать режим Enable, затем перейти в режим configure terminal и ввести номер интерфейса порта коммутатора, на который следует посылать весь контролируемый трафик. Наконец, необходимо указать все отслеживаемые порты. Например, следующие команды обеспечивают мониторинг трех портов Fast Ethernet и пересылку копии трафика в порт 24.

Interface FastEthernet0/24 port monitor FastEthernet0/1 port monitor FastEthernet0/2 port monitor FastEthernet0/3 end

В данном примере сетевой анализатор, подключенный к порту 24, будет просматривать весь исходящий и входящий трафик компьютеров, подключенных к первым трем портам коммутатора. Для просмотра созданной конфигурации следует ввести команду

Write memory

Первоначальный анализ

Рассмотрим пример анализа данных, проходящих через сеть. Если для сетевого анализа используется компьютер Linux, то можно получить исчерпывающее представление о типе и частоте пакетов в сети с помощью такой программы, как IPTraf в режиме Statistical. Детали трафика можно выяснить с использованием программы Tcpdump.

В компьютерных сетях порт является конечной точкой связи в операционной системе. Этот термин используется также для аппаратных устройств, но в программном обеспечении это логическая конструкция, которая идентифицирует конкретный процесс или вид услуг.

Порт всегда связан с IP-адресом хоста и типом и, таким образом, завершает назначение адреса сеанса связи. Он идентифицируется для каждого адреса и протокола с помощью 16-битного числа, широко известного как номер порта. Конкретные номера портов часто используются для определения конкретных услуг. Из тысяч перечисленных 1024 хорошо известных номера портов защищены в соответствии с соглашением, чтобы определить конкретные типы услуг на хосте. Протоколы, которые в основном используют порты, служат для управления процессами (например, протокол управления передачей (TCP) и User Datagram Protocol (UDP) из комплекта протоколов Internet).

Значение

TCP-порты не нужны по прямым ссылкам типа «точка-точка», когда компьютеры на каждом конце могут работать только с одной программой одновременно. Они стали необходимы после того, как машины оказались способны выполнять более одной программы в одно время, и оказались подключены к современным сетям с пакетной коммутацией. В модели клиент-серверной архитектуры приложения, порты и сетевые клиенты подключаются к инициации обслуживания, предоставляют услуги мультиплексирования, после того как первоначальный обмен данными связывается с известным номером порта, и он освобождается путем переключения каждого экземпляра обслуживания запросов к выделенной линии. Происходит подключение к конкретному номеру, и благодаря этому дополнительные клиенты могут обслуживаться без ожидания.

Детали

Протоколы передачи данных - Transmission Control Protocol (TCP) и User Datagram Protocol (UDP) - применяются для того, чтобы указать номер порта назначения и источник в своих заголовках сегментов. Номер порта представляет собой 16-разрядное целое число без знака. Таким образом, он может быть в диапазоне от 0 до 65535.

Тем не менее TCP-порты не могут использовать номер 0. Порт источника для UDP не обязателен, и значение, равное нулю, означает его отсутствие.

Процесс связывает свои входные или выходные каналы через интернет-сокет (тип дескриптора файла) посредством транспортного протокола, номера порта и IP-адреса. Этот процесс известен как связывание, и он дает возможность передачи и приема данных через сеть.

Операционной системы отвечает за передачу исходящих данных из всех портов приложений в сеть, а также переадресацию прибывающих сетевых пакетов (путем сопоставления IP-адреса и номера). Только один процесс можно привязать к определенному IP-адресу и комбинации портов, используя один и тот же транспортный протокол. Общие сбои приложений, которые иногда называют порт-конфликтами, возникают, когда несколько программ пытаются связаться с одними и теми же номерами портов на том же IP-адресе, используя тот же протокол.

Как они используются

Приложения, реализующие общие службы, часто используют специально зарезервированный и хорошо известный список портов TCP и UDP для приема запросов на обслуживание от клиентов. Этот процесс известен как прослушивание, и он включает в себя получение запроса с хорошо известного порта и установления диалога между сервером и клиентом «один-к-одному», с использованием одного и того же номера локального порта. Другие клиенты могут продолжать подключаться - это возможно, так как соединение TCP идентифицируется как цепочка, состоящая из локального и удаленного адресов и портов. Стандартные порты TCP и UDP определяются по соглашению под контролем Internet Assigned Numbers Authority (IANA).

Ядро сетевых сервисов (в первую очередь, WorldWideWeb), как правило, использует небольшие номера портов - меньше, чем 1024. Во многих операционных системах требуются специальные привилегии для приложений для привязки к ним, потому что они часто считаются критическими для функционирования IP-сетей. С другой стороны, конечный клиент соединения, как правило, применяет большое их количество, выделенных для краткосрочного использования, поэтому существуют так называемые эфемерные порты.

Структура

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

Практика попыток подключения к диапазону портов последовательно на одном компьютере известна как их сканирование. Это, как правило, связано либо с попытками злонамеренного сбоя, либо же сетевые администраторы ищут возможные уязвимости, чтобы помочь предотвратить такие нападения.

Действия, направленные на то, как часто контролируются и регистрируются с помощью компьютеров. Такая техника использует ряд запасных соединений, для того чтобы обеспечить бесперебойное соединение с сервером.

Примеры использования

Самым главным примером, где активно используются порты TCP/UDP, является почтовая система Интернет. Сервер применяется для работы с электронной почтой (отправкой и получением), и в целом нуждается в двух услугах. Первый сервис используется для транспортировки по электронной почте и с других серверов. Это достигается с помощью Как правило, приложение-служба SMTP прослушивает TCP-порт номер 25 с целью обработки входящих запросов. Другая услуга представляет собой POP (полностью - Post Office Protocol) либо IMAP (или Internet Message Access Protocol) который необходимы для клиентских приложений в электронной почте на машинах пользователей, чтобы получать с сервера сообщения электронной почты. Службами POP прослушиваются номера с TCP-порта 110. Вышеуказанные службы обе могут запускаться на одном и том же хост-компьютере. Когда это происходит, номер порта отличает сервис, запрошенный удаленным устройством - ПК пользователя либо каким-либо иным почтовым сервером.

В то время как номер порта прослушивания сервера корректно определен (IANA называет их хорошо известными портами), данный параметр клиента часто выбирается из динамического диапазона. В некоторых случаях клиенты и сервер по отдельности используют определенные TCP-порты, назначенные в IANA. Наглядным примером может служить DHCP, где клиентом во всех случаях используется UDP 68, а сервером - UDP 67.

Применение в URL-адресах

Номера портов иногда хорошо видны в Интернете или других унифицированных указателях информационных ресурсов (URL). По умолчанию HTTP использует а HTTPS - 443. Вместе с тем существуют и другие вариации. Например, URL-адрес http://www.example.com:8080/path/ указывает, что веб-браузер подключается к 8080 вместо сервера HTTP.

Список портов TCP и UDP

Как уже было отмечено, Internet Assigned Numbers Authority (IANA) несет ответственность за глобальную координацию DNS-Root, IP-адресации и других ресурсов Интернет-протокола. Это включает в себя регистрацию часто используемых номеров портов для известных интернет-сервисов.

Номера портов разделены на три диапазона: хорошо известные, зарегистрированные и динамические или частные. Хорошо известные (также известные как системные) - это имеющие номера от 0 до 1023. Требования, предъявляемые к новым назначениям в этом диапазоне, являются более строгими, чем для других регистраций.

Широко известные примеры

Примеры, находящиеся в данном списке, включают в себя:

  • TCP 443 порт: HTTP Secure (HTTPS).
  • 22: Secure Shell (SSH).
  • 25: Простой протокол передачи почты (SMTP).
  • 53: Система доменных имен (DNS).
  • 80: Протокол передачи гипертекста (HTTP).
  • 119: Протокол передачи сетевых новостей (NNTP).
  • 123: Протокол сетевого времени (NTP)..
  • 143: Internet Message Access Protocol (IMAP)
  • 161: Простой протокол управления сетью (SNMP)1.
  • 94: Internet Relay Chat (IRC).

Зарегистрированные порты содержат номера от 1024 до 49151. IANA поддерживает официальный список известных и зарегистрированных диапазонов. Динамические или частные - от 49152 до 65535. Один из вариантов использования этого диапазона предназначен для временных портов.

История создания

Концепция номера порта была создана ранними разработчиками ARPANET в условиях неформального сотрудничества авторов программного обеспечения и системных администраторов.

Термин «номер порта» еще не использовался в то время. Номерной ряд для удаленного хоста был 40-битным числом. Первые 32 бита были похожи на сегодняшний IPv4-адрес, но при этом наиболее значимыми были первые 8 бит. Наименее значительная часть числа (биты с 33 по 40) обозначали другой объект, который назывался AEN. Это и есть прототип современного номера порта.

26 марта 1972 года было впервые предложено создание каталога номеров сокета в RFC 322. призвали описать каждый постоянный номер на предмет его функций и сетевых услуг. Этот каталог был впоследствии опубликован в RFC 433 в декабре 1972 года и включал в себя список хостов, их номера портов и соответствующую функцию, используемую на каждом узле в сети. В мае 1972 года впервые были задокументированы официальные назначения номеров портов, сетевых служб, а также предложена специальная административная функция для ведения этого реестра.

Первый список TCP-портов имел 256 значений AEN, которые были разделены на следующие диапазоны:

  • От 0 до 63: стандартные функции всей сети
  • От 64 до 127: хост-специфичные функции
  • От 128 до 239: зарезервированные для будущего использования
  • От 240 до 255: любая экспериментальная функция.

Служба Telnet получила первое официальное присвоение значения 1. В начале существования ARPANET термином AEN также называли имя сокета, которое использовалось с первоначальным протоколом соединения (MSP) и компонентом программы управления сетью (NCP). При этом NCP был предшественником современных Интернет-протоколов, использующих порты TCP/IP.

Порт в компьютерных сетях является конечной точкой связи в ОС. Данный термин также применяется и для аппаратных устройств, однако в программном обеспечении он обозначает логическую конструкцию, идентифицирующую конкретный вид услуг или процесс. Порт всегда связан с IP адресом хоста или типом протокола связи. Он завершает назначение адреса сеанса связи. Порт идентифицируется для каждого протокола и адреса при помощи 16-битного числа, которое также известно, как номер порта. Часто конкретные номера портов применяются для определения конкретных услуг. Из нескольких тысяч перечисленных 1024 известных номеров защищены в соответствии со специальным соглашением. Они определяют конкретные типы услуг на хосте. Протоколы, которые в основном используют порты, применяются для управления процессами. В качестве примера можно привести протокол управления передачей TCP или User Datagram Protocol из комплекта Internet протоколов.

Значение

Порты TCP не нужны по прямым ссылкам типа «точка-точка», когда на каждом конце компьютеры могут одновременно работать только с одной программой. Необходимость в них появилась после того, как эти машины оказались способны выполнять в одно и то же время более одной программы. Они оказались подключены к современным сетям с пакетной коммутацией. В модели клиент-серверной архитектуры порты, приложения и сетевые клиенты подключаются к инициации обслуживания. Они предоставляют услуги мультиплексирования после того, как первоначальный обмен информацией связывается с номером порта. Освобождается он путем переключения каждого экземпляра обслуживания запросов к выделенной линии. Осуществляется подключение к конкретному номеру. Благодаря этому дополнительные клиенты могут обслуживаться безо всякого ожидания.

Детали

Протоколы передачи данных UDP иTCP используются для того, чтобы указать в своих заголовках сегментов номер порта назначения и источник. Номер порта – это 16-разрядное число без знака. Оно может находится в пределах от 0 до 65535. TCP порты тем не менее не могут использовать номер 0. Для UDP порт источника не обязателен. Равное нулю значение означает его отсутствие. Данный процесс связывает входные или выходные каналы посредством транспортного протокола, номера порта и адреса IP через интернет сокет. Данный процесс также известен как связывание. Он дает возможность приема и передачи информации через сеть. Сетевое ПО операционной системы используется для передачи исходящих данных всех портов приложений в сеть. Также оно осуществляет переадресацию прибывающих сетевых пакетов путем сопоставления номера и IP адреса. К определенному IP адресу и комбинации портов, используя один и тот же транспортный протокол, можно привязать только один процесс. Сбои в работе приложений, которые также называют конфликтами, возникают в тех случаях, когда сразу несколько программ пытаются связаться с одними и теми же номерами портов на том же IP адресе, используя один и тот же протокол.

Как они применяются

Приложения, которые реализуют общие службы, довольно часто используют специально зарезервированный и известный список портов UDP и TCP для приема запросов на обслуживание клиентов. Данный процесс также известен под названием прослушивание. Он включает в себя получение запроса с хорошо известного порта и установление диалога между клиентом и сервером один к другому при использовании одного и того же номера локального порта. Другие клиенты могут продолжать подключаться. Это возможно, поскольку соединение TCP идентифицируется как цепочка, которая состоит из локального и удаленного портов и адресов. Стандартные порты UDP и TCP могут быть определены по соглашению под контролем IANA или Internet Assigned Numbers Authority. Как правило, ядро сетевых сервисов, прежде всего это World Wide Web, использует небольшие номера портов, меньше 1024. Во многих ОС для приложений для привязки к ним требуются специальные привилегии. По этой причине они часто считаются критическими для работы сетей IP. Конечный клиент соединения с другой стороны, как правило, использует большее их количество, выделенных для краткосрочного использования. По этой причине и существуют так называемые эфемерные порты.

Структура

Порты TCP закодированы в заголовке пакета транспортного пакета. Они легко могут быть интерпретированы не только принимающими и передающими ПК, но и другими компонентами сетевой инфраструктуры. Межсетевые экраны в частности, как правило, настроены на различение пакетов в зависимости от номеров портов назначения и их источника. Классическим примером этому является перенаправление. Попытки подключения последовательно к диапазону портов на одном компьютере также известны как их сканирование. Подобные процедуры, как правило, связаны либо с попытками злонамеренного сбоя, либо с тем, что сетевые администраторы специально ищут возможные уязвимости для того, чтобы предотвратить подобные нападения. Действия, направленные на открытие TCP порта, регистрируются и контролируются при помощи компьютеров. Данная техника использует целый ряд запасных соединений для того, чтобы обеспечить бесперебойное взаимодействие с сервером.

Примеры использования

Основной пример, в котором активно применяются порты UDP иTCP, это почтовая система Интернет. Сервер используется для работы с электронной почтой. В целом он нуждается в двух услугах. Первый сервис применяется для транспортировки по электронной почте и с других серверов. Достигается это при помощи Simple Mail Transfer Protocol (SMTP). Приложение службы SMTP, как правило, прослушивает порт TCP номер 25 для того, чтобы обрабатывать входящие запросы. Другая услуга представляет собой POP или IMAP. Они необходимы для клиентских приложений в электронной почте на машинах пользователей для того, чтобы получать с сервера сообщения электронной почты. Прослушиваются службами POP номера с порта TCP 110. Все указанные выше службы могут запускаться на одном и том же хост-компьютере. Номер порта, когда это происходит, отличает сервис, запрашиваемый удаленным устройством. Если номер порта прослушивания сервера определен корректно, данный параметр для клиента определяется из динамического диапазона. Клиенты и сервер по отдельности в некоторых случаях используют определенные порты TCP, которые назначены в IANA. В качестве наглядного примера можно привести DHCP. Здесь клиентом в любом случае используется UDP 68, а сервером UDP 67.

Использование в URL-адресах

Иногда номера портов хорошо видны в интернете или на других унифицированных указателях информационных ресурсов, вроде URL. HTTP по умолчанию использует порт TCP 80, а HTTPS – порт 443. Также существуют и другие вариации. Так, например, адрес URL http://www.example.com:8080/pathуказывает на то, что веб-браузер вместо сервера HTTP подключается к 8080.

Список портов UDP и TCP

Как уже было отмечено ранее, IANA или InternetA ssigned Numbers Authority, несет ответственность за глобальную координацию DNS-Root, адресации IP и других ресурсов интернет протокола. Эти процедуры включают в себя регистрацию часто используемых портов для известных интернет-сервисов. Все номера портов разделены между собой на три диапазона: хорошо известные, зарегистрированные и частные или динамические. Известными называют порты, имеющие номера от 0 до 1023. Их также называют системными. Требования, которые предъявляются к новым значения в данном диапазоне, являются более строгими, чем для других регистраций.

Примеры

К примерам портов, находящихся в списке известных, можно отнести:

  • TCP 443 порт – HTTPS;
  • 21 – File Transfer Protocol;
  • 22- Secure Shell;
  • 25 – простой протокол передачи почты STMP;
  • 53 – система доменных имен DNS;
  • 119 – протокол передачи сетевых новостей или NNTP;
  • 80 – протокол передачи гипертекста HTTP;
  • 143 – Internet Message Access Protocol;
  • 123 – протокол сетевого времени NTP;
  • 161- простой протокол управления сетью SNMP.

Зарегистрированные порты обязательно имеют номера от 1024 до 49151. Internet Assigned Numbers Authority поддерживает официальный перечень всех известных и зарегистрированных диапазонов. Частотные или динамические порты находятся в диапазоне от 29152 до 65535. Одним из вариантов использования данного диапазона являются временные порты.

История создания

Концепция номеров портов была разработана ранними создателями ARPANET. Она разрабатывалась в условиях неформального сотрудничества между авторами программного обеспечения и системными администраторами. В то время еще не использовался термин «номер порта». Номерной ряд удаленного хоста представлял собой 40-битное число. Первые 32 бита напоминали сегодняшний адрес IPv4. Наиболее значимыми при этом являлась первые 8 бит. Менее значимая часть числа (это биты с 33 по 40) обозначали объект под названием AEN. Он представлял собой прототип современного номера порта. Впервые создание каталога номеров сокета было предложено 26 марта 1972 года. Администраторов сети тогда призвали описать каждый постоянный номер на предмет сетевых услуг и его функций. Данный каталог впоследствии был опубликован в RFC 433 зимой 1972 года. В него вошел список хостов, их номера портов и соответствующая функция, используемая в каждом узле в сети. Впервые официальные значения номеров портов были задокументированы в мае 1972 года. Тогда же была предложена и специальная административная функция для ведения данного реестра. В первый список портов TCP вошло 256 значений AEN.Они были разделены на следующие диапазоны:

— от 0 до 63 – стандартные функции всей сети;

— от 64 до 127 – хост-специфичные функции;

— от 128 до 239 – функции, зарезервированные для будущего использования;

— от 240 до 255 – любая экспериментальная функция.

Термином AEN в начале существования ARPANET также называли имя сокета, которое применялось с первоначальным протоколом соединения и компонентом программы для управления сетью или NCP. В данном случае NCP представлял собой предшественника современных интернет-протоколов, которые используют порты TCP/IP.