rom1980
Goto Top

Cisco PIX 515 - IPSec spoof - Problem

Ich bin jetzt schon seit ein paar Tagen am verzweifeln, ich hoffe jemand kann mir helfen.

Ich bin gerade dabei unsere PIX 515 neu zu konfigurieren. Remote IPSec Zugriff soll jetzt genutzt werden, und zwar für den gesamten Internettraffic der User, es soll also auch der allgemeine Traffic durch den Tunnel geroutet werden. Der Zugriff auf die Hosts am inside-Interface und auf die Konsole (ssh) klappt schon, allerdings klappt der Zugriff auf externe Webserver, Mailserver etc. nicht durch den Tunnel. Bei einem Packet-Tracer kommt eine IPSec Spoof Meldung. Hoffentlich kennt jemand das Problem. Vielen Dank schonmal!

Die Konfig und Infos über die bestehende VPN-Verbindung:

Konfiguration:

outside 142.168.178.250 255.255.255.0 (öffentliche IP)
inside 10.10.1.1 255.255.240.0 (private IP)
dmz 142.168.180.1 255.255.255.240 (öffentliche IP)
Pool fur VPN (10.10.17.1-10.10.17.254)

sh run::

PIX Version 8.0(2)
!
hostname fw1234
enable password xxxxxxxxxxxxxx encrypted
names
!
interface Ethernet0
description WAN Interface
nameif outside
security-level 0
ip address 142.168.178.250 255.255.255.0
!
interface Ethernet1
description Internes Netz
nameif inside
security-level 100
ip address 10.10.1.1 255.255.240.0
!
interface Ethernet2
description DMZ1
shutdown
nameif DMZ1
security-level 50
ip address 142.168.180.1 255.255.255.240
!
interface Ethernet3
shutdown
no nameif
no security-level
no ip address
!
interface Ethernet4
shutdown
no nameif
no security-level
no ip address
!
interface Ethernet5
shutdown
no nameif
no security-level
no ip address
!
passwd xxxxxxxxxxxxxx encrypted
ftp mode passive
clock timezone CEST 1
clock summer-time CEDT recurring last Sun Mar 2:00 last Sun Oct 3:00
dns domain-lookup outside
dns server-group DefaultDNS
retries 5
timeout 7
name-server 193.25.2.2
name-server 83.7.2.2
dns server-group wdddefault
retries 5
timeout 7
name-server 193.25.2.2
name-server 83.7.2.2
domain-name wwdd.de
same-security-traffic permit intra-interface
access-list 101 extended permit ip 10.10.0.0 255.255.240.0 10.10.17.0 255.255.255.0
access-list outside_access_out extended permit ip any any
access-list outside_access_in extended permit ip any any
pager lines 58
logging enable
logging buffered debugging
logging asdm informational
logging queue 8192
mtu outside 1500
mtu inside 1500
mtu DMZ1 1500
ip local pool vpnpoolwdd 10.10.17.1-10.10.17.254
no failover
icmp unreachable rate-limit 1 burst-size 1
asdm image flash:/asdm-602.bin
asdm history enable
arp timeout 14400
global (outside) 1 interface
nat (outside) 1 10.10.17.0 255.255.255.0
nat (inside) 0 access-list 101
nat (inside) 1 10.10.0.0 255.255.240.0
route outside 0.0.0.0 0.0.0.0 142.168.178.1 1
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
dynamic-access-policy-record DfltAccessPolicy
aaa authentication ssh console LOCAL
aaa authentication enable console LOCAL
aaa authentication serial console LOCAL
http server enable
http 10.10.1.0 255.255.255.0 inside
http 10.10.17.0 255.255.255.0 inside
no snmp-server location
no snmp-server contact
snmp-server enable traps snmp authentication linkup linkdown coldstart
no snmp-server enable
crypto ipsec transform-set 256aes-sha esp-aes-256 esp-sha-hmac
crypto dynamic-map dynmap1 10 set pfs
crypto dynamic-map dynmap1 10 set transform-set 256aes-sha
crypto map map1 10 ipsec-isakmp dynamic dynmap1
crypto map map1 interface outside
crypto isakmp identity address
crypto isakmp enable outside
crypto isakmp policy 5
authentication pre-share
encryption aes-256
hash sha
group 5
lifetime 86400
crypto isakmp policy 10
authentication pre-share
encryption 3des
hash sha
group 2
lifetime 86400
crypto isakmp policy 30
authentication pre-share
encryption des
hash sha
group 2
lifetime 86400
no crypto isakmp nat-traversal
telnet timeout 1
ssh 10.10.1.0 255.255.255.0 inside
ssh 10.10.17.0 255.255.255.0 inside
ssh timeout 15
console timeout 30
management-access inside
threat-detection basic-threat
threat-detection scanning-threat
threat-detection statistics
!
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 rsh
inspect rtsp
inspect esmtp
inspect sqlnet
inspect skinny
inspect sunrpc
inspect xdmcp
inspect sip
inspect netbios
inspect tftp
!
service-policy global_policy global
group-policy wdlvpn internal
group-policy wdlvpn attributes
dns-server value 193.25.2.2 83.7.2.2
vpn-tunnel-protocol IPSec
split-tunnel-policy tunnelall
split-tunnel-network-list none
split-dns none
username hpp password fffffffffffff encrypted privilege 15
username vpn_hpp password fffffffffffff encrypted privilege 0
username vpn_hpp attributes
vpn-group-policy wddvpn
tunnel-group wddvpn type remote-access
tunnel-group wddvpn general-attributes
address-pool vpnpoolwdd
default-group-policy wddvpn
tunnel-group wddvpn ipsec-attributes
pre-shared-key *
prompt hostname context


