当前位置:编程学习 > 网站相关 >>

ipsecpol的规则脚本编写

http://mochong.cnisc.com/ 

从RPC DCOM的worm出来之后,很多肉鸡都被捣过乱了,憋闷之余写下此文。本文尽量避免冗长,也尽量在此基础上做到易懂,看完不懂找我算帐就是了:],这里不提IPSEC是什么,也不提VPN与IPSEC的冲突,这方面只是请在其他地方找,这里只是直接了当地讲述ipsecpol.exe的使用和脚本的编写。

   本文介绍命令行下的IPsec配置工具--IPSECPOL.EXE,它包括在Windows 2000 Resource Kit 中,是一个用于创建、指派和删除IPSec策略的命令行程序,当然,在肉鸡上装一个庞大的Resource Kit是比较愚蠢(或者说很愚蠢)的做法,除非你准备在肉鸡上经常使用Resource Kit的大部分程序或者决心让管理员跟你死磕。避免愚蠢的做法很简单,因为IPSECPOL.EXE工作的时候只需要另外两个DLL,它们是text2pol.dll和ipsecutil.dll,只要把这两个DLL同IPSECPOL.EXE一并复制到需要配置的机器上去就行了。

一:常用参数介绍 

-w TYPE:DOMAIN:确定策略写入的位置,一般选择REG,也就是注册表。
-p PolicyName:PollInterval:策略名。
-r RuleName:规则名称。
-f:设置规则。
-x:指派该策略。
-y:不指派(停止)该策略。
-o:删除该策略。
    其中-w,-f,-n的参数是区分大小写的,都要使用大写。配置和指派上来讲也就用到这几个,其余的在此就不多说了。

二:一些例子

1,阻止所有地址的所有端口到本机所有端口的通信(比如本机是重点保护对象)
ipsecpol -w REG -p "filter" -r "block" -f *+0 -n BLOCK 

2,阻止任何主机的任何端口对192.168.0.88的TCP 22端口的通信(那开它干什么?)
ipsecpol -w REG -p "filter" -r "block" -f *+192.168.0.88:22:TCP -n BLOCK

3,阻止1.2.3.4的TCP 2938端口连接本机的6667端口(比如1.2.3.4在irc上捣乱)
ipsecpol -w REG -p "filter" -r "block" -f 1.2.3.4:2938+0:6667:TCP -n BLOCK

4,阻止本机TCP 3333端口连接任何主机的任何端口(比如本机3333端口是反弹连接的后门所开)
ipsecpol -w REG -p "filter" -r "block" -f 0:3333+*:TCP -n BLOCK

5,阻止本机对所有地址的通信(比如本机是恐怖分子:])
ipsecpol -w REG -p "filter" -r "block" -f 0+* -n BLOCK

6,阻止某一段主机的某一端口连接本机UDP 7788端口
ipsecpol -w REG -p "filter" -r "block" -f IP/mask:port+0:7788:UDP -n BLOCK

7,阻止某一段主机的某端口连接另一段主机的某端口
ipsecpol -w REG -p "filter" -r "block" -f IP/mask:port=IP/mask:port:协议 -n BLOCK 

    上面的七个例子是阻止的,如果设置通行的话,只要把 -n BLOCK改成PASS即可。
    
三:注意

    因为上面的例子中每一句都是独立的,所以要配置多条规则的时候,应该一行多几个-f,而不是分多行输入,因为每一次都会覆盖掉上一次的,比如:
    要禁止任何主机的任何端口连接本机的TCP 6666,又要禁止任何主机的任何端口连接本机的TCP 8888,那么应该是这样:
ipsecpol -w REG -p "filter" -r "block" -f *+0:6666:TCP -f *+0:8888:TCP -n BLOCK 
    而不是:
ipsecpol -w REG -p "filter" -r "block" -f *+0:6666:TCP -n BLOCK
ipsecpol -w REG -p "filter" -r "block" -f *+0:8888:TCP -n BLOCK
    这在写脚本的时候尤其应该注意。还有就是-f中某个参数缺省的话,就代表所有端口或协议。其他要注意的就是例子中代表"从哪里到哪里"的符号+或者=要看清楚(比如的六条和第七条就不同),有通配符的时候用"+",没有的时候用"="。

