Es geht in eine weitere Runde bei den VPNs von und zur FRITZ!Box. Nach den unglücklichen Änderungen in Version 06.20 hat AVM wieder ein paar Phase 2 Proposals hinzugenommen, die komplett ohne Kompression laufen. Somit ist es wieder möglich, die FRITZ!Box im Aggressive Mode VPN-Verbindungen zu diversen Firewalls aufbauen zu lassen. Komisch nur, dass noch nicht alles ganz wie erwartet funktioniert. Hier kommen meine Testergebnisse.
IPsec Proposals
Auf Anfrage hat mir AVM die “Strategien” für IPsec in der Version 06.23 zur Verfügung gestellt. Diese sind wie folgt:
Phase 1:
- dh5/aes/sha
- dh14/aes/sha
- dh15/aes/sha
- def/all/all
- alt/all/all
- all/all/all
- LT8h/all/all/all
Phase 2:
- esp-aes-sha/ah-all/comp-lzjh-no/pfs
- esp-all-all/ah-all/comp-all/pfs
- esp-all-all/ah-all/comp-all/no-pfs
- esp-all-all/ah-none/comp-all/pfs
- esp-3des-sha/ah-no/comp-no/no-pfs
- esp-aes256-3des-sha/ah-no/comp-lzs-no/pfs
- esp-all-all/ah-none/comp-all/no-pfs
- LT8h/esp-all-all/ah-none/comp-all/pfs
- LT8h/esp-all-all/ah-none/comp-all/no-pfs
Mein Ziel war es also, in beiden Phase möglichst DH-14 und AES-256 einzusetzen, wobei Phase 1 gerne eine Lifetime von 8 Stunden haben darf, während Phase 2 nur eine Stunde laufen soll. (Hintergrund: Da es ständig zu Verbindungsabbrüchen beim Rekeying kommt, sind längere Lifetimes hier wohl besser.) Leider hat das nicht exakt so geklappt…
Tests
Die folgenden Tests habe ich extra alle im Aggressive Mode laufen lassen, so dass stets die FRITZ!Box (hinter einer dynamischen IP) die VPN-Verbindung initiiert. Bei einigen Kunden scheint das Voraussetzung zu sein. Als Gegenstelle hatte ich eine Juniper ScreenOS SSG 5 mit Version 6.3.0r18.0 im Labor (siehe hier). Die FRITZ!Box ist eine 7390 und wie gesagt mit FRITZ!OS Version 06.23.
Folgende Tabelle zeigt immer zweizeilig die Einstellungen für Phase 1 und 2:
# | FRITZ!Box | Juniper | Läuft? | Kommentar |
---|---|---|---|---|
1 | dh14/aes/sha | pre-g14-aes256-sha1-3600s | Ja | Leider nur mit 1 h bei Phase 1. |
esp-aes256-3des-sha/ah-no/comp-lzs-no/pfs | g14-esp-aes256-sha1-3600s | Ja | ||
2 | LT8h/all/all/all | pre-g14-aes256-sha1-28800s | Nein | Phase 1 Mismatch, also scheint DH-14 hier nicht zu klappen |
esp-aes256-3des-sha/ah-no/comp-lzs-no/pfs | g14-esp-aes256-sha1-3600s | |||
3 | LT8h/all/all/all | pre-g2-aes256-sha1-28800s | Ja | Aha, also mit DH-2 und 8 h klappt es |
esp-aes256-3des-sha/ah-no/comp-lzs-no/pfs | g14-esp-aes256-sha1-3600s | Nein | There were no acceptable Phase 2 proposals. WARUM? | |
4 | LT8h/all/all/all | pre-g2-aes256-sha1-28800s | Ja | |
esp-aes256-3des-sha/ah-no/comp-lzs-no/pfs | g2-esp-aes256-sha1-3600s | Ja | Mit DH-2 klappt es auch hier. Komisch, weil es bei Test 1 ja exakt mit diesem Proposal lief. |
Sehr komisch ist also zum Beispiel, dass bei Tests 1 und 3 für Phase 2 jeweils das gleiche Proposal seitens der FRITZ!Box verwendet wurde, es aber in Test 1 mit DH-14 funktioniert hat, in Test 3 aber nicht. Hm.
Bei Variante 1 sah es auf der Juniper SSG also so aus:
fd-wv-fw01-> get ike cookies IKEv1 SA -- Active: 9, Dead: 0, Total 9 80182f/0006, 95.116.94.50:500->172.16.0.2:500, PRESHR/grp14/AES256/SHA, xchg(4) (fdorf-foobar.webernetz.net/grp-1/usr-1) resent-tmr 322 lifetime 3600 lt-recv 3600 nxt_rekey 3040 cert-expire 0 responder, err cnt 0, send dir 1, cond 0xc0 nat-traversal map not available ike heartbeat : disabled ike heartbeat last rcv time: 0 ike heartbeat last snd time: 0 XAUTH status: 0 DPD seq local 0, peer 0 fd-wv-fw01-> fd-wv-fw01-> fd-wv-fw01-> get sa id 6 index 4, name fdorf-foobar.webernetz.net, peer gateway ip 95.116.94.50. vsys auto key. tunnel if binding node, tunnel mode, policy id in:<-1> out:<-1> vpngrp:<-1>. sa_list_nxt:<-1>. tunnel id 6, peer id 4, NSRP Local. site-to-site. Local interface is ethernet0/0 <172.16.0.2>. esp, group 14, a256 encryption, sha1 authentication autokey, IN active, OUT active monitor<1>, latency: 37, availability: 100 DF bit: clear app_sa_flags: 0x24001a7 proxy id: local 192.168.96.0/255.255.224.0, remote 192.168.29.0/255.255.255.0, proto 0, port 0/0 ike activity timestamp: -1633079230 DSCP-mark : enabled, value : 0 nat-traversal map not available incoming: SPI f41f788e, flag 00004000, tunnel info 40000006, pipeline life 3600 sec, 3001 remain, 0 kb, 0 bytes remain anti-replay on, last 0x263, window 0xffffffff, idle timeout value <0>, idled 1 seconds next pak sequence number: 0x0 bytes/paks:105778793/531384; sw bytes/paks:105772872/531377 outgoing: SPI d8c63b56, flag 00000000, tunnel info 40000006, pipeline life 3600 sec, 3001 remain, 0 kb, 0 bytes remain anti-replay on, last 0x0, window 0x0, idle timeout value <0>, idled 0 seconds next pak sequence number: 0x271 bytes/paks:48706409/564603; sw bytes/paks:48706409/564603
Variante 4 entsprechend so:
fd-wv-fw01-> get ike cookies IKEv1 SA -- Active: 9, Dead: 0, Total 9 80182f/0006, 95.116.94.50:500->172.16.0.2:500, PRESHR/grp2/AES256/SHA, xchg(4) (fdorf-foobar.webernetz.net/grp-1/usr-1) resent-tmr 322 lifetime 28800 lt-recv 28800 nxt_rekey 28762 cert-expire 0 responder, err cnt 0, send dir 1, cond 0x0 nat-traversal map not available ike heartbeat : disabled ike heartbeat last rcv time: 0 ike heartbeat last snd time: 0 XAUTH status: 0 DPD seq local 0, peer 0 fd-wv-fw01-> fd-wv-fw01-> fd-wv-fw01-> get sa id 6 index 4, name fdorf-foobar.webernetz.net, peer gateway ip 95.116.94.50. vsys auto key. tunnel if binding node, tunnel mode, policy id in:<-1> out:<-1> vpngrp:<-1>. sa_list_nxt:<-1>. tunnel id 6, peer id 4, NSRP Local. site-to-site. Local interface is ethernet0/0 <172.16.0.2>. esp, group 2, a256 encryption, sha1 authentication autokey, IN active, OUT active monitor<0>, latency: -1, availability: 0 DF bit: clear app_sa_flags: 0x2400027 proxy id: local 192.168.96.0/255.255.224.0, remote 192.168.29.0/255.255.255.0, proto 0, port 0/0 ike activity timestamp: -1630958802 DSCP-mark : enabled, value : 0 nat-traversal map not available incoming: SPI f41f789d, flag 00004000, tunnel info 40000006, pipeline life 3600 sec, 3518 remain, 0 kb, 0 bytes remain anti-replay on, last 0x56, window 0xffffffff, idle timeout value <0>, idled 0 seconds next pak sequence number: 0x0 bytes/paks:105813717/531796; sw bytes/paks:105807796/531789 outgoing: SPI 6381d8bc, flag 00000000, tunnel info 40000006, pipeline life 3600 sec, 3518 remain, 0 kb, 0 bytes remain anti-replay on, last 0x0, window 0x0, idle timeout value <0>, idled 0 seconds next pak sequence number: 0x58 bytes/paks:48741197/565019; sw bytes/paks:48741197/565019
Und hier noch ein Screenshot von einem Test zur Cisco ASA Version 8.4(7). Hier wurde ebenfalls die Variante mit einer IKE Lifetime von 8 h verwendet. Die Gegenstelle hatte sogar bereits FRITZ!OS 06.24 installiert:
Fazit
So ganz eindeutig scheint es noch nicht zu sein. Die “all/all/all” Varianten decken doch nicht alles ab und die anderen klappen manchmal und manchmal aber auch nicht. Man hat aktuell die Wahl, ob man DH-14 in beiden Phasen verwenden möchte (was aus sicherheitstechnischer Sicht Sinn macht) oder lieber auf eine Lifetime von 8 h in Phase 1 zurückgreift, dann aber nur DH-2 zum Laufen bekommt.
Templates
Hier noch mal zwei komplette Templates, so wie ich sie aktuell verwende. Bei beiden wird davon ausgegangen, dass die FRITZ!Box eine dynamische IP Adresse hat, also der Aggressive Mode verwendet wird.
DH-14 mit Lifetime 1 h
vpncfg { connections { enabled = yes; conn_type = conntype_lan; name = "NAME-OF-THE-VPN"; always_renew = yes; reject_not_encrypted = no; dont_filter_netbios = yes; localip = 0.0.0.0; local_virtualip = 0.0.0.0; remoteip = 192.0.2.86; remote_virtualip = 0.0.0.0; localid { fqdn = "foobar.webernetz.net"; } remoteid { ipaddr = "192.0.2.86"; } mode = phase1_mode_aggressive; phase1ss = "dh14/aes/sha"; keytype = connkeytype_pre_shared; key = "ThisIsThePSKAndShouldBeGeneratedRandomly"; cert_do_server_auth = no; use_nat_t = no; use_xauth = no; use_cfgmode = no; phase2localid { ipnet { ipaddr = 192.168.178.0; mask = 255.255.255.0; } } phase2remoteid { ipnet { ipaddr = 192.168.0.0; mask = 255.255.255.0; } } phase2ss = "esp-aes256-3des-sha/ah-no/comp-lzs-no/pfs"; accesslist = "permit ip any 192.168.0.0 255.255.255.0"; } ike_forward_rules = "udp 0.0.0.0:500 0.0.0.0:500", "udp 0.0.0.0:4500 0.0.0.0:4500"; }
Lifetime 8 h aber nur DH-2
vpncfg { connections { enabled = yes; conn_type = conntype_lan; name = "NAME-OF-THE-VPN"; always_renew = yes; reject_not_encrypted = no; dont_filter_netbios = yes; localip = 0.0.0.0; local_virtualip = 0.0.0.0; remoteip = 192.0.2.86; remote_virtualip = 0.0.0.0; localid { fqdn = "foobar.webernetz.net"; } remoteid { ipaddr = "192.0.2.86"; } mode = phase1_mode_aggressive; phase1ss = "LT8h/all/all/all"; keytype = connkeytype_pre_shared; key = "ThisIsThePSKAndShouldBeGeneratedRandomly"; cert_do_server_auth = no; use_nat_t = no; use_xauth = no; use_cfgmode = no; phase2localid { ipnet { ipaddr = 192.168.178.0; mask = 255.255.255.0; } } phase2remoteid { ipnet { ipaddr = 192.168.0.0; mask = 255.255.255.0; } } phase2ss = "esp-aes256-3des-sha/ah-no/comp-lzs-no/pfs"; accesslist = "permit ip any 192.168.0.0 255.255.255.0"; } ike_forward_rules = "udp 0.0.0.0:500 0.0.0.0:500", "udp 0.0.0.0:4500 0.0.0.0:4500"; }