Und dann noch die sh vpn-sessiondb Detail remote

Session Type: IPsec Detailed

Username : vpn_hpp Index : 3
Assigned IP : 10.10.17.1 Public IP : 142.168.178.44
Protocol : IKE IPsec
Encryption : 3DES AES256 Hashing : SHA1
Bytes Tx : 0 Bytes Rx : 0
Pkts Tx : 0 Pkts Rx : 0
Pkts Tx Drop : 0 Pkts Rx Drop : 0
Group Policy : wddvpn Tunnel Group : wddvpn
Login Time : 20:10:51 CEDT Mon Apr 26 2010
Duration : 0h:00m:20s
NAC Result : Unknown
VLAN Mapping : N/A VLAN : none

IKE Tunnels: 1
IPsec Tunnels: 1

IKE:
Tunnel ID : 3.1
UDP Src Port : 500 UDP Dst Port : 500
IKE Neg Mode : Aggressive Auth Mode : preSharedKeys
Encryption : 3DES Hashing : SHA1
Rekey Int (T): 3600 Seconds Rekey Left(T): 3583 Seconds
D/H Group : 2
Filter Name :

IPsec:
Tunnel ID : 3.2
Local Addr : 0.0.0.0/0.0.0.0/0/0
Remote Addr : 10.10.17.1/255.255.255.255/0/0
Encryption : AES256 Hashing : SHA1
Encapsulation: Tunnel
Rekey Int (T): 3600 Seconds Rekey Left(T): 3583 Seconds
Idle Time Out: 30 Minutes Idle TO Left : 29 Minutes
Bytes Tx : 0 Bytes Rx : 0
Pkts Tx : 0 Pkts Rx : 0

NAC:
Reval Int (T): 0 Seconds Reval Left(T): 0 Seconds
SQ Int (T) : 0 Seconds EoU Age(T) : 17 Seconds
Hold Left (T): 0 Seconds Posture Token:
Redirect URL :


sh vpn-session-db index

Single Session

Username : vpn_hpp Index : 3
Assigned IP : 10.10.17.1 Public IP : 142.168.178.44
Protocol : IKE IPsec
Encryption : 3DES AES256 Hashing : SHA1
Bytes Tx : 0 Bytes Rx : 0
Group Policy : wddvpn Tunnel Group : wddvpn
Login Time : 20:10:51 CEDT Mon Apr 26 2010
Duration : 0h:01m:58s
NAC Result : Unknown
VLAN Mapping : N/A VLAN : none


Und dann das Ergebnis des packet-tracers:

fw1234# pack in out tcp 10.10.17.1 1000 143.93.99.9 80

Phase: 1
Type: ACCESS-LIST
Subtype:
Result: ALLOW
Config:
Implicit Rule
Additional Information:
MAC Access list

Phase: 2
Type: FLOW-LOOKUP
Subtype:
Result: ALLOW
Config:
Additional Information:
Found no matching flow, creating a new flow

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:
Result: ALLOW
Config:
Implicit Rule
Additional Information:

Phase: 5
Type: IP-OPTIONS
Subtype:
Result: ALLOW
Config:
Additional Information:

