[摘要]命令行下也玩IPSec在网络应用越来越广泛的今天,一个重要的问题就是有关计算机通信的安全性问题。作为网络系统管理员,一项基本职责就是保证数据在网络传输中,不能被未经授权的人访问、查看或修改,在这中间...
命令行下也玩IPSec在网络应用越来越广泛的今天,一个重要的问题就是有关计算机通信的安全性问题。作为网络系统管理员,一项基本职责就是保证数据在网络传输中,不能被未经授权的人访问、查看或修改,在这中间,同时要保证数据能加密传输。怎样做到这一点呢?
Win2k网络中,我们可以通过IPSec来保护网络的安全。IPSec的全称是Internet Protocol Security,翻译成中文就是Internet协议安全。它的作用主要有两个:一个是保护 IP 数据包的内容,另外一点就是通过数据包筛选并实施受信任通讯来防御网络攻击。这对于我们当有一些重要的数据在传输的过程中需要加以保护或者防止监听来说无疑是一个好消息。
由于是在IP层进行对数据的对称加密,封装的是整个的IP数据包,所以不需要为 TCP/IP 协议组中的每个协议设置单独的安全性,因为应用程序使用 TCP/IP 来将数据传递到 IP 协议层,并在这里进行保护。相应的IPSec配置相对复杂,但是对于应用程序来说是透明的,因此不要求应用程序必须支持。
Win2k操作系统都支持IPSec,Win2k以前的版本,如Win 98与Win NT不支持IPSec。在Win 2k的网络中,不管是局域网、广域网,都可以使用IPSec来保证网络的安全。我们以前见到的文章都是讨论在图形界面下配置IPSec的,因为步骤比较多,所以很容易出错,并且效率不是怎么的高,那么我们是否可以在命令行下配置IPSec呢?答案是肯定的,今天我们就来讲讲如何在命令行下配置IPSec。
一:基础知识
在开始文章前有必要先了解一些基础的知识,以便更好的阅读下面的文章。
1、IPSec的工作的过程:
两台计算机在通讯的时候,如果已经设置好IPSec的策略,主机在通讯的时候会检查这个策略,策略在应用到主机的时候会有一个协商的过程,这个过程通过Security Association来实现。协商后根据Policy的配置,两台计算机之间建立一个加密的连接,数据进行加密传输。驱动程序将解密的数据包传输给TCP/IP的驱动程序,然后传输给接收端的应用程序。
2、IPSec的工作方式:
⑴传送模式:保护两个主机之间的通讯,是默认的IPSec模式。传送模式只支持Win2k操作系统,提供P2P(点对点)的安全性。
⑵隧道模式:封装、发送和拆封过程称之为“隧道”。一般实现方法是在两个路由器上完成的。在路由器两端配置使用IPSec,保护两个路由器之间的通讯。主要用于广域网上,不提供各个网络内部的安全性。
3、IPSec的身份验证方法:
⑴ Kerberos V5:这个是默认的身份验证方法,如果是在一个域中的成员,又是Kerberos V5协议的客户机,选择这一项。比如一个域中的Win2k的计算机。
⑵证书:需要共同配置信任的CA。
⑶预共享密钥:双方在设置策略的时候使用一段共同协商好的密钥。
以上三种方法都可以作为身份验证的方法,一般在日常工作当中,如果是域中的Win2k的计算机之间就采用Kerberos的认证方式。其他情况下一般可以采用第三种方式,双方协商一段密钥。
4、IPSec的加密模式:
⑴身份验证加密技术:包括SNA和MD5
⑵数据包加密技术:包括40-bit DES、56-bit DES
⑶ 3DES:最安全的加密方法,相应的也会消耗更多的系统资源。
其他的关于IPSec的一些知识大家可以借助搜索引擎来实现,这里就不再展开了。
二:微软的礼物
在命令行下配置IPSec,我们需要借助第三方的软件IPSecPol来实现(可以在光盘里找到),它是我们可爱的微软的免费提供的支持工具。
为什么我们要用IPSecPol这个工具呢?如果我们需要有大量的IP安全策略需要配置的话,一般的图形界面模式即费时又费力,而使用IPSecPol之后,我们可以利用脚本来实现,并且结合批处理,只要用户输入几个参数就可以在短短的时间内完成庞大的工作。更重要的是,它可以实时配置策略,喜欢命令行下工作的你是否也开始对它感兴趣了?
我们先来看看它的参数,如下所示:
ipsecpol [\\computername] [-?] [-f FilterList] [-n NegotiationPolicyList] [-t TunnelAddress] [-a AuthMethodList] [-u] [-soft] [{-dialup -lan}] [-1s SecurityMethodList] [-1k Phase1RekeyAfter] [-1p] [-confirm] [-w TYPE:DOMAIN] [-p PolicyName:PollInterval] [-r RuleName] [-x] [-y] [-o]
下面我们对常用的几个参数进行解释:
-f FilterList:过滤列表,这个列表的格式应该是下面这样的:A.B.C.D/mask:port=A.B.C.D/mask:port:protocol,左边的A.B.C.D代表的是源IP,右边的是目标IP,mask代表子网掩码,port是端口,protocol是协议类型。我们举个例子,比如我的IP是166.111.30.30,我要把来自IP地址是166.111.40.40对我的Tcp端口7626请求的数据包过滤。那么这个过滤列表就应该是这样的:
166.111.40.40/255.255.252.0:7626=166.111.30.30/255.255.252.0:7626:tcp
当然这里我们还可以使用通配符,用*代表任何IP地址,用0代表我自己的IP地址,我们还可以使用+符号,比如0+*:139:TCP代表过滤自己主机和任何来源ip的tcp端口139数据包;*+0:139:TCP代表过滤任何来源IP对自己主机tcp129端口发送的数据包。
-w TYPE:DOMAIN:这个是策略写入的位置,可以是注册表,这样类型是REG;也可以存储在目录里,这样的类型是DS。我们一般选择是REG;
-p PolicyName:PollInterval:这个是策略的名称,比如“Block RPC Attack Vectors”;
-r RuleName:这个是规则的名称,比如“Block Outbound TCP 445 Rule”;
-x:激活(指派)刚才配置的IP安全策略。
-y:不指派配置的IP安全策略。
-o:删除刚才设置的安全策略。
我们一般用的参数也就这样几个,其他的大家可以参看帮助文件。
三:具体实例
还是来讲实例吧,我们结合“冲击波”蠕虫来进行解说。“冲击波”利用的端口有Tcp135、4444端口,Udp69端口,此外它还会发送Icmp数据包。此外与RcpDcom有关的端口是Tcp135、445、139、593端口,Udp135、137、138、445端口。
如果我们要防范“冲击波”蠕虫,我们需要把来自外部对以上标明端口的连接过滤,为了不影响网络速度,还要禁止Icmp包。假如我们感染了,还要防止自己主机向外部发送数据,因此我们来创建策略,策略名比如是:Anti Blaster,那么我们所要的命令如下:
ipsecpol -w REG -p "Anti Blaster" -r "Block Inbound TCP 135 Rule" -f *+0:135:TCP -n BLOCK
ipsecpol -w REG -p "Anti Blaster" -r "Block Outbound TCP 135 Rule" -f 0+*:135:TCP -n BLOCK
ipsecpol -w REG -p "Anti Blaster" -r "Block Inbound TCP 4444 Rule" -f *+0:4444:TCP -n BLOCK
ipsecpol -w REG -p "Anti Blaster" -r "Block Outbound TCP 4444 Rule" -f 0+*:4444:TCP -n BLOCK
ipsecpol -w REG -p "Anti Blaster" -r "Block Inbound UDP 69 TFTP Rule" -f *+0:69:UDP -n BLOCK
ipsecpol -w REG -p "Anti Blaster" -r "Block Outbound UDP 69 TFTP Rule" -f 0+*:69:UDP -n BLOCK
ipsecpol -w REG -p "Anti Blaster" -r "Block Inbound ICMP Rule" -f *+0:0:ICMP -n BLOCK
ipsecpol -w REG -p "Anti Blaster" -r "Block Outbound ICMP Rule" -f 0+*:0:ICMP -n BLOCK
最后,我们还要激活这个安全策略,命令是:ipsecpol -w REG -p "Anti Blaster" –x
更保险点的是,禁止对Rpc相关端口的连接,这样我们运行的命令如下:
ipsecpol -w REG -p "Block RPC Attack" -r "Block Inbound UDP 135 Rule" -f *+0:135:UDP -n BLOCK
ipsecpol -w REG -p "Block RPC Attack" -r "Block Inbound TCP 135 Rule" -f *+0:135:TCP -n BLOCK
ipsecpol -w REG -p "Block RPC Attack" -r "Block Inbound UDP 137 Rule" -f *+0:137:UDP -n BLOCK
ipsecpol -w REG -p "Block RPC Attack" -r "Block Inbound UDP 138 Rule" -f *+0:138:UDP -n BLOCK
ipsecpol -w REG -p "Block RPC Attack" -r "Block Inbound TCP 139 Rule" -f *+0:139:TCP -n BLOCK
ipsecpol -w REG -p "Block RPC Attack" -r "Block Inbound TCP 445 Rule" -f *+0:445:TCP -n BLOCK
ipsecpol -w REG -p "Block RPC Attack" -r "Block Inbound UDP 445 Rule" -f *+0:445:UDP -n BLOCK
ipsecpol -w REG -p "Block RPC Attack" -r "Block Inbound TCP 593 Rule" -f *+0:593:TCP -n BLOCK
然后再用命令ipsecpol -w REG -p "Block RPC Attack" –x来激活安全策略。上面只过滤了传入的连接请求,如果是过滤传出的,那么只要把*和0互换,把Inbound改成Outbound就可以了。
那如果“冲击波”过去了,我们不需要这样的安全策略的时候怎么办,当然你也可以在MMC(控制台)里删除掉,也可以用命令行来实现,比如我们要删除刚才防止冲击波的策略,具体命令是:
ipsecpol -w REG -p "Anti Blaster" –y //先用-y参数不指派这个策略
ipsecpol -w REG -p "Anti Blaster" –o //然后用-o参数删除
我们可以写一个批处理来实现这样的功能,这个批处理可以在光盘里找到,以后要设置策略时,只要把端口修改下就可以了,即节省了时间,效率也大大提高了 :P。
文章就介绍到这里,如果大家有更好的方法或者是经验,可以与我交流,文章的不足之处也请大家指正。
网络的神奇作用吸引着越来越多的用户加入其中,正因如此,网络的承受能力也面临着越来越严峻的考验―从硬件上、软件上、所用标准上......,各项技术都需要适时应势,对应发展,这正是网络迅速走向进步的催化剂。
关键词:命令行下也玩IPSec