Internet-Sicherheit. Verschlüssselung, Zertifikate, openssl, openvpn. Michael Dienert. 7. Mai 2012



Ähnliche Dokumente
Virtuelle Private Netze

Virtuelle Private Netze - Handreichung zur Präsentation

Virtuelle Private Netze - Handreichung zur Präsentation

Stammtisch Zertifikate

Primzahlen und RSA-Verschlüsselung

Kryptographie eine erste Ubersicht

Netzwerksicherheit Übung 5 Transport Layer Security

Folgende Voraussetzungen für die Konfiguration müssen erfüllt sein: - Ein Bootimage ab Version Optional einen DHCP Server.

11. Das RSA Verfahren und andere Verfahren

Merkblatt: Sichere -Kommunikation zur datenschutz cert GmbH

4. Network Interfaces Welches verwenden? 5. Anwendung : Laden einer einfachen Internetseite 6. Kapselung von Paketen

Grundlagen der Verschlüsselung und Authentifizierung (2)

Was heißt Kryptographie I? Understanding Cryptography Christof Paar und Jan Pelzl

NAT & VPN. Adressübersetzung und Tunnelbildung. Bastian Görstner

Einführung Verschlüsselung Mag. Dr. Klaus Coufal

Zehn SSH Tricks. Julius Plen z

Kryptographische Algorithmen

Das Omnikey 8751 e-health BCS...1 Auslesen über die LAN-Schnittstelle...1 Auslesen über die serielle Schnittstelle...4

RSA-Verschlüsselung. Verfahren zur Erzeugung der beiden Schlüssel:

Kryptographische Anonymisierung bei Verkehrsflussanalysen

15 Transportschicht (Schicht 4)

Netzwerksicherheit Übung 5 Transport Layer Security

Apache Webserver with SSL on Windows

Rechnernetzwerke. Rechnernetze sind Verbünde von einzelnen Computern, die Daten auf elektronischem Weg miteinander austauschen können.

msm net ingenieurbüro meissner kompetent - kreativ - innovativ

C.M.I. Control and Monitoring Interface. Zusatzanleitung: Datentransfer mit CAN over Ethernet (COE) Version 1.08

IT-Sicherheit. IT-Sicherheit. Axel Pemmann. 03. September 2007

Benutzerhinweise IGW/920-SK/92: Einsatz als VPN-Client

Einführung in die Netzwerktechnik

U3L Ffm Verfahren zur Datenverschlüsselung

Fachbereich Medienproduktion

Anbindung des eibport an das Internet

Public-Key-Infrastrukturen

VPN (Virtual Private Network)

Facharbeit Informatik Public Key Verschlüsselung Speziell: PGP Ole Mallow Basiskurs Informatik

Connectivity Everywhere

Scharl 2010 Dokument ist Urheberrechtlich geschützt. Port Forwarding via PuTTY und SSH. Was ist Port forwarding?

Diffie-Hellman, ElGamal und DSS. Vortrag von David Gümbel am

Netzsicherheit I, WS 2008/2009 Übung 12. Prof. Dr. Jörg Schwenk

Konfiguration von Igel ThinClients fu r den Zugriff via Netscaler Gateway auf eine Storefront/ XenDesktop 7 Umgebung

MSXFORUM - Exchange Server 2003 > SMTP Konfiguration von Exchange 2003

VIRTUAL PRIVATE NETWORKS

Dynamisches VPN mit FW V3.64

Digitale Signatur. Digitale Signatur. Anwendungen der Kryptographie. Secret Sharing / Splitting. Ziele SSL / TLS

Matrix42. Use Case - Sicherung und Rücksicherung persönlicher Einstellungen über Personal Backup. Version September

SFTP SCP - Synology Wiki

Kryptographische Verfahren auf Basis des Diskreten Logarithmus

Bernd Blümel. Verschlüsselung. Prof. Dr. Blümel

Verschlüsselung und Entschlüsselung

> Soft.ZIV. Maple Mathematisches Software System

USB-Tokens. Technik und Einsatzgebiete

WinVetpro im Betriebsmodus Laptop

Security Associations Schlüsseltausch IKE Internet Key Exchange Automatischer Schlüsseltausch und Identitätsnachweis

12 Kryptologie. ... immer wichtiger. Militär (Geheimhaltung) Telebanking, Elektronisches Geld E-Commerce

Sichere mit OpenPGP und S/MIME

VPN/WLAN an der Universität Freiburg

Das RSA-Verschlüsselungsverfahren 1 Christian Vollmer

Voraussetzungen für die Nutzung der Format Rechenzentrumslösung (Hosting)

Inhaltverzeichnis 1 Einführung Zugang zu den Unifr Servern Zugang zu den Druckern Nützliche Links... 6

Verschlüsselung. Kirchstraße 18 Steinfelderstraße Birkweiler Bad Bergzabern Fabian Simon Bfit09

Kontrollfragen: Internet

Anleitung für die Verwendung des CIP Pools von eigenen Rechner

Konfiguration des Fernzugriffes auf Eyseo-IP-Netzwerkkameras mittels dynamischer IP-Adresse

Grundfach Informatik in der Sek II

HTTPS Checkliste. Version 1.0 ( ) Copyright Hahn und Herden Netzdenke GbR

How to install freesshd

PKI (public key infrastructure)

WLAN Konfiguration. Michael Bukreus Seite 1

2.3 Applikationen. Protokolle: TCP/IP. Telnet, FTP, Rlogin. Carsten Köhn

Websites mit Dreamweaver MX und SSH ins Internet bringen

CryptoCampagne. Thomas Funke Fachbereich Informatik Universität Hamburg

Informatik Kurs Simulation. Hilfe für den Consideo Modeler

Denn es geht um ihr Geld:

Planung für Organisation und Technik

Hochschule Aalen. OpenVPN. Anleitung zur Installation

RARP, BOOTP, DHCP Wie ermittelt ein Client seine IP-Adresse?

10.6 Authentizität. Geheimhaltung: nur der Empfänger kann die Nachricht lesen

Comtarsia SignOn Familie

MC-Hx 006. Einbindung des MC-Hx Modul als MODBus TCP Slave. MB DataTec GmbH. Stand:

Guide DynDNS und Portforwarding

IT-Sicherheit Kapitel 11 SSL/TLS

Digitale Signaturen. Sven Tabbert

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

EDI Connect goes BusinessContact V2.1

Informatik für Ökonomen II HS 09

VPNs mit OpenVPN. von Michael Hartmann netz.de>

Collax PPTP-VPN. Howto

VPN Tunnel Konfiguration. VPN Tunnel Konfiguration IACBOX.COM. Version Deutsch

1. Voraussetzungen S Installation des OpenVPN Clients S OpenVPN Client installieren S Entpacken des Zip Ordners S.

FOPT 5: Eigenständige Client-Server-Anwendungen (Programmierung verteilter Anwendungen in Java 1)

Step by Step Webserver unter Windows Server von Christian Bartl

etoken mit Thunderbird verwenden

Eine Open Source SSL VPN Lösung. Patrick Oettinger Deutsche Telekom AG 2. Ausbildungsjahr

STRATO Mail Einrichtung Mozilla Thunderbird

Sichere für Rechtsanwälte & Notare

WordPress lokal mit Xaamp installieren

Erstellen von x-y-diagrammen in OpenOffice.calc

Bausteine einer sicheren Datenübermittlung

Transkript:

Internet-Sicherheit Verschlüssselung, Zertifikate, openssl, openvpn Michael Dienert 7. Mai 2012 Inhaltsverzeichnis 1 Symmetrische Verschlüsselung 2 1.1 Symmetrische Verfahren........................ 2 1.1.1 Stromchiffren.......................... 2 1.1.2 Blockchiffren.......................... 3 1.2 Schlüsseltausch nach Diffie-Hellman-Merkle............. 3 1.2.1 Etwas Zahlentheorie: Primitivwurzeln............. 4 2 Asymmetrische Verschlüsselung - Public Key Kryptografie 5 2.1 Ein privater Brief............................ 5 2.2 Der RSA - Algorithmus......................... 5 2.3 RSA mit dem Numerikprogramm bc.................. 5 3 Digitales Signieren mit RSA und md5 / sha 6 3.1 Digitales Signieren mit Hash-Algorithmen............... 6 3.2 Versuch: Hash-Werte mit openssl berechnen.............. 6 3.3 Digitales Signieren mit Hash-Werten.................. 7 4 Man-In-The-Middle-Angriff 8 4.1 Habe ich den richtigen öffentlichen Schlüssel?............. 8 4.2 Signierte öffentliche Schlüssel - Zertifikate............... 8 4.3 Wie wird ein Zertifikat erstellt..................... 9 4.4 X.509 Zertifikate im PEM-Format................... 9 4.4.1 Base64-Codierung....................... 9 4.5 Analyse eines Zertifikats mit openssl.................. 10 5 Was ist ein VPN 11 5.1 Ein Beispiel............................... 11 5.2 Definitionen und Begriffe........................ 12 5.3 Unterschiedliche Varianten von VPNs................. 12 5.3.1 Portweiterleitung mit ssh.................... 12 1

6 Rahmen, Pakete, virtuelle Verbindungen 13 6.1 Die beiden Schichtenmodelle der Netzwerktechnik.......... 13 6.2 Virtuelle Verbindungen......................... 13 6.3 Datentelegramme............................ 14 6.4 Kapselung: mehrfache Verpackung der Daten............. 14 6.5 VPN mit Tunnel............................. 14 7 Die virtuellen Netzwerkschnittstellen tun und tap 15 7.1 Physikalische Schnittstellen....................... 15 7.2 Ethernet-Schnittstellen......................... 15 7.3 Virtuelle Schnittstellen tun und tap................... 15 7.4 Virtuelle Tunnelschnittstelle im Schaubild............... 16 8 Ein Tunnelexperiment mit openvpn2 16 8.1 Installation............................... 16 8.2 Konfiguration.............................. 16 8.3 Analyse des Datenverkehrs durch den Tunnel mit tcpdump und nc.. 18 1 Symmetrische Verschlüsselung 1.1 Symmetrische Verfahren Bei allen symmetrischen Verfahren wird zum Ver- und Entschlüsseln der selbe, geheime Schlüssel verwendet. Vorteile: schnelle Algorithmen, z.t. in Hardware realisiert Nachteil (gravierend): Schlüsselübertragung Man unterscheidet zwei Arten: 1.1.1 Stromchiffren Die binären Datenströme von Klartext und Schlüsssel werden Bit für Bit kontinuierlich verknüpft: EX-OR Ist der Schlüssel genauso lang wie die Nachricht und eine echt zufällige Bitfolge, ist das Verfahren beweisbar sicher. Viele Realisierungen mit Pseudo-Noise-Generatoren: 1000Base-T, GPS, Mobilfunk Leicht zu programmieren eignet sich als Programmierprojekt in der Schule 2

1.1.2 Blockchiffren Blockchiffren verschlüsseln einen Datenblock von z.b. 64 Bit komplett in einem Durchlauf ihres Algorithmus Bekanntester Vertreter: Data Encryption Standard (DES) basiert auf Vorschlag von IBM Verfeinerung durch Kryptologen der NSA NSA legen Algorithmus von Anfang an offen. jeder kann DES programmieren NSA bleibt Erklärung schuldig, warum Teile des Algorithmus so und nicht anders gewählt wurden. NSA begrenzt Schlüssellänge auf 56 bit Brute-Force-Attacken heute möglich. Triple-DES: 2 Schlüssel: verschlüsseln(key1), entschlüsseln(key2), verschlüsseln(key1) 112 Bit Schlüssellänge DES-Nachfolger: Advanced Encryption Standard, Standard seit 2000 Erfinder: Joan Daemen und Vincent Rijmen von der Katholischen Universität Rijmen, Belgien (!) Blockgrösse: 128 Bit, Schlüssellänge 128, 192 oder 256 Bit Frei verfügbar, keine Lizenzgebühren einfach: 500 Zeilen C-Code (Referenzimplementierung) Anwendungen: ssh, WPA2, IP-Telefonie, FileVault, 7zip 1.2 Schlüsseltausch nach Diffie-Hellman-Merkle 1976 entwickeltes Verfahren von: Martin Hellman, Whitfield Diffie, Ralph Merkle (Stanford University, CA) Alice und Bob möchten einen geheimen Schlüssel über einen unsicheren Kanal austauschen (Zahlenbeispiele in Klammern): Wähle Primzahl p (p = 7) und Primitivwurzel r mod p (r = 3), p und r müssen nicht geheim sein Alice erzeugt geheime Zufallszahl a, a < p 1 (a = 5) und berechnet A = r a mod p (A = 3 5 mod 7 = 243 mod 7 = 5). Das Ergebnis wird an Bob geschickt. Bob erzeugt geheime Zufallszahl b, b < p 1 (b = 3) und berechnet B = r b mod p (B = 3 3 mod 7 = 27 mod 7 = 6) Das Ergebnis wird an Alice geschickt. 3

Schlüssel berechnen: Bob und Alice berechnen jeweils S = B a mod p = (r b ) a mod p = r ab mod p S = A b mod p = (r a ) b mod p = r ba mod p S = 6 5 mod 7 = 6 S = 5 3 mod 7 = 6 S = 6 ist der nun nur den beiden bekannte, geheime Schlüssel. Mit den kleinen Zahlen des Beispiels ist das Geheimnis von Bob und Alice (a=5, b=3) leicht zu brechen. In der Praxis werden Zahlen > 10 100 verwendet. Damit ist es für Angreifer ausgeschlossen, a und b in endlicher Zeit zu berechnen. 1.2.1 Etwas Zahlentheorie: Primitivwurzeln Primzahl p prime Resteklassegruppe 1,2,... p-1 Primitivwurzel r Alle Elemente der primen Resteklassegruppe lassen sich als Potenzen von r darstellen. Beispiel mit p = 7, r=5: 5 1 mod 7 = 5 5 2 mod 7 = 4 5 3 mod 7 = 6 5 4 mod 7 = 2 5 5 mod 7 = 3 5 6 mod 7 = 1 Einige Zahlenwerte: p r 2 1 3 2 5 2, 3 7 3, 5 11 2, 6, 7, 8 13 2, 6, 7, 11 Tauschen Sie mit dem Diffie-Hellman-Merkle-Verfahren und mit Hilfe dieser Tabelle und dem Numerikprogramm bc mit Ihrem Nachbarn einen geheimen Schlüssel. 4

2 Asymmetrische Verschlüsselung - Public Key Kryptografie 2.1 Ein privater Brief Public Key Kryptografie Bob PrivateKeyBob PublicKeyBob Liebste Alice... INet PublicKeyAlice Alice PrivateKeyAlice PublicKeyAlice 2345 33897 68977 21588 5999 873... PrivateKeyAlice Liebste Alice... Verschlüsselt wird mit dem öffentlichen Schlüssel des Empfängers Entschlüsselt wird mit dem privaten Schlüssel des Empfängers 2.2 Der RSA - Algorithmus 1978 von Ron Rivest, Adi Shamir und Leonard Adleman veröffentlicht. Algorithmus basiert auf der Unmöglichkeit, das Produkt zweier sehr grosser Primzahlen zu faktorisieren. Zitat Bill Gates, 1995: The obvious mathematical breakthrough to break modern encryption would be the development of an easy way to factor large prime numbers. 2.3 RSA mit dem Numerikprogramm bc bc ist ein Numerikprogramm mit beliebiger Auflösung für die Kommandozeile Ein RSA-Schlüsselpaar besteht aus 3 Zahlen (bis zu 1024 Bit Länge!) Das Hautpmodul N, ein Produkt zweier grosser Primzahlen. N hat typ. 1024 Bit Länge Dem Verschlüsselungsexponenten e = öffentlicher Schlüssel 5

Dem Entschlüsselungsexponenten d = privater Schlüssel d und e lassen sich aus den Faktoren von N berechnen Ganz wichtig: d und e sind austauschbar Im Beispiel verschlüsseln wir den ASCII-Code von A = 65 mit N = 681, e = 151, d = 3 Ciffre = 65 151 mod 681 = 554 Klartext = 554 3 mod 681 = 65 Privater und öffentlicher Schlüsssel vertauscht, e = 3, d = 151: Ciffre = 65 3 mod 681 = 182 Klartext = 182 151 mod 681 = 65 Führen Sie die Berechnung selbst mit dem Programm bc (Binary Calculator) durch! Hinweis: C-Syntax 3 Digitales Signieren mit RSA und md5 / sha 3.1 Digitales Signieren mit Hash-Algorithmen Der bekannteste Hash-Algorithmus ist md5, was für Message Digest Algorithmus No. 5 steht. Entwickelt wurde md5 von Ron Rivest. sha steht für Secure Hash Algorithm, eine Entwicklung der NSA (National Security Agency). Publiziert wurde sha vom amerikanischen Standardisierungsinstitut NIST. md5 von Ron Rivest 1991 entwickelt sha von NSA (Nat. Security Agency) / NIST (Nat. Inst. of Standards and Technology) Hash Algorithmen berechnen aus beliebigen Eingangsdaten einen z.b 128bit - langen Hash-Wert digitaler Fingerabdruck der Daten 3.2 Versuch: Hash-Werte mit openssl berechnen openssl ist eine freie Sammlung von Dienstprogrammen für SSL und TLS. Es bringt für fast jedes Crypto-Problem eine Reihe von Werkzeugen mit. Am Rechner sollen nun mit openssl eine Reihe von Hash-Werten aus einer Textdatei berechnet werden. Dabei soll beobachtet werden, wie selbst kleine Änderungen am Dateitext zu einem total anderen Hash-Wert führen. openssl = Eierlegende-Crypto-Wollmilchsau 6

unzählige hash-algorithmen man-page lesen micha@eddie:~$ man openssl micha@eddie:~$ openssl dgst -md5 <text-datei> Winzige Änderungen an der Datei erzeugen einen total anderen Hash- Wert! 3.3 Digitales Signieren mit Hash-Werten Digitale Signatur Bob PrivateKeyBob PublicKeyBob Liebste Alice... md5sum e8fae... 630 INet PublicKeyAlice Ist dieser Brief wirklich von Bob? PrivateKeyBob Alice PrivateKeyAlice PublicKeyAlice 2345 33897 68977 21588 5999 873... PrivateKeyAlice Liebste Alice... md5sum Die Hash-Werte sind gleich: e8fae... 630 der Brief kann nur von Bob } sein, da nur er PrivateKeyBob besitzt! e8fae... 630 PublicKeyBob 98 43 673 6198 37 3666 3 338 7

