VPN (Virtual Private Network) basierend auf Linux (Debian) Server Praktikum Protokolle Bei Prof. Dr. Gilbert Brands
Gliederung Gliederung 1. Was ist VPN 2. VPN-Implementierungen 3. Funktionsweise von OpenVPN 4. Aufgabenbeschreibung 5. Unsere Aufbaustruktur 6. 7. Ende&Quelle
Was ist VPN Was ist VPN Ein VPN ist ein Computernetz zum Transport privater Daten über oeffentliche Netze, wie zum Beispiel das Internet.
VPN-Implementierungen VPN-Implementierungen Die meistens VPN-Implementierungen benutzen die folgenden Protokolle L2TP (IPSec) (z.b. Cisco VPN) PPtP (Microsoft Windows) SSL-VPN (z.b. OpenVPN)
VPN-Implementierungen VPN-Implementierungen L2TP (IPSec) Kombination von Layer 2 Tunneling Protocol und Internet Protocol Security Vereint die Vorteile von PPTP und L2F IPSec zur Verschlüsselung Zertifikatsbasierte Authentifizierung PPTP PPtP Point to Point Tunneling Protocol Microsoft's VPN Loesung Im Grunde eine PPP-Brücke mit Verschlüsselung
VPN-Implementierungen VPN-Implementierungen OpenVPN (SSL-VPN) Ist eine VPN - OpenSource Loesung Benutzt keine eigenen Protokolle Verbindung mittels SSL-Sockets (TLS/SSL) Kann TCP oder UDP benutzen Default: Port 1194 Einfache Konfiguration (simple.conf: 4 Zeilen)
Funktionsweise von OpenVPN Funktionsweise von OpenVPN Stellt mittels tun/tap-devices eine virtuelle Netzwerkkarte bereit, über die die gesicherte Kommunikation stattfindet Tun-Device (Tunneling) Tap-Device (Bridging)
Funktionsweise von OpenVPN Funktionsweise von OpenVPN Es gibt zwei grundlegend verschiedene Moeglichkeiten ein VPN zu betreiben Routing Mode (Die beteiligten Computer befinden sich in unterschiedlichen Netzwerken) Bridged Mode (Die beteiligten Computer befinden sich im gleichen Netzwerk)
Aufgabenbeschreibung Aufgabenbeschreibung Notebooks durch einen verschlüsselten Tunnel an ein Intranet anbinden. Zugriff auf Ressourcen gewähren die sonst nur Servicemitarbeitern aus dem eigenen Netz zur Verfügung stehen
Unsere Aufbaustruktur Unsere Aufbaustruktur
Konfiguration von OpenVPN Es gibt zwei Arten der Authentifizierung PSK (PreSharedKey / Static-Key) Mittels Zertifikaten Bei PreSharedKey wird ein gemeinsammer Schlüssel verwendet (Achtung: Austausch von Schlüsseln muss sicher sein) Bei den Zertifikaten müssen die Teilnehmer jeweils ein von einer gemeinsam genutzen CA authentifiziertes Zertifikat haben
Konfiguration von OpenVPN static.key erzeugen openvpn -genkey -secret static.key
Abhilfe schafft das Verwenden von Zertifikaten Konfiguration von OpenVPN Filename Needed By Purpose Secret ca.crt server + all clients Root CA certificate NO ca.key key signing machine only Root CA key YES dh{n}.pem server only Diffie Hellman parameters NO server.crt server only Server Certificate NO server.key server only Server Key YES client1.crt client1 only Client1 Certificate NO client1.key client1 only Client1 Key YES client2.crt client2 only Client2 Certificate NO client2.key client2 only Client2 Key YES client3.crt client3 only Client3 Certificate NO client3.key client3 only Client3 Key YES Quelle: www.openvpn.net
Erstellen von Zertifikaten Konfiguration von OpenVPN OpenVPN liefert einen Skriptsatz names EASY-RSA um dies zu erleichtern # Vorbereiten der Konfiguration Init-config vars clean-all # Erstellen einer Certificate Authority build-ca # Das Zertifikat für den Server erstellen build-key-server server # Die notwendigen Client Zertifikate erstellen build-key client1 build-key client2 build-key client3 # Diffle-Hellman erzeugen zum austauschen der # Schlüssel build-dh
Konfiguration von OpenVPN Die einfachste Konfiguration eines OpenVPN's (Authentifizierung durch PSK) Server: dev tun ifconfig 10.0.0.1 10.0.0.2 secret static.key Client: remote 192.168.103.212 dev tun ifconfig 10.0.0.2 10.0.0.1 secret static.key
Server: port 1194 # Port dev tun proto udp ifconfig 10.0.1.1 10.0.1.2 # Virtuelle IPs secret /etc/openvpn/static.key # static key Keepalive 10 120 #Testen der Verbingdung, wait Cipher BF-CBC # Blowfish verschluesselungsalgorithmus auth SHA1 #Authentification comp-lzo # LZO Kompression persist-tun persist-key verb 3 # Umfang des Logfiles nicht vergessen Konfiguration von unserem (Authentifizierung durch Static-key) #120sec Konfiguration von OpenVPN Client: port 1194 #port anpassen proto udp remote 192.168.103.130 #server (URL oder IP) dev tun ifconfig 10.0.1.2 10.0.1.1 route 192.168.10.0 255.255.255.0 10.0.1.1 Secret C:\\Programme\\OpenVPN\\config\\static.key auth SHA1 comp-lzo persist-key persist-tun verb 3 echo 1 > /proc/sys/net/ipv4/ip_forward
Netzwerk Status beim Server vor VPN-Verbindung(via ifconfig)
OpenVpn startet beim Server Server(Debian) : openvpn config server.conf
OpenVpn startet beim Client Client(Win XP) : mit GUI : ohne GUI :
Verbindungsaufbau beim Client
Tunnel Device beim Server nach VPN-Verbindung(via ifconfig)
Ping durch VPN-Verbindung (Von 192.168.103.135 ping 192.168.10.149)
Zugriff auf Datei durch VPN-Verbindung
Zugriff auf Datei durch VPN-Verbindung
Konfiguration (Authentifizierung durch Zertifikaten) Server: port 1194 ## Tunnel-Mode dev tun tls-server mode server ## Server mit Zertifikaten aktivieren ca ca.crt cert server.crt key server.key dh dh1024.pem ## server IP ifconfig 192.168.10.1 255.255.255.0 ifconfig-pool 192.168.10.5 192.168.10.95 Keepalive 10 120 comp-lzo persist-key persist-tun verb 3 Client: port 1194 ## Virtuelles Geraete (Tunnelmodus) dev tun ## VPN-Server remote 192.168.10.1 ## Client Modus mit Zertifikaten tls-client ca ca.crt cert client.crt key client.key ## Optimierungen comp-lzo persist-key persist-tun verb 3
Ende Danke fuer Ihre Aufmerksamkeit Quelle und Infos: http://openvpn.net [Website, Download, HOWTO] http://www.openssl.org [SSL Library, Download] http://www.openssl.org/related/ [openssl Infos] http://www.online-tutorials.net/security/openvpn-tutorial