IPsec ist eine weit verbreitete Lösung für VPNs. IPSec ist ein Framework welches Mechanismen vorschreibt und auf Schicht 3 (Vermittlungsschicht) des ISO/OSI-Modells läuft. Daher sind viele Einstellungen möglich und Komplexität erhöht bekanntlich die Schwierigkeit der Konfiguration. Zusätzlich kann es zu Problemen aufgrund unterschiedlicher Implementierungsgrade der Hersteller.
Entscheidung zwischen AH oder ESP: (Beide zusammen sind möglich aber unüblich)
AH (Authentication Header): Es identifiziert die Datenquelle und sichert die
Datenintegrität durch Authentifizierung zu, liefert aber
keine Vertraulichkeit (Verschlüsselung) der Daten. Es muss immer erst ein Security Agreement (SA) ausgehandelt werden. Der AH-Header wird zwischen dem IP-Datagramm und dem IP-Header eingefügt.
AH ist bei NAT nicht möglich.
ESP (Encapsulating Security Payload): Es soll die
Authentizität der übertragenen Pakete sicherstellen und die
Daten durch Verschlüsselung sichern. ESP versucht alle möglichen, nicht variablen Felder eines IP-Datagramms zu schützen. Es sind lediglich Felder ausgeschlossen, die sich auf dem Weg eines IP-Pakets durch ein IP-Netz durch die Router verändern können.
Wahl der Hash- und Verschlüsselungsalgorithmen: hier kann man sich an der aktuellen Situation orientieren, aktuell sind (noch) SHA-1 (MD5 nicht mehr) als
Hash sinnvoll, für die Verschlüsselung z.B. AES, Blowfish und evtl. 3DES.
IKE oder vorher ausgetauschte Schlüssel
IKE oder ISAKMP bietet die sichere Schlüsselaushandlung über unsichere Netze und sorgt zusätzlich für eine periodische Änderung des Schlüssels
vorher ausgetauschte Schlüssel (Pre-shared-keys) müssen allen Kommunikationspartnern bekannt sein und auch entsprechend gesichert werden. Bei Verlust müssen alle Schlüssel ausgetauscht werden. Daher nur in wenigen Fällen sinnvoll.
Tunnel- oder Transportmodus:
Tunnelmodus: Im Tunnel Mode wird das ursprüngliche IP–Paket einfach in ein neues Paket eingepackt. Der ursprüngliche (innere) IP-Header wird erst wieder verwendet, wenn das empfangende Security-Gateway (das Tunnelende auf der Empfangsseite) die IP-Kapselung entfernt hat und das Paket dem eigentlichen Empfänger zustellt. Im Tunnelmodus sind Gateway-zu-Gateway-, Peer-zu-Gateway- oder Peer-zu-Peer-Verbindungen möglich. Ein Vorteil des Tunnelmodus ist, dass bei der Gateway-zu-Gateway-Verbindung nur in die Gateways (Tunnelenden) IPsec implementiert und konfiguriert werden muss. Angreifer können dadurch nur die Tunnelendpunkte des IPsec-Tunnels feststellen, nicht aber den gesamten Weg der Verbindung.
Transportmodus: Der IPsec-Header wird zwischen dem IP-Header und den Nutzdaten eingefügt. Der IP-Header bleibt unverändert und dient weiterhin zum Routing des Pakets vom Sender zum Empfänger. Der Transportmodus wird verwendet, wenn die „kryptographischen Endpunkte“ auch die „Kommunikations-Endpunkte“ sind. Nach dem Empfang des IPsec-Paketes werden die ursprünglichen Nutzdaten (TCP/UDP-Pakete) ausgepackt und an die höherliegende Schicht weitergegeben. Der Transportmodus wird v. A. für Host-zu-Host- oder Host-zu-Router-Verbindungen verwendet z. B. zu Netz-Management-Zwecken.
Main oder Quick (Aggressive-)Modus:
Manche Konfigurationen sind anfällig für Angriffe:
ESP im Tunnelmodus mit „confidentiality only“ oder mit Integritätsprüfung durch höhere Protokolle.
manche Konfigurationen mit AH.
Siehe NISCC Vulnerability Advisory IPSEC - 004033.
# ipsec.conf
# PSK -> /etc/ipsec.secrets
config setup
# strictcrlpolicy=yes
# uniqueids = no
charondebug="cfg 2, chd 2, esp 2, ike 2, knl 2, lib 2, net 2, tls 2"
conn CONNECTION1
auto=start
authby=secret #this specifies how the connection is authenticated
type=tunnel #the type of connection
left=gw1.firma1.tld #This is the public ip address of server A
leftsubnet=1.2.3.4/24 #This is the subnet/private ip of server A
right=gw2.firma2.tld #This is the public ip address of server B/remote server
rightsubnet=5.6.7.8/24 #This is the subnet/private ip of server B
keyexchange=ikev2 #Internet key exchange version
ike=aes256-sha256-modp2048 #Internet key exchange, type of encryption (modp2048 = group14)
ikelifetime=86400s #Time before re-authentication of keys
lifetime=3600s
esp=aes256-sha256-modp2048 #Encapsulation security suite of protocols
# generate PSK: dd if=/dev/urandom count=1 bs=32 2>/dev/null | base64
/etc/ipsec.secrets
$left $right : PSK "this_is_the_PSK_change_it!"