Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

© by T. Kling 2009. This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 2.0 License. To view a.

Ähnliche Präsentationen


Präsentation zum Thema: "© by T. Kling 2009. This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 2.0 License. To view a."—  Präsentation transkript:

1 © by T. Kling (kling@gds2-verw.de), 2009. This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 2.0 License. To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/2.0/de/ Virtual Private Network mit OpenVPN

2 Seite 2 6 Fragen/Aufgaben zum Einstieg:  Beschreiben Sie kurz was man unter einem VPN versteht.  Warum benötigen wir überhaupt VPNs?  Erklären Sie die folgenden Ziele, die man bei einer „sicheren“ Kommunikation verfolgt: Vertraulichkeit Datenintegrität Nachweisbarkeit Authentifikation  Was bedeutet: Host-to-Host-, Host-to-Site- und Site-to-Site-VPN  Nennen Sie 4 Varianten zur Realisierung (Protokolle) von VPNs und machen Sie sich mit deren prinzipiellen Funktionsweise vertraut.  Welche Problemstellungen ergeben sich beim Einsatz von VPNs?

3 Seite 3 Virtual Private Network ?!?  Ziele sicherer Kommunikation: Vertraulichkeit, Authentisierung, Integrität, Nachweisbarkeit  VPN verbindet Rechner und/oder Netzwerke miteinander, indem es andere (öffentliche) Netze als Transportweg nutzt.  Varianten: RAS PPTP L2TP IPSec SSL-VPN SSH-Tunnel Client VPN-Gateway VPN-Netz Internet Firmennetz

4 Seite 4 OpenVPN - Übersicht  „Dass das freie VPN-Tool einen derat großen Funktionsumfang mit einer simplen Konfiguration bei gleichzeitig hoher Sicherheit kombiniert, scheint wie die Quadratur des Kreises“ ( Linux-Magazin 05/09 )  Implementierung eines SSL-basierten VPN Anwendungsneutralität „Sichere“ Netzwerkerweiterung bzgl. OSI Layer 2 und 3 2 Betriebsmodi: Routing und Bridging Arbeitet über die Transportprotokolle TCP und UDP  Authentifizierung erfolgt auf Basis von: Benutzername/Passwort Smartcards PreShared Keys Zertifikatsbasiert

5 Seite 5 Funktionsweise phy. Verbindung eth0 192.168.2.10 eth0 192.168.2.20 tun0 10.10.10.1 tun0 10.10.10.2 Tunnel Verschlüsselung Server Client Entschlüsselung Virtuelle Verbindung Physikalischer Netzwerkadapter Virtueller Netzwerkadapter

6 Seite 6 Virtuelle Netzwerkschnittstellen: Das Tunnelprinzip Problem der Portierung von VPN-Lösungen, welche die Verschlüsselung und damit Modifikation der Datenpakete im Betriebsystemkern durchführen, auf andere Systeme! Ansatz von OpenVPN: Nutzt die sogenannten virtuellen Netzwerkschnittstellen und verknüpft diese mit einer Verschlüsselung im Userspace. virt. Schnittstellen bilden die Verknüpfung zwischen den über den Tunnel übertragenen Daten, dem OpenVPN-Prozess und dem OS. Protokollverschachtelung in Tunneln mit einem Trick: IP-Paket als Payload eines IP-Pakets. virtuelle Netzwerkschnittstellen sind Endpunkte des Tunnels. IP-Header Anwendungsdaten.... virtuelle Schnittstellephy. Schnittstelle TCP/UDPSSL

7 Seite 7 Bsp: Einfacher Tunnel ohne Verschlüsselung Server: openvpn --dev tun0 --remote 192.168.2.10 --ifconfig 10.10.10.2 10.10.10.1 Client: openvpn --dev tun0 --remote 192.168.2.20 --ifconfig 10.10.10.1 10.10.10.2 tobias@server:~$ ifconfig eth0Protokoll:Ethernet Hardware Adresse 00:0F:B0:75:76:08 inet Adresse:192.168.2.20 Bcast:192.168.2.255 Maske:255.255.255.0..... tun0 Protokoll:UNSPEC Hardware Adresse 00-00-00-00-00-00 inet Adresse:10.10.10.2 P-z-P:10.10.10.1 Maske:255.255.255.255 UP PUNKTZUPUNKT RUNNING NOARP MULTICAST MTU:1500 Metric:1

8 Seite 8 Routing und Bridging: tun- und tap-Geräte Betriebsmodus: Routing Tunnel zwischen den Gegenstellen auf OSI-Schicht 3. Gegenstellen erhalten IP-Adressen eines fiktiven Subnetzes. Zugriff auf die hinter den VPN-Gateways liegenden Netze nicht direkt möglich. Jeweiligen Gegenstellen müssen per IP-Forwarding und Einträgen in den Routingtabellen weitervermitteln. Betriebsmodus: Bridging Transparentes Tunneln von Ethernetframes (OSI-Schicht 2). Clients erhalten IP's aus dem Netz hinter dem VPN-Server. Notwendig für Broadcast-basierenden Diensten (NetBIOS, etc.). Verwendete virt. Schnittstelle wir über über eine Netzwerkbrücke mit dem realen Netzwerk verbunden.

9 Seite 9 Betriebsmodi: Point-to-Point ➢ Für Verbindungen von Host zu Host ➢ spezifische Konfigurationsdatei pro VPN-Verbindung ➢ Default-Modus von OpenVPN Client_1 UDP/119 4 OpenVPN- Prozess UDP/119 4 OpenVPN- Prozess VPN-Server Client_2 UDP/119 5 OpenVPN- Prozess UDP/119 5 OpenVPN- Prozess

10 Seite 10 Betriebsmodi: Server Mode ➢ Ansatz für Remote-Access-Verbindungen ➢ Ein Prozess auf dem Server verwaltet alle VPN-Verbindungen ➢ Point-to-Multipoint Modus Client_1 UDP/119 4 OpenVPN- Prozess UDP/119 4 OpenVPN- Prozess VPN-Server Client_2 UDP/119 4 OpenVPN- Prozess

11 Seite 11 PreShared Key Authentifizierung Verwenden einer symmetrische Verschlüsselung! Erzeugen eines gemeinsamen Schlüssels: openvpn –-genkey –-secret static.key „Sicherer“ Austausch dieses Schlüssels!?! Vorteil: Sehr einfache Konfiguration: server.conf: dev tun #remote 192.168.2.10 ifconfig 10.10.10.2 10.10.10.1 secret static.key client.conf: dev tun remote 192.168.2.20 ifconfig 10.10.10.1 10.10.10.2 secret static.key

12 Seite 12 Schlüsselaustausch mit Transport Layer Security Zertifikatsbasierte Authentifizierung über TLS-Protokoll. SSL ursprünglich von Netscape beschriebenes Protokoll: Ziel: Absicherung von HTTP-Verbindungen Versionen SSLv1, SSLv2 bis SSLv3 SSL setzt auf ein verlässliches Transportprotokoll auf (TCP/UDP). SSL besteht aus zwei Verbindungskanälen: SSL Record Protocol SSL Handshake Protocol: ► Gegenseitige Authentifizierung von Server und Client. ► Verschlüsselungsalgorithmus aushandeln und zugehörige Schlüssel austauschen (Diffie-Hellmann Key Exchange). TLS (RFC 2246) basiert auf SSLv3: TLS bietet Fallback auf SSLv3 (Kom. zw. TLS-Hosts und SSL-Clients). Authentifizierung bei TLS gegenüber SSL mit Zertifikaten Pflicht.

13 Seite 13 Zertifikatserstellung Aufbau einer PKI OpenVPN bietet mit EasyRSA bereits vorgefertigte Skripte zur Erstellung der CA, Server- und Clientzertifikate. (OpenSSL-Paket muß hierfür installiert sein) Vorgehensweise in der Dokumentation unter www.openvpn.net oder im www.openvpn-wiki.de beschrieben. www.openvpn.netwww.openvpn-wiki.de CA- und Zertifikatserstellung direkt mit OpenSSL. Ein auf OpenVPN ausgerichtetes Tutorial findet sich unter: www.online- tutorials.net/security/openssl-tutorial/tutorials-t-69-207.html www.online- tutorials.net/security/openssl-tutorial/tutorials-t-69-207.html PKI-Verwaltung mit OpenSSL oder entsprechenden grafischen Frontends wie z.B. TinyCA, roCA (Linux BootCD mit TinyCA als Keymanagement unter http://www.intrusion-lab.net/roca/ ). http://www.intrusion-lab.net/roca/

14 Seite 14 OpenVPN installieren Installationspakete sind in der Regel in den Softwarerepositories der verschiedenen Linuxdistributionen vorhanden. Installation aus den Sourcedateien von www.openvpn.net.www.openvpn.net Unterstützung der virt. Netzwerkschnittstellen tun/tap in aktuellen Betriebssystemkernen bereits enthalten. Für Windows/Mac stehen ebenfalls entsprechende Programmpakete (OpenVPN-GUI) zur Verfügung. Diese beinhalten auch den benötigten win32tap-Treiber für die virtuelle Netzwerkschnittstelle. Hilfen zur Installation: www.openvpn-wiki.de.www.openvpn-wiki.de

15 Seite 15 OpenVPN – Konfiguration / Start Erstellen/Editieren einer Konfigurationsdatei: z.B server.conf, client.conf, vpngate-sifi.conf, etc. Starten des VPN-Tunnels mit der entsprechenden Konfig-Datei: openvpn –-config server.conf Verwendung des Network-Managers:

16 Seite 16 Windows: OpenVPN - GUI  Konfigurationsdatei mit Dateiendung *.ovpn im Verzeichnis..openvpn\config\  abspeichern und anschließend aus der Taskleiste heraus starten.

17 Seite 17 Beispielnetz eth0 192.168.2.10 eth0 192.168.2.20 ClientServer eth1 172.16.0.1/24 VPN-Netz: 10.10.10.0/24

18 Seite 18 Serverkonfiguration server.conf #Benötigte Zertifikate der CA und des Servers selbst ca /etc/openvpn/keys/root.crt cert /etc/openvpn/keys/server.crt key /etc/openvpn/keys/server.key dh /etc/openvpn/keys/dh1024.pem #Netzwerkeinstellungen – Port, Protokoll, Schnittstelle port 1194 proto udp dev tun #Betriebsmodus Server und IP-Bereich für VPN-Netz mode server server 10.10.10.0 255.255.255.0 #Server „pingt“ Client alle 10s an (wichtig bei UDP). #Neu-Aufbau der Verbindung nach 120s Inaktivität. keepalive 10 120 #Logdatei und Log-Level status openvpn-status.log verb 3

19 Seite 19 Clientkonfiguration client.conf #Benötigte Zertifikate der CA und des Clients ca /etc/openvpn/keys/root.crt cert /etc/openvpn/keys/client.crt key /etc/openvpn/keys/client.key #Netzwerkeinstellungen port 1194 proto udp dev tun remote 192.168.2.20 1194 #Tunneloptionen: Client bezüglich des Server-Mode client

20 Seite 20 Start des OpenVPN-Prozesses beim Server root@ubuserv804:/etc/openvpn# openvpn --config server.conf Sat Nov 1 08:34:57 2008 OpenVPN 2.1_rc7 i486-pc-linux-gnu [SSL] [LZO2] [EPOLL] built on Jun 11 2008 Sat Nov 1 08:34:57 2008 Diffie-Hellman initialized with 1024 bit key Enter Private Key Password: Sat Nov 1 08:34:57 2008 /usr/bin/openssl-vulnkey -q -b 1024 -m Sat Nov 1 08:34:58 2008 TLS-Auth MTU parms [ L:1541 D:138 EF:38 EB:0 ET:0 EL:0 ] Sat Nov 1 08:34:58 2008 TUN/TAP device tun0 opened Sat Nov 1 08:34:58 2008 TUN/TAP TX queue length set to 100 Sat Nov 1 08:34:58 2008 ifconfig tun0 10.10.10.1 pointopoint 10.10.10.2 mtu 1500 Sat Nov 1 08:34:58 2008 route add -net 10.10.10.0 netmask 255.255.255.0 gw 10.10.10.2 Sat Nov 1 08:34:58 2008 Data Channel MTU parms [ L:1541 D:1450 EF:41 EB:4 ET:0 EL:0 ] Sat Nov 1 08:34:58 2008 Socket Buffers: R=[110592->131072] S=[110592->131072] Sat Nov 1 08:34:58 2008 UDPv4 link local (bound): [undef]:1194 Sat Nov 1 08:34:58 2008 UDPv4 link remote: [undef] Sat Nov 1 08:34:58 2008 MULTI: multi_init called, r=256 v=256 Sat Nov 1 08:34:58 2008 IFCONFIG POOL: base=10.10.10.4 size=62 Sat Nov 1 08:34:58 2008 Initialization Sequence Completed

21 Seite 21 Verbindungsaufbau aus Sicht des Servers: Zertifikatsüberprüfung Sat Nov 1 08:35:07 2008 MULTI: multi_create_instance called Sat Nov 1 08:35:07 2008 192.168.2.10:1194 Re-using SSL/TLS context Sat Nov 1 08:35:07 2008 192.168.2.10:1194 Control Channel MTU parms [ L:1541 D:138 EF:38 EB:0 ET:0 EL:0 ] Sat Nov 1 08:35:07 2008 192.168.2.10:1194 Data Channel MTU parms [ L:1541 D:1450 EF:41 EB:4 ET:0 EL:0 ] Sat Nov 1 08:35:07 2008 192.168.2.10:1194 Local Options hash (VER=V4): '239669a8' Sat Nov 1 08:35:07 2008 192.168.2.10:1194 Expected Remote Options hash (VER=V4): '3514370b' Sat Nov 1 08:35:07 2008 192.168.2.10:1194 TLS: Initial packet from 192.168.2.10:1194, sid=80a0f634 0a68125c Sat Nov 1 08:35:07 2008 192.168.2.10:1194 VERIFY OK: depth=1, /C=DE/ST=Baden-Wuerttemberg/L=Sindelfingen/O=GDS2/CN=Tobias_Kling /emailAddress=kling@gds2.de Sat Nov 1 08:35:07 2008 192.168.2.10:1194 VERIFY OK: depth=0, /C=DE/ST=Baden-Wuerttemberg/O=GDS2/CN=Testuser /emailAddress=testuser@gds2.de

22 Seite 22 Verbindungsaufbau aus Sicht des Servers: Verschlüsselungsparameter aushandeln Sat Nov 1 08:35:07 2008 192.168.2.10:1194 Data Channel Encrypt: Cipher 'BF-CBC' initialized with 128 bit key Sat Nov 1 08:35:07 2008 192.168.2.10:1194 Data Channel Encrypt: Using 160 bit message hash 'SHA1' for HMAC authentication Sat Nov 1 08:35:07 2008 192.168.2.10:1194 Data Channel Decrypt: Cipher 'BF-CBC' initialized with 128 bit key Sat Nov 1 08:35:07 2008 192.168.2.10:1194 Data Channel Decrypt: Using 160 bit message hash 'SHA1' for HMAC authentication Sat Nov 1 08:35:07 2008 192.168.2.10:1194 Control Channel: TLSv1, cipher TLSv1/SSLv3 DHE-RSA-AES256-SHA, 1024 bit RSA

23 Seite 23 Verbindungsaufbau aus Sicht des Servers: Übergabe der Tunnelparameter an Client Sat Nov 1 08:35:07 2008 192.168.2.10:1194 [Testuser] Peer Connection Initiated with 192.168.2.10:1194 Sat Nov 1 08:35:07 2008 Testuser/192.168.2.10:1194 MULTI: Learn: 10.10.10.6 -> Testuser/192.168.2.10:1194 Sat Nov 1 08:35:07 2008 Testuser/192.168.2.10:1194 MULTI: primary virtual IP for Testuser/192.168.2.10:1194: 10.10.10.6 Sat Nov 1 08:35:07 2008 Testuser/192.168.2.10:1194 PUSH: Received control message: 'PUSH_REQUEST' Sat Nov 1 08:35:07 2008 Testuser/192.168.2.10:1194 SENT CONTROL [Testuser]: 'PUSH_REPLY,route 10.10.10.1,topology net30,ping 10,ping-restart 120, ifconfig 10.10.10.6 10.10.10.5' (status=1)

24 Seite 24 Verbindungsaufbau aus Sicht des Clients

25 Seite 25 IP-Konfiguration beim Server root@ubuserv804:~# ifconfig eth0 Link encap:Ethernet HWaddr 00:0c:29:58:66:9e inet addr:192.168.2.20 Bcast:192.168.2.255 Mask:255.255.255.0...... tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 inet addr:10.10.10.1 P-t-P:10.10.10.2 Mask:255.255.255.255 UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1...... root@ubuserv804:~# netstat -rn Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 10.10.10.2 0.0.0.0 255.255.255.255 UH 0 0 0 tun0 192.168.2.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 10.10.10.0 10.10.10.2 255.255.255.0 UG 0 0 0 tun0 0.0.0.0 192.168.2.1 0.0.0.0 UG 0 0 0 eth0 root@ubuserv804:~# ping 10.10.10.6 PING 10.10.10.6 (10.10.10.6) 56(84) bytes of data. 64 bytes from 10.10.10.6: icmp_seq=1 ttl=128 time=0.771 ms

26 Seite 26...und beim Client:

27 Seite 27 Zugriff auf das Firmennetz hinter dem VPN-Server Notwendige Ergänzung in server.conf #Setzten der Route zum Firmennetz beim Client push „route 172.16.1.0 255.255.255.0“ Routing auf dem VPN-Server aktivieren Linux: sysctl -w net.ipv4.ip_forward=1 Windows: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\ Services\Tcpip\Parameters" setzen auf "IPEnableRouter=1 Im Firmennetz muss eine Route zum virtuellen Tunnelnetz (10.10.10.0), aus dem ja die Anfragen eines VPN-Clients kommen, existieren.

28 Seite 28 Managementinterface OpenVPN stellt über einen TCP-Socket ein Managementinterface zur Verfügung, welches externe Programme zur Administration des VPN-Servers nutzen können. Aktivierung in der Konfigurationsdatei: management IP-Adresse Port [passwortdatei] Zugriff: Datenübertragung momentan noch im Klartext (später SSL/TLS) ► Abhilfe: SSH-Tunnel auf Telnet-Interface. root@ubuserv804:~# telnet 127.0.0.1 11194 Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'. >INFO:OpenVPN Management Interface Version 1 -- type 'help' for more info

29 Seite 29 Weitere Features.... ein kleiner Auszug :-) Bandbreitenoptimierung (comp-lzo) Bandbreitenlimitierung (shaper) Benutzerprofile und Adresspools Parameterübergabe/-anforderung an/vom Tunnelpartner (IP-Konfigurationen mit push/pull) push „route.......“ push „redirect-gateway“ Authentifizierung gegenüber einem RADIUS-Server Redundante VPN-Server Erhöhung der Sicherheit durch Versch. TLS-/Kanalverschlüsselungsoptionen chroot-Umgebung Unterstützung durch Firewalls

