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

Я написал это через командную строку с помощью команды netsh firewall add portopening. Из того, что я прочитал, если активирован, то брандмауэр запрещает весь трафик и разрешает порты только с исключениями, поэтому с помощью пакетных сценариев я открыл все 65 000+ портов на TCP и UDP, по сути, включив брандмауэр, но с разрешением все "конфигурация. Затем я отказываю 100 или около того портов из моего списка, которые я хочу заблокировать после того, как все они открыты.

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

Из того, что я видел в Windows XP, нет никакого способа включить брандмауэр и в конфигурации "разрешить все", потому что брандмауэр XP не может иметь определенные диапазоны портов, они должны быть определены один за другим. Похоже, что Windows Vista или 7 будет намного проще, поскольку брандмауэр получил расширенные возможности по обновлению.

Есть ли у кого-нибудь предложения о том, как добиться этой "разрешить все", отрицать определенную "стратегию"? Я понимаю, что это странное использование брандмауэра Windows, но если бы мне пришлось это сделать, возможно ли это?

3 ответа3

2

Мне любопытно, какой вариант использования для настройки брандмауэра таким образом. Открытые порты бесполезны, если что-то не слушает их, и если у вас есть одна программа, которая прослушивает столько портов, просто сделайте исключение для самой программы, и об этом следует позаботиться обо всем.

Если это не сработает, мне кажется, что встроенный в XP брандмауэр просто не может эффективно выполнять то, что вы хотите.

Брандмауэр, встроенный в Vista и 7, допускает диапазон портов в правилах и должен значительно упростить перевод брандмауэра в желаемое состояние.

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

1

Полностью согласен с комментарием afrazier ...

Насколько я знаю, нет приложения или службы, которые бы открывали входящие 65536 портов!

Чтобы было ясно, открытый порт - это порт, на котором работает служба, и в состоянии прослушивания для ответа на запрос внешнего соединения. Например, порт 80 HTTP для веб-сервера с Apache (например).

Запрос на входящее соединение представляет собой TCP-пакет с флагом SYN и без данных на требуемый порт: порт 80 для соединения HTTP, 119 NNTP, 21 FTP и так далее.

Если служба готова разрешить подключение к этому порту, сервер отправил TCP-пакет с флагами ACK, SYN клиенту, и клиент подтвердил запрос соединения с помощью TCP-пакета с флагом ACK ... и введите соединение в установленном состоянии. Это нормальное рукопожатие.

Если служба на порте прослушивания не может принять соединение, она отправила TCP-пакет с флагами ACK, RST: это закрытый порт...

Хм ... короче говоря:

  • 1- Вам нужен сторонний firewal. Может быть, Look'n Stop, который является брандмауэром на основе правил.

  • 2- Сконфигурируйте приложение, требующее открытия большого количества портов, и установите правило ТОЛЬКО для этого приложения.

  • 3- Поместите это правило перед правилом, блокирующим все другие запросы на входящие соединения TCP (с флагом SYN) и так далее ...

Надеюсь, это поможет. Дайте нам знать. :)

0

Это старый \ нечетный вопрос, но я бы сказал, что лучшим решением было бы полностью отключить брандмауэр, а затем отключить все службы, к которым удаленные пользователи не должны иметь доступ. Я думаю, ты слишком обдумываешь это. Дополнительным бонусом является то, что это решение использует меньше нуля времени обработки.

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