Erlanger Linux User Group OpenVPN Warum noch IPsec benutzen? Klaus Thielking-Riechert ktr@erlug.de 3. Erlanger Linuxtage 15./16. Januar 2005
Was ist ein VPN? ein Mechanismus zur sicheren Kommunikation zwischen zwei oder mehreren Standorten nicht notwendigerweise übers Internet! üblicherweise unter Verwendung kryptographischer Methoden logische Nachfolger von direkten WAN- Verbindungen und virtual circuits
Ziele und Werkezeuge Ziele Vertraulichkeit Integrität Authentizität Nachweisbarkeit Methoden symmetrische Schlüssel asymmetrische Schlüssel digitale Signaturen message digests
Historisches über VPNs 1998: IPSEC / RFC 2401 Security Architecture for the Internet Protocol IKE, AH, ESP IPv6 UDP Absicherung auf Netzwerk-Ebene Probleme Export Kontrolle ungenügender CPU-Leitung für die Implementierung in Routern Komplexität Bruce Schneier/Niels Ferguson: IPsec is too complex to be secure (1999)
Ipsec Modi Tunnelmodus primär LAN-to-LAN Transparenter Modus Client-to-Client
IPSec und der Kernel Kernel läßt sich in verschiedene Ringe aufteilen Jeder Ring hat unterschiedliche Rechte Ring 0: kernel Prozesse Ring 1: system Prozesse mit Zugriff auf Hardware Ring 3: user processes Prozesse des Rings n können nur über definierte Schnittstellen auf Ressourcen von Prozessen des Rings (n-1) zugreifen Sicherheit!
IPsec und Linux Kernel 2.4: FreeS/wan: Patch... IPSEC gräbt sich in den OS-Kernel ein um den Verkehr zu verschlüsseln! ipsec* interfaces Kernel 2.6: IPsec 'onboard' keine ipsec* interfaces netfilter problematik Tunnelmodus Transparenter Modus
IPsec ist ok, aber... Komplexität Hersteller (außerhalb Linux und *BSD) kochen eigene Süppchen und sind selten interoperabel ggf. Kernel-Patch...
Da war doch was anderes... (viele) kennen SSL (fast) alle nutzen SSL https, ssh, pop3s, ldaps,... (fast) alle vertrauen SSL ;-) sehr weit verbreitet und vielfach untersucht einfach, robust und gut getestet
Evolution der sog. SSL-VPNs Zugriff auf interne Ressourcen via https:// Web-basierte Groupware egroupware, inotes,... Mail, Kalender, Dateien,... unhandlich Weiterleitung auf spezifische Ressourcen durch ssh-tunnel oder Proxies, o.ä. unhandlich Transparenter Zugriff durch virtuelle Netzwerk- Interfaces cool
Basistechnologie: virtuelle Interfaces Grund-Idee: zwei virtuelle Interfaces auf den Host A und B werden durch eine TCP- oder UDP-Verbindung verknüpft der Verkehr auf dieser Verbindung wird verschlüsselt der Zugriff auf diese virtuellen Interfaces ist identisch zu physikalischen Interfaces (open(), read(), write(),.. es können die gleichen Protokolle verwendet werden
Linux virtuelle Interfaces: tun und tap tun stellt sich fürs System wie eine Punkt-zu-Punkt Verbindung dar ein normales (user space) Programm kann das tun device öffnen wie eine Datei und anschließen IP Pakete schreiben bzw. lesen tap das tap interface hat die gleichen Zugriffsmechanismen, allerdings stellt es sich nicht als P-t-P sondern als Ethernet dar
Was hilft ein tun interface beim VPN? Ein Beispiel: Angenommen es gibt auf host-a und host-b ein tun-interface und es gibt eine simple Applikation mit zwei Threads: kopiere Bytes vom tun-device zur Applikation (-> socket) kopiere Bytes von der Applikation zum tun-device damit haben wir ein VPN minus Sicherheit!
OpenVPN Author: James Yonan http://openvpn.net Geschichte Ver 1.0 / 23.03.2002 TLS-based authentication and key exchange Ver 1.2 / 22.05.2002 Solaris, OpenBSD, MacOSX Ver 1.3.2 / 23.10.2002 IPv6 over tun Version 1.5-beta1 / 24.7.2003 TCP support via the new proto option Ver 2.0rc6 / 20.12.2004 mode server, management interface, auth-pam,...
OpenVPN und Interoperabilität Linux Windows 2000/XP und was danach kam OpenBSD FreeBSD NetBSD Mac OS X Solaris
OpenVPN-Architektur Server erhält Anfrage zum Tunnelaufbau kontrolliert die Anfrage modifiziert ggf. das Routing / Firewall Client startet den Tunnelaufbau schickt Authentisierungsdaten erwartet ggf. Optionen vom Server
OpenVPN Key Features UDP / TCP tun / tap Interface vgl. Tunnel-Modus IPsec MTU-size Multi-Client NAT Traversal (!)... re-connect / DDNS
OpenVPN Key Features user-space Multithreaded Komprimierung chroot Plugin für Scripts (Client & Server) PAM Firewall pull/push
OpenVPN Authentisierung X.509 Zertifikate typischerweise eigene CA 'a weng' aufwendiger Pre-Shared Key (PSK) einfache Methode präferiert für Tests Plugins PAM
OpenVPN: Killer-Applikation Proxy-Support & TCP-Support wenn der OpenVPN-Server auf Port 443/tcp konfiguriert ist, dann funktioniert das in sehr vielen Umgebungen! (DAS kann IPsec nicht!)
Beispiel I: Roadwarriors / Home Office OpenVPN Server udp / 442 OpenVPN Clients trusted client OpenVPN Clients OpenVPN Server tcp / 443 mode server
Beispiel I (Forts.) Live-Demo
Beispiel I (Forts.) Roadwarriors: alle am gleichen tun-interface gleiche Policy trusted client: spezifische Policy / Konfiguration mehr Rechte als Roadwarrior
Beispiel II: IpV6 Idee Verlängerung eines IPv6 Netzwerks über OpenVPN IPv6-Tunnel und Verschlüsselung durch gleiche Applikation globale Erreichbarkeit z.b. über freenet6 http://www.freenet6.net trotz Firewall trotz Proxy
Beispiel: IPv6 IPv6 freenet6.net
Beispiel I (Forts.) Live-Demo
Beispiel: VPN mit dyn. Routing
Beispiel: VPN mit dyn. Routing
VPN-Concentrator ein Server als zentraler Tunnelkonzentrator sternförmiges Setup keine Vermaschung einfaches Setup Zertifikatmanagement Firewallkonfiguration single-point-of -failure Verbindungen laufen grundsätzlich über den Konzentrator
VPN mit dynamischen Routing verteiltes Setup Teilvermaschung dynamisches Routing über die tun-interfaces erforderlich (z.b. quagga) Redundanz Routing in Abhängigkeit der verfügbaren Bandbreite komplexes Setup verteiltes Zertifikatmanagement verteilte Firewallkonfiguration
OpenVPN: Leistung Durchsatz: Beispiel: Client: Pentium Mobile Server: PII 266 Mhz Medium: WLAN (11 Mbps) Durchsatz: 5 Mbps Server: OpenVPN 23% CPU Zitate: Viele hundert Tunnel möglich gute Performanz
Zusammenfassung OpenVPN portabel interoperabel (Linux, MacOS, *BSD,... und auch Windows) einfache Installation und Konfiguration user-space daemon verwendet OpenSSL und dessen Fähigkeiten (und Fehler) PSK oder TLS-basierten dynamischen Schlüsselaustausch kein Problem mit NAT Tunnel über UDP oder TCP (sogar via Proxy) Authentisierung erweiterbar durch PAM
Zusammenfassung OpenVPN (Forts). mit anderen Worten: OpenVPN rocks!