Назад | Перейти на главную страницу

Сканирование портов и брандмауэр Windows

Я пытаюсь понять результаты, которые получаю при сканировании портов на машине с активным встроенным брандмауэром Windows. В моей тестовой среде две машины с Windows 7, работающие на виртуальных машинах Hyper-V, подключены напрямую к внутреннему виртуальному коммутатору и находятся в одной подсети без каких-либо других межсетевых экранов между ними.

Компьютер A - брандмауэр Windows выключен и работает Nmap 7.60

Машина B - машина сканируется

Когда брандмауэр Windows выключен на компьютере B, все порты отображаются как открытые или закрытые - ОЖИДАЕМЫЕ.

Когда брандмауэр Windows включен на компьютере B с правилами по умолчанию, некоторые порты отображаются как открытые (ОЖИДАЕМЫЕ), а остальные отображаются как отфильтрованные.

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

Может ли кто-нибудь объяснить, почему нет ответа при сканировании порта, для которого есть активное правило для входящих подключений, а не правило запрета? Я использую SYN-сканирование.

Брандмауэр фильтрует TCP SYN, так что TCP никогда его не получает, а TCP не может отправить требуемый RST. Из RFC 793, протокол управления передачей:

Сбросить генерацию

Как правило, сброс (RST) должен отправляться всякий раз, когда прибывает сегмент, который явно не предназначен для текущего соединения. Сброс не следует отправлять, если не ясно, что это так.

Есть три группы состояний:

  1. Если соединение не существует (ЗАКРЫТО), то сброс отправляется в ответ на любой входящий сегмент, кроме другого сброса. В частности, таким образом отклоняются SYN-сообщения, адресованные несуществующему соединению.

    Если входящий сегмент имеет поле ACK, сброс берет его порядковый номер из поля ACK сегмента, в противном случае сброс имеет порядковый номер ноль, а поле ACK устанавливается на сумму порядкового номера и длины сегмента входящего сегмента. . Соединение остается в состоянии ЗАКРЫТО.

  2. Если соединение находится в каком-либо несинхронизированном состоянии (LISTEN, SYN-SENT, SYN-RECEIVED) и входящий сегмент подтверждает что-то еще не отправленное (сегмент несет неприемлемый ACK), или если входящий сегмент имеет уровень безопасности или отсек, который не совсем соответствует уровню и отсеку, запрошенным для подключения, отправляется сброс.

    Если наш SYN не был подтвержден и уровень приоритета входящего сегмента выше, чем запрошенный уровень приоритета, то либо повышайте локальный уровень приоритета (если это разрешено пользователем и системой), либо отправьте сброс; или если уровень приоритета входящего сегмента ниже, чем запрошенный уровень приоритета, тогда продолжайте, как если бы приоритет точно совпал (если удаленный TCP не может повысить уровень приоритета до соответствия нашему, это будет обнаружено в следующем сегменте, который он отправляет, и соединение будет прервано). Если наш SYN был подтвержден (возможно, в этом входящем сегменте), уровень приоритета входящего сегмента должен точно соответствовать локальному уровню приоритета, в противном случае должен быть отправлен сброс.

    Если входящий сегмент имеет поле ACK, сброс берет его порядковый номер из поля ACK сегмента, в противном случае сброс имеет порядковый номер ноль, а поле ACK устанавливается на сумму порядкового номера и длины сегмента входящего сегмента. . Соединение остается в том же состоянии.

  3. Если соединение находится в синхронизированном состоянии (ESTABLISHED, FIN-WAIT-1, FIN-WAIT-2, CLOSE-WAIT, CLOSING, LAST-ACK, TIME-WAIT), любой неприемлемый сегмент (порядковый номер вне окна или недоступное подтверждение number) должен вызывать только пустой сегмент подтверждения, содержащий текущий порядковый номер отправки, и подтверждение, указывающее следующий порядковый номер, который ожидается получить, и соединение остается в том же состоянии.

    Если входящий сегмент имеет уровень безопасности, или отсек, или приоритет, который не совсем соответствует уровню, отсеку и приоритету, запрошенным для соединения, отправляется сброс, и соединение переходит в состояние ЗАКРЫТО. Сброс берет свой порядковый номер из поля ACK входящего сегмента.

Нашел ответ.

Причина того, что порты выводятся как ФИЛЬТРИРОВАННЫЕ даже при наличии правила для входящего трафика, заключается в функции, называемой «Скрытый режим», которая «блокирует исходящие сообщения ICMP о недоступности и сбросе TCP для порта, когда ни одно приложение не прослушивает этот порт».

https://technet.microsoft.com/en-us/library/dd448557(v=ws.10).aspx

Когда я создаю входящее правило, разрешающее соединения на определенном порту, который нет слушателя

Если вы создаете правило брандмауэра для порта без LISTENER, то это совершенно нормально, у вас нет ответа, поскольку на этом порту ничего не отвечает.

Цитата из там

Если возвращается что-то, кроме LISTENING, возможно, проблема связана с блокировкой порта. Если порт показывает, что он ФИЛЬТР, то брандмауэр или VLAN могут блокировать этот порт, если порт возвращает НЕ ПРОСЛУШИВАНИЕ, то мы добрались до машины, но машина не прослушивает этот номер порта.