在网络环境中,Windows为了保证数据传输的安全性,采用IPSec (Internet Protocol Security,即网络通信协议的安全性)机制对网络中传输的数据进行各种形式的加密和身份认证,来保证IP网络上通讯的安全。IPsec用来保护一条或多条主机与主机间、安全网关与安全网关间、安全网关与主机间的路径。IPsec能提供的安全服务包括访问控制、无连接的完整性、数据源认证、抗重播保护、保密性和有限传输流保密性在内的服务。因为这些服务均在lP层提供,所以任何高层协议均能使用它们。为了让用户更加灵活的使用IPSec安全架构,在Windows中内置了基于命令行的IPSecCmd程序,让用户快捷高效的加密网络数据,阻止各种网络攻击,从而让网络变得更加安全。这里就举例分析了IPSecCmd命令的使用方法,帮助用户更好的了解其运行机制。好了下面就由危险漫步来跟大家一一介绍我们今天的主角——IPSecCmd。
一、IPSeccmd语法分析
这里以Windows XP为操作环境说明IPseccmd的用法。将-Windows XP的安装盘放入光驱,在资源管理器中打开光驱盘符,进入"Support\Tools"文件夹,运行其中的"Setup.exe"文件安装整个资源包。之后点击"开始"一"程序"一"Windows Support Tools" 一"Command Prompt"项,在CMD窗口中直接运行"ipseccmd.exe",就可以看到Ipseccmd命令的完整语法。这里简要对其主要参数做简要分析。其中的参数"-w TYPE:DOMAIN"表示安全策略写入的位置,一般为"REG",即写入到注册表中。参数"-p PoIicyName:Polllnterva"指策略名称,参数"-r RuleName"指规则名称,注意上述名称可以为中文。参数"-f"指设置安全规则,参数"-X"表示指派安全策略,参数"-y"指停止该安全策略,参数"-o"表示删除该策略。
二、利用IPSeccmd加密网络数据
假设在局域网中存在PCl和PC2两台计算机,我们要在这两台电脑之间使用AH和ESP的组合,通过密钥".security"来建立一个IPSec的安全规则。这里的AH指认证报头(Authentication Header),它用于保证数据的一致性,通过为IP封包产生校验值从而保证IP封包在网络传输过程中不被非法修改。ESP指封装安全负载(Encapsulation Security Payload),用于保证数据的保密性和完整性。它通过将IP封包后进行加密传输,到达客户端后,再用密钥对lP封包进行解密还原。这样,即使别人中途截获了IP封包,因为没有密钥就无法对其解密。IPSec是通过在原始的IP数据包中插入AH或者ESP头,达到IP数据加密的目的。在CMD窗口中执行命令命令行中的参数表示对PC1和PC2两台电脑间的所有数据流进行过滤。当然,如果只希望过滤TCP数据包则需要将其改为也可以对指定的网段进行网络数据过滤,例如对"169.59.0.0/255.255.0.0"到"192.168.0.0/255,0.0.0"网段之间的UDP数据包进行过滤,则可以输入命令行中的参数"-n ah[md5]+esp[des,sha]"指定AH和ESP协议使用的加密和身份认证算法,具体的语法"{ESP[ConfAlgAuthAlg]:k/s AH[HashAlg]:k/s|AH[HashAlg+ESPConfAlg,AuthAJg]:k/s)",其中"ConfAlg"指定加密算法,可以是DES、3DES加密算法,或者不使用加密算法。“AuthAlg”指定完整性算法,可以是MD5、SHA1(安全哈希算法1),或者无算法。“HashAlg”指定哈希函数,可以是MD5(消息摘要5)或SHA1。其中的“k/s”来指定在快速模式SA更新密钥前的千字节(在数字后加上“K”)数或者秒数(在数字后加上“S”)。如果同时指定两个更新密钥参数,需要使用斜线“/”进行分隔。例如需要每小时而且每隔10MB的数据便重新使用密钥快速模式SA。需要输入“3600S/10000K”。命令行中的“-ap:”secrurity”参数用来指定认证方式。在PC1电脑上运行上述命令建立IPSeccmd安全规则后,还需要在PC2上建立同样的规则。这样,在PC1和PC2之间传输的就是加密后的数据了,即使使用嗅探工具进行抓包,也无法知晓其中的实际内容。
三、利用IPSeccmd阻止Ping探测
Ping命令可以说是使用的最广泛的网络命令,在黑客入侵之前几乎都要使用该命令来“刺探”虚实。网络用户处于保护电脑安全的考虑,一般都希望不让别人Ping到自己。通常拦截Ping命令的方法是安装防火墙软件,在其中建立相应的规则来阻止Ping命令。实际上,利用IPseccmd命令可以更加快捷的拦截Ping命令。在CMD窗口中执行命令“IPSeccmd -p”security”-r”noping” -f O+*::icmp -n BLOCK -w REG”,即可让Ping命令无功而返。其中的“-p securityl”参数指定安全策略的名称为“securityl”,参数“-r noping”指明安全规则的名称是“noping”。参数“-f *+O::icmp”的作用是建立一个筛选器,其中的“*’表示任何源地址,“0”表示本机地址,“+”表示对进出的数据报进行双向过滤,三者可以组合使用。“::ic mp”表示本规则只处理基于ICMP协议的数据包,因为Ping命令发送的是ICMP数据包。其中的“-n Block”指定本规则采取的筛选动作是“阻止”,注意此处的“BLOCK”应大写。其中的“-w reg”参数表示将本安全规则写入注册表,这样即可电脑重启之后规则仍然有效。其中的“-x”参数很重要,表示立即指派本安全策略。
四、关闭危险的的端口
当Windows XP安装完成后,会自动开启一些默认的端口,例如135、 137、138、445等。因为Windows XP自身通常存在各种潜在的漏洞,一些病毒和黑客程序就利用上述端口对系统进行任意攻击,进而将本机作为跳板,对网络中的其它电脑进行渗透。例如前一段时间流行的“振荡波”病毒,就是利用Windows的DCOM RPC缓冲区漏洞,通过上述端口进行船舶的。利用IP seccmd命令,可以轻易的将任意端口进行封闭。在CMD窗口中执行命令对关闭上述端口。该命令行中的参数其具体含义上文已经进行了分析,应该指出的是在ipseccmd命令中可以同时对多个端口,以及进出其中的数据包类型进行配置,这充分发挥了IP:seccmd命令的强大功能。如果在一条策略中配置多条安全规则时,应该使用多个“-f”参数分别指明不同的规则配置,而不是分多行进行输入,否则当命令执行时,后一个规则就会自动覆盖前一个规则。
五、限定IP访问
当在本机上安装了远程桌面,PCAnywhere等远程控制软件后,管理员利用预设的连接密码,就可以从远程电脑上登录到本机,从而方便的对本机进行远程管理。但是,在默认情况下远程控制软件是允许任何远程电脑与之建立连接的,入侵者通过扫描器能够探测到本机上开放的远程控制端口,可以通过猜解口令等方式非法登录到本机上,从而严重威胁本机安全。利用Ipseccmd命令可以设定只允许特定的IP访问本机,入侵者即使知道了登录密码,也无法和本机进行连接,从而大大提供了安全性。这里以常见的远程桌面为例进行说明。在CMD窗口中分别执行命令限定允许登录远程桌面的IP地址。远程桌面使用的端口是3389,上述命令首先建立名称为“noremotedesktop”的规则,禁止一切IP访问3389端口,接着又建立名称为“onlyoneIP”的规则,利用参数“-n PASS”只允许IP“219.168.0.99”访问本机的3389端口。
六、管理安全规划
当使用IPseccmd命令建立了许多规则后,在CMD窗口中可以执行“ipseccmd show XXX”命令,来管理建立的规则。其中的“xxx”可以是“gpo"、“filters”、“policieS”、“status”、“ahtb”、“sas”等参数,分别执行规则的查看,过滤,了解规则的状态,认证等信息。可以同时使用多个参数,彼此之间以空格分隔。当然可以执行命令“lpseccmd show all”来查看所有的信息。如果需要删除指定的规则,则执行命令“ipseccmdp”securityl00”-y-w REG”,即可删除名称为“securityl00”的规则。如果希望停用指定的规则,则执行命令即可暂时停用名称为“securityl00”的规则。利用“IPSeccmd:-u”命令,可以重新启动”TPSecPolicy Agent”服务以清除所有动态指定的策略。
活学活用IPSeccrnd命令范例1阻止所有的外部地址的所有端口访问本机的所有端口范例2阻止任何计算机的任何端口和地址为192.168.0.99的TCP 5631端口的通信范例3阻止地址为219.136.170.91的远程计算机的TCP 2899端日和本机的1433端口通讯范例4阻止本机的TCP 3699端口连接任何一台电脑的任何端口:范例5切断本机和外部计算机的任何网络通讯范例6 阻止指定网段 (例如219.159.197.6/255:255.255.0)中的所有主机的某一端口(例如TCP 2199)到本机的指定端口(例如6799)的访问范例7阻止某一段主机(例如192.168.0.9/255.255.255.0)的某端口(例如TCP 6677)到另一段主机(193.168.0.99/255.255.255.O)的某端口(例如TCP 1239)的访问当然,上述使用范例都是假设阻止操作,如果需要设置为通行操作的话,只需将其中的参数“BLOCK”改为“PASS”即可。