4 Man-In-The-Middle-Angriff 4.1 Habe ich den richtigen öffentlichen Schlüssel? Man-In-The-Middle-Angriff Bob PrivateKeyBob PublicKeyBob Liebste Alice... INet Schurke Bill Alice PrivateKeyAlice PublicKeyAlice PublicKeySchurke 667766 9997799... PrivateKeySchurke Liebste Alice... PublicKeyAlice 2345 33897 68977 21588... PrivateKeyAlice Liebste Alice... 4.2 Signierte öffentliche Schlüssel - Zertifikate Problem: Bob muss sicher sein können, dass der angeforderte, öffentliche Schlüssel wirklich von Alice ist. Lösung: Mit dem Schlüssel wird ein Echtheitszertifikat mitgeliefert, d.h. der PublicKeyAlice wird mit dem PrivateKeyNotariat signiert. CA: Notariate heissen Certificaton Authority - CA Bedingung: Die öffentlichen Schlüssel der CAs müssen vorab auf dem Rechner von Alice vorliegen, sonst wäre auch an dieser Stelle ein MITM-Angriff möglich. 8

4.3 Wie wird ein Zertifikat erstellt Erstellung eines Zertifikats Alice PrivateKeyAlice PublicKeyAlice: 00:b5:fc:77:08:c6:... md5sum 1f:78:af:fe:11:... RSA PrivateKeyCA 01:9e:09:38:38:... Zertifikat INet 00:b5:fc:77:08:c6:... + 01:9e:09:38:38:... Die Hash-Werte sind gleich: das Zertifikat ist von Alice Bob Zertifikat von Alice 01:9e:09:38:38:... RSA 1f:78:af:fe:11:... 1f:78:af:fe:11:... PublicKeyCA md5sum 00:b5:fc:77:08:c6:... 4.4 X.509 Zertifikate im PEM-Format PEM Privacy Enhanced Mail RFC 1421-1424 PEM wurde zugunsten von S/MIME verworfen (zu komplizierte PKI) PEM wird als Dateiformat für X.509 - Zertifikate weiterhin verwendet Zertifikat ist Base64-codiert (s.u.) So sieht es aus: -----BEGIN CERTIFICATE----- MIIChTCCAe6gAwIBAgIJAKhU8pEJoOG/MA0GCSqGSIb3DQEBBQUAMHkxCzAJBgNV... QLMbTBYNbWn5kw4yRsY7a5etwJ23JHeiIU0gwsvE8QBy87JANWhdEdfofLi2vT3V PNii6I7JGUYccpGs1KTcPF3lMqvUAePonQ== -----END CERTIFICATE----- 4.4.1 Base64-Codierung Immer 3 Bytes der Binärdatei werden zu 24 Bit zusammengefasst. 24-Bit-Sequenz wird vier 6-Bit-Wörter unterteilt den 6-Bit-Wörtern werden ASCII-Zeichen zugeodnet. Beispiel: Binärfolge: 08 A0 FF (Hex) = 00001000 10100000 11111111 umgruppieren und 000010 001010 000011 111111 ASCII-Zeichen zuordnen: Dezimalwert 2 10 3 63 ASCII-Zeichen C K D / 9

4.5 Analyse eines Zertifikats mit openssl Mit openssl kann man ein PEM-X.509-Zertifikat in Textform ausgeben: micha@eddie:~$ openssl x509 -text -noout -in client.crt 10

