Sonicwall FRITZ!Box Site-to-Site VPN einrichten

Das VPN mit einer Fritz!Box aufzubauen war irritierend umständlich. Die Fritz!Box kann überraschend viel, zeigt das nur leider nicht und ist zumindest in Richtung VPN-Settings nicht wirklich gut dokumentiert. Zugegeben, die Box ist kein „Unternehmensrouter“, aber in Corona-Homeoffice Zeiten muss man nehmen was man kriegen kann 🙂 Auf die Details was und warum ehe ich nicht ein, das hier ist nur die „working config“, wie von uns gewohnt.

In diesem Fall: Sonicwall NSA 3650 und eine aktuelle Fritz!Box. Welche genau weiss ich nicht, aber das ist in weiten Teilena auch egal.

Wichtig: Keines der zu verbindenden Netze darf identisch oder ein Subnetz des anderen sein. Die Fritzbox mag sowas nicht routen und für ein Homeoffice dann noch NAT-Pools einrichten ist … übertrieben.

  • Unternehmen: 192.168.0.0 /16
  • Homeoffice: 10.0.178.0 /24

Sonicwall Seite

Ich nutze der Einfachheit halber eine VPN-Policy, kein Tunnelinterface. Das schöne daran ist, das der Tunnel seine SA’s sofort in die Routingtabelle einträgt, wenn also der Tunnel steht direkt das IP-Netzwerk verfügbar ist.

Ich gehe davon aus, das alle beteiligten Netzwerkobjekte bereits als solche angelegt sind.

VPN Policy auf der Sonicwall hinzufügen

Manage > VPN > Base Settings > Add

  • Security Policy
    • Policy-Type: Site to Site
    • Authentication Method: IKE using Preshared Secret
    • Name: FBox-VPN-42
    • Psec Primary Gateway Name or Address: <IP/DNS der Homeoffice FBox>
  • IKE Authentication
    • Shared Secret: <Supergeheimeskennwort>
    • Local IKE ID: Domain Name : <IP/FQDN der Sonicwall>
    • Peer IKE ID: Domain Name : <IP/FQDN der Fritz!Box>
  • Network
    • Local Networks
      • Choose local network from list: <Objektgruppe der/des Unternehmens-Netzwerke>
    • Remote Networks
      • Choose destination network from list: <Objektgruppe des Homeoffice-Netzes>
  • Proposals
    • IKE (Phase 1) Proposal
      • Exchange: Aggressive Mode
      • DH Group: Group 2
      • Encryption: AES-256
      • Authentication: SHA1
      • Life Time (seconds): 28800
    • Ipsec (Phase 2) Proposal
      • Protocol: ESP
      • Encryption: AES-256
      • Authentication: SHA1
      • Enable Perfect Forward Secrecy Einschalten (!)
      • DH Group: Group 2
      • Life Time (seconds): 3600

FRITZ!Box Seite

Man nutze nicht den „Firmen“ Assistenten, sondern lade die Konfiguration vie „Datei importieren“ hoch. Das geht unter Internet > Freigaben > VPN.

Eine laufende CFG Configfile sieht so aus:

 vpncfg {
        connections {
                enabled = yes;
                conn_type = conntype_lan;
                name = "Tunnel to Northkorea";
                always_renew = yes;
                reject_not_encrypted = no;
                dont_filter_netbios = yes;
                localip = 0.0.0.0;
                local_virtualip = 0.0.0.0;
                remoteip = 0.0.0.0;
                remote_virtualip = 0.0.0.0;
                remotehostname = "<IP/FQDN Sonicwall>";
                localid {
                        fqdn = "<IP/FQDN FRITZ!Box>";
                }
                remoteid {
                        fqdn = "<IP/FQDN Sonicwall>";
                }
                mode = phase1_mode_aggressive;
                phase1ss = "all/all/all";
                keytype = connkeytype_pre_shared;
                key = "<Supergeheimeskennwort>";
                cert_do_server_auth = no;
                use_nat_t = no;
                use_xauth = no;
                use_cfgmode = no;
                phase2localid {
                        ipnet {
                                ipaddr = <NetzID FritzBox-Netzwerk>;
                                mask = <Subnetzmaske FritzBox-Netzwerk>;
                        }
                }
                phase2remoteid {
                        ipnet {
                                ipaddr = <NetzID Unternehmensnetzwerk>;
                                mask = <Subnetzmaske Unternehmensnetzwerk>;
                        }
                }
                phase2ss = "esp-all-all/ah-none/comp-all/pfs";
                accesslist =    "permit ip any <NetzID FritzBox-Netzwerk> <Subnetzmaske FritzBox-Netzwerk>",
                                "permit ip any <NetzID Unternehmensnetzwerk> <Subnetzmaske Unternehmensnetzwerk>";
        }
        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";
} 

SSTP VPN unter Apple MacOS X nutzen

Leider liefert Apple standartmäßig immer noch keinen SSTP-GUI-Client mit, daher muss man einen selber bauen oder installieren. Der SSTP-Client von sstp-client.sourceforge.net wurde ursprünglich für Linux gebaut, aufgrund des statischen Bianaries läuft es aber auch perfekt unter MacOS.

L2TP ist im Lieferumfang von zwar MacOS enthalten, aber wegen der NAT Probleme und Apple’s Beschränkungen bei der Sicherheit ist das leider nicht mehr zuverlässig. Wir Admins raten zu SSTP, denn das „geht immer und überall“. Zumindest solange man nicht OpenVPN, CyberGhost oder andere fiese PPP-Adapter-Hackereien installiert hat. Die müssen, wie bei jedem VPN-Zugang, in aller Regel erst deinstalliert werden.

  1. Terminal öffnen
  2. https://brew.sh/ Installieren:
    • /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
  3. brew install sstp-client
  4. sudo touch /etc/ppp/options
  5. sudo /usr/local/sbin/sstpc --log-stderr --cert-warn --user <[email protected]> --password <PASSWD> <SERVER-FQDN> usepeerdns require-mschap-v2 noauth noipdefault defaultroute refuse-eap noccp

Das Split-Tunneling, also die eigene Defaultroute weiter für den Netzzugang nutzen, kann man indem man den Parameter defaultroute weglässt.

Und schon steht die Verbindung 🙂

Firefox/Chrome HSTS Cache „NET::ERR\_CERT\_AUTHORITY\_INVALID“ oder „MOZIlLA_PKIX_ERROR_SELF_SIGNET_CERT“

Problem

Es kommt mal vor, das Zertifikate ablaufen. Tausch der Admins das Zertifikat dann auch, anstatt ein bestehendes zu verlängern, passiert es gerne das Edge/Chrome/Firefox die Verbindung verweigern.

Lösung

HSTS (HTTP Strict Transport Security) ist ein krasser Schutz für HTTPS-Verbindungen. Dabei wird dem Browser der HTTP Response Header „Strict-Transport-Security“ vom Server gesendet. Dies veranlasst den Browser zukünftig nur verschlüsselte Verbindungen zu dieser Domain aufzubauen. An sich eine nette Erfindung die „Fallback man in the middle“ Attacken verhindert.

Die meisten Browser speichern zusätzlich zu dem Flag für die Domain(s) auch noch den Thumprint der Certifikates. Ändert sich der Fingerabdruck, läuft man in diesen unumgänglichen Fehler.

Firefox

  1. Alle Tabs und Fenster schließen, bis auf eins
  2. Bibliothek > Chronik > gesammte Chronik anzeigen
  3. Nach der betroffenen Seitenadresse suchen
  4. Rechte MT und „Gesamte Webseite vergessen“ wählen
  5. Einen Moment warten, Firefoxy neu starten, geht.

Chrome

Chrome ist leider etwas umständlicher zu bedienen:

  1. Öffne chrome://net-internals/#hsts
  2. Unter „Query HSTS/PKP domain“ nach der Domain suchen. Achtung, das ist FQDN-Sensitiv. Wenn die Domain auftaucht …
  3. Ganz unten unter „Delete domain security policies“ den FQDN eintragen
  4. „Delete“ löscht die zugehörigen Einträge
  5. Chrome neu starten, fertig

Windows Server 2019 „Set-RDWorkspace“ Fehler „Ausnahme beim Aufrufen von ‚Put‘ mit 0 Argument(en):“

Das CMDlet Set-RDWorkspace ist unter Windows Server 2019 (wie so vieles andere ebenfalls) kaputt. Man sollte eigentlich den Workspace-Namen so setzen können:

Set-RDWorkspace -Name "Welt der Wunder"

Aber der Befehl produziert nur einen Fehler:

Set-RDWorkspace : Fehler beim Aktualisieren des Arbeitsbereichs für den RD-Verbindungsbrokerserver
 "FQDN.MEINESSERVERS".
 Fehler: Ausnahme beim Aufrufen von "Put" mit 0 Argument(en):  ""
 In Zeile:1 Zeichen:1
 Set-RDWorkspace -Name "Welt der Wunder"
 ~~~~~~~~~ CategoryInfo          : NotSpecified: (:) [Write-Error], WriteErrorException
 FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException,Set-RDWorkspace 

Lösung

Den Workspace-Namen und die Beschreibung („Description“) setzt man am besten direkt in der Registry in dem Schlüssel HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\CentralizedPublishing

Windows Registry Editor Version 5.00

 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\CentralizedPublishing]
 "WorkspaceName"="Welt der Wunder"

Windows 10 Offlinedateien zurücksetzen (reset)

Problem

Manchmal macht der (prinzipiell gutmeinende) Windows 10 Offline-Cache, namentlich „Offlinedateien“ oder auch „CSC“ für Client-Side Caching, absurde Sachen. Gerne lässt sich diese fiese kleine Mimose auch durch Serverumzüge verwirren und präsentiert unlösbare Konflike im Synccenter. Es „entstehen“ auch manchmal unlöschbare Ordner, neue Dokumente kommen auf Dateiservern nicht mehr (zuverlässig) an und generell ist das was der Explorer zeigt nicht mehr das selbe was der Explorer auf dem Fileserver auflistet.

Lösung

In den meisten Fällen hilft ein Zurücksetzen des Caches. Achtung, dabei wird sämtlicher zwischengespeicherter Inhalt entfernt, man sollte also von den betroffenen Daten eine Sicherung haben.

Möglichkeit 1: Cache neu erstellen lassen (liebevolle Variante)

Einen neuen DWORD-Wert (32bit) “ FormatDatabase“ mit dem Wert „1“ erstellen:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\CSC\Parameters]
"FormatDatabase"=dword:00000001

Danach rebooten.

Die meisten Synchronisationsfehler sind damit schon behoben. Als hätten die Programmierer des CSC geahnt das dieses transparente Caching-Konzept … „anfällig“ sein könnte.

Möglichkeit 2: Cache komplett löschen (krasse Variante)

Der Offline-Cache wohnt in %windir%\CSC. Dieser Inhalt muss komplett entsorgt werden.

  1. Als ein anderer Benutzer anmelden (man kann seinen „eigenen“ Cache nicht wärend man aangemeldet ist löschen)
  2. Besitz von „C:\Windows\CSC“ als Benutzer (keine Gruppe!) übernehmen (mit Unterordnern und Dateien)
  3. Rechte in „C:\Windows\CSC“ für den Vollzugriff vererben
  4. Ordnerinhalt komplett löschen
  5. Registry-Eintrag (siehe oben) erstellen
  6. Rebooten
takeown /r /f C:\Windows\CSC
rd /s C:\Windows\CSC
reg add HKLM\SYSTEM\CurrentControlSet\Services\CSC\Parameters /v FormatDatabase /t REG_DWORD /d 1
shutdown -r -f -t 0