Obwohl im Handbuch der Fortigate sehr gut beschrieben (Fortigate IPSEC Handbuch) folgt hier eine Zusammenfassung der Einrichtung eines L2TP/IPSEC VPN. Grundsätzlich halte ich mich exakt an die Vorgaben des Handbuches, jedoch habe ich bei einigen Bereichen eine etwas ausführlichere Beschreibung hinzugefügt.
Voraussetzung
- L2TP-Traffic muss erlaubt sein.
- Clientseitig muss Windows 2000 oder höher eingesetzt werden
- Firewall ist im NAT Mode
Anlegen eines Users und einer Gruppe
Zuerst legen wir einen User auf der Firewall an. Hierfür loggen wir uns in die Fortigate ein. Dann wählen wir auf der linken Seite :
- USER -> User
- dann im rechten Fenster (oben) -> Create New
- Im folgenden Fenster vergeben wir einen Usernamen. Dieser Name ist dann im VPN Client (Verbindungsfenster von Windows ) als Benutzername einzugeben. Ich wähle hier VPN_User1
- Im Feld Password wird – wie der Name vermuten lässt – das Passwort eingetragen. Dieses sollte möglichst KEIN erratbares Kennwort sein, Sonderzeichen, Groß- und Kleinschreibung, Buchstaben und Ziffern sind anzuraten! Dieses Passwort wird (später) im Verbindungsfenster der VPN Verbindung (Feld Passwort) eingegeben.
- Die Fortigate überprüft bei Verbindungsaufbau die oben angegebenen Daten. Allerdings müssen diese VPN User einer Gruppe zugeordnet werden!
Erstellen der Gruppe bzw. Zuordnung des User
Wir gehen im Adminbackend der Fortigate folgendermaßen vor, um eine Gruppe zu erstellen und den User der Gruppe zuzuordnen:
- USER -> User Group -> User Group
- dann (wieder oben im rechten Fenster) auf Create New
- Unter Name kann ein beliebiger Name eingegeben werden. Achtung: Diesen Namen bitte merken (muss später weiter verwendet werden!). Ich nehme hier L2TP_Usergroup als Gruppenname.
- Unter Available Users sehen wir unseren zuvor angelegten User (VPN_User1)
- Diesen User klicken wir doppelt an. Er springt dann hinüber in das Fenster Members (der soeben erstellten Gruppe).
- Wir klicken auf OK und haben somit User und Gruppe angelegt.
Man muss den User NICHT direkt auf der Fortigate anlegen. Es ist auch möglich, einen LDAP Lookup zu realisieren. Darauf gehe ich hier jedoch NICHT ein!
L2TP konfigurieren
Nun müssen wir im „Linuxstyle“ L2TP aktivieren und die IP Range festlegen, die sich einwählende Clients, angeboten bekommen. Linuxstyle deshalb, da man das nur mit der CLI der Fortigate machen kann.
- Einloggen ins Adminbackend
- Wir sollten nun am Dashboard sein (Linke Seite oben Dashboard -> Dashboard)
- Falls keine CLI Konsole angezeigt wird: Im rechten Fenster oben auf -> + Widget klicken.
- Im folgenden Fenster CLI Konsole wählen und Fenster schließen
- Nun sollte am Dashboard die CLI Konsole erscheinen
- Durch Klick in das Fenster aktivieren wir die Konsole
Jetzt brauchen wir den exakten Namen der zuvor erstellten Gruppe. In meinem Beispiel hat die Gruppe L2TP_Usergroup geheissen!
wir tippen in die Console, jede Zeile gefolgt von einem RETURN:
config vpn l2tp
set sip 192.168.1.100
set eip 192.168.1.100
set status enable
set usrgrp „L2TP_Usergroup“
end
Im obigen Beispiel wird dem VPN Client nur eine IP Adresse – nämlich 192.168.1.100 – angeboten. Wenn man hier will, dass mehrere IPs angeboten werden (da es mehrer externe Clients gibt), setzt man die „set eip“ auf einen anderen Wert z.B.: 192.168.1.150
Adresse bzw. Adressrange der VPN Verbindung auf der Firwall anlegen
Die im vorhergehenden Schritt angelegte Adresse (192.168.1.100) bzw. eine eventuell angelegte größere Range ist in der Fortigate unter:
- Firewall Objects
- Address
- Address
- rechtes Fenster (oben)
- Create new
anzulegen.
Als Name vergeben wir Adr_VPN1. Als IP die zuvor erstellte 192.168.1.100 (oder eben die Range (von bis) die man in der Konsole angegeben hat. Ich bleibe hier aber bei 192.168.1.100!
IPSec konfigurieren – Phase 1
IPSec wird vom MS-VPN-Client zur Verschlüsselung verwendet. Zur Konfiguration gehen wir wie folgend vor:
- Wir gehen ins Adminbackend der Fortigate (falls wir dort nicht schon sind)
- VPN -> IPSec -> Auto Key (IKE)
- Klick auf Create Phase 1
- Unter Name geben wir einen beliebigen Namen für die Verbindung ein (ich nehme hier dial_up_p1
- Remote Gateway: Dialup User
- Local Interface: Auswahl des Interfacenamen, das mit dem Internet verbunden ist (meist WAN1)
- Mode: Main (ID Protection)
- Authentication Method: Preshared Key
- Pre-shared-Key: Hier einen Key eingeben (möglichst komplex!). Dieser Key wird unter Windows dann bei den Sicherheitseinstellungen (Eigenschaften der Windows VPN Verbindung -> Reiter Sicherheit -> unten -> IPSec-Einstellungen -> Vorinstallierter Schlüssel für Authentifizierung) verwendet
- Klick auf Advanced
- Enable IPSec Interface Mode (Diese Einstellung DARF NICHT aktiv sein!)
- P1 Proposal: Folgende Verschlüsselungspaar wählen: AES256 – MD5, 3DES-SHA1, AES192-SHA1
- DH-Group: 2
- NAT-Traversal: Enable
- Dead Peer Detection: Enable
Konfigurieren von Phase 2
- Wir sind (noch immer) im Adminbackend
- VPN -> IPSEC -> Auto Key (IKE)
- Klick auf Create Phase 2
- Name: Beliebiger Name für die Phase 2 (ich nehme: dial_up_p2)
- Phase 1: Wählt hier im Dropdownmenü die zuvor erstelle Phase1-Verbindung (dial_up_p1).
- Klick auf Advanced
- P2 Proposal: Folgende Paare wählen: AES256-MD5, 3DES-SHA1, AES192-SHA1 (Info: wenn man rechts neben den Paaren auf das + klickt, kann man ein weiteres Paar hinzufügen).
- Enable replay detection: Enable
- Enable perfect forward secrecy (PFS): Disable
- Keylife: 3600 seconds
Nun müssen wir uns nochmals in die CLI Konsole begeben, um den Transportmodus für diese VPN Verbindung zu aktivieren:
- Wieder ins Fortigate Backend
- Dashboard -> CLI-Konsole (in das Fenster klicken)
- danach schreiben wir folgendes:
config vpn ipsec phase2
edit dial_up_p2
set encapsulation transport-mode
end
Konfigurieren der Security Policies
für L2TP über IPSec benötigt man folgende Policies:
- Eine IPSec Policy – wie bei jedem policy based VPN
- Eine „ACCEPT“ Policy um den Traffic von L2TP Clients in das „geschützte“ interne Netzwerk zu erlauben. Anmerkung: Hier ist wahrscheinlich etwas verwirrend, dass die Policy nicht von WAN (EXTERNAL) nach LAN (Internal) zu erstellen ist, sondern von LAN nach WAN! Aber dazu kommen wir gleich.
Wie immer sind wir im Fortigate-Backend und machen folgendes:
- Policy -> Policy -> Policy -> Create New
- Source Interface: Internal
- Source Adress: all, ODER einen ganz speziellen internen Rechner, den man zuvor als Adresse in der Fortigate angelegt hat. Man kann so also den Zugriff auf einen Rechner begrenzen.
- Destination: WAN1 (bzw. der Port, der eben in das öffentliche Netz (Internet) „geht“.
- Destination Adress: all, ODER eben auch hier eine Einschränkung falls der Einwahlpunkt mit einer statischen offiziellen IP ausgestattet ist! Zum Testen würd ich jedoch mal auf „all“ bleiben.
- Service: any oder eben entsprechend einschränken
- Action: IPSEC
- VPN Tunnel: Hier wählt man dann den Namen aus, den man bei Phase 1 bei der VPN Erstellung angegeben hat. In unserem Beispiel also dial_up_p1
- Allow Inbound: Enable
- Allow Outbound: Enable
- UTM: Optionale Einstellungen (Virenscan etc)
Nun muss noch eine Policy erstellt werden, die den Verkehr zwischen dem VPN Client (IP 192.168.1.100) und dem internen Netz erlaubt. (Diesmal von WAN1 nach Internal):
- Fortigate Backend
- Policy -> Policy -> Policy
- Create New
- Source Interface: WAN1
- Source Adress: Wir suchen unsere am Anfang angelegte ADR_VPN1 und wählen sie aus
- Destination Interface: LAN (Internal)
- Destination Adress: all
- Service: any oder eben entsprechend einschränken
- Action: Accept
- UTM: Optionale Einstellungen (Virenscan etc)
Nun sollten also die notwendigen Schritte erledigt sein, um die Fortigate zu konfigurieren. Als nächstes gilt es nur noch, Windows entsprechend zu konfigurieren.
Die Windows Konfiguration
Ich habe hier noch Windows XP laufen. Unter XP ist folgendes zu machen:
- Start -> Einstellungen -> Netzwerkverbindungen
- Neue Verbindung erstellen
- Verbindung mit dem Netzwerk am Arbeitsplatz herstellen
- VPN-Verbindung
- Firmenname -> Beliebig
- Hostname oder IP = offizielle (WAN1) IP der Fortigate die als VPN Server dient
Im Verbindungsfenster gibt man als Benutzername den Benutzernamen ein, den wir auf der Fortigate als User angelegt haben. In unserem Beispiel wäre das: VPN_User1 (achtet auf Groß-/Kleinschreibung!). Das Passwort entspricht dem auf der Forti für den User angelegten Passwort.
Danach klicken wir auf Eigenschaften -> gehen auf Reiter Sicherheit. Die Einstellung sollte auf: Typisch -> Sicheres Kennwort ist erforderlich stehen + Datenverschlüsselung ist erforderlich muss angehakt sein.
Unten rechts klicken wir nun auf IPSEC-Einstellungen. Wir setzen das Häkchen bei Vorinstallierter Schlüssel für Authentifizierung verwenden. Danach geben wir als Schlüssel den Schlüssel ein, den wir für die VPN Verbindung Phase 1 vergeben haben.
Somit ist nun alles erledigt und die VPN Verbindung sollte funktionieren.
Hallo,
ich habe versucht einen IPSec Tunnel nach deiner Anleitung auf einem Fortigate 40C mit FortiOS v5 zu programmieren, aber bei den Policies habe ich bei Action kein IPSec.
Sind die Einstellungen bei v5 anders?
Grüße,
Alex
Hallo,
ich glaube bei der V5 ist hier bei Policy Subtype IP Sec zu wählen.
Schau mal hier: http://www.youtube.com/watch?v=8sDbUZAwzE0
LG
Daniel
Hey,
ich muss von der Schule aus eine VPN konfigurieren mit einer Fortigate.
Habe es nach deiner Anleitung versucht, aber den Befehl mit der Encapsulation gibt es anscheinend gar nicht.
Welche FortiOS Version nutzt du?
lG
Servus… Hab hier ne 60 C mit v4.0,build0632,120705 (MR3 Patch 8)
Solltest du noch eine ältere Firmware laufen haben:
1.) Backup von der Konfig ziehen
2.) Upgrade machen (geht recht easy)
@Sven:
Du benötigst 4.0 MR3, mit MR1 geht’s nicht, MR2 bin ich nicht sicher.
Tobias
Danke für die Antwort 🙂
Danke erstmal für den guide.
Leider habe ich ein Problem mit dem Befehl:
set encapsulation transport-mode
Die Konsole bringt mir darauf eine Fehlermeldung:
command parse error before ‚encapsulation‘
Command fail. Return code -61
Was mache ich da falsch?
Gerät ist eine Fortigate 50B
Firmware: v4.0,build0196,100319 (MR1 Patch 4)
Würde mich über eine Antwort sehr freuen.
LG
Sven
Hallo,
hast du copy&paste gemacht (von meiner Page in die Forti Console)?
Falls ja versuchs mal direkt einzutippen.