Certificate: Data: Version: 3 (0x2) Serial Number: 3 (0x3) Signature Algorithm: md5withrsaencryption Issuer: C=DE, ST=BW, L=FR, O=WARA, OU=IT, CN=MICHA/emailAddress=dienert@wara.de Validity Not Before: Jan 17 22:06:38 2010 GMT Not After : Jan 15 22:06:38 2020 GMT Subject: C=DE, ST=BW, O=WARA, OU=IT, CN=client/emailAddress=dienert@wara.de Subject Public Key Info: Public Key Algorithm: rsaencryption RSA Public Key: (1024 bit) Modulus (1024 bit): 00:a9:50:c0:1e:e4:93:ce:ec:4c:bf:3b:c8:14:a1: 62:ae:c8:2c:6c:f1:78:3d:21:36:4f:45:6e:d3:ab: 90:99:4c:25:bf:e7:0d:91:ec:83:15:a8:b4:71:99: 3c:a5:28:a1:93:6b:a7:34:74:4a:c3:ad:4b:e3:7a: 2a:97:cf:8b:15:cc:f9:f1:9a:e9:0b:3a:ea:c2:4b: 40:8f:de:50:30:4d:d2:f8:6c:8b:0c:ff:c4:7a:31: 9c:2b:a7:41:df:13:0c:cf:aa:64:be:c3:67:44:f8: 22:b3:79:4d:bb:5c:95:fa:79:ad:cf:3a:05:79:3b: 88:8e:ad:fe:2c:59:4f:f9:81 Exponent: 65537 (0x10001) X509v3 extensions: X509v3 Basic Constraints: CA:FALSE Netscape Comment: OpenSSL Generated Certificate X509v3 Subject Key Identifier: 5C:9C:53:A7:46:E2:49:91:BF:F9:9C:69:0E:4E:5E:32:0C:E7:C1:F3 X509v3 Authority Key Identifier: keyid:44:80:03:e9:3f:24:f0:0e:30:04:16:69:6a:7a:2f:a1:c5:5e:46:46 DirName:/C=DE/ST=BW/L=FR/O=WARA/OU=IT/CN=MICHA/emailAddress=dienert@wara.de serial:c6:8a:a7:c8:b1:e2:dd:ef Signature Algorithm: md5withrsaencryption 8a:c6:82:a0:48:59:2e:7f:55:f3:16:fa:0e:68:4c:11:d7:56: 0b:d3:85:0b:da:22:e1:3b:d6:60:f7:0b:06:19:6f:11:1d:ca: c0:b9:1d:ff:d1:d1:7e:7f:97:63:89:04:18:93:cb:9a:09:06: aa:0a:b2:b5:88:de:c7:ec:db:49:93:1b:bc:13:cc:05:69:c9: ba:f7:92:67:2f:fd:e0:c1:98:6c:23:b9:38:39:17:f5:d7:6e: 1f:70:58:79:1b:cb:d7:0d:7f:d9:5d:77:b9:3d:9e:90:80:67: 54:be:f6:41:49:95:65:ed:67:81:84:2a:a8:19:65:91:4b:eb: 5a:41 5 Was ist ein VPN 5.1 Ein Beispiel Eine Firma möchte die Netzwerke zweier Unternehmensstandorte miteinander verbinden. Beide Netze verwenden Adressen aus dem privaten Adressraum (z.b. 10.8.0.0/16) der Zugang ins Internet ist jeweils sehr restriktiv (Firewall) klassische Lösung: Standleitung (Leased Line), arbeitet auf Layer 2. sicher, schnell, hohe Verfügbarkeit und Bandbreite teuer Lösung mit VPN: die Daten, die die Standleitung transportieren würde, werden in IP-Pakete verpackt und durch das Internet geroutet. 11

es wird keine physikalische Verbindung aufgebaut. Die Pakete können verschiedene Wege nehmen. virtuelle Verbindung die Daten in den IP-Paketen werden verschlüsselt. private Verbindung 5.2 Definitionen und Begriffe Eine von vielen Definitionen: Ein VPN ist eine verschlüsselte Verbindung zwischen zwei entfernten Segmenten eines einzigen, privaten Netzwerks über ein öffentliches Netzwerk, wie z.b. das Internet. Site-to-Site VPN - zwei vollständige Netzwerke werden miteinander verbunden. Jede Seite ist mit einem VPN-Gateway ausgestattet. Remote-Access VPN - Zugriff auf das Unternehmensnetzwerk durch Mitarbeiter von zu Hause aus. Auf dem entfernten Hostrechner muss eine VPN-Client-Software installiert sein. 5.3 Unterschiedliche Varianten von VPNs Verschlüsselte VPNs - einfache Art eines VPNs: die Nutzdaten in den IP-Paketen, die durch das Internet wandern, werden verschlüsselt. Die Bezeichnung vpn an dieser Stelle ist üblich, aber umstritten. Beispiele: ssh ssh mit Portweiterleitung ppp über ssh ssl-vpn Tunnelbasierte VPNs - häufigste Form eines VPNs: beim Tunneln werden komplette Pakete nochmals in ein IP-Paket verpackt (genauer gesagt: IP-Pakete werden in UDP/TCP-Segmente gesteckt, die dann wiederum in IP-Paketen reisen). 5.3.1 Portweiterleitung mit ssh entfernter Socket: 141.31.147.114 Port 80 lokaler Socket: 127.0.0.1 Port 5555 Firewall erlaubt ausschliesslich Port 22 Lösung: ssh -L 5555:141.31.147.114:80 alfred@msv.wara.de Im WebBrowser localhost:5555 aufrufen. Passwort von alfred: das selbe wie lokal in R023. 12

6 Rahmen, Pakete, virtuelle Verbindungen 6.1 Die beiden Schichtenmodelle der Netzwerktechnik logische Adressen (S/W) DOD OSI IETF Process ftp, telnet, smtp http, dns Host-to-Host tcp, udp Application Presentation Session Transport Internet IP Network Network Access ethernet, tokenring, fddi Data Link Physical IEEE physikalische Adressen (H/W) Das Netz zwischen den lokalen (Campus-) - Netzen Das Inter - Net Campus Berklee: TokenRing, Campus Stanford: Ethernet II unterschiedliche H/W physikalische (MAC-) Adressen Das Inter-Net benötigt ein hardwareunabhängiges Adressschema IP-Adresse Routing wird möglich 32-bit Daten werden häppchenweise geschickt IP-Pakete 6.2 Virtuelle Verbindungen Problem: Anwendung möchte Bytestrom (wie Datei-I/O) TCP stellt virtuelle Verbindung her (Bytes durchnummeriert) Endpunkte der Verbindung: Sockets mehrere Sockets pro Host Socket über Portnummer identifiziert bestimmte Portnummern werden Anwendungen zugeordnet (eingehende Verbindungen) 13

6.3 Datentelegramme Schwesterprotokoll: UDP UDP arbeitet auch mit Portnummern kein Bytestrom bis 64kiB grosse Datagramme wegschicken und vergessen deutlich schneller als TCP 6.4 Kapselung: mehrfache Verpackung der Daten Datei, 8kiB, wird mit FTP übertragen Port (20 / 21) TCP Header TCP Data Data TCP-Segment Datei, 8kiB IP Header IP Data IP-Packet Ethernet Frame Header Frame Data Frame CRC Ethernet-Frame 6.5 VPN mit Tunnel Datei, 8kiB, wird mit FTP übertragen IP-Packet Datagram IP-Packet UDP Header IP Header IP Header TCP Header IP Data TCP Data Verschlüsselung IP Data Ethernet Frame Header IP UDP IP TCP Ethernet-Frame Frame CRC Data TCP-Segment Datei, 8kiB Passenger-Protocol: IP Encapsulating Protocol: UDP Carrier Protocol: Ethernet 14

7 Die virtuellen Netzwerkschnittstellen tun und tap 7.1 Physikalische Schnittstellen Die beiden Diagramme zur Kapselung und Tunnelung enden auf Layer 2 Wie geht es unterhalb von Layer 2 weiter? Natürlich mit Layer 1, der physikalischen Schicht: Physikalische Ethernet-Schnittstellen auf unixoiden Rechnern heissen: Linux: eth0, eth1,... bsd, osx: en0, en1,... 7.2 Ethernet-Schnittstellen Sender Empfänger Kernel Layer 2 Frame (Ethernet Frame) eth0 Physikalische Verbindung: Ethernet Layer 2 Frame (Ethernet Frame) Kernel Layer 2 Frame (Ethernet Frame) eth0 7.3 Virtuelle Schnittstellen tun und tap tun - tun wird durch ein Kernelmodul (Treiber, Kernel-Extension) erzeugt. Man kann sich tun wie eine Netzwerkschnittstelle vorstellen, die Pakete auf Layer 3 (IP) über eine virtuelle Leitung sendet und empfängt. tap - tap ist ebenso eine virtuelle Schnittstelle, jedoch sendet und empfängt tap Layer 2 (Ethernet) Rahmen. Auf tap wird im Folgenden nicht weiter eingegangen. 15

7.4 Virtuelle Tunnelschnittstelle im Schaubild Sender Empfänger Anwendung IP TCP hallo.. Anwendung Kernel tun0 IP: 10.8.0.6 Quellport: 49915 IP: 10.8.0.1 Zielport: 5000 tun0 Kernel Layer 2-Frame (Ethernet-Frame) Layer 2-Frame (Ethernet-Frame) eth0 eth0 Layer 2-Frame (Ethernet-Frame) Physikalische Verbindung IP: 192.168.2.101 IP: 192.168.2.102 Quellport: 51625 Zielport: 1194 client.conf nc 10.8.0.1 5000 hallo, ist da wer im tunnel? server.conf nc -l 5000 8 Ein Tunnelexperiment mit openvpn2 8.1 Installation Die Installation von openvpn erfolgt direkt aus den Quellen. Dazu das Quellpaket ins Heimatverzeichnis ( ) herunterladen (http://openvpn.net/release/openvpn-2.1.1.tar.gz) und den Rest in einer Konsole ausführen. Hierzu sind root-rechte notwendig: cd ~ tar -xzf openvpn-2.2.2.tar.gz cd openvpn-2.2.2./configure make make install 8.2 Konfiguration Nun wird eine Public-Key-Infrastruktur gebaut. Interaktiv sind einige Eingaben zu machen: Z.B. country=de, pn=bw, ln=fr, on=wara, ou=it, cn=micha mkdir ~/clientalles; mkdir ~/serveralles cd ~/openvpn-2.2.2/easy-rsa/2.0/. vars./clean-all./build-ca 16

Nun werden die Schlüssel erzeugt. Wieder sind einige Eingaben zu machen, country bis ou können Sie wieder wie oben wählen. Nur cn muss beim Server server und beim Client client sein. Kein Passwort vergeben (leer lassen). Zum Schluss werden die Diffie-Hellman Parameter erzeugt:./build-key-server server -> Eingaben vornehmen./build-key client -> Eingaben vornehmen./build-dh Der Inhalt des Verzeichnisses easy-rsa/keys/ müsste jetzt so aussehen: keys/ -- 01.pem -- 02.pem -- 03.pem -- ca.crt -- ca.key -- client.crt -- client.csr -- client.key -- dh1024.pem -- index.txt -- index.txt.attr -- index.txt.attr.old -- index.txt.old -- serial -- serial.old -- server.crt -- server.csr -- server.key Nun werden die erzeugten Schlüssel in die Verzeichnisse serveralles/ und clientalles/ kopiert. Diese beiden Verzeichnisse müssen dann wie folgt aussehen. (Die Dateien server.conf und client.conf werden im nächsten Schritt erzeugt): serveralles -- ca.crt -- dh1024.pem -- server.conf -- server.crt -- server.key clientalles -- ca.crt -- client.conf -- client.crt -- client.key Folgende, abschliessende Schritte sind notwendig: Kopieren Sie die Datei server.conf aus dem Verzeichnis sample-config-files/ nach serveralles/ 17

Kopieren Sie die Datei client.conf aus dem Verzeichnis sample-config-files/ nach clientalles/ server.config kann unverändert bleiben, in client.config müssen Sie die Remote- Adresse und den Port anpassen. Die öffentlichen Schlüssel in serveralles und clientalles sind nun mit dem gleichen, privaten Schlüssel der Certification Authority, dem ca.key signiert. Aus Gründen der Einfachheit haben wir das alles auf einer Maschine gemacht. Das bedeutet aber nun, dass das die entsprechenden Verzeichnisse (serveralles, clientalles) auf den entsprechenden Host kopiert werden müssen. Z.B. können wir das Verzeichnis clientalles mit scp auf einen entfernten Host kopieren: scp -r clientalles root@r025-99:~ Jetzt können Server und Client gestartet werden. Da openvpn die Schlüssel und Konfigurationen relativ zum aktuellen Verzeichnis sucht, müssen Sie das Kommando innerhalb von serveralles/ bzw. clientalles/ ausführen: Im Verzeichnis serveralles/ auf dem Server-Host: openvpn server.conf Im Verzeichnis clientalles/ auf dem Client-Host: openvpn client.conf 8.3 Analyse des Datenverkehrs durch den Tunnel mit tcpdump und nc Damit der Tunnelverkehr lesbar, also unverschlüsselt übertragen wird, tragen Sie bitte in server.conf und client.conf folgende Zeile ein und schalten die lzo-komprimierung aus: cipher none ;comp-lzo Mit dem Kommando tcpdump kann nun der Datenverkehr an der physikalischen Schnittstelle mitgeschnitten werden: tcpdump -nti eth0 -XX port 1194 Damit nun Daten durch den Tunnel geschickt werden, verwenden wir das Programm netcat. Und zwar auf der Client und auf der Serverseite (auf BSD-Systemen muss man den Serverport mit dem Schalter -p angeben, unter Linux nicht): Auf dem Server: nc -l 5000 (bsd: nc -l -p 5000) 18

Auf dem Client: nc 10.8.0.1 5000 hallo, ist da wer im tunnel? Und so soll es aussehen: IP 192.168.2.101.51625 > 192.168.2.102.1194: UDP, length 107 0x0000: 001b 63fe 8862 001c b3c3 830f 0800 4500..c..b...E. 0x0010: 0087 5602 0000 4011 9e48 c0a8 0265 c0a8..v...@..h...e.. 0x0020: 0266 c9a9 04aa 0073 7931 30c6 0974 9156.f...sy10..t.V 0x0030: 1912 07dc f814 0bb3 c19e b31f c5c0 2200...". 0x0040: 0000 f8fa 4500 0051 2825 4000 4006 fe6b...e..q(%@.@..k 0x0050: 0a08 0006 0a08 0001 c2fb 1388 17a9 3e1b...>. 0x0060: 130d b2a4 8018 ffff a1dc 0000 0101 080a... 0x0070: 0573 769c 24ad 0718 6861 6c6c 6f2c 2069.sv.$...hallo,.i 0x0080: 7374 2064 6120 7765 7220 696d 2074 756e st.da.wer.im.tun 0x0090: 6e65 6c3f 0a nel?. 19