使用windows的IP安全策略可以为我们机器起一个功能弱但是够用的防火墙,特别是在装机过程中,不需借助其他软件就很好地保护了系统。我的装机过程一般是先拔网线,安装系统,然后起IP安全策略或者iptables,接着开始打补丁。

一般能用脚本的我都推荐使用脚本,脚本是可重用的,而且编辑脚本比用gui方便。本文将给出在win2k和win2k3下的2个IP安全策略脚本模版,命令可多次运行,会自动替换为最新的。模版里面的^类似linux下的\,用来告诉cmd.exe下面是和上面同一行。

由于winxp sp2已经内建了防火墙,所以IP安全策略用处不是太大,如果你想知道winxp下命令行添加安全策略的方法,可自行查资料。

win2k下的ip安全策略添加需要用到ipsecpol这个程序,在windows的resource kit里有,包括一个exe和2个dll。我在这里不解释他的使用方法,你可以ipsecpol/? > ipsecpolhelp.txt察看。这是我自己使用的脚本。

rem 首先限制所有  

ipsecpol -w REG -p "Haishion" -r "Block All IP" -f *+0 -n BLOCK  

rem 开放某些机器的无限制访问,比如你的工作用机  

ipsecpol -w REG -p "Haishion" -r "Allow IP" -f ^  

	210.34.0.1+0 ^  

	210.34.0.2+0 ^  

	-n PASS  

rem 开放服务器端口,比如http 80,ftp 20,21  

ipsecpol -w REG -p "Haishion" -r "Open Port" -f ^  

	*+0:20:TCP ^  

	*+0:21:TCP ^  

	*+0:80:TCP ^  

	-n PASS  

rem 开放某些特定的ip可以访问特定的端口  

ipsecpol -w REG -p "Haishion" -r "Allow IP Port" -f ^  

	0+*:53:UDP ^  

	0+*:80:TCP ^  

	210.34.0.3+0:8080:TCP ^  

	-n PASS  

rem 指派  

ipsecpol -w REG -p "Haishion" -x   

win2k3自带了命令行添加的功能,就是netsh ipsec,以下是我使用的脚本,你可能可以直接写成netsh脚本文件而不是bat文件。

REM =================开始咯================
netsh ipsec static ^
delete policy name=Haishion

netsh ipsec static ^
add policy name=Haishion

REM 添加2个动作,禁止和允许
netsh ipsec static ^
add filteraction name=Perm action=permit
netsh ipsec static ^
add filteraction name=Block action=block

REM 首先干掉所有访问
netsh ipsec static ^
add filterlist name=AllAccess
netsh ipsec static ^
add filter filterlist=AllAccess srcaddr=Me dstaddr=Any
netsh ipsec static ^
add rule name=BlockAllAccess policy=Haishion filterlist=AllAccess filteraction=Block

REM 开放某些IP无限制访问
netsh ipsec static ^
add filterlist name=UnLimitedIP
netsh ipsec static ^
add filter filterlist=UnLimitedIP srcaddr=210.34.0.1 dstaddr=Me
netsh ipsec static ^
add filter filterlist=UnLimitedIP srcaddr=210.34.0.2 dstaddr=Me
netsh ipsec static ^
add rule name=AllowUnLimitedIP policy=Haishion filterlist=UnLimitedIP filteraction=Permit

REM 开放某些端口
netsh ipsec static ^
add filterlist name=OpenSomePort
netsh ipsec static ^
add filter filterlist=OpenSomePort srcaddr=Any dstaddr=Me dstport=20 protocol=TCP
netsh ipsec static ^
add filter filterlist=OpenSomePort srcaddr=Any dstaddr=Me dstport=21 protocol=TCP
netsh ipsec static ^
add filter filterlist=OpenSomePort srcaddr=Any dstaddr=Me dstport=80 protocol=TCP
netsh ipsec static ^
add rule name=AllowOpenSomePort policy=Haishion filterlist=OpenSomePort filteraction=Permit

REM 开放某些ip可以访问某些端口
netsh ipsec static ^
add filterlist name=SomeIPSomePort
netsh ipsec static ^
add filter filterlist=SomeIPSomePort srcaddr=Me dstaddr=Any dstport=53 protocol=UDP
netsh ipsec static ^
add filter filterlist=SomeIPSomePort srcaddr=Me dstaddr=Any dstport=80 protocol=TCP
netsh ipsec static ^
add filter filterlist=SomeIPSomePort srcaddr=210.34.0.3 dstaddr=Me dstport=8080 protocol=TCP
netsh ipsec static ^
add rule name=AllowSomeIPSomePort policy=Haishion filterlist=SomeIPSomePort filteraction=Permit