My knowledge base

понедельник, 31 января 2011 г.

Автоматизация настройки Windows Firewall (скрипт)

Для работы WMI иногда надо настроить Windows Firewall для расрешения WMI трафика. Задача усложняется тем, что для Windows XP и Windows 2003 используется старый firewall, упрощенный. А для Windows Vista, 7, 2008 - новый, продвинутый. В продвинутом есть стандартные  правила для WMI но их лучше не трогать, а создать новые, как рекомендует Microsoft: http://msdn.microsoft.com/en-us/library/aa822854 Для "старого" WF (Windows Firewall) надо просто разрешить удаленные подключения, в нем нет гибких правил. Попробовал сделать скрипт, который настраивает и новый и старый WF. Вроде работает :) Пользуйтесь:

@ECHO OFF
REM Проверяем правильность введенных параметров
IF /i "%1" NEQ "set" IF /i "%1" NEQ "unset" GOTO ERR
IF "%1" EQU "" GOTO ERR1
IF "%2" NEQ "" GOTO ERR2

IF /i "%1" EQU "unset" GOTO UNSETF

:FWSET
REM для старых ОС (позже Windows 6.0***) выполняем старую команду настройки Windows Firewall
ver | find "6."
IF ERRORLEVEL 0 GOTO NEWSETF

REM Настройка windows firewall для Windows XP, Windows 2003
netsh firewall set service RemoteAdmin enable
GOTO EXIT

:NEWSETF
netsh advfirewall firewall add rule dir=in name="DCOM" program=%systemroot%\system32\svchost.exe service=rpcss action=allow protocol=TCP localport=135
netsh advfirewall firewall add rule dir=in name ="WMI" program=%systemroot%\system32\svchost.exe service=winmgmt action = allow protocol=TCP localport=any
netsh advfirewall firewall add rule dir=in name ="UnsecApp" program=%systemroot%\system32\wbem\unsecapp.exe action=allow
netsh advfirewall firewall add rule dir=out name ="WMI_OUT" program=%systemroot%\system32\svchost.exe service=winmgmt action=allow protocol=TCP localport=any
GOTO EXIT

:UNSETF
REM для старых ОС (позже Windows 6.0***) выполняем старую команду настройки Windows Firewall
ver | find "6."
IF ERRORLEVEL 0 GOTO NEWUNSETF

REM Настройка windows firewall для Windows XP, Windows 2003
netsh firewall set service RemoteAdmin disable
GOTO EXIT

:NEWUNSETF
netsh advfirewall firewall delete rule name="DCOM"
netsh advfirewall firewall delete rule name="WMI"
netsh advfirewall firewall delete rule name="UnsecApp"
netsh advfirewall firewall delete rule name="WMI_OUT"
GOTO EXIT

:ERR
ECHO First parameter is incorrect. Enter SET or UNSET
GOTO EXIT

:ERR1
ECHO Enter parameter
GOTO EXIT

:ERR2
ECHO Too many parameters
GOTO EXIT

:EXIT

Комментариев нет:

Отправить комментарий