Zielsetzung
Dieses Dokument beschreibt die Einrichtung einer IPsec-Verbindung zwischen einer pfSense Firewall und einem mobilen Client. Als Client Software kommt der frei verfügbare Client von SHREW SOFT zum Einsatz. Diese Software gibt es als Windows- und Linux-Version.
Freunde von Debian können dieses Paket mit apt-get install ike
installieren.
Grundsätzlich ist die Einrichtung nicht schwer. Wichtig ist jedoch, dass die Konfiguration der IPsec-Parameter zwischen Server und Client zusammen passen und dass später in den Regeln der Firewall der Datenverkehr für den IPsec Client auf der pfSense erlaubt wird (siehe dazu: Firewall -> Rules -> IPSEC )
Konfiguration der pfSense Firewall
IPsec in der pfSense aktivieren
In der Administrationsoberfläche der pfSense wählt man den Punkt VPN -> IPsec.
- Die Option ☑ Enable IPsec aktivieren
- Die Änderung mit Save speichern.
Unterstützung für mobile Clients aktivieren
Über den Punkt VPN -> IPsec -> Mobile clients die Einstellungen für die IPSec Client-Verbindung vorgeben.
- Die Option ☑ Allow mobile clients aktivieren
Einstellungen für Phase 1 proposal (Authentication)
Negotiation mode | : aggressive | |
My identifier | : My IP address | |
Encryption algotithm | : 3DES | |
Hash algorithm | : SHA1 | |
DH key group | : 2 | |
Lifetime | : 86400 | |
Authentication method | : Pre-shared key |
Einstellungen für Phase 2 proposal (SA/Key Exchange)
Protocol | : ESP | |
Encryption algorithm | : 3DES, Blowfish, CAST128, Rijndael (AES) | |
Hash algorithm | : SHA1, MD5 | |
PFS key group | : off | |
Lifetime | : 3600 |
Kennwort für die Client Verbindung
Der Client wird sich mit einer Identifikation und dem dazugehörigen Kennwort anmelden. Dazu wird der Punkt VPN -> IPsec -> Pre-shared keys aufgerufen. Über die Schaltfläche [+] kann eine neue Identifikation hinzugefügt werden.
Identifier | : <EMail-Adresse des Clients ( z.B. max.mustermann@example.org )> | |
Pre-shared key | : <Zufälliges, langes Kennwort ( z.B. R8w3Ucf3wlj302fGh )> |
Konfiguration des IPSec Clients von Shrew Soft
Grundsätzlich sollte die Verbindung mit jedem IPsec Client möglich sein. Ich benutze hier die Software von Shrew Soft, da ich damit gute Erfahrungen gemacht habe. Die jeweiligen Einstellungen sollten in anderen IPsec Client sin ähnlicher Form zu finden sein.
Zuerst wird der Shrew Soft VPN Access Manager gestartet. Danach wird über die Schaltfläche Add eine neue VPN Site Configuration begonnen.
Einstellungen im Register General
Host Name or IP Address | : <Public ip address of the pfSense box> | |
Port | : 500 | |
Auto Configuration | : disabled | |
Adapater | : Use an existing adapater and current address |
Einstellungen im Register Client
Auf dem Register Client werden keine Einstellungen verändert. Wir behalten die dort gewählten Werte.
NAT Traversal | : enable | |
NAT Traversal Port | : 4500 | |
Keep-alive packet rate | : 15 | |
IDE Fragmentation | : enable | |
Maximum packet size | : 540 | |
Aktivieren der Option | : ☑ Enable Dead Peer Detection | |
Aktivieren der Option | : ☑ Enable ISAKMP Failure Notification |
Einstellungen im Register Name Resolution
Deaktivieren der Option ☐ Enable WINS
Deaktivieren der Option ☐ Enable DNS
Einstellungen im Register Authentication
Authentication Method | : Mutual PSK | |
Local Identity | ||
-> Identitity Type | : Key Identifier | |
-> Key ID String | : <Hier die EMail-Adresse von oben eingeben.> | |
Remote Identity | ||
-> Identification Type | : IP Address | |
-> Aktivieren der Option | : ☑ Use a discovered remote host address | |
Credentials | ||
-> Pre Shared Key | : <Den Pre-shared key für diese EMail-Adresse eingeben> |
Einstellungen im Register Phase 1
Exchange Type | : aggressive | |
DH Exchange | : group 2 | |
Cipher Algorithm | : 3des | |
Hash Algorithm | : sha1 | |
Key Life Time limit | : 86400 |
Einstellungen im Register Phase 2
Transform Algorithm | : esp-3des | |
HMAC Algorithm | : sha1 | |
PFS Exchange | : disabled | |
Compress algorithm | : disabled | |
Key Life Time limit | : 3600 |
Einstellungen im Register Policy
Deaktivieren der Option ☐ Obtain Topology Automatically or Tunnel All
Auf die Schaltfläche Add klicken und das entfernte Zielnetzwerk (privates Netzwerk hinter der pfSense) eingeben. Damit wird später eine passender Eintrag in der Routingtabelle erzeugt um das Zielnetzwerk zu erreichen.
Type | : Include |
Address | : <Netzwerk hinter der pfSense ( z.B. 192.168.0.0 ) |
Netmask | : <Netzwerkmaske für das entfernte Netzwerk ( z.B. 255.255.255.0 ) |
Randnotiz
Die Option General -> Use an existing adapter and current address funktioniert solange gut, bis der Client in einem Netzwerk steht, dessen IP-Adressen sich mit dem privaten Netzwerk hinter der pfSense überschneiden. Dann funktioniert das Routen zum Ziel nicht mehr..
Eine Abhilfe schafft hier die Option Use a virtual adapter and assigned address.
Hierbei verwendet der IPsec Client eine eigene, virtuelle Netzwerkkarte und dort läßt sich eine IP-Adresse angeben, die sich weder mit dem lokalen Netzwerk des Clients ( z.B Cafe, Flughafen ) noch mit dem entfernten Netzwerk der pfSense überdeckt.
Leider habe ich mit meinem Windows 7 oder mit meiner Debian squeeze es nicht geschafft mit dieser Option Daten zwischen dem Client und der pfSense zu bewegen. Der Tunnel war aufgebaut, aber es flossen keine Daten.
Tips zur Fehlersuche
Sollte es mit der Verbindung auf Anhieb nicht klappen, dann kann das verschiedenen Ursachen haben.
- Der Client sitzt hinter einer Firewall die kein IPsec Passthru erlaubt
- Es liegt ein Fehler bei den Einstellungen zwischen pfSense und IPsec Client vor
Hilfreich bei der Fehlersuche sind die Protokolle der pfSense, die man unter Status -> System logs -> IPSEC VPN einsehen kann.