- Что такое сетевой порт в компьютере и сколько их бывает: отвечает Бородач
- Определение
- Номера портов
- Просмотр открытых и закрытых портов
- Таблица портов
- Открытие и закрытие
- Проброс
- TCP: максимальное количество соединений (клиент и сервер)
- Основы сетевых портов
- Блокирование сетевых приложений
- Сканирование портов
- Хост-сканирование
- Аудит журнала брандмауэра
- Объединение компонентов
- Настройка сетевого анализатора
- Первоначальный анализ
- Tcpdump
- Подготовка набора правил брандмауэра
- Знание — лучшая защита
Что такое сетевой порт в компьютере и сколько их бывает: отвечает Бородач
Всем привет! В интернете полно статей про сетевые порты, но очень мало где используется нормальный человеческий язык. Именно поэтому я решил написать свою подробную статью по разбору этой темы. Давайте для начала ответим на вопрос – а что же такое сетевой порт в компьютере и информатике в целом.
Определение
Лучше всего расскажу на примере. Представим себе, что у вас есть компьютер, который уже подключен к интернету. У данного компьютера есть свой IP адрес, который определяет его среди множества других сетевых устройств, находящихся в интернет пространстве.
Если кабель от провайдера идёт на компьютер напрямую, то ему присваивается внешний IP адрес. Если же подключение идет через роутер, то внешний IP находится именно у данного интернет-центра. Данный IP нужен для того, чтобы пакеты доходили именно до этого компьютера.
Но тут встаёт небольшая проблема, когда пакет информации доходит, компьютер или сервер не понимает – в каком приложении его открывать?! Вот за данную функцию частично и отвечают порты. Например, пользователь сделал запрос в интернете на определенный сайт. Далее пакет данных доходит до сервера, на котором работает одновременно много системных служб и программ.
В запросе от пользователя также одновременно прописывается информация о порте. Тогда сервер сразу понимает, что запрос был отправлен с целью получения информации о какой-нибудь Web-странице. И сервер отправляет ответ с нужной информацией.
Если говорить грубо, то IP (в нашем примере) – это адрес дома. Но когда почтальон приходит к дому, он не знает в какую квартиру отнести письмо. И вот порт – это и есть номер квартиры. На данный момент существует определенное число портов – 65 535. Вы можете заметить аналогию с многоквартирным домом, по сути в каждом доме есть определенное количество квартир.
Некоторые порты компьютера могут быть открыты или закрыты в зависимости от настроек системы. Также некоторые приложения открывают свои порты или используют смежные. Также не забываем, что для передачи информации по сети используется модель TCP/IP или UDP. Ещё один пример, который сможет более точно объяснить – для чего же нужны сетевые порты на компьютере.
Вася решил завести у себя на компьютере свой Web-сайт. После верстки он все же решил загрузить его на свой компьютер. Конечно, он мог бы арендовать сервер, но он решил сэкономить. Интернет у него подключен напрямую к системному блоку. Теперь вопрос знатокам: при запросе из интернета – как компьютер будет понимать, что нужно отдавать по запросу именно страницы сайта, а не данные общих папок или ответ от какого-нибудь запущенного приложения?
Вот тут и будет вступать в силу порт. В данном случае чаще всего используется номера: 80 или 8080. Именно поэтому Вася должен на своем компьютере открыть локальный порт для своего сайта. Конечно объяснение было немного грубое, и все там обстоит куда сложнее, но моя задача была разъяснить именно суть и назначение порта. Потому что почему-то нигде толкового объяснения нет, а многие оперируют сложными техническими понятиями.
Номера портов
И так товарищ, ты теперь почти просветлел и понял – что же такое порт. Теперь же давайте поговорим про понятие «номер порта». Как я уже и говорил, в каждом компьютере, сервере, маршрутизаторе существует ровно 65 535 портов. Конечно, используются они не все и есть свободные «адреса».
С 0 до 1023-го – это зарезервированные «квартиры» для систем как Windows, так и Linux. Насчет Mac OS сказать не могу, с данной ОС не работал. Далее с 1024 по 49151 идут свободно используемые входы. То есть их могут использовать отдельные приложения, утилиты или даже системные службы. Некоторые программы могут одновременно использовать один и тот же номер.
Остальные порты, можно сказать – находятся в свободном полете и могут использоваться или не использоваться по усмотрению ОС или пользователя. Запоминать тот или иной номер бессмысленно, потому что их очень и очень много. Например, очень часто для игр на домашних роутерах нужно открыть дополнительные номера. Но запоминать, к какой именно игре используется тот или иной номер, смысла нет.
Но со временем за определенными портами закрепились отведенные службы. Вот пример нескольких из них:
- 20, 21: FTP
- 22: SSH
- 23: Telnet
- 25: SMTP
- 43: WHOIS
- 53: DNS
- 67, 68: DHCP
- 80: HTTP (Веб-port)
- 110: POP3
- 113: аутентификация в IRC
- 143: IMAP
- 161: SNMP
- 194: IRC
- 389: LDAP
- 443: HTTPS
- 587: SMTP
- 631: CUPS
Чаще всего обычный пользователь не задумывается о пробросе, открытии или закрытии портов. Этим занимается сама операционная система, а в частности Брандмауер. Также при установке приложений, игр и утилит, которые используют интернет или сетевое подключения, они сами прописывают при инсталляции настройки по использованию тех или иных входных номеров. Некоторые программы используют сразу несколько.
ПРИМЕЧАНИЕ! Портовая конфигурация также есть у роутеров и провайдера.
Просмотр открытых и закрытых портов
Чтобы посмотреть все входные номера, которые используются, заблокированы или ждут своей очереди – можно через консоль. В Windows достаточно зайти в командную строку: для этого нажимаем на кнопки «Win» и «R» и прописываем команду «cmd». Далее нужно будет ввести:
В Kali Linux прописываем другую команду:
less /usr/share/nmap/nmap-services
Для удобства я все же советую использовать удобную программку «Process and port analyzer». Она в более удобном виде выводит все задействованный список портов на данном устройстве. Вы можете посмотреть зарезервированные, свободные и используемые номера.
Таблица портов
Открытие и закрытие
Как я уже и говорил ранее – данную функцию выполняет сама система или установленные программы. Но вы сами можете изменять или добавлять некоторые правила. По сути вам нужно указать сетевой порт, а также приложение или программу, для которой это правило будет действовать. Если же вы будете производить настройку на роутере, то нужно будет указывать IP адрес устройства переадресации.
Для начала вам нужно определиться с тем – какой «вход» вы хотите открыть и для чего. Номер и название приложение вы можете посмотреть в том PDF файле, который я прикрепил выше. Покажу на примере игры World of Warcraft. Будем открывать официально зарезервированный номерной «вход» – 3724. Вообще в играх чаще всего используется именно UDP порт, который работает в потоковой передаче данных. Но вам нужно смотреть именно в столбец с портом: там будет подсказка, какой протокол надо использовать в выбранном приложении (TCP или UDP).
- В Windows нужно открыть меню «Пуск» и перейти в «Панель управления».
- Заходим в «Брандмауэр»
- Слева в окне нажимаем «Правила для входящих подключений». Вы сразу тут увидите очень много правил под каждое установленное приложение.
- В окошке справа выбираем «Создать правило…». Так как мы будем открывать порт для игры, то выбираем вторую галочку.
- Создаем UDP правило и вводим только номер, указанные в том PDF файлике – в моем случае это: 3724 (я показываю на примере игры WOW у вас может быть совершенно другой номер). Вы также можете указать диапазон номеров. Для TCP и UDP лучше создать два правила отдельно.
- Оставляем значение по умолчанию «Разрешить подключение».
ПРИМЕЧАНИЕ! Таким образом вы можете закрыть определенный «вход», выбрав «Блокировать подключение».
- Далее идут правила профилей – можно оставить все. Самое главное, чтобы при подключении к удаленному ресурсу через интернет был включен «Публичный» профиль.
- В самом конце вводим название и описание. В название я советую добавлять номер порта, который вы открыли, чтобы потом его не потерять.
Проброс
Открытие и проброс портов – это разные вещи, хоть некоторые их и путают. Когда вы открываете какой-то «вход», то вы делаете это на конкретном устройстве – например, на своём компьютере. Проброс портов – обычно делается на сетевом шлюзе, который из внешней сети принимает какой-то запрос от пользователя. Далее он или разрешает данный запрос, или запрещает. Чаще всего если порт не проброшен, то идет точный запрет, и пользователь не получит ответа.
Например, у вас дома стоит система видеонаблюдения. Сеть камер, подключенных к видеорегистратору, который в свою очередь привязан к интернету с помощью роутера. Камера кстати может быть вообще одна и подключена напрямую к маршрутизатору.
Чтобы просматривать камеру через интернет, отдыхая на Бали или во Вьетнаме, нужно пробросить порт. После проброса, чтобы попасть на камеру, нужно будет зайти в браузер, ввести внешний IP адрес вместе с проброшенным номером, и тогда можно увидеть изображение с камеры.
По пробросу у нас уже есть отдельные инструкции на сайте:
Если у вас ещё остались вопрос или есть дополнения, то пишите в комментариях.
TCP: максимальное количество соединений (клиент и сервер)
В описании TCP в Википедии указано, что
Количество сеансов на стороне сервера ограничено только памятью и может увеличиваться по мере поступления новых соединений, но клиент должен выделить случайный порт перед отправкой первого SYN на сервер.
Первая часть кажется логичной: сервер просто использует порт, к которому подключены клиенты, в качестве порта источника, и поэтому он ограничен только (числом клиентских IP-адресов) * (числом временных портов клиента) — большим числом.
Но почему клиенты не могут делать то же самое? Если сокет А подключается к серверу 1 с помощью временного порта 12345 (например, клиент:12345 -> сервер 1:80), почему сокет В не может подключиться к серверу 2 путем повторного использования того же порта источника (клиент:12345 -> сервер 2:80)? Это позволило бы более (количество портов) исходящих TCP-соединений с одного хоста.
Есть ли что-то в спецификации TCP, которая запрещает такое повторное использование порта, или это ограничение является лишь практическим результатом распространенных реализаций TCP? Если да, действительно ли первый случай обрабатывается иначе, чем второй, или число входящих TCP-соединений на один порт сервера практически также ограничено 65535?
Чтобы уточнить, я ищу теоретические (в соответствии со спецификациями) и практические (реализации; особенно Linux) ограничения для:
- Исходящие соединения с одного клиента на ЛЮБОЙ сервер / порт. (client:* -> *:*)
- Соединения от одного клиента к тому же самому серверу и порту (client:* -> server:port) — это, очевидно, не может быть больше чем 65535.
- Входящие подключения к одному порту сервера от ЛЮБОГО клиента (*:* -> server:port) — я подозреваю, что это больше чем 65535 в соответствии с цитируемым параграфом и причинами, указанными выше.
Основы сетевых портов
Исследуем сетевые порты
Сетевые порты могут дать важнейшую информацию о приложениях, которые обращаются к компьютерам по сети. Зная приложения, которые используют сеть, и соответствующие сетевые порты, можно составить точные правила для брандмауэра, и настроить хост-компьютеры таким образом, чтобы они пропускали только полезный трафик. Построив профиль сети и разместив инструменты для распознавания сетевого трафика, можно более эффективно обнаруживать взломщиков — иногда просто анализируя генерируемый ими сетевой трафик. Эту тему мы начали рассматривать в первой части статьи, опубликованной в предыдущем номере журнала. Там приводились основные сведения о портах TCP/IP как фундаменте сетевой безопасности. Во второй части будут описаны некоторые методы для сетей и хост-компьютеров, с помощью которых можно определить приложения, прослушивающие сеть. Далее в статье будет рассказано о том, как оценить трафик, проходящий через сеть.
Блокирование сетевых приложений
Поверхность атаки по сети — общепринятый термин для описания уязвимости сети. Многие сетевые нападения проходят через уязвимые приложения, и можно существенно уменьшить площадь атаки, сократив число активных приложений в сети. Другими словами, следует отключить неиспользуемые службы, установить брандмауэр на выделенной системе для проверки законности трафика и составить исчерпывающий список управления доступом (access control list — ACL) для брандмауэра на периметре сети.
Каждый открытый сетевой порт представляет приложение, прослушивающее сеть. Поверхность атаки каждого сервера, подключенного к сети, можно уменьшить, отключив все необязательные сетевые службы и приложения. Версия Windows Server 2003 превосходит предшествующие версии операционной системы, так как в ней по умолчанию активизируется меньше сетевых служб. Однако аудит все же необходим, чтобы обнаружить вновь установленные приложения и изменения в конфигурации, которые открывают лишние сетевые порты.
Каждый открытый порт — потенциальная лазейка для взломщиков, которые используют пробелы в хост-приложении или тайком обращаются к приложению с именем и паролем другого пользователя (либо применяют другой законный метод аутентификации). В любом случае, важный первый шаг для защиты сети — просто отключить неиспользуемые сетевые приложения.
Сканирование портов
Сканирование портов — процесс обнаружения прослушивающих приложений путем активного опроса сетевых портов компьютера или другого сетевого устройства. Умение читать результаты сканирования и сравнивать сетевые отчеты с результатами хост-опроса портов позволяет составить ясную картину трафика, проходящего через сеть. Знание сетевой топологии — важное условие подготовки стратегического плана сканирования конкретных областей. Например, сканируя диапазон внешних IP-адресов, можно собрать ценные данные о взломщике, проникшем из Internet. Поэтому следует чаще сканировать сеть и закрыть все необязательные сетевые порты.
Внешнее сканирование портов брандмауэра позволяет обнаружить все откликающиеся службы (например, Web или электронная почта), размещенные на внутренних серверах. Эти серверы также следует защитить. Настройте привычный сканер портов (например, Network Mapper — Nmap) на проверку нужной группы портов UDP или TCP. Как правило, сканирование портов TCP — процедура более надежная, чем сканирование UDP, благодаря более глубокой обратной связи с ориентированными на соединения протоколами TCP. Существуют версии Nmap как для Windows, так и для Unix. Запустить базовую процедуру сканирования просто, хотя в программе реализованы и гораздо более сложные функции. Для поиска открытых портов на тестовом компьютере я запустил команду
На экране 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 и закрыть лишние. Программа сканирования показывает открытые порты компьютера, которые видны из сети. Аналогичные результаты можно получить с помощью инструментов, расположенных на хост-системе.
Хост-сканирование
Помимо использования сетевого сканера портов, открытые порты на хост-системе можно обнаружить с помощью следующей команды (запускается на хост-системе):
Эта команда работает как в Windows, так и в UNIX. Netstat выдает список активных портов компьютера. В Windows 2003 Windows XP следует добавить параметр -o, чтобы получить соответствующий идентификатор процесса (program identifier — PID). На экране 2 показаны выходные результаты Netstat для того же компьютера, сканирование портов которого выполнялось ранее. Следует обратить внимание на то, что закрыто несколько портов, которые прежде были активны.
Экран 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.
В данном примере сетевой анализатор, подключенный к порту 24, будет просматривать весь исходящий и входящий трафик компьютеров, подключенных к первым трем портам коммутатора. Для просмотра созданной конфигурации следует ввести команду
Чтобы сохранить новую конфигурацию, нужно использовать команду
Первоначальный анализ
Рассмотрим пример анализа данных, проходящих через сеть. Если для сетевого анализа используется компьютер Linux, то можно получить исчерпывающее представление о типе и частоте пакетов в сети с помощью такой программы, как IPTraf в режиме Statistical. Детали трафика можно выяснить с использованием программы Tcpdump.
В таблице приведены статистические выходные данные, собранные с помощью IPTraf в небольшой сети с Active Directory (AD) в течение 15 минут. Для краткости, тестирование проводилось вечером, когда никто из пользователей не обращался в сеть. В примере не показаны все порты Windows, но продемонстрированы приемы оценки портов и их привязки к службам и приложениям.
TCP 22. Наиболее активно работающий сетевой порт. Известно, что он используется программой Secure Shell (SSH), которую я применяю для подключения компьютера Linux с утилитой IPTraf.
UDP 138. Второй по частоте использования — UDP-порт 138, задействованный службой NetBIOS Datagram Service. В упомянутом выше документе Microsoft указывается, что данный порт используется несколькими службами Windows, в том числе Computer Browser, DFS, License, Messenger, Net Logon и Server. В группу портов TCP и UDP 135-139 входит несколько специфических портов, используемых многими приложениями Windows. По всей вероятности, некоторые из этих портов придется держать открытыми, что, к сожалению, открывает доступ к другим приложениям Windows.
TCP 80. Третий порт в списке — TCP-порт 80, который используется для незашифрованного трафика HTTP (Web). Но в режиме Statistics программы IPTraf нельзя определить, указывает ли данный трафик на попытки клиента обратиться к Web-серверу внутри сети или внутренний компьютер просто обращается к Web-серверу в Internet (более подробно о таком сценарии будет рассказано в следующем разделе).
UDP 137 и UDP 53. Эти порты используются службами преобразования имен Windows — в данном случае, NetBIOS и DNS.
UDP 67 и UDP 68. UDP-порты 67 и 68 используются DHCP-сервером для назначения динамических IP-адресов.
UDP 123. Данный порт зарезервирован для протокола Network Time Protocol (NTP) или, в случае Windows, Simple Network Time Protocol (SNTP). Этот протокол синхронизирует время между компьютером и NTP-сервером, например контроллером домена (DC).
Остальные порты получили лишь по одному пакету. Чтобы исследовать их, можно собирать статистику в течение более длительного времени и выявить закономерности, либо параллельно запустить Tcpdump и собрать больше данных, в частности, IP-адреса источника и назначения. Даже из приведенного общего вида можно извлечь информацию об этих пакетах. Например, каждый пакет имеет размер 229 байт; можно предположить, что одно приложение перескакивает между разными портами, но, чтобы утверждать это, требуется дополнительная информация.
Tcpdump
Tcpdump — превосходный инструмент командной строки для анализа сетей, который собирает детальные данные о пакетах в сети. Для того чтобы выяснить, где зарождается HTTP-трафик, можно воспользоваться командой
В данном простом примере требуется лишь узнать IP-адреса компьютеров, использующих HTTP, поэтому были задействованы параметры, которые показывают только данные TCP-порта 80. Параметр -i eth1 указывает анализируемый интерфейс. В нашей тестовой сети eth1 — это сетевой адаптер, подключенный к монитору порта в коммутаторе.
Параметр -nq представляет собой два отдельных параметра: -n предписывает Tcpdump не преобразовывать хост-имен и имен служб, а -q переводит Tcpdump в быстрый (скрытый) режим. Наконец, нужно просматривать только данные трафика TCP-порта 80, поэтому добавлена команда
которая ограничивает объем рассматриваемых данных.
На экране 3 показаны выходные данные команды. Через порт 80 работают только два компьютера в сети 192.168.0.0. Отсюда можно сделать вывод, что компьютер по адресу 192.168.0.112 пытается обратиться к Web-серверу по адресу 192.168.0.7. Теперь можно проверить, находится ли по этому адресу законный Web-сервер, или классифицировать находку иным образом. Список всех параметров приведен на главной странице Tcpdump. Возможности этой программы широки.
Используя справочную таблицу сетевых портов в сочетании с результатами нескольких сеансов сканирования портов, можно составить карту сигнатур полезного трафика в сети. Затем можно будет отмечать отклонения от нормы.
Подготовка набора правил брандмауэра
Чтобы составить набор правил брандмауэра — особенно в сложных ситуациях, например в демилитаризованной зоне (DMZ), — следует применять все перечисленные выше методы оценки сетевого трафика. С их помощью можно точно установить задействованные сетевые порты. На основе этих данных строится набор правил брандмауэра. В DMZ изолируются компьютеры, которые принимают прямые соединения с Internet (например, внешние почтовые серверы, Web-серверы) от других серверов во внутренней сети. Компьютеры в DMZ также должны устанавливать соединения с некоторыми компьютерами во внутренней сети, поэтому необходимо создать набор правил брандмауэра, который разрешает такое соединение.
Рассмотрим два метода, с помощью которых можно определить списки ACL для правил брандмауэра в тестовой DMZ. Предположим, что Web-серверу в DMZ требуется извлечь данные из системы Microsoft SQL Server во внутренней сети. Вместо туманного правила, которое разрешает соединение между IP-адресом Web-сервера и IP-адресом системы SQL Server, следует составить списки ACL, которые разрешают только обращения к SQL Server.
Один из способов подготовки такого ACL — контролировать монитор порта и составить ACL на основе анализа обнаруженного трафика. Для этого нужно установить монитор порта на DMZ-интерфейсе брандмауэра и активизировать анализатор сети. На данном этапе следует убедиться, что между DMZ и внутренней подсетью правила брандмауэра не действуют. Затем требуется сгенерировать типичный сетевой трафик с помощью Web-приложения, как это делали бы пользователи. После просмотра данных сетевого анализатора нужно записать все уникальные IP-адреса и соединения сетевого порта. Наконец, на основе собранной информации следует составить и разместить списки ACL брандмауэра. В данном примере требуется, чтобы Web-сервер инициировал соединения с SQL Server. SQL Server использует TCP-порт 1433, поэтому в результатах сетевого анализатора должны быть пакеты, направляемые в этот порт. Однако, если Web-сервер является членом домена, DC которого находятся во внутренней сети, можно ожидать интенсивного сетевого трафика от Web-сервера к DC. После анализа результатов анализатора следует разрешить в ACL брандмауэра весь необходимый сетевой трафик.
Второй метод обнаружения портов, необходимых Web-серверу для связи с машиной SQL Server, — метод проб и ошибок, который заключается в создании и развертывании ACL, запрещающего трафик между DMZ и внутренней сетью.
Начав использовать Web-сервер, следует отыскать в журналах брандмауэра блокированные пакеты (вероятно, их будет много). Для каждого блокированного пакета необходимо исследовать и оценить адреса источника и назначения, а также информацию о сетевом порте. Затем составляются списки ACL, которые разрешают полезный трафик. Эту процедуру следует повторять до тех пор, пока из журнала не исчезнут записи Deny для пакетов, пересылаемых между DMZ и внутренней сетью.
Знание — лучшая защита
Итак, в этой и предыдущей статьях было рассказано о месте сетевых портов в общей сетевой модели, а также о средствах обнаружения и мониторинга сетевых приложений. Вооружившись этой информацией, любой ИТ-специалист сможет приступить к изучению сети, чтобы лучше понять и защитить свой участок Internet.