Phase: 6
Type: CP-PUNT
Subtype:
Result: ALLOW
Config:
Additional Information:

Phase: 7
Type: VPN
Subtype: ipsec-tunnel-flow
Result: ALLOW
Config:
Additional Information:

Phase: 8
Type: NAT
Subtype:
Result: ALLOW
Config:
nat (outside) 1 10.10.17.0 255.255.255.0
match ip outside 10.10.17.0 255.255.255.0 outside any
dynamic translation to pool 1 (142.168.178.250 [Interface PAT])
translate_hits = 69, untranslate_hits = 0
Additional Information:
Dynamic translate 10.10.17.1/1000 to 194.168.178.250/512 using netmask 255.255.255.255

Phase: 9
Type: NAT
Subtype: host-limits
Result: ALLOW
Config:
nat (outside) 1 10.10.17.0 255.255.255.0
match ip outside 10.10.17.0 255.255.255.0 outside any
dynamic translation to pool 1 (142.168.178.250 [Interface PAT])
translate_hits = 69, untranslate_hits = 0
Additional Information:

Phase: 10
Type: IP-OPTIONS
Subtype:
Result: ALLOW
Config:
Additional Information:

Phase: 11
Type: VPN
Subtype: encrypt
Result: ALLOW
Config:
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: (ipsec-spoof) IPSEC Spoof detected

Content-Key: 141521

Url: https://administrator.de/contentid/141521

Printed on: April 24, 2024 at 17:04 o'clock

Member: Dirken
Dirken Apr 26, 2010 at 22:24:01 (UTC)
Goto Top
Hallo Rom1980,
das Problem wird sein, dass VPNs, die die PIX/ASA terminiert, logisch immer auf dem Inside-Interface terminieren (warum auch immer Cisco das so macht). Damit hast Du zwei Probleme:
1. Der Reverse Route Lookup schlägt fehl, und damit taucht Deine Fehlermeldung auf.
2. Deine NAT-Konfig greift nicht mehr korrekt, Deine Pakete würden also nicht korrekt genatted ins Internet gehen.

zu 1.
Der Reverse Route Lookup (Antispoofing) vergleicht einfach nur das Incoming Interface des Pakets mit den Outgoing Interface laut Routing Tabelle. Incoming ist bei Dir "inside" wegen dieser komischen Philosophie, dass VPN-Tunnel logisch "inside" terminieren. Outgoing ist aber laut Routing Tabelle das "outside" Interface (Default Route). Die beiden matchen nicht und das System zeigt Dir den Finger. Daher musst Du das Antispoofing abschalten.
Früher musste man den Reverse Route Lookup (Anti-Spoofing) manuell konfigurieren, seit irgendeiner 7er oder auch erst 8er Version ist es default. Du kannst das Antispoofing manuell per Interface abschalten, aber ich hab die PIX/ASA-Syntax nicht mehr im Kopf, nur die vom IOS. Im IOS heisst es "[no] ip verify unicast reverse-path" im Interface, bei der PIX/ASA ist es sowas ähnliches, halt nur global mit dem Interfacenamen irgendwo drin. Wirst Du aber leicht googeln können.

zu 2.
Aus dem gleichen Grund wird auch Deine NAT-Konfig nicht mehr passen:

global (outside) 1 interface
nat (outside) 1 10.10.17.0 255.255.255.0 => der Verkehr kommt logisch nicht von outside, sondern aus dem Tunnel, und damit von inside
nat (inside) 0 access-list 101
nat (inside) 1 10.10.0.0 255.255.240.0 => in dieses 20-Bit-Netz passt Dein 24er Netz 10.10.10.17.0/24 nicht, daher wird auch dieses Statement nicht greifen

Daher müsstest Du noch Dein Inside-NAT ändern:

nat (inside) 1 access-list ACL-PAT-INSIDE
global (outside) 1 interface
access-list ACL-PAT-INSIDE permit ip 10.10.0.0 255.255.240.0
access-list ACL-PAT-INSIDE permit ip 10.10.17.0 255.255.255.0
(je nach dem, wie viele Einträge das noch werden, kannst Du natürlich auch auf eine object-group zurückgreifen)

