1

У меня есть приложение, которое подключается к серверу лицензий. Приложение инициирует запрос на разрешение подключений в Windows XP и выше. Независимо от того, блокирую я приложение или нет, оно получает лицензию. Правила кажутся правильными (как отрицание, так и разрешение).

По умолчанию брандмауэр Windows разрешает исходящие подключения и запрещает все входящие подключения. Я переустановил брандмауэр Windows на настройки по умолчанию. Так что это не должно быть проблемой.

Используя TCPView от Sysinternals, я не мог видеть приложение, открывающее какие-либо прослушивающие порты.

Используя Wire Shark, я мог подтвердить, что я не пропустил ничего, что произошло слишком быстро для TCPView.

Поэтому брандмауэр Windows не должен запрашивать разрешение. Но это так! Зачем?

1 ответ1

0

Еще раз посмотрев на захват Wire Shark, я увидел, что приложение использует запрос portmap для получения порта фактического сервера лицензий. Этот запрос portmap использует (на первый взгляд случайный) порт источника ниже 1024 - что необычно или, возможно, совершенно неправильно. Portmapper должным образом отвечает на этот порт. Для примера, скажем, диалог между клиентом и сервером выглядит следующим образом:

Источник: Клиент.Домен: 1001 Назначение: Сервер.Домен: 111 Данные: «Где я могу найти сервер лицензий?"

Источник: сервер.Домен: 111 Адресат: Клиент.Домен: 1001 Данные: «На порту 12345. Пожалуйста."

111 является известным портом для Portmapper. Это нормально. 1001 ниже 1024, что кажется необычным для порта источника.

Первое предположение

Брандмауэр Windows, кажется, следует простой логике: если что-то говорит с каким-то локальным портом ниже 1024, оно приходит, и я должен попросить разрешения. Таким образом, окно всплывает.

Второе предположение

Перед тем, как брандмауэр Windows фактически отбрасывает пакет, он лучше проверяет и распознает, что соединение фактически было инициировано локальным процессом. Таким образом, оно распознается как исходящее соединение и, следовательно, разрешается (независимо от того, что ответил пользователь, поскольку созданное правило применяется только к входящим пакетам).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .