PIX防火墙几个比较有用的指令
?PIX只有一个CPU来完成所有的工作,从处理包到向console写debug信息。最消耗CPU资源的进程是加密,因此如果PIX要完成数据包的加密工作,最好使用加速卡或专用的VPNConcentrator.日志功能是另外一个消耗大量系统资源的进程。因此,建议在正常情况下关闭PIX向console,monitor,buffer写日志的功能。
pixfirewall#showcpuusage
CPUutilizationfor5seconds=1%;1minute:2%;5minutes:1%
showtraffic
本命令可以看出在特定的时间内有多少流量流经PIX了。这个特定的时间是上次执行本命令到这次执行本命令的时间间隔。我们可以看到各个接口的数据流量情况。
pixfirewall#showtraffic
outside:
received(in124.650secs):
295468packets167218253bytes
2370pkts/sec1341502bytes/sec
transmitted(in124.650secs):
260901packets120467981bytes
2093pkts/sec966449bytes/sec
inside:
received(in124.650secs):
261478packets120145678bytes
2097pkts/sec963864bytes/sec
transmitted(in124.650secs):
294649packets167380042bytes
2363pkts/sec1342800bytes/sec
showperfmon
这条命令监测PIX检查的数据的流量和类型。它可以判断出PIX上每秒所做的变换(xlates)和连接数(conn)。
PERFMONSTATSCurrentAverage
Xlates18/s19/s
Connections75/s79/s
TCPConns44/s49/s
UDPConns31/s30/s
URLAccess27/s30/s
URLServerReq0/s0/s
TCPFixup1323/s1413/s
TCPIntercept0/s0/s
HTTPFixup923/s935/s
FTPFixup4/s2/s
AAAAuthen0/s0/s
AAAAuthor0/s0/s
AAAAccount0/s0/s
其中,较重要的有Xlates是每秒钟产生变换的数字;Connections是建立的连接数;TCPFixup是指PIX每秒钟转发了多少TCP包;TCPIntercept是指有每秒多少SYN包已经超出了开始的设定值。
showblocks
和showcpuusage在一起使用,可以判断出PIX是否过载了。
当一个数据包进入防火墙的接口,会先排在input接口的队列中,根据数据帧的大小,又被分到不同的block中。如对于以太网帧,使用1550字节的block。如果数据是从千兆口进来的,会使用16384字节的block。PIX然后会根据ASA算法决定是否让包通过。如果PIX过载了,那相应的block会降到或接近0(看CNT这一列)。当该值降到0时,PIX会尝试申请更多的block,最多可到8192。如果没有block可用,包会被丢弃。
256字节的block是statefulfailover信息。主PIX向从PIX发送这些包以更新xlates和connection信息。如果某段时间有大量的连接建立和拆除,256字节的block可能会降到0,就是说从PIX可能没有和主PIX同步。这个时间如果不长,是可以接受的,但如果长时间维持在0,需要考虑升级到更高速的PIX了。
另外,日志信息也是通过256字节的block向外部送出的,注意通常不需要将日志的级别设置成debug.
pixfirewall#showblocks
SIZEMAXLOWCNT
4160015971600
80400399400
256500495499
1550144411701188
16384204815321538
showmemory
可以看出PIX的内存以及当前可用的内存。正常情况下,PIX的可用内存的变化幅度不应该太大。如果突然发现内存快用光了,要检查是否用攻击发生。可以用showconncount命令看当前PIX中有多少连接,如果PIX内存耗尽,最终会crash.
pixfirewall#showmemory
1073741824bytestotal,1022992384bytesfree
showxlatecount
显示当前通过PIX的变换数和最多达到的变换数。一个变换是指一个内部地址变换成一个外部合法地址。一台机器可能会与外部的多个目标建立连接,但这时只有一个变换。如果显示的变换数远大于内部的机器数,可能是受到了网络攻击。
pixfirewall#showxlatecount
84inuse,218mostused
showconncount
可以看当前的PIX的最大的连接数。一个connection是一个内部4层信息到外部地址的映射。当PIX收到一个SYN包,就建立一个connection.过高connection数意味着受到了攻击,这时如果用showmemory命令虽然连接数很高,但是并没有消耗掉PIX过多的内存资源。
pixfirewall#showconncount
2289inuse,44729mostused
showinterface
这条命令用来判断双工的匹配问题和电缆故障,也可以看出接口是否过载了。如果PIX的CPU资源耗尽了,那么1550字节的block会接近0,如果是千兆口,16384字节的block接近0。另外一个信号是”nobuffers”的值不断增加,它表明接口接收包的速率太快,PIX来不及处理,也没有足够的block去承载,已经有丢包产生了。如果”nobuffer”伴随着CPU的使用率升高,说明该考虑升级到性能更强的防火墙了。
当数据包进入接口时,被放在inputhardwarequeue中,如果该queue满了,被放在inputsoftwarequeue中。包然后从inputqueue中被放到block中等待PIXOS的处理,PIX决定把包放到哪个出口,即哪个outputhardwarequeue中,如果该queue满了,就放到outputsoftwarequeue中;如果每个软队列中的maxblocks都很大,就称之为”overrun”。常见的情况是入口和出口的数据传输速率不匹配,就会出现overrun,这时应该考虑升级接口了。
pixfirewall#showinterface
interfaceethernet0"inside"isup,lineprotocolisup
Hardwareisi82559ethernet,addressis0002.b31b.99ff
IPaddress9.9.9.1,subnetmask255.255.255.0
MTU1500bytes,BW100000Kbitfullduplex
4630packetsinput,803174bytes,0nobuffer
Received2broadcasts,0runts,0giants
0inputerrors,0CRC,0frame,0overrun,0ignored,0abort
4535packetsoutput,445424bytes,0underruns
0outputerrors,0collisions,0interfaceresets
0babbles,0latecollisions,0deferred
0lostcarrier,0nocarrier
inputqueue(curr/maxblocks):hardware(128/128)software(0/1)
outputqueue(curr/maxblocks):hardware(0/2)software(0/1)
如果是runts,inputerrors,CRCs或frameerrors在增加,可能是双工方式不匹配造成的或电缆故障。
showprocess
显示当前PIX中的活动的进程有什么。这样就可以看出什么进程使用了过多的CPU资源,什么进程没能使用CPU资源。为了得到这个信息,我们连续两次执行showprocess命令,间隔1分钟。对有所怀疑的进程,两次的Runtime值相减,时间差(单位是毫秒)就是该进程一分钟所占用的CPU资源。557poll进程通常是占用时间最多的进程,它负责询问以太接口看是否有包需要处理。
我们用showcpuusage命令看PIX的负载情况。
一般来说,CPU达到80%时,性能会受到影响;超过90%时,会有丢包的情况发生。
这个时候,我们可以通过命令showprocess来看看什么进程在消耗CPU资源,
查出该进程后找相应的办法处理。
如果CPU的使用率并不高,但是还是觉得有丢包的情况发生,
用showinterface命令检查是否有错包出现,即是否有双工匹配问题或电缆问题;
如果是"nobuffer"增加,同时CPU使用率并不高,说明接口的能力不能满足流量的需求;
如果buffer状况很好,检查block,如果1550字节或16384字节的block接近0了,
说明PIX由于太忙开始丢包了,这时CPU也会很高。
如果发现在PIX建立新的连接很困难,用命令showconncount检查当前的连接数:
如果很高了,用showmemory命令看看内存的状况,
如果内存很少了,用showconn命令或showlocal-host命令
查一下连接数如此多的原因,很可能是遭遇DoS攻击了。
另外,showtraffic命令显示每个接口处理的包数和字节数;
showperfmon命令进一步将traffic分成不同的类型。
|
|