使用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