30 Seite 30 Optionen für den TLS-Modus Konfiguration als TLS-Server/Client beim Verbindungsaufbau tls-server bzw. tls-client Akzeptierte CN für Zertifikate festlegen tls-remote Zusätzlich Zertifikatsinformationen abfragen ns-cert-type

31 Seite 31 OpenVPN im IPCop  Mit Zerina (www.zerina.de) existiert ein OpenVPN-Plugin für die weit verbreitete Firewall-Lösung IPCop.www.zerina.de

32 Seite 32 Installation/Konfiguration von Zerina ● Aktuelle Version (ZERINA-0.9.5b-Installer.tar.gz) mit WinSCP, etc. in das /tmp-Verzeichnis auf dem IPCop kopieren). ● Dort auspacken: tar -xvzf./ZERINA-0.9.5b-Installer.tar.gz ●..und anschließend mit./install installieren ● Auf der Hompage von Zerina gibt es div. Konfigurations- HOWTO's für unterschiedliche Szenarien. ● Prinzipielle Vorgehensweise: ● Globale Einstellungen vornehmen ● Root/Host-Zertifikat erzeugen. ● Clientzertifikat(e) erzeugen ● ZIP-Paket (Konfigdatei+Zertifikat *.p12) für Clients downloaden ● Entpacken im config-Verzeichnis und Starten der VPN-Verbindung


Herunterladen ppt "© by T. Kling 2009. This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 2.0 License. To view a."

Ähnliche Präsentationen


Google-Anzeigen