本文檔提供使用Cisco ASA 5500系列自適應安全裝置(ASA)和Cisco PIX 500系列安全裝置時的故障排除思路和建議。通常,當應用程式或網路源中斷或不可用時,防火牆(PIX或ASA)往往成為主要目標,並成為中斷的原因。透過在ASA或PIX上進行一些測試,管理員可以確定ASA/PIX是否導致了問題。
要瞭解有關Cisco安全裝置上與介面相關的故障排除的詳細資訊,請參閱PIX/ASA:透過Cisco安全裝置建立連線並排除連線故障。
注意:本文檔重點介紹ASA和PIX。在ASA或PIX上完成故障排除後,可能需要對其他裝置(路由器、交換機、伺服器等)進行其他故障排除。
本文件沒有特定需求。
本文檔中的資訊基於採用OS 7.2.1和8.3的Cisco ASA 5510。
本文中的資訊是根據特定實驗室環境內的裝置所建立。文中使用到的所有裝置皆從已清除(預設)的組態來啟動。如果您的網路正在作用,請確保您已瞭解任何指令可能造成的影響。
本文件也適用於以下硬體和軟體版本:
ASA和PIX OS 7.0、7.1、8.3及更高版本
防火牆服務模組(FWSM) 2.2、2.3和3.1
注意:特定命令和語法因軟體版本而異。
如需文件慣例的詳細資訊,請參閱思科技術提示慣例。
本示例假設ASA或PIX處於生產狀態。ASA/PIX配置可以相對簡單(只有50行配置)或複雜(數百至數千行配置行)。使用者(客戶端)或伺服器可以位於安全網路(內部)或不安全網路(DMZ或外部)上。
ASA從此配置開始。該配置旨在為實驗室提供一個參考點。
ASA初始配置 |
---|
ciscoasa#show running-config : Saved : ASA Version 7.2(1) ! hostname ciscoasa enable password 8Ry2YjIyt7RRXU24 encrypted names ! interface Ethernet0/0 nameif outside security-level 0 ip address 172.22.1.160 255.255.255.0 ! interface Ethernet0/1 nameif inside security-level 100 ip address 192.168.1.1 255.255.255.0 ! interface Ethernet0/2 nameif dmz security-level 50 ip address 10.1.1.1 255.255.255.0 ! interface Management0/0 shutdown no nameif no security-level no ip address ! passwd 2KFQnbNIdI.2KYOU encrypted ftp mode passive access-list outside_acl extended permit tcp any host 172.22.1.254 eq www access-list inside_acl extended permit icmp 192.168.1.0 255.255.255.0 any access-list inside_acl extended permit tcp 192.168.1.0 255.255.255.0 any eq www access-list inside_acl extended permit tcp 192.168.1.0 255.255.255.0 any eq telnet pager lines 24 mtu outside 1500 mtu inside 1500 mtu dmz 1500 no asdm history enable arp timeout 14400 global (outside) 1 172.22.1.253 nat (inside) 1 192.168.1.0 255.255.255.0 !--- The above NAT statements are replaced by the following statements !--- for ASA 8.3 and later. object network obj-192.168.1.0 subnet 192.168.1.0 255.255.255.0 nat (inside,outside) dynamic 172.22.1.253 static (inside,outside) 192.168.1.100 172.22.1.254 netmask 255.255.255.255 !--- The above Static NAT statement is replaced by the following statements !--- for ASA 8.3 and later. object network obj-172.22.1.254 host 172.22.1.254 nat (inside,outside) static 192.168.1.100 access-group outside_acl in interface outside access-group inside_acl in interface inside timeout xlate 3:00:00 timeout conn 1:00:00 half-closed 0:10:00 udp 0:02:00 icmp 0:00:02 timeout sunrpc 0:10:00 h323 0:05:00 h225 1:00:00 mgcp 0:05:00 mgcp-pat 0:05:00 timeout sip 0:30:00 sip_media 0:02:00 sip-invite 0:03:00 sip-disconnect 0:02:00 timeout uauth 0:05:00 absolute no snmp-server location no snmp-server contact snmp-server enable traps snmp authentication linkup linkdown coldstart telnet timeout 5 ssh timeout 5 console timeout 0 ! class-map inspection_default match default-inspection-traffic ! ! policy-map type inspect dns preset_dns_map parameters message-length maximum 512 policy-map global_policy class inspection_default inspect dns preset_dns_map inspect ftp inspect h323 h225 inspect h323 ras inspect netbios inspect rsh inspect rtsp inspect skinny inspect esmtp inspect sqlnet inspect sunrpc inspect tftp inspect sip inspect xdmcp ! service-policy global_policy global prompt hostname context Cryptochecksum:d41d8cd98f00b204e9800998ecf8427e : end |
使用者與IT部門聯絡並報告應用程式X不再工作。事件將上報給ASA/PIX管理員。管理員對此特定應用程式知之甚少。使用ASA/PIX後,管理員可發現應用X使用的埠和協定,以及問題可能的原因。
ASA/PIX管理員需要從使用者處收集儘可能多的資訊。有用的資訊包括:
源IP地址-通常是使用者的工作站或電腦。
目標IP地址-使用者或應用程式嘗試連線的伺服器IP地址。
應用程式使用的埠和協定
如果能夠找到這些問題的答案,通常管理員是幸運的。對於此示例,管理員無法收集任何資訊。對ASA/PIX syslog消息進行回顧是理想做法,但如果管理員不知道要查詢什麼,則很難找到問題。
發現使用者的IP地址的方法有很多種。本文檔涉及ASA和PIX,因此本示例使用ASA和PIX來發現IP地址。
使用者嘗試與ASA/PIX通訊。此通訊可以是ICMP、Telnet、SSH或HTTP。選擇的協定在ASA/PIX上的活動應該有限。在本特定示例中,使用者ping ASA的內部介面。
管理員需要設定一個或多個這些選項,然後讓使用者ping ASA的內部介面。
系統日誌
確保已啟用日誌記錄。日誌記錄級別需設定為debug。日誌記錄可以傳送到不同的位置。本示例使用ASA日誌緩衝區。在生產環境中可能需要外部日誌伺服器。
ciscoasa(config)#logging enable ciscoasa(config)#logging buffered debugging
使用者ping ASA的內部介面(ping 192.168.1.1)。將顯示此輸出。
ciscoasa#show logging !--- Output is suppressed. %ASA-6-302020: Built ICMP connection for faddr 192.168.1.50/512 gaddr 192.168.1.1/0 laddr 192.168.1.1/0 %ASA-6-302021: Teardown ICMP connection for faddr 192.168.1.50/512 gaddr 192.168.1.1/0 laddr 192.168.1.1/0 !--- The user IP address is 192.168.1.50.
ASA捕獲功能
管理員需要建立一個訪問清單,定義ASA需要捕獲哪些流量。定義訪問清單後,capture命令將合併訪問清單並將其應用於介面。
ciscoasa(config)#access-list inside_test permit icmp any host 192.168.1.1 ciscoasa(config)#capture inside_interface access-list inside_test interface inside
使用者ping ASA的內部介面(ping 192.168.1.1)。將顯示此輸出。
ciscoasa#show capture inside_interface 1: 13:04:06.284897 192.168.1.50 > 192.168.1.1: icmp: echo request !--- The user IP address is 192.168.1.50.
注意:若要將擷取檔案下載到ethereal等系統,您可以執行如以下輸出所示的工作。
!--- Open an Internet Explorer and browse with this https link format: https://[/ ]/capture/ /pcap
要詳細瞭解ASA中的資料包捕獲,請參閱ASA/PIX:使用CLI和ASDM進行資料包捕獲的配置示例。
除錯
debug icmp trace命令用於捕獲使用者的ICMP流量。
ciscoasa#debug icmp trace
使用者ping ASA的內部介面(ping 192.168.1.1)。此輸出顯示在控制檯上。
ciscoasa# !--- Output is suppressed. ICMP echo request from 192.168.1.50 to 192.168.1.1 ID=512 seq=5120 len=32 ICMP echo reply from 192.168.1.1 to 192.168.1.50 ID=512 seq=5120 len=32 !--- The user IP address is 192.168.1.50.
要停用debug icmp trace,請使用以下命令之一:
no debug icmp trace
undebug icmp trace
undebug all、Undebug all或un all
這三個選項均可幫助管理員確定源IP地址。在本例中,使用者的源IP地址是192.168.1.50。管理員已準備好了解有關應用程式X的詳細資訊並確定問題的原因。
透過參考本文檔步驟1部分中列出的資訊,管理員現在知道了應用程式X會話的源。管理員已準備好進一步瞭解應用程式X,並開始找出問題可能出現在的位置。
ASA/PIX管理員需要為ASA做好至少一項上述建議的準備。管理員準備好之後,使用者將啟動應用程式X並限制所有其他活動,因為其他使用者活動可能會造成混亂或誤導ASA/PIX管理員。
監控系統日誌消息。
搜尋您在步驟1中找到的使用者的源IP地址。使用者啟動應用程式X。ASA管理員發出show logging命令並檢視輸出。
ciscoasa#show logging !--- Output is suppressed. %ASA-7-609001: Built local-host inside:192.168.1.50 %ASA-6-305011: Built dynamic TCP translation from inside:192.168.1.50/1107 to outside:172.22.1.254/1025 %ASA-6-302013: Built outbound TCP connection 90 for outside:172.22.1.1/80 (172.22.1.1/80) to inside:192.168.1.50/1107 (172.22.1.254/1025)
日誌顯示目的IP地址為172.22.1.1,協定為TCP,目的埠為HTTP/80,流量傳送到外部介面。
修改捕獲過濾器。
先前使用了access-list inside_test命令,此處也將用到。
ciscoasa(config)#access-list inside_test permit ip host 192.168.1.50 any !--- This ACL line captures all traffic from 192.168.1.50 !--- that goes to or through the ASA. ciscoasa(config)#access-list inside_test permit ip any host 192.168.1.50 any !--- This ACL line captures all traffic that leaves !--- the ASA and goes to 192.168.1.50. ciscoasa(config)#no access-list inside_test permit icmp any host 192.168.1.1 ciscoasa(config)#clear capture inside_interface !--- Clears the previously logged data. !--- The no capture inside_interface removes/deletes the capture.
使用者啟動應用程式X。然後,ASA管理員發出show capture inside_interface命令並檢視輸出。
ciscoasa(config)#show capture inside_interface 1: 15:59:42.749152 192.168.1.50.1107 > 172.22.1.1.80: S 3820777746:3820777746(0) win 65535 <mss 1460,nop,nop,sackOK> 2: 15:59:45.659145 192.168.1.50.1107 > 172.22.1.1.80: S 3820777746:3820777746(0) win 65535 <mss 1460,nop,nop,sackOK> 3: 15:59:51.668742 192.168.1.50.1107 > 172.22.1.1.80: S 3820777746:3820777746(0) win 65535 <mss 1460,nop,nop,sackOK>
捕獲的流量為管理員提供了幾項重要資訊:
目的地址- 172.22.1.1
埠號- 80/http
Protocol - TCP(注意「S」或syn標誌)
此外,管理員還知道應用X的資料流量確實到達ASA。
如果輸出已經是此show capture inside_interface命令的輸出,則應用流量從未到達ASA或者捕獲過濾器未設定為捕獲流量:
ciscoasa#show capture inside_interface 0 packet captured 0 packet shown
在這種情況下,管理員應考慮調查使用者電腦以及使用者電腦與ASA之間路徑中的任何路由器或其他網路裝置。
注意:當流量到達介面時,capture命令會在所有ASA安全策略分析流量之前記錄資料。例如,訪問清單會拒絕介面上的所有傳入流量。capture命令仍會記錄流量。然後,ASA安全策略分析流量。
除錯
管理員不熟悉應用程式X,因此不知道要為應用程式X調查啟用哪些調試服務。此時,調試可能不是最佳的故障排除選項。
使用步驟2中收集的資訊,ASA管理員可獲得一些有價值的資訊。管理員知道流量到達ASA的內部介面、源IP地址、目標IP地址和X使用的服務應用程式(TCP/80)。從系統日誌中,管理員還知道最初允許通訊。
ASA管理員希望確認應用X流量已離開ASA,並監控來自應用X伺服器的所有返回流量。
監控系統日誌消息。
過濾源IP地址(192.168.1.50)或目標IP地址(172.22.1.1)的系統日誌消息。從命令列,過濾syslog消息看起來像show logging | include 192.168.1.50或show logging | include 172.22.1.1。在此示例中,在沒有過濾器的情況下使用show logging命令。為了便於閱讀,輸出被抑制。
ciscoasa#show logging !--- Output is suppressed. %ASA-7-609001: Built local-host inside:192.168.1.50 %ASA-7-609001: Built local-host outside:172.22.1.1 %ASA-6-305011: Built dynamic TCP translation from inside:192.168.1.50/1107 to outside:172.22.1.254/1025 %ASA-6-302013: Built outbound TCP connection 90 for outside:172.22.1.1/80 (172.22.1.1/80) to inside:192.168.1.50/1107 (172.22.1.254/1025) %ASA-6-302014: Teardown TCP connection 90 for outside:172.22.1.1/80 to inside:192.168.1.50/1107 duration 0:00:30 bytes 0 SYN Timeout %ASA-7-609002: Teardown local-host outside:172.22.1.1 duration 0:00:30 %ASA-6-305012: Teardown dynamic TCP translation from inside:192.168.1.50/1107 to outside:172.22.1.254/1025 duration 0:01:00 %ASA-7-609002: Teardown local-host inside:192.168.1.50 duration 0:01:00
系統日誌消息指示連線由於SYN超時而關閉。這會告知管理員ASA未收到任何應用程式X伺服器響應。系統日誌消息終止原因可能有所不同。
由於三次握手完成後30秒後發生強制連線終止,因此記錄了SYN超時。如果伺服器無法響應連線請求,並且大多數情況下與PIX/ASA上的配置無關,則通常會發生此問題。
要解決此問題,請參閱以下核對清單:
確保靜態命令輸入正確,並且與其它靜態命令沒有重疊,例如,
static (inside,outside) x.x.x.x y.y.y.y netmask 255.255.255.255
ASA 8.3及更高版本中的靜態NAT可以如下所示進行配置:
object network obj-y.y.y.y host y.y.y.y nat (inside,outside) static x.x.x.x
確儲存在訪問清單,以允許從外部訪問全局IP地址,並確保該訪問清單已繫結到介面:
access-list OUTSIDE_IN extended permit tcp any host x.x.x.x eq www access-group OUTSIDE_IN in interface outside
要成功連線到伺服器,伺服器上的預設網關必須指向PIX/ASA的DMZ介面。
有關syslog消息的詳細資訊,請參閱ASA系統消息。
建立新的擷取篩選。
從之前捕獲的流量和系統日誌消息中,管理員知道應用程式X應透過外部介面離開ASA。
ciscoasa(config)#access-list outside_test permit tcp any host 172.22.1.1 eq 80 !--- When you leave the source as 'any', it allows !--- the administrator to monitor any network address translation (NAT). ciscoasa(config)#access-list outside_test permit tcp host 172.22.1.1 eq 80 any !--- When you reverse the source and destination information, !--- it allows return traffic to be captured. ciscoasa(config)#capture outside_interface access-list outside_test interface outside
使用者需要啟動應用程式X的新會話。使用者啟動新的應用程式X會話後,ASA管理員需要在ASA上發出show capture outside_interface命令。
ciscoasa(config)#show capture outside_interface 3 packets captured 1: 16:15:34.278870 172.22.1.254.1026 > 172.22.1.1.80: S 1676965539:1676965539(0) win 65535 <mss 1380,nop,nop,sackOK> 2: 16:15:44.969630 172.22.1.254.1027 > 172.22.1.1.80: S 990150551:990150551(0) win 65535 <mss 1380,nop,nop,sackOK> 3: 16:15:47.898619 172.22.1.254.1027 > 172.22.1.1.80: S 990150551:990150551(0) win 65535 <mss 1380,nop,nop,sackOK> 3 packets shown
捕獲顯示離開外部介面的流量,但不顯示來自172.22.1.1伺服器的任何應答流量。此捕獲在資料離開ASA時顯示資料。
使用Packet Tracer選項。
從前面幾節,ASA管理員已經瞭解了足夠的資訊,能夠使用ASA中的Packet Tracer選項。
注意:從版本7.2開始,ASA支援Packet Tracer命令。
ciscoasa#packet-tracer input inside tcp 192.168.1.50 1025 172.22.1.1 http !--- This line indicates a source port of 1025. If the source !--- port is not known, any number can be used. !--- More common source ports typically range !--- between 1025 and 65535. Phase: 1 Type: CAPTURE Subtype: Result: ALLOW Config: Additional Information: MAC Access list Phase: 2 Type: ACCESS-LIST Subtype: Result: ALLOW Config: Implicit Rule Additional Information: MAC Access list Phase: 3 Type: FLOW-LOOKUP Subtype: Result: ALLOW Config: Additional Information: Found no matching flow, creating a new flow Phase: 4 Type: ROUTE-LOOKUP Subtype: input Result: ALLOW Config: Additional Information: in 172.22.1.0 255.255.255.0 outside Phase: 5 Type: ACCESS-LIST Subtype: log Result: ALLOW Config: access-group inside_acl in interface inside access-list inside_acl extended permit tcp 192.168.1.0 255.255.255.0 any eq www Additional Information: Phase: 6 Type: IP-OPTIONS Subtype: Result: ALLOW Config: Additional Information: Phase: 7 Type: CAPTURE Subtype: Result: ALLOW Config: Additional Information: Phase: 8 Type: NAT Subtype: Result: ALLOW Config: nat (inside) 1 192.168.1.0 255.255.255.0 match ip inside 192.168.1.0 255.255.255.0 outside any dynamic translation to pool 1 (172.22.1.254) translate_hits = 6, untranslate_hits = 0 Additional Information: Dynamic translate 192.168.1.50/1025 to 172.22.1.254/1028 using netmask 255.255.255.255 Phase: 9 Type: NAT Subtype: host-limits Result: ALLOW Config: nat (inside) 1 192.168.1.0 255.255.255.0 match ip inside 192.168.1.0 255.255.255.0 outside any dynamic translation to pool 1 (172.22.1.254) translate_hits = 6, untranslate_hits = 0 Additional Information: Phase: 10 Type: CAPTURE Subtype: Result: ALLOW Config: Additional Information: Phase: 11 Type: CAPTURE Subtype: Result: ALLOW Config: Additional Information: Phase: 12 Type: IP-OPTIONS Subtype: Result: ALLOW Config: Additional Information: Phase: 13 Type: CAPTURE Subtype: Result: ALLOW Config: Additional Information: Phase: 14 Type: FLOW-CREATION Subtype: Result: ALLOW Config: Additional Information: New flow created with id 94, packet dispatched to next module Phase: 15 Type: ROUTE-LOOKUP Subtype: output and adjacency Result: ALLOW Config: Additional Information: found next-hop 172.22.1.1 using egress ifc outside adjacency Active next-hop mac address 0030.a377.f854 hits 11 !--- The MAC address is at Layer 2 of the OSI model. !--- This tells the administrator the next host !--- that should receive the data packet. Result: input-interface: inside input-status: up input-line-status: up output-interface: outside output-status: up output-line-status: up Action: allow
Packet-tracer命令最重要的輸出是最後一行,即Action: allow。
步驟3中的三個選項均向管理員顯示ASA不對應用程式X問題負責。應用X流量離開ASA,ASA未收到應用X伺服器的應答。
有許多元件可讓應用程式X為使用者正確運作。這些元件包括使用者的電腦、應用程式X客戶端、路由、訪問策略和應用程式X伺服器。在上一個示例中,我們證明ASA接收和轉發應用X流量。伺服器和應用程式X管理員現在應該參與其中。管理員應驗證應用服務是否正在運行,檢視伺服器上的任何日誌,並驗證伺服器和應用X是否接收了使用者的流量。
您收到以下錯誤消息:
%PIX|ASA-5-507001: Terminating TCP-Proxy connection from interface_inside:source_address/source_port to interface_outside:dest_address/dest_port - reassembly limit of limit bytes exceeded
解釋:當在組合TCP資料段期間超過重組緩衝區限制時,會顯示此消息。
source_address/source_port -源IP地址和啟動連線的資料包的源埠。
dest_address/dest_port -目標IP地址和啟動連線的資料包的目標埠。
interface_inside -啟動連線的資料包所到達介面的名稱。
interface_outside -啟動連線的資料包所退出介面的名稱。
limit -流量類別的已配置初期連線限制。
此問題的解決方法是停用安全裝置中的RTSP檢查,如下所示。
policy-map global_policy class inspection_default inspect dns migrated_dns_map_1 inspect ftp inspect h323 h225 inspect h323 ras inspect rsh no inspect rtsp
如需詳細資訊,請參閱Cisco錯誤ID CSCsl15229(僅限註冊客戶)。
ASA丟棄流量,顯示error:%ASA-6-110003: Routing failed to locate next-hop for protocol from src interface:src IP/src port to dest interface:dest IP/dest port錯誤消息。
當ASA嘗試在介面路由表上查詢下一跳時,會發生此錯誤。通常,當ASA具有一個到某個介面的轉換(xlate)和一個指向另一個介面的路由時,會收到此消息。檢查NAT語句的配置是否錯誤。解決配置錯誤可能會解決此錯誤。
連線被ASA阻止,並且收到以下錯誤消息:
%ASA-5-305013: Asymmetric NAT rules matched for forward and reverse flows; Connection protocol src interface_name:source_address/source_port dest interface_name:dest_address/dest_port denied due to NAT reverse path failure.
執行NAT時,ASA還會嘗試反轉資料包並檢查此操作是否影響任何轉換。如果它未到達任何或不同的NAT轉換,則存在不匹配。當為具有相同源和目標的出站和傳入流量配置不同的NAT規則時,您最常看到此錯誤消息。檢查相關流量的NAT語句。
此錯誤表示位於ASA上的伺服器的連線已達到其最大限制。這可能表示對您網路中的伺服器發起了DoS攻擊。在ASA上使用MPF並降低初期連線限制。此外,請啟用Dead Connection Detection (DCD)。請參閱此配置片段:
class-map limit match access-list limit ! policy-map global_policy class limit set connection embryonic-conn-max 50 set connection timeout embryonic 0:00:10 dcd ! access-list limit line 1 extended permit tcp any host x.x.x.x
啟用反向路徑檢查時,會收到此日誌訊息。發出以下命令可解決問題並停用反向路徑檢查:
no ip verify reverse-path interface
在ASA上收到此錯誤消息:
%ASA-4-733100: [Miralix Licen 3000] drop rate-1 exceeded. Current burst rate is 100 per second, max configured rate is 10; Current average rate is 4 per second, max configured rate is 5; Cumulative total count is 2526
由於檢測到異常流量行為時的預設配置,威脅檢測將生成此消息。此消息重點介紹作為TCP/UDP埠的Miralix Licen 3000。找到使用埠3000的裝置。檢查ASDM圖形統計資訊以進行威脅檢測,並驗證排名靠前的攻擊,以檢視其是否顯示埠3000和源IP地址。如果裝置是合法裝置,您可以在ASA上提高基本威脅檢測率,以解決此錯誤消息。
修訂 | 發佈日期 | 意見 |
---|---|---|
1.0 |
17-Oct-2006 |
初始版本 |