四:指派,不指派和删除
    对于配好的策略来讲,还要指派后才能生效,所以我们就:
ipsecpol -w REG -p"筛选器名" -x
    如果要停止(不指派)一个已经指派了的策略,那么就:
ipsecpol -w REG -p"筛选器名" -y
    如果要删除这个策略,那么就:
ipsecpol -w REG -p"筛选器名" -o
    在删除某个策略的时候,应该先停止(不指派)那个策略(-y)。删除时会包括所有相关的筛选器列表和筛选器操作。

五:编写脚本
    写一个脚本可以给大量机器(一台以上)配置IPSEC的时候带来极大方便,这会让你很乐于给他们都配好相应的规则,每台机器可能要求不同,但只需要些许更改就可以轻松搞定,这里给出一个bat的例子:
ipsecpol.bat
+++++++++++++++++++++++++++++++++++++++++++++++++++++++

ipsecpol -w REG -p "filter" -r "block" -f *+0:135:TCP -f *+0:136:TCP -f *+0:137:TCP -f *+0:138:TCP  -f *+0:139:TCP -f *+0:445:TCP -f *+0:1433:TCP -f *+0:1434:TCP -f *+0:3372:TCP -f *+0:3389:TCP -f *+0:130:UDP -f *+0:131:UDP -f *+0:132:UDP -f *+0:133:UDP -f *+0:134:UDP -f *+0:135:UDP -f *+0:136:UDP -f *+0:137:UDP -f *+0:138:UDP -f *+0:139:UDP -f *+0:445:UDP -f *+0:1080:UDP -f *+0:1433:UDP -f *+0:1434:UDP -f *+0:3456:UDP -f *+0:39213:UDP -n BLOCK


ipsecpol -w REG -p "filter" -r "allow" -f 192.168.0.18+0:445:TCP -n PASS

ipsecpol -w REG -p "filter" -x

+++++++++++++++++++++++++++++++++++++++++++++++++++++++

    上面这个例子是禁止掉上述从远程任何主机的任何端口连接本机的上述TCP和UDP端口(注意是写在一行里面,如果使用写字板写的话,保险起见不要使用自动换行。),和允许192.168.0.18的任何端口访问本机445端口,最后一句ipsecpol -w REG -p "filter" -x是指派这个策略。上面的禁止部分是随意写的,自己配的时候不要对号入座且"filter"和"block","allow"可以随便自己改成好记的,比如中文的也可以。

    如果本机没有安装Windows 2000 Resource Kit,那么要把装了Windows 2000 Resource Kit的机器上面的text2pol.dll和ipsecutil.dll复制到ipsecpol.exe和ipsecpol.bat同一目录中(如果偏要复制到winntsystem也不反对),然后执行自己的ipsecpol.bat,就可以发现这个bat里面的工作,也就是GUI配置ipsec怎么也要五分钟(还有可能眼花配错)的工作在一瞬间全都搞定了。
    
    ipsecpol.exe还提供了远程配置功能,但是我比较支持复制文件到要配的机器上去,如果非要远程配置的话,自己看帮助吧。我从来不用这种方法,所以也就懒得实践后写出来了。
    另外,用ipsecpol脚本配好了的规则还可以日后用GUI的方式删改,甚是方便。
    如果不想装Windows 2000 Resource Kit,那么可以到我的主页http://www.fantian.com的tools里下载包含了ipsecpol.exe,text2pol.dll和ipsecutil.dll的rar包直接使用。因为可能变更url,所以具体链接就不给出了,一页里总共也没几个工具,一眼就能找到。
    看了上面这篇东西,相信你已经可以轻松搞定这一切了,希望你能用这些知识维护好你的服务器或者保住你的新肉鸡,如果你感觉阅读本文浪费了你的时间,那么我感到很抱歉。(stan1ie )

补充:综合编程 , 安全编程 ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,