在PⅨ防火墙上使用IPSeC能在两个终端之间建立一个安全的VPN隧道,使IP间能安全地交换数据。使用带有RSA键交换的IKE、带有CA证书的IKE、带有Preshared key的IKE或使用Preshaled keys sand的IKE(称作manualIPSeC)能对IPsec进行配置。当使用手动键交换时,你可以简单地创建一个共享的秘密,在这两个终端上这个秘密是相同的。这项技术不仅是一个安全问题,而且是一个伸缩性问题。

我们把我们的工作主要集中在使用CiSCO提供的工具来进行IPsec问题的故障诊断上和使用IKE pershared kev进行IPsec的配置上。错误的配置、不匹配的参数、键、路由器、IP地址问题以及其他方面的问题能导致IPSeC出错。你首先应该能根据症状来隔离和解决这些问题,然后使用合适的工具来找出引起这些问题的原因。

图11.14中给出了一个在PⅨ1和PⅨ2之间配置的简单的点对点IPsec隧道。IPsec是一门复杂的技术并且容易犯许多不可原谅的错误。一个简单的错误就能使IPsec结构不能工作。因此,你的大量工作将首先集中在正确地配置IPsee上。


图11.14 IPsec配置


在这里我们介绍了几个命令和程序,你可以使用它们来检查你的IPsec配置:

!PIXI Confiquration snippets

nat 99 O.O.O.O 0.O.O.O

qlobal(outside)99 192.168.2.10一192.168.2.254 netmask 255.255.255.O

route outside 0.O.0.O 0.0.O.0 192.168.2.2

static(inside,outside)192.168.2.10 192.168.1.1 netmask 255.255.255.255

conduit permit ip 192.168.3.0 255.255.255.O any

isakmD enable outside

isakmD policy 99 authen pre—share

isakmp policy 99 encryption des

isakmp policy 99 group 1

isakmp policy 99 hash md5

isakmp policy 99 lifetime 9999

isakmD identity address

isakmp kev cisco address 192.168.3.1

access—list 99 permit ip 192.168.0.0 255.255.252.0 any

crypto ipsec transform—set FWI ah—md5一hmac esp—des esp—md5一hmac

crypto map FWI 1 ipsec—isakmp

crvpto map FWI 2 set peer 192.168.3.1

crvPto map FWI 3 match address 99

crvpto map FWI 2 set peer 192.168.3.1

crvDto map FWI interface 0uts ide

1 PIX2 Configuration snippets

nat 99 O.0.O.0 O.O.O.O

alobal(outside)99 192.168.3.10—192.168.2.254 netmask 255.255.255·0

route outside 0.O.O.O 0.O.0.O 192.168.3.2

static (inside,outside) 192.168.3.10 192.168.4.1 netmask 255.255.255·255

conduit permit iD 192.168.3.O 255.255.255.0 any

isakmp enable outside

isakmp policy 99 authen pre—share

isakmp policy 99 encryption des

isakmp policy 99 group 1

isakmp policy 99 hash md5

isakmp policy 99 lifetime 9999

isakmp identity address

isakmp key cisco address 192.168.2.1

access—list 99 permit ip 192.168.0.O 255.255.252.O any

crypto ipsec transform—set FWI ah—md5一hmac esp—des esp—md5一hmac

crypto map FWI 1 ipsec—isakmp

crypto map FWI 2 set peer 192.168.2.1

crypto map FWI 3 match address 99

crypto map FWI interface outside

在这个配置中存在几个问题。对初学者来说,在PIXI和PLX2之间的对等的IPsec是到达它们的内部地址而不是外部地址。尽管这种配置能工作,但是Cisco不推荐把它作为配置IPsec的方法。此外,对IPsec对来说,这些地址能被静态地转换为外部地址。这样就存在一个问题,因为当IPsec流到达终点时,它与源地址是不匹配的,并且散列值也不正确。为了解决这个问题以及地址转换无效问题,我们在每个防火墙的内部地址上增加了一个路由器,并允许把地址输入防火墙。


11.1 IKE


IKE的主要任务是通过建立一个安全信道来协商IPsec参数,通过这个信道,IPsec能建立与它对等的Ipsec。换句话说,IKE是必要的配置,它通过建立安全信道来保护IPsec。

如果IKE对都认同一个共同的安全策略,那么它们就建立了一个安全联盟,共同的安全策略包括使用相同的加密、身份验证、Diffie-Hellman设置和散列参数。没有这个认同,就不会产生IKE对,并且IPsec对也不能继续工作。IKE能对IPsec对进行身份验证,决定所使用的加密方法,并协商IPsec所使用的各种参数,例如,加密、身份验证和键。为了使IPsec能继续进行,必须正确配置IKE并能进行工作。

IKE的工作分两个阶段。在第一个阶段(主模式),它为了把两个防火墙变成IKE对而建立所需的安全联盟。这包括交换和寻找公共的安全策略直到两个对达成一致。在第二个阶段(快速模式),IKE建立在协商和操作过程中为保护IPsec所需的安全联盟。第二个阶段完成之后,IPsec对才实现了它们之间的对等关系。

在你的防火墙开始工作之前,确保每个对等物能到达其他端的IP地址。如果基本的硬件、网络或转换方面的问题阻止了对等物之间的相互联系,那么使用本章前面所提的结构方法来进行检查。你可以使用ping来验证是否连通。

Cisco给出了几个命令,你可以使用这些命令来检查你的IKE配置和操作情况。让我们来看看这些命令。show isakmp命令显示IKE在PIX防火墙上是如何配置的。例如:

PIXI#show isakmp

isakmp enable outside

isakmp key ******。address 192.168.3.1 netmask 255.255.255.255

isakmp identity address

isakmp policy 99 authentication pre—share

isakmp policy 99 encryption des

isakmp policy 99 hash md5

isakmp policy 99 group 1

isakmp policy 99 lifetime 9999

show isakmp或show crypto isakmp命令显示了PIX防火墙上的当前的IKE参数设置情况。注意,怎样通过隐藏键来保护它的安全。你应该在所有的对等物上运行这个命令,并把输出结果进行比较,确保至少有一个安全策略被大家认同。如果你想知道更详细或更多的有关这些参数的准确信息,那么应使用show isakmp policy命令。这个命令比前面的命令含有更多的内容,它给出了每个参数及其当前设置:

PIXI#show crypto isakmp policy

Protection suite 0f priority 99

encryption algorithm:DES—Data Encryption Standard(56 bit keys).

hash algorithm: Message Digest 5

authentication method:Pre—Shared Key

Diffie—Hellman group:#1 (768 bit)

lifetime: 9999 seconds,n0 voiume limit

Default protection suite

encryption algorithm:DES—Data Encryption Standard(56 bit keys).

hash algorithm: Secure Hash Standard

authentication method:Rivest—Shamir—Adleman Signature

Diffie—Hellman group: #1(768 bit)

lifetime: 86400 seconds,no voiume limit

show crypto isakmp policy命令的另一个用处是如果你没有给出参数的特定值,它会向你显示这个参数的默认值。如果你没有对某个参数进行专门的设置而你还想知道这个参数的情况,那么在这种情况下,这个命令是很有用的。

如果IKE不能工作那么IPsec也不能向前进行。惟一例外的情况是,你在IPsec上没有使用IKE,也就是说,你使用了手动的IPsec生成键。

如果你想观看两个IPsec对之间的ISAKMP协商过程,那么可以使用debug crypto isakmp命令。这个命令生成一个相当数量的输出,你可以随时利用这个输出。你可以使用debug cryptoisakmp命令来查看IKE的协商过程以及会话间的交换情况。debug crypto isakmp命令显示了IKE通过阶段1和阶段2的情况。当某个流(与应用crypto映射相匹配的流)到达IPsec端口时,整个过程开始发生。如图11.15所示,一旦这种情况发生,IKE就会与它的对等物连接(它的源端口和目的端口将是UDP端口500,所以你要确保这个端口能允许通过。)

对等物所做的第一件事情就是确认主机名或IP地址,以及使关键对与它们的结构匹配。发起人把他的安全策略参数发送到接收器,然后接收器把与安全策略相匹配的参数再发送回来。认同这个安全策略后,IKE对开始进入阶段l,完成Diffie-Hellman和生成会话键。然后,完成IKE对的身份验证,结束阶段l的安全联盟。通过协商安全策略,阶段2的发展相对迅速(因此它被称作“快速”模式),安全策略将被用来保护IPsec对的运行。一旦完成了阶段2,IPsec就建立一个隧道,开始数据传输。


图11.15 IKE过程


在IKE阶段中最常见的问题是preshared key的不匹配和安全策略参数的不匹配。IKE故障诊断的第一步是对每一个对等物的配置进行比较。使用我们前面提到的命令就可以进行比较。在确定你已经有了一个在每个防火墙上都可以使用的IKE策略之后,正确执行debug命令之后就可以开始IKE过程了。你可以对这个过程进行监控或者省略它。

如果你没有定义对等物间的公共安全策略或者是你根本就忽略了定义这样一个安全策略,那么IKE将使用各种参数的默认值。这意味着使用DES来加密、使用SHA来计算散列值、使用RSA进行身份验证以及使用寿命为86400妙的Diffie-Hellman Group 1(768位)。当show crypto isakmp命令的输出显示“no state”(无状态)时,很明显是策略不匹配,意味着由于不匹配的对等物在主模式下协商失败。如果两个对等物的密码不一致,也会出现“no state”错误。散列计算也将失败。使用debug crypto isa~p命令你可以查看其他方面的情况。

你可以使用Cisco提供的clear crypto isakmp sa命令来删除存在的安全联盟并强迫重新开始。这个命令不但在清除一个无效的安全联盟方面有用,而且与debug一起使用也有助于监控IKE的协商过程。


11.2 Ipsec


在IKE成功地协商参数之后,例如加密、身份验证以及键方法的正确使用,IPsec就准备执行创建VPN的任务了。IPsec要求IKE已经协商过前面识别的各种参数。IPsec对各种转换形式的设置进行比较来决定支持哪一种。它们协商身份验证、加密和散列方法,直到找出一

致性。如果没有发现一致性,那么它们就不会变成对等物,并且将不会建立隧道。

可以使用show crypto ipsec transform-set命令来检查你所配置的各种转换集。注意,这个命令告诉你IPsec是否协商AH、ESP或者将这两者结合。这里给出了一个例子:

PIXI#show crypto ipsec transform—set

Trans form set FWI:{ah—md5一hmac }

will negotiate={Tunnel, ),

(esp—des esp—md5一hmac }

will negotiate={Tunnel, ),

对IPsec对来说非常重要的一点是它们的转换参数应该是一致的。使用Crypto映射能详细说明被加密的流量。执行show crypto map命令可以确定你的映射,例如:

PIX2#show orypto map

Crypto Map:”pixola'’interfaces:{outside}

Crypto Map”pixola'’l ipsec—isakmp

Peer=192.168.2.1

access—llst lUU permit 1p 192·168.2.O 255.255.255.O any(hitcnt=1)

Current peer:192.168.2.1

Security association lifetime:4608000 kilobytes/28800 seconds

PFS(Y/N):N

Transform sets=f pix,)

这个命令也能识别使用的IPsec peer并且应用了进入界面的分布图。在这个例子中,PIX2把“pixola'’crypto映射应用到它的外部端口上,与PlXl(IP地址为192.168.2.1)配对,并且PIX2把与访问列表100相匹配的流加密。这个命令还能告诉你有多少流量与访问列表不匹配——对IPsec处理过程来说这是一种快速的方法,用于决定哪些东西需要检查。

在证实转换参数一致和验证crypto映射正确之后,确定真正需要保护的数据。在下面的输出中给出了使用show crypto ipsec sa命令所进行的验证结果:

PIXI#show crypto ipsec 8a

interface:outside

Crypto map taq:pixola,local addr.192.1 68.2.]

local ident(addr/mask/prot/port):

remote ident(addr/mask/prot/port)

current_peer:192.168.3.1

PERMIT,flags—origin—is—acl,}

(192.168.2.1/255.255.255.010/0)

:(192.168.3.1/255.255.255.010101

#pkts encaps:5,#pkts encrypt:5,#pkts digest 5

#pkts decaps:5,#pkts decrypt:5,#pkts verify 5

#pkts compressed:O,#pkts decompressed:O

#pkts not compressed:O,#pkts compr.failed:O,#pkts decompress

failed:O

#send errors O,#recv errors O

local crypto endpt.:192.168.2.1,

path mtu 1500,ipsec overhead 56,

current outbound spi:‘3a18fca2

remote crypto endpt.:192.168.3.1

media mtu 1500

inbound esp sas:

spi:0x61af4121(2451330208)

transform:esp—des esp—md5一hmac

in use settings:{Tunnel,)

slot:O,conn id:1,crypto map:pixola

sa timing:remaining key lifetime(k/sec):(4000159/9460)

IV size:8 bytes

replay detection support:Y

inbound ah sas:

inbound pcp sas:

outbound ESP sas:

spi:0x61af4121(2451330208)

transform:esp—des esp—md5一hmac

in use settings={Tunnel,)

slot:O,conn id:1,crypto map:pixola

sa timing:remaining key lifetime(k/sec):(4000159/9460)

IV size:8 bytes

replay detection support:Y

outDoun~an sas:

outbound PCP sas:

我们可以看到,这个命令的输出量是很大的。标签co,to map说明了所使用的是c呷t0映射,而local和remote ident参数给出了局域对和远程对的II)地址。计数器pkts记录了加密包的数量、解密包的数量和压缩包的数量。到目前为止,已经发送和接收了五个加密包。这是IPsec运行成功的一个标志。

参数crypto endpt标识了IPsec对。注意,输出中给出了MTU路径和MTU媒体,它们在决定是否存在碎片方面是很有用的。SPI是隧道的惟一标识。我们可以查看所使用的转换集参数以及是使用隧道模式还是运输模式。参数lifetime说明了在SA进行再次协商之前还剩多少时间。在最后,参数outbound sas证实已经建立了入站和出站SA。它也给出了在SA进行再次协商之前还剩多少秒和多少干位。

使用show crypto ipsec securiW-association命令可以查看SA的寿命。例如:

PIXI#show crypto ipsec security—association lifetime

Security association lifetime:4608000 kilobytes/28800 seconds

你可以使用debug crypto ipsec命令来监控IPsec协商,一旦IKE完全初始化后,协商就开始。对简单的故障诊断工作来说,只需分别运行这两个命令。否则,你将会被它们产生的大量数据弄得头晕脑涨。首先执行IKE故障诊断(在IPsec运行前执行),然后开始IPsec故障诊断工作。

如果你想重新初始化IPsec,那么就重新初始化吧。当你想清除已破损的或无效的部分时,或者你想建立一个IPsec新隧道,那么重新初始化IPsec是很有用的。如果你想使用debug命令来监控IPsec操作,重新初始化IPsec也是很有帮助的。任何时候,你都可以使用clear cryptoipsec sa命令来进行手动SA协商。如果是活动触发脉冲,如crypto映射,clear crypto ipsec sa命令能删除现存的安全联盟(所有的)并建立一个新的安全联盟。你会对这个命令很熟悉,例如用clear crypto ipsee sa 192.168.2.1来指定一个特殊的对。Cisco通过引进PIX软件v6.2而提供了一个用于捕获和分析网络流量的优良工具。当使用capture命令时,在目标端口上PIX扮演包嗅探器的角色,为以后的分析而捕获包。这个命令既捕获入站流也捕获出站流。

对故障诊断来说,捕获端口上传递的包是很有用的,因为这能使你精确地知道正在传输的是什么流。当你正在诊断连通性问题时,捕获流入和流出端口的包是很有用的。通过对捕获包进行分析,你能决定你的配置是否有问题,例如IP地址不一致,或者是IKE或IPsec问题,如参数不匹配或者预设参数没有通过检测。在这之前,工程师惟一的解救方法是需要安装一个包捕获装置。在PIX防火墙v6.2中介绍了包捕获特征,只有Ethernet端口可以使用这个特征。它的具体用法如下:

capture<capture—name>[access—list<ID>] [buffer<bytes>] [ethernet—type

<type>][interface<if_name>][packet—length<bytes>]

第一个参数capture-name定义了捕获对话的名称,其他的所有参数都是可选的。参数access-list详细说明了对源捕获流和目的捕获流进行限制的访问列表。在默认情况下,所有的II,包都是匹配的。参数buffer说明了用来存储捕获包的缓存区(单位是字节)的尺寸,它的最大值与PIX防火墙上可利用的内存量有关。默认的缓存区大小是512K,一旦缓存区被占满,就停止包捕获。参数ethemet-type指定了捕获协议,ip,arp,rarp,ip6可以是1到65535之间的任何数值。在默认情况下,所有Ethemet类型的包都能被捕获。把ethemet-typ参数设置为0来捕获所有类型。参数interface指定了在其上进行包捕获的端口。参数packet-length说明了每个被捕获包的大小。通常的故障诊断工作只需要包前面的一些字节,所以PIX捕获包的大小是68字节,例如:

PIXI#capture inside--traffic access-。list 100 buffer 20000 interface inside

packet—length 2 0 0

在这个例子中,我们第一个捕获的包是与内部端口上的访问列表100相匹配的200字节的流量。我们分配了20,000字节的缓存区用来存储这些捕获包。

可以同时运行多重流捕获。可以使用show capture命令来查看捕获列表。例如,下面的命令显示了同时进行的两个捕获,capl和cap2:

PIXI#show capture

capture capl interface inside

capture cap2 interface outside

使用命令clear capture<capture-name>来清除捕获缓存而不必停止捕获,例如:

PIXI#clear capture capl

使用命令no capture<capture-name>来停止捕获并清除相关的缓存,例如:

PIXI#no capture cap2

使用no capture<capture-name>interface<if name>命令来停止捕获并保存相关的缓存,例如:

PIXI#no capture capl interface inside