Dieses "Feature", dass VPN-Tunnel intern terminieren und damit automatisch "trusted" sind, war früher der Horror, als man noch keine Access-Liste in den VPN-Tunnel binden konnte. Man musste also im Zweifelsfall den Verkehr in der Definition des VPN (Cryptop Access List) selber einschränken und hat bei hinreichender Anzahl von Netzen und Protokollen eine Unmenge an IPsec-SAs bekommen (für jede Crypto-ACL-Zeile 2 SAs, da die unidirektional sind), und das willst Du nicht troubleshooten, wenn was nicht klappt. Diese Zeiten sind gottseidank vorbei, aber mit den Überbleibseln dieses komischen Konstrukts haben wir halt immer noch sehr viel Freude, gell.

Ich hoffe, ich hab jetzt zur späten Stunde keinen Knoten im Kopf und völligen Quatsch erzählt oder irgendwas übersehen, aber die grobe Richtung müsste stimmen face-wink

Gruß
Dirken
Member: Rom1980
Rom1980 Apr 30, 2010 at 21:30:37 (UTC)
Goto Top
Hi Dirken,

vielen Dank für die schnelle Antwort. Ich bin leider heute erst dazu gekommen deine Tipps auszuprobieren... der Befehl den ich gefunden habe lautet bei der PIX : no ip verify reverse-path interface outside

Es findet bei sh run keine Veränderung statt, so dass ich davon ausgehe, dass es schon default deaktiviert ist. Aber trotzdem bekomme ich die Meldung IPSec spoof detected beim packet-tracer... hat jemand noch eine Idee?

Vielen Dank und viele Grüße

Rom
Member: j.ilse
j.ilse May 05, 2014 at 15:17:23 (UTC)
Goto Top
Leider sind die Ausfuehrungen von Dirken meiner Ansicht nach so nicht korrekt. Die Fehlermeldung im Packet-Tracer kommt daher, dass der IPSEC-Tunnel bereits steht, und damit von dem incoming Paket erwartet wird, dass es entsprechend verschluesselt ist (unverschluesselte Pakete, die laut Policy durch den bereits bestehenden Tunnel haetten kommen muessen, werden von der Firewall verworfen). Das vom packet-tracer injectete Paket ist aber unverschluesselt. Aus diesem Grund ist die Fehlermeldung (so aergerlich es auch ist) voellig korrekt und weist hier *nicht* auf einen Fehler in den ACLs hin.

Die Erklaerung zum "reverse path check" ist zwar korrekt, hat aber mit dem von dir beobachteten verwerfen des Pakets vom packet-tracer nicht das geringste zu tun. Auch ist meiner Ansicht nach seine Argumentation bzgl. der NAT-Regeln nicht korrekt. Ich denke, die NAT-Regeln sind richtig so wie sie sind. Allerdings kommen Pakete, die durch den IPSEC-Tunnel gekommen sind, noch nicht in Richtung Internet, weil du dazu erst noch zulassen musst, dass Pakete, die auf einem Interface hereingekommen sind (hier: outside) auch ueber das selbe Interface wieder herausgehen duerfen.
Dazu dient die (bei dir noch nicht vorhandene) Anweisung "same-security-traffic permit intra-interface", die du in deiner Konfiguration noch ergaenzen solltest.

PIX und ASA unterbinden normalerweise, dass Traffic zwischen Interfaces mit gleichem Security-Level fliessen kann (dem kann man auch nicht mit ACLs entgegensteuern, der traffic wird einfach verworfen, wenn incoming und outgoing Interface den selben Security-Level haben). Um das bei Bedarf *dennoch* zu erlauben, gibt es die Anweisungen "same-security-traffic permit intra-interface" und "same-security-traffic permit inter-interface" (erstere gilt nur, wenn incoming und outgoing Interface *gleich* sind, letztere nur, wenn incoming und outgoing Interface *verschieden* sind, um den Mechanismus ganz abzuschalten, muesste man beide gleichzeitig angeben). Die "same-security-traffic" Anweisungen gelten immer global, es ist nicht moeglich, diese auf bestimmte Interfaces zu beschraenken.

Dirkens Vorschlag:

nat (inside) 1 access-list ACL-PAT-INSIDE
global (outside) 1 interface
access-list ACL-PAT-INSIDE permit ip 10.10.0.0 255.255.240.0
access-list ACL-PAT-INSIDE permit ip 10.10.17.0 255.255.255.0

ist *nicht* korrekt, weil das incoming Interface fuer den VPN-Traffic tatsaechlich das "outside" Interface ist (auch wenn dort kein unverschluesselter Traffic mit den VPN-Source-IPs angenommen wird, wie du mittels packet-tracer festgestellt hast).