2008年11月25日星期二

PIX防火墙的基本排错的命令

本人将介绍一些Cisco公司的PIX防火墙的基本排错的命令,通过这些命令,我们可以监测到防火墙的性能。

show cpu usage
PIX
只有一个CPU来完成所有的工作,从处理包到向consoledebug信息。最消耗CPU资源的进程是加密,因此如果PIX要完成数据包的加密工作,最好使用加速卡或专用的VPN Concentrator.日志功能是另外一个消耗大量系统资源的进程。因此,建议在正常情况下关闭PIXconsole, monitor, buffer写日志的功能。本命令的结果:
pixfirewall# show cpu usage
CPU utilization for 5 seconds = 1%; 1 minute: 2%; 5 minutes: 1%

show traffic
本命令可以看出在特定的时间内有多少流量流经PIX了。这个特定的时间是上次执行本命令到这次执行本命令的时间间隔。我们可以看到各个接口的数据流量情况。
pixfirewall# show traffic
outside:
received (in 124.650 secs):
295468 packets 167218253 bytes
2370 pkts/sec 1341502 bytes/sec
transmitted (in 124.650 secs):
260901 packets 120467981 bytes
2093 pkts/sec 966449 bytes/sec
inside:
received (in 124.650 secs):
261478 packets 120145678 bytes
2097 pkts/sec 963864 bytes/sec
transmitted (in 124.650 secs):
294649 packets 167380042 bytes
2363 pkts/sec 1342800 bytes/sec

show perfmon
这条命令监测PIX检查的数据的流量和类型。它可以判断出PIX每秒所做的变换(xlates)和连接数(conn)
PERFMON STATS Current Average
Xlates 18/s 19/s
Connections 75/s 79/s
TCP Conns 44/s 49/s
UDP Conns 31/s 30/s
URL Access 27/s 30/s
URL Server Req 0/s 0/s
TCP Fixup 1323/s 1413/s
TCPIntercept 0/s 0/s
HTTP Fixup 923/s 935/s
FTP Fixup 4/s 2/s
AAA Authen 0/s 0/s
AAA Author 0/s 0/s
AAA Account 0/s 0/s
其中,较重要的有Xlates是每秒钟产生变换的数字Connections是建立的连接数;TCP Fixup是指PIX每秒钟转发了多少TCPTCPIntercept是指有每秒多少SYN包已经超出了开始的设定值

show block
show cpu usage在一起使用,可以判断出PIX是否过载了。
当一个数据包进入防火墙的接口,会先排在input接口的队列中,根据数据帧的大小,又被分到不同的block中。如对于以太网帧,使用1550字节的block。如果数据是从千兆口进来的,会使用16384字节的blockPIX然后会根据ASA算法决定是否让包通过。如果PIX过载了,那相应的block会降到或接近0(CNT这一列)。当该值降到0时,PIX会尝试申请更多的block,最多可到8192。如果没有block可用,包会被丢弃。
256字节的blockstateful failover信息。主PIX向从PIX发送这些包以更新xlatesconnection信息。如果某段时间有大量的连接建立和拆除,256字节的block可能会降到0,就是说从PIX可能没有和主PIX同步。这个时间如果不长,是可以接受的,但如果长时间维持在0,需要考虑升级到更高速的PIX了。
另外,日志信息也是通过256字节的block向外部送出的,注意通常不需要将日志的级别设置成debug.
pixfirewall# show blocks
SIZE MAX LOW CNT
4 1600 1597 1600
80 400 399 400
256 500 495 499
1550 1444 1170 1188
16384 2048 1532 1538


show memory
可以看出PIX的内存以及当前可用的内存。正常情况下,PIX的可用内存的变化幅度不应该太大。如果突然发现内存快用光了,要检查是否用攻击发生。可以用show conn count命令看当前PIX中有多少连接,如果PIX内存耗尽,最终会crash.
pixfirewall# show memory
1073741824 bytes total, 1022992384 bytes free

show xlate
显示当前通过PIX的变换数和最多达到的变换数。一个变换是指一个内部地址变换成一个外部合法地址。一台机器可能会与外部的多个目标建立连接,但这时只有一个变换。如果显示的变换数远大于内部的机器数,可能是受到了网络攻击。
pixfirewall# show xlate count
84 in use, 218 most used

show conn count
可以看当前的PIX的最大的连接数。一个connection是一个内部4层信息到外部地址的映射。当PIX收到一个SYN包,就建立一个connection.过高connection数意味着受到了攻击,这时如果用show memory命令虽然连接数很高,但是并没有消耗掉PIX过多的内存资源。
pixfirewall# show conn count
2289 in use, 44729 most used

show interface
这条命令用来判断双工的匹配问题和电缆故障,也可以看出接口是否过载了。如果PIXCPU资源耗尽了,那么1550字节的block会接近0,如果是千兆口,16384字节的block接近0。另外一个信号是”no buffers”的值不断增加,它表明接口接收包的速率太快,PIX来不及处理,也没有足够的block去承载,已经有丢包产生了。如果”no buffer”伴随着CPU的使用率升高,说明该考虑升级到性能更强的防火墙了。
当数据包进入接口时,被放在input hardware queue中,如果该queue满了,被放在input software queue中。包然后从input queue中被放到block中等待PIX OS的处理,PIX决定把包放到哪个出口,即哪个output hardware queue中,如果该queue满了,就放到output software queue中;如果每个软队列中的max blocks都很大,就称之为”overrun”。常见的情况是入口和出口的数据传输速率不匹配,就会出现overrun,这时应该考虑升级接口了。
pixfirewall# show interface
interface ethernet0 "inside" is up, line protocol is up
Hardware is i82559 ethernet, address is 0002.b31b.99ff
IP address 9.9.9.1, subnet mask 255.255.255.0
MTU 1500 bytes, BW 100000 Kbit full duplex
4630 packets input, 803174 bytes, 0 no buffer
Received 2 broadcasts, 0 runts, 0 giants
0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored, 0 abort
4535 packets output, 445424 bytes, 0 underruns
0 output errors, 0 collisions, 0 interface resets
0 babbles, 0 late collisions, 0 deferred
0 lost carrier, 0 no carrier
input queue (curr/max blocks): hardware (128/128) software (0/1)
output queue (curr/max blocks): hardware (0/2) software (0/1)
如果是runts, input errors, CRCsframe. errors在增加,可能是双工方式不匹配造成的或电缆故障。

show process
显示当前PIX中的活动的进程有什么。这样就可以看出什么进程使用了过多的CPU资源,什么进程没能使用CPU资源。为了得到这个信息,我们连续两次执行show process命令,间隔1分钟。对有所怀疑的进程,两次的Runtime值相减,时间差(单位是毫秒)就是该进程一分钟所占用的CPU资源557poll进程通常是占用时间最多的进程,它负责询问以太接口看是否有包需要处理。

总结
我们用show cpu usage命令看PIX的负载情况。一般来说,CPU达到80%时,性能会受到影响;超过90%时,会有丢包的情况发生。这个时候,我们可以通过命令show process来看看什么进程在消耗CPU资源,查出该进程后找相应的办法处理。如果CPU的使用率并不高,但是还是觉得有丢包的情况发生,
show interface命令检查是否有错包出现,即是否有双工匹配问题或电缆问题;如果是”no buffer”增加,同时CPU使用率并不高,说明接口的能力不能满足流量的需求;如果buffer状况很好,检查block,如果1550字节或16384字节的block接近0了,说明PIX由于太忙开始丢包了,这时CPU也会很高。
如果发现在PIX建立新的连接很困难,用命令show conn count检查当前的连接数:如果很高了,用show memory命令看看内存的状况,如果内存很少了,用show conn命令或show local-host命令查一下连接数如此多的原因,很可能是遭遇DoS攻击了。
另外,show traffic命令显示每个接口处理的包数和字节数;show perfmon命令进一步将traffic分成不同的类型。

0 评论: