Juniper SRX und Cisco ASA: Nächste Serie

Das erste Mal, dass ich IPSec zwischen Juniper SRX und Cisco ASA baute, war 2014. Selbst dann war es sehr schmerzhaft, da es viele Probleme gab (normalerweise fiel ein Tunnel während der Regeneration auseinander), es war schwierig zu diagnostizieren (ASA war beim Kunden, daher waren die Möglichkeiten zum Debuggen begrenzt), aber irgendwie funktionierte es.

Bild

Seitdem wurde das empfohlene JunOS für SRX auf 15.1 aktualisiert (mindestens für die SRX300-Linie), und der ASA hat gelernt, wie man routenbasiertes IPSec (Softwareversion 9.8) verwendet, was die Konfiguration ein wenig vereinfacht. Und bei der aktuellen Arbeit vor nicht allzu langer Zeit gab es die Möglichkeit, ein solches Schema erneut zusammenzustellen. Und wieder erfolglos - während der Regeneration fiel der Tunnel sicher (und stieg nicht immer ohne manuellen Neustart an). Und wieder in den Protokollen Stille und Verwirrung, aber weil ASA war bei unserem Partner, dann gab es keine Möglichkeit, jeweils zu debütieren.

Und jetzt bot sich die Gelegenheit, ein Schema zusammenzustellen, in dem beide Seiten (sowohl SRX als auch ASA) unter unserer Kontrolle sind bzw. Sie für immer spielen können.

Disposition


Also, was wir haben:

  • Juniper SRX340 (JunOS 15.1X49D150.2)
  • Cisco ASA 5506 (Software 9.8.4)
  • routenbasiertes IPSec zwischen ihnen (Routing wird von BGP bereitgestellt, ich werde auch ein paar Worte dazu sagen)

Schema




Konfiguration


Juniper


Beginnen wir mit der SRX-Konfiguration. Ich habe einige verschiedene Tunnel darauf gebaut, am Ende bin ich zu so etwas gekommen:

set security ike policy IKE-ASA mode main set security ike policy IKE-ASA proposals SHA256-AES128-5-86400 set security ike policy IKE-ASA pre-shared-key ascii-text ... set security ike gateway GW-ASA ike-policy IKE-ASA set security ike gateway GW-ASA address 192.0.2.2 set security ike gateway GW-ASA dead-peer-detection interval 10 set security ike gateway GW-ASA dead-peer-detection threshold 3 set security ike gateway GW-ASA local-identity inet 198.51.100.2 set security ike gateway GW-ASA external-interface ae0.4 set security ike gateway GW-ASA version v2-only set security ipsec vpn VPN-ASA bind-interface st0.7 set security ipsec vpn VPN-ASA df-bit clear set security ipsec vpn VPN-ASA vpn-monitor source-interface st0.7 set security ipsec vpn VPN-ASA vpn-monitor destination-ip 169.254.100.2 set security ipsec vpn VPN-ASA ike gateway GW-ASA set security ipsec vpn VPN-ASA ike ipsec-policy SHA256-AES128-3600-14-policy set security ipsec vpn VPN-ASA establish-tunnels immediately set interfaces st0 unit 7 description "ASA AnyConnect router" set interfaces st0 unit 7 family inet mtu 1436 set interfaces st0 unit 7 family inet address 169.254.100.1/30 set routing-options static route 192.0.2.2/32 next-hop 198.51.100.1 set security zones security-zone ZONE-VPN interfaces st0.7 host-inbound-traffic system-services ping set security zones security-zone ZONE-VPN interfaces st0.7 host-inbound-traffic system-services ike set security zones security-zone ZONE-VPN interfaces st0.7 host-inbound-traffic system-services traceroute set security zones security-zone ZONE-VPN interfaces st0.7 host-inbound-traffic protocols bgp 

Es ist ersichtlich, dass IKEv2 ohne Verkehrsselektoren verwendet wird (wir haben bereits genügend Mittel in unserem Arsenal, um den Verkehrsfluss zu begrenzen - von BGP-Präfixlisten bis hin zu Sicherheitsrichtlinien). Auf dem Heap werden DPD (Dead Peer Detection) und VPN-Monitor verwendet (sie haben eine etwas andere Art von Prüfungen, ich verwende beide für die Zuverlässigkeit).

Cisco


ASA-Konfiguration:
 crypto ipsec ikev2 ipsec-proposal SHA256-AES128 protocol esp encryption aes-256 aes-192 aes protocol esp integrity sha-256 crypto ipsec profile IPSEC-PROFILE-AMS1-VPN2 set ikev2 ipsec-proposal SHA256-AES128 set pfs group14 set security-association lifetime kilobytes unlimited set security-association lifetime seconds 3600 crypto ikev2 policy 1 encryption aes-256 aes-192 aes integrity sha256 group 5 prf sha256 lifetime seconds 86400 tunnel-group 198.51.100.2 type ipsec-l2l tunnel-group 198.51.100.2 ipsec-attributes isakmp keepalive threshold 30 retry 10 ikev2 remote-authentication pre-shared-key ... ikev2 local-authentication pre-shared-key ... crypto ikev2 enable outside interface Tunnel7 nameif l2l-ams1-vpn2 ip address 169.254.100.2 255.255.255.252 tunnel source interface outside tunnel destination 198.51.100.2 tunnel mode ipsec ipv4 tunnel protection ipsec profile IPSEC-PROFILE-AMS1-VPN2 

Der Aufbau der Configs ist auf beiden Routern ungefähr gleich, aber wie üblich stimmen die Abschnittsnamen überhaupt nicht überein.

Konfigurationsvergleich


IKE Politik / Vorschlag


 crypto ikev2 policy 1 encryption aes-256 aes-192 aes integrity sha256 group 5 prf sha256 lifetime seconds 86400 

 set security ike proposal SHA256-AES128-5-86400 description ike-phase1-proposal1 set security ike proposal SHA256-AES128-5-86400 authentication-method pre-shared-keys set security ike proposal SHA256-AES128-5-86400 dh-group group5 set security ike proposal SHA256-AES128-5-86400 authentication-algorithm sha-256 set security ike proposal SHA256-AES128-5-86400 encryption-algorithm aes-128-cbc set security ike proposal SHA256-AES128-5-86400 lifetime-seconds 86400 set security ike policy IKE-ASA mode main set security ike policy IKE-ASA proposals SHA256-AES128-5-86400 set security ike policy IKE-ASA pre-shared-key ascii-text ... 

Hier beginnt einige Verwirrung in der Terminologie. Wie Cisco die IKE-Richtlinie nennt, hat Juniper das IKE-Angebot. Und die IKE-Richtlinie von Juniper ähnelt der Tunnel-Gruppe von ASA ... Ich persönlich mag den Juniper-Ansatz mehr, aber hier ist es natürlich Gewohnheitssache.

Ich muss sagen, dass die Konfiguration von IKEv2 (insbesondere routenbasiert) auf dem ASA immer noch viel logischer aussieht als Krypto-Maps und die andere Schande, die vorher war.

IPSec-Richtlinie / Vorschlag


 crypto ipsec ikev2 ipsec-proposal SHA256-AES128 protocol esp encryption aes-256 aes-192 aes protocol esp integrity sha-256 crypto ipsec profile IPSEC-PROFILE-SHA256-AES128-3600-14 set ikev2 ipsec-proposal SHA256-AES128 set pfs group14 set security-association lifetime kilobytes unlimited set security-association lifetime seconds 3600 

 set security ipsec proposal SHA256-AES128-3600 description ipsec-phase2-proposal set security ipsec proposal SHA256-AES128-3600 protocol esp set security ipsec proposal SHA256-AES128-3600 authentication-algorithm hmac-sha-256-128 set security ipsec proposal SHA256-AES128-3600 encryption-algorithm aes-128-cbc set security ipsec proposal SHA256-AES128-3600 lifetime-seconds 3600 set security ipsec policy SHA256-AES128-3600-14-policy description SHA256-AES128-3600-14-policy set security ipsec policy SHA256-AES128-3600-14-policy perfect-forward-secrecy keys group14 set security ipsec policy SHA256-AES128-3600-14-policy proposals SHA256-AES128-3600 

In diesem Fall verhalten sich beide Anbieter plus oder minus gleich: Zuerst erstellen wir einen Vorschlag mit Verschlüsselungs- / Authentifizierungsparametern, und dann hängen wir die Lebensdauer und das PFS daran.

Gateway


 tunnel-group 198.51.100.2 type ipsec-l2l tunnel-group 198.51.100.2 ipsec-attributes isakmp keepalive threshold 30 retry 10 ikev2 remote-authentication pre-shared-key ... ikev2 local-authentication pre-shared-key ... 

 set security ike gateway GW-ASA ike-policy IKE-ASA-LEGAL set security ike gateway GW-ASA address 192.0.2.2 set security ike gateway GW-ASA dead-peer-detection interval 10 set security ike gateway GW-ASA dead-peer-detection threshold 3 set security ike gateway GW-ASA local-identity inet 198.51.100.2 set security ike gateway GW-ASA external-interface ae0.4 set security ike gateway GW-ASA version v2-only 

Und hier sind die Unterschiede ausgeprägter. Auf ASA wird PSK direkt in den Peer-Einstellungen angezeigt. Mit Juniper können Sie sowohl die ausgehende Schnittstelle als auch zusätzliche Optionen wie local-identity angeben. Außerdem bezieht sich diese Option auf die IKE-Richtlinie (in der wir die PSK angegeben haben).

Übrigens, wenn Sie IKEv2 in IKEv1 auf ASA konvertieren möchten (und umgekehrt), muss Cisco die gesamte Tunnelgruppe neu erstellen. Und bei SRX ändern Sie einfach eine Option. (Richtig, inkompatible Optionen werden möglicherweise später mit commit angezeigt, aber dies sind die Details.)

VPN / VTI


 interface Tunnel7 nameif l2l-ams1-vpn2 ip address 169.254.100.2 255.255.255.252 tunnel source interface outside tunnel destination 198.51.100.2 tunnel mode ipsec ipv4 tunnel protection ipsec profile IPSEC-PROFILE-SHA256-AES128-3600-14 

 set security ipsec vpn VPN-ASA bind-interface st0.7 set security ipsec vpn VPN-ASA df-bit clear set security ipsec vpn VPN-ASA vpn-monitor source-interface st0.7 set security ipsec vpn VPN-ASA vpn-monitor destination-ip 169.254.100.2 set security ipsec vpn VPN-ASA ike gateway GW-ASA set security ipsec vpn VPN-ASA ike ipsec-policy SHA256-AES128-3600-14-policy set security ipsec vpn VPN-ASA establish-tunnels immediately set interfaces st0 unit 7 description "AnyConnect router" set interfaces st0 unit 7 family inet mtu 1436 set interfaces st0 unit 7 family inet address 169.254.100.1/30 

Und wieder scheint mir die Juniper-Konfiguration logischer. Das VPN wird separat konfiguriert (es kann auch richtlinienbasiert sein), der Sicherheitstunnel selbst ist separat. Besonderer Dank geht an die "Tunnel sofort einrichten". Eine sehr nützliche Option;) (tsiskovody verstehen, was ich meine). Ein weiterer Vorteil von SRX ist, dass es möglich ist, IPSecs mit mehreren Punkten zu erstellen, sowohl mit der automatischen Erkennung von Peers (dies funktioniert leider nur zwischen SRX) als auch mit manuellem Routing. Dies ist natürlich kein vollwertiges DMVPN, aber das Leben in Einrichtungen wie „ein Zentrum - viele Zweige“ macht es viel einfacher.

Schnittstellen


Ich werde separat auf die Konfiguration der Schnittstellen eingehen, auf denen IPSec aufgebaut ist. Für Juniper ist es ae0.4 bzw. für ASA ist es draußen

 crypto ikev2 enable outside 

 set security zones security-zone ZONE-INTERNET interfaces ae0.4 host-inbound-traffic system-services ike set security zones security-zone ZONE-VPN interfaces st0.7 host-inbound-traffic system-services ping set security zones security-zone ZONE-VPN interfaces st0.7 host-inbound-traffic system-services traceroute set security zones security-zone ZONE-VPN interfaces st0.7 host-inbound-traffic protocols bgp 

Auf Schnittstellen müssen Sie ike aktivieren, sonst funktioniert nichts :) Außerdem müssen Sie für SRX bgp / ospf / whatever für eingehende Verbindungen auf der st0.x-Schnittstelle aktivieren.

BGP konfigurieren


Hier ist alles ziemlich banal (einerseits)

 set protocols bgp group ASA type external set protocols bgp group ASA description "AnyConnect router" set protocols bgp group ASA hold-time 30 set protocols bgp group ASA import IMPORT-EBGP-ASA set protocols bgp group ASA export EXPORT-EBGP-ASA set protocols bgp group ASA local-as 64666 set protocols bgp group ASA neighbor 169.254.100.2 peer-as 65001 set policy-options policy-statement EXPORT-EBGP-ASA term 0 from route-filter 10.0.0.0/8 exact set policy-options policy-statement EXPORT-EBGP-ASA term 0 then accept set policy-options policy-statement EXPORT-EBGP-ASA term 1 then reject set policy-options policy-statement IMPORT-EBGP-ASA term 1 then reject 

Auf ASA geben wir das aggregierte Präfix unseres LAN an - ich werde es 10/8 haben. Wir akzeptieren nichts von der ASA, da Sie ab der Softwareversion 9.8.4 die Adressen der Verwaltungsschnittstellen (was verständlich ist) und der BVI (was sehr unbequem ist) immer noch nicht über BGP ansagen können. Wenn Sie jedoch andere Netzwerke hinter dem ASA haben, müssen Sie diese natürlich zur Richtlinie hinzufügen.

 asa(config-router-af)# network 10.255.32.252 mask 255.255.255.254 ERROR: BGP configuration not supported on management-only/BVI interface 

Um die interne Schnittstelle zu "sehen", müssen Sie eine statische Route auf dem SRX in Richtung ipsec registrieren:

 set routing-options static route 10.255.32.252/31 next-hop 169.254.100.2 

Außerdem weiß ASA immer noch nicht, wie Schnittstellen zurückgeschleift werden, sodass wir alle / netflow- und anderen Protokolle von innen senden.

Der ASA5506 verfügt über einen integrierten Switch, sodass Sie die virtuelle BVI-Schnittstelle verwenden können (besonders nützlich, wenn Sie ein Router-on-Stick-Schema verwenden und nur ein physischer Port verwendet wird.

 interface BVI1 nameif inside security-level 100 ip address 10.255.32.253 255.255.255.254 management-access inside 

Danach müssen Sie an den richtigen Stellen (logging, snmp, flow) inside als Quellschnittstelle angeben.

Wenn etwas schief gelaufen ist, auch bekannt als Troubleshooting


IKE / IPSec


Zunächst müssen Sie beide Phasen von IPSec installieren (für Juniper ist dies tatsächlich IKE / IPSec).

Wir schauen:

 admin@srx> show security ike security-associations Index State Initiator cookie Responder cookie Mode Remote Address 2128190 UP ae7d7d447326218a 2be3b3004ae0e36a IKEv2 192.0.2.2 admin@srx> show security ipsec security-associations Total active tunnels: 6 ID Algorithm SPI Life:sec/kb Mon lsys Port Gateway <131077 ESP:aes-cbc-128/sha256 fec3c7d1 2867/ unlim U root 500 192.0.2.2 >131077 ESP:aes-cbc-128/sha256 74d792ca 2867/ unlim U root 500 192.0.2.2 

Auf der ASA:

 asa# sho crypto ikev2 sa IKEv2 SAs: Session-id:5, Status:UP-ACTIVE, IKE count:1, CHILD count:1 Tunnel-id Local Remote Status Role 585564345 192.0.2.2/500 198.51.100.2/500 READY RESPONDER Encr: AES-CBC, keysize: 128, Hash: SHA256, DH Grp:5, Auth sign: PSK, Auth verify: PSK Life/Active Time: 86400/47018 sec Child sa: local selector 0.0.0.0/0 - 255.255.255.255/65535 remote selector 0.0.0.0/0 - 255.255.255.255/65535 ESP spi in/out: 0xc989d9ea/0xcca8b6d5 

Bei Juniper werden weiterhin Statistiken zum IPSec-Tunnel angezeigt, einschließlich der Gründe für den Sturz:

 admin@srx> show security ipsec security-associations index 131078 detail ID: 131078 Virtual-system: root, VPN Name: VPN-ASA-LEGAL-PL Local Gateway: 198.51.100.2, Remote Gateway: 192.0.2.2 Local Identity: ipv4_subnet(any:0,[0..7]=0.0.0.0/0) Remote Identity: ipv4_subnet(any:0,[0..7]=0.0.0.0/0) Version: IKEv2 DF-bit: clear, Copy-Outer-DSCP Disabled, Bind-interface: st0.7 Port: 500, Nego#: 734, Fail#: 0, Def-Del#: 0 Flag: 0x600a29 Tunnel events: Mon Dec 09 2019 13:40:35: IPSec SA rekey successfully completed (48 times) Mon Dec 09 2019 00:30:47: IKE SA rekey successfully completed (10 times) Fri Nov 29 2019 02:13:55: IPSec SA negotiation successfully completed (1 times) Fri Nov 29 2019 02:13:55: IKE SA negotiation successfully completed (1 times) Fri Nov 29 2019 02:13:55: No response from peer. Negotiation failed (7 times) Fri Nov 29 2019 02:10:14: DPD detected peer as down. Existing IKE/IPSec SAs cleared (1 times) Fri Nov 29 2019 01:39:15: IPSec SA rekey successfully completed (1 times) Fri Nov 29 2019 00:49:50: IPSec SA negotiation successfully completed (1 times) Fri Nov 29 2019 00:49:50: IKE SA negotiation successfully completed (1 times) Fri Nov 29 2019 00:49:30: No response from peer. Negotiation failed (23 times) Fri Nov 29 2019 00:37:24: DPD detected peer as down. Existing IKE/IPSec SAs cleared (1 times) Fri Nov 29 2019 00:30:00: IPSec SA rekey successfully completed (77 times) Thu Nov 28 2019 20:11:31: IKE SA rekey successfully completed (7 times) Tue Nov 26 2019 08:51:44: IPSec SA negotiation successfully completed (1 times) Thu Nov 21 2019 21:24:32: IKE SA negotiation successfully completed (1 times) Thu Nov 21 2019 01:06:27: IKE SA rekey successfully completed (6 times) Direction: inbound, SPI: 4bd2e2bd, AUX-SPI: 0 , VPN Monitoring: UP Hard lifetime: Expires in 3132 seconds Lifesize Remaining: Unlimited Soft lifetime: Expires in 2495 seconds Mode: Tunnel(10 10), Type: dynamic, State: installed Protocol: ESP, Authentication: hmac-sha256-128, Encryption: aes-cbc (128 bits) Anti-replay service: counter-based enabled, Replay window size: 64 Direction: outbound, SPI: 504f306e, AUX-SPI: 0 , VPN Monitoring: UP Hard lifetime: Expires in 3132 seconds Lifesize Remaining: Unlimited Soft lifetime: Expires in 2495 seconds Mode: Tunnel(10 10), Type: dynamic, State: installed Protocol: ESP, Authentication: hmac-sha256-128, Encryption: aes-cbc (128 bits) Anti-replay service: counter-based enabled, Replay window size: 64 

Wenn bei IPSec alles in Ordnung ist, müssen Sie sich die ACL (Sicherheitsrichtlinien, Host-Inbound-Regeln usw.) ansehen. In extremen Fällen können Sie versuchen, die Box (ASA) neu zu laden - es hat mir geholfen.
UPD: Über das Debuggen von IPsec in Juniper habe ich bereits Habr zugewiesen

BGP


Hier ist alles ziemlich normal - wenn die Sitzung nicht installiert ist, können Sie durch Erfassen sehen, ob BGP-hallo in beide Richtungen fliegt.

Total


Das ist alles Ich weiß nicht, ob die neue Software schuld ist oder ob die Stars so zusammengekommen sind - aber der ASA <> SRX-Tunnel bleibt stabil und fällt nicht einmal am Tag ab, wie es früher war.

Ich hoffe es gelingt dir auch!

Source: https://habr.com/ru/post/de481620/


All Articles