Die PIX/ASA-Version 7.2(1) ist jetzt gut acht Monate verfügbar, vor über zwei Monaten kam die Aktualisierung auf die Version 7.2(2), bei der jede Menge Bugs ausgebaut wurden (ok, mindestens ein Bug in der Verarbeitung der VPN-Filter ist dazugekommen). Ist es da nicht an der Zeit über ein Update nachzudenken, um in den Genuss des Packet-Tracers zu kommen? Dies ist eine der besten Erweiterungen, auf die viele schon lange gewartet haben.
Der Packet-Tracer gibt Antwort auf die Frage “Kann Host A mit Protokoll B auf Host C zugreifen?”. Früher mußte man sich entweder sehr sicher sein es richtig konfiguriert zu haben, oder aber man mußte es einfach testen. Heute kann man über den Packet-Tracer erkennen, ob die PIX/ASA ein bestimmtes Paket durchgelassen hätte.
Der Packet-Tracer kann vom CLI aus, oder im ASDM genutzt werden. In letzterem sogar mit einer hübschen (aber nutzlosen 😉 ) Animation. In diesem Beispiel zeige ich die Verwendung im CLI:
Die Syntax aus der Online-Hilfe:
packet-tracer input [src_int] protocol src_addr src_port dest_addr dest_port
Die benötigten Parameter sind also
- das Interface, auf dem das Paket ankommen soll
- das Protokoll icmp, tcp, udp oder rawip
- die Quelladresse mit Quellport
- die Zieladresse mit Zielport
Ein paar Beispiele was einem der Packet-Tracer verrät:
act/pix# packet-tracer input outside tcp 1.2.3.4 1234 192.168.2.11 110
...
Phase: 4
Type: ACCESS-LIST
Subtype:
Result: DROP
Config:
Implicit Rule
Additional Information:
Result:
input-interface: outside
input-status: up
input-line-status: up
output-interface: outside
output-status: up
output-line-status: up
Action: drop
Drop-reason: (acl-drop) Flow is denied by configured rule
act/pix#
Die komplette ACL auf dem Interface outside wurde durchsucht und kein passender Match gefunden. Das implizite Deny hätte das Paket verworfen.
act/pix# packet-tracer input dmz-wan tcp 1.2.3.4 1234 5.6.7.8 110
...
Phase: 4
Type: ROUTE-LOOKUP
Subtype: input
Result: ALLOW
Config:
Additional Information:
in 0.0.0.0 0.0.0.0 outside
Result:
input-interface: dmz-wan
input-status: up
input-line-status: up
output-interface: outside
output-status: up
output-line-status: up
Action: drop
Drop-reason: (rpf-violated) Reverse-path verify failed
act/pix#
Die IP-Adresse 1.2.3.4 ist nach der Routing-Tabelle nicht am Interface dmz-wan zu finden. Der RPF-Check hätte das Paket verworfen.
act/pix# packet-tracer input dmz-wan tcp 10.2.2.2 1234 5.6.7.8 80
...
Phase: 8
Type: NAT
Subtype:
Result: DROP
Config:
nat (dmz-wan) 0 access-list nat0-dmz-wan
nat-control
match ip dmz-wan any outside any
no translation group, implicit deny
policy_hits = 41443
Additional Information:
Result:
input-interface: dmz-wan
input-status: up
input-line-status: up
output-interface: dmz-wan
output-status: up
output-line-status: up
Action: drop
Drop-reason: (acl-drop) Flow is denied by configured rule
act/pix#
Das Paket wäre von der ACL erlaubt worden (Access-List-Check ist Phase 4), aber für dieses Paket gibt es keine NAT-Regel und NAT-Control ist eingeschaltet.
act/pix# packet-tracer input inside tcp 10.1.1.100 1234 10.234.234.234 80
...
Phase: 11
Type: VPN
Subtype: encrypt
Result: DROP
Config:
Additional Information:
Result:
input-interface: inside
input-status: up
input-line-status: up
output-interface: inside
output-status: up
output-line-status: up
Action: drop
Drop-reason: (acl-drop) Flow is denied by configured rule
act/pix#
Hier täuscht sich der Packet-Tracer. Die IP 10.234.234.234 befindet sich hinter einer nicht aktiven VPN-Verbindung, die aber korrekt konfiguriert ist. Aber da keine SAs bestehen könnte der Packet-Tracer das Paker nicht verschlüsseln. Ein paar Sekunden später sieht der gleiche Test folgendermaßen aus:
act/pix# packet-tracer input inside tcp 10.1.1.100 1234 10.234.234.234 80
...
Phase: 11
Type: VPN
Subtype: encrypt
Result: ALLOW
Config:
Additional Information:
Phase: 12
Type: ACCESS-LIST
Subtype: ipsec-user
Result: DROP
Config:
Additional Information:
Result:
input-interface: inside
input-status: up
input-line-status: up
output-interface: inside
output-status: up
output-line-status: up
Action: drop
Drop-reason: (acl-drop) Flow is denied by configured rule
act/pix#
Jetzt könnte das Paket verschlüsselt werden, allerdings verbietet der VPN-Filter, der für diese Tunnel-Group konfiguriert ist die Kommunikation.
Hier ein komplettes Beispiel mit VPN, bei dem die Kommunikation erlaubt wäre
act/pix# packet-tracer input inside tcp 10.1.1.100 80 10.234.234.234 1234
Phase: 1
Type: FLOW-LOOKUP
Subtype:
Result: ALLOW
Config:
Additional Information:
Found no matching flow, creating a new flow
Phase: 2
Type: ROUTE-LOOKUP
Subtype: input
Result: ALLOW
Config:
Additional Information:
in 10.234.234.0 255.255.255.0 outside
Phase: 3
Type: ROUTE-LOOKUP
Subtype: input
Result: ALLOW
Config:
Additional Information:
in 10.1.1.0 255.255.255.0 inside
Phase: 4
Type: ACCESS-LIST
Subtype: log
Result: ALLOW
Config:
access-group inside-in in interface inside
access-list inside-in extended permit ip object-group internal-network any
object-group network internal-network
network-object 10.1.1.0 255.255.255.0
Additional Information:
Phase: 5
Type: IP-OPTIONS
Subtype:
Result: ALLOW
Config:
Additional Information:
Phase: 6
Type: FOVER
Subtype: standby-update
Result: ALLOW
Config:
Additional Information:
Phase: 7
Type: NAT-EXEMPT
Subtype:
Result: ALLOW
Config:
nat (inside) 0 access-list nat0-inside
nat-control
match ip inside 10.0.0.0 255.0.0.0 outside 10.0.0.0 255.0.0.0
NAT exempt
translate_hits = 22830, untranslate_hits = 168671
Additional Information:
Phase: 8
Type: NAT
Subtype:
Result: ALLOW
Config:
nat (inside) 0 access-list nat0-inside
nat (inside) 10 10.1.1.0 255.255.255.0
nat-control
match ip inside 10.1.1.0 255.255.255.0 outside any
dynamic translation to pool 10 (192.168.2.254 [Interface PAT])
translate_hits = 28944, untranslate_hits = 12
Additional Information:
Phase: 9
Type: NAT
Subtype: host-limits
Result: ALLOW
Config:
nat (inside) 0 access-list nat0-inside
nat (inside) 10 10.1.1.0 255.255.255.0
nat-control
match ip inside 10.1.1.0 255.255.255.0 outside any
dynamic translation to pool 10 (192.168.2.254 [Interface PAT])
translate_hits = 28944, untranslate_hits = 12
Additional Information:
Phase: 10
Type: VPN
Subtype: encrypt
Result: ALLOW
Config:
Additional Information:
Phase: 11
Type: ACCESS-LIST
Subtype: ipsec-user
Result: ALLOW
Config:
Additional Information:
Phase: 12
Type: VPN
Subtype: ipsec-tunnel-flow
Result: ALLOW
Config:
Additional Information:
Phase: 13
Type: IP-OPTIONS
Subtype:
Result: ALLOW
Config:
Additional Information:
Phase: 14
Type: FLOW-CREATION
Subtype:
Result: ALLOW
Config:
Additional Information:
New flow created with id 1918239, packet dispatched to next module
Phase: 15
Type: FLOW-LOOKUP
Subtype:
Result: ALLOW
Config:
Additional Information:
Found no matching flow, creating a new flow
Phase: 16
Type: ACCESS-LIST
Subtype:
Result: ALLOW
Config:
Implicit Rule
Additional Information:
Phase: 17
Type: FLOW-CREATION
Subtype:
Result: ALLOW
Config:
Additional Information:
New flow created with id 1918240, packet dispatched to next module
Phase: 18
Type: ROUTE-LOOKUP
Subtype: output and adjacency
Result: ALLOW
Config:
Additional Information:
found next-hop 192.168.2.250 using egress ifc outside
adjacency Active
next-hop mac address 0000.0c08.ac01 hits 322945
Result:
input-interface: inside
input-status: up
input-line-status: up
output-interface: inside
output-status: up
output-line-status: up
Action: allow
act/pix#
Und hier noch ein Beispiel eines erfolgreichen Traces vom Outside-Interface zum Webserver in der DMZ:
act/pix# packet-tracer input outside tcp 1.2.3.4 1234 192.168.2.11 80
Phase: 1
Type: FLOW-LOOKUP
Subtype:
Result: ALLOW
Config:
Additional Information:
Found no matching flow, creating a new flow
Phase: 2
Type: UN-NAT
Subtype: static
Result: ALLOW
Config:
static (dmz,outside) 192.168.2.11 10.10.10.10 netmask 255.255.255.255 dns
nat-control
match ip dmz host 10.10.10.10 outside any
static translation to 192.168.2.11
translate_hits = 313235, untranslate_hits = 12786
Additional Information:
NAT divert to egress interface dmz
Untranslate 192.168.2.11/0 to 10.10.10.10/0 using netmask 255.255.255.255
Phase: 3
Type: ROUTE-LOOKUP
Subtype: input
Result: ALLOW
Config:
Additional Information:
in 0.0.0.0 0.0.0.0 outside
Phase: 4
Type: ACCESS-LIST
Subtype: log
Result: ALLOW
Config:
access-group out-in in interface outside
access-list out-in extended permit tcp any host object-group Einstein-outside eq www
object-group network Einstein-outside
network-object host 192.168.2.11
network-object host 192.168.2.12
Additional Information:
Phase: 5
Type: IP-OPTIONS
Subtype:
Result: ALLOW
Config:
Additional Information:
Phase: 6
Type: INSPECT
Subtype: np-inspect
Result: ALLOW
Config:
class-map inspection_default
match default-inspection-traffic
policy-map global_policy
class inspection_default
inspect http
service-policy global_policy global
Additional Information:
Phase: 7
Type: FOVER
Subtype: standby-update
Result: ALLOW
Config:
Additional Information:
Phase: 8
Type: NAT
Subtype: rpf-check
Result: ALLOW
Config:
static (dmz,outside) 192.168.2.11 10.10.10.10 netmask 255.255.255.255 dns
nat-control
match ip dmz host 10.10.10.10 outside any
static translation to 192.168.2.11
translate_hits = 313235, untranslate_hits = 12786
Additional Information:
Phase: 9
Type: NAT
Subtype: host-limits
Result: ALLOW
Config:
static (dmz,outside) 192.168.2.11 10.10.10.10 netmask 255.255.255.255 dns
nat-control
match ip dmz host 10.10.10.10 outside any
static translation to 192.168.2.11
translate_hits = 313235, untranslate_hits = 12786
Additional Information:
Phase: 10
Type: IP-OPTIONS
Subtype:
Result: ALLOW
Config:
Additional Information:
Phase: 11
Type: FLOW-CREATION
Subtype:
Result: ALLOW
Config:
Additional Information:
New flow created with id 1913085, packet dispatched to next module
Phase: 12
Type: ROUTE-LOOKUP
Subtype: output and adjacency
Result: ALLOW
Config:
Additional Information:
found next-hop 10.10.10.10 using egress ifc dmz
adjacency Active
next-hop mac address 000d.56a6.cb5f hits 173
Result:
input-interface: outside
input-status: up
input-line-status: up
output-interface: outside
output-status: up
output-line-status: up
Action: allow
act/pix#
Überzeugt vom Packet-Tracer? Viel Spaß beim Updaten … 😉
One Reply to “Der Cisco PIX/ASA 7.2 Packet-Tracer”