Home / LinuxUser / 2003 / 07 / Interne Netze sicher zu einem großen virtuellen Netz verbinden

Newsletter abonnieren

Lies uns auf...

Folge LinuxCommunity auf Twitter

Top-Beiträge

War doch klar...
(243 Punkte bei 15 Stimmen)
Re: War doch klar...
(179 Punkte bei 5 Stimmen)
Re: Skype für 64-Bit-Prozessor u. Suse 12.1
(161 Punkte bei 4 Stimmen)
Kubuntu verliert Finanzierung
(130 Punkte bei 4 Stimmen)
Offen fürs Geschäft
(80 Punkte bei 4 Stimmen)

Heftarchiv

LinuxUser Heftarchiv

EasyLinux Heftarchiv

Ubuntu User Heftarchiv

Ubuntu User Heftarchiv

Partner-Links:

Shopping
Topsuche
 
Yatego Deutschlands größte Shoppingmall. 10000 Shops,
3.5 Mio Artikel. Alle Bestseller, Servertechnik und Technik Themenwelten.

Notebooks und Netzwerkhardware bei Mercateo günstig kaufen.
Internet Telefonie mit VoIP Telefonen von Gigaset
Das B2B Portal www.Linx.de informiert über Produkte und Dienstleistungen.
Günstige Digitalkameras finden Sie im Preisvergleich.

VPN für Arme

Interne Netze sicher zu einem großen virtuellen Netz verbinden

01.07.2003 Eine große Anzahl Soft- und Hardware-Lösungen wetteifern darum, Firmenstandorte oder Wohngemeinschaften zu "Virtual Private Networks" (VPNs) zusammenzuschließen. Doch wer nur über einen schmalen Geldbeutel verfügt und mit geringem Konfigurationsaufwand und ohne Kernelpatchen über die Runden kommen möchte, muss etwas länger suchen.

Ob Projekt mit überall auf der Welt sitzenden Mitarbeitern, virtuelle Firma oder Pärchen mit getrennten Wohnorten – seit das Internet es möglich macht, von überall her auf gemeinsame Rechner zuzugreifen, liegt die Idee eines virtuellen lokalen Netzwerks nahe: Nicht mehr die räumliche Nähe einer Büro- oder Wohngemeinschaft bestimmt die Grenzen des LANs, sondern die Zugehörigkeit zu einem Team. Doch solche "lokalen" Netze, bei denen das Internet die Aufgabe des Netzwerkkabels übernimmt, müssen abgesichert werden, damit die darüber übertragenen Daten tatsächlich privat bleiben. Das geht mit Hilfe eines Tunnels: Vom Internet aus ist nur die äußere Tunnelhülle sichtbar, die darin fließenden Daten bekommen lediglich die Rechner an den Endpunkten desselben zu Gesicht.

Mit vpn-pppssh von [1] oder der Heft-CD existiert eine skriptbasierte Möglichkeit, ein solches virtuelles privates Netzwerk (VPN) aufzusetzen. Ihr Vorteil: Sie verwendet ausschließlich Software, die ohnehin auf jedem Linux-Rechner vorhanden ist. Eine einzige Befehlszeile im Skript reicht aus, um den VPN-Tunnel aufzubauen. Der restliche Code sorgt für etwas Komfort und das richtige Routing der Datenpakete.

Für die zuverlässige Verschlüsselung der Daten auf dem Weg durch's Internet sorgt die auf Seite 81 ff. vorgestellte Secure Shell ssh [2]; das "Point-to-Point-Protokoll" PPP sorgt dafür, dass alle möglichen Netzwerk-Basis-Protokolle wie TCP, UDP, ICMP und sogar IPX den VPN-Tunnel passieren können (vgl. Kasten 1).

Kasten 1: Die TCP/IP-Protokollfamilie

Damit sich Rechner untereinander verständigen können, braucht es Regeln, die besagen, wie Daten ausgetauscht werden: Welcher Rechner fragt wie an, ob er Daten abliefern darf, wie antwortet der andere darauf, in welcher Art gehen die Daten von A nach B, und wie erkennt Rechner B, dass Rechner A alles übertragen hat, was er übertragen wollte? Diese Regeln nennt man Protokolle, vergleichbar den Absprachen beim diplomatischen Protokoll.

Sämtliche Kommunikation im Internet basiert auf der TCP/IP-Protokoll-Suite. Das grundlegende "Internet-Protokoll" zeichnet für die Weiterleitung der Daten verantwortlich. Es ermittelt die Route, auf der alle Pakete verschickt werden, und zerlegt große Datenpakete in kleinere Teile. Da sich IP nicht darum kümmert, ob diese den Empfänger auch erreichen, gibt es Erweiterungen, die eine Kontrollstruktur zur Verfügung stellen: Nach dem "Transmission Control Protocol" sendet der Rechner ein Paket so lange, bis eine Bestätigung vom Empfänger eintrifft, die die Übertragung des unversehrten Pakets bestätigt. Diese Sicherheit bezahlt man mit einem nicht immer zu vernachlässigenden Overhead.

UDP ("User Datagram Protocol") ist ein minimalistisches Protokoll, welches ebenfalls auf IP aufsetzt, aber keine Kontrollstrukturen enthält. Es kommt bei Internet-Diensten zum Einsatz, bei denen es weniger wichtig ist, dass alle Pakete ankommen, dafür aber auf eine schnelle, schlanke Übertragung gewünscht wird, zum Beispiel beim Streaming. Das "Internet Control Message Protocol" ICMP dient zum Austausch von Verwaltungsnachrichten zwischen allen am Datentransport beteiligten Stellen. Dessen bekannteste Anwendung ist das ping-Kommando.

Nichts mit TCP/IP zu tun hat das "Internetwork Packet Exchange"-Protokoll IPX. Es sorgt für die Adressierung und das Routing von Paketen innerhalb und zwischen LANs und wurde inzwischen fast vollständig von Protokollen aus der TCP/IP-Familie verdrängt.

Trotz ihrer Einfachheit beschränkt sich diese Lösung nicht darauf, zwei Standorte miteinander zu verbinden. Mit etwas Zusatzaufwand lassen sich auch zwei oder drei Einzelnetzwerke oder Rechner zu einem großen virtuellen Netz zusammenschließen.

Natürlich hat solch eine Simpelstlösung auch Nachteile. So "repariert" sich die Verbindung nach einem unerwarteten Verbindungsabbruch nicht automatisch. Auch liegt die erreichbare Datenrate unterhalb des bei einer DSL-Verbindung zu erwartenden Werts: Jedes ins andere Teilnetz übertragene Datenpaket wird in ein anderes Datenpaket eingepackt, was den Overhead erhöht. Daher sollte man mit dieser doch sehr einfachen Methode nicht allzuviele Netze verbinden: Mit jedem weiteren Knoten sinkt die Zuverlässigkeit der Verbindung, und ab einer bestimmten Grenze nehmen die Verbindungsabbrüche derart überhand, dass das VPN kaum noch ernsthaft benutzbar bleibt.

Das Szenario

Ob Sie jetzt zwei Wohngemeinschaften mit internem Netzwerk, Windows- und Linux-Rechnern sowie einem DSL-Zugang ins Internet verbinden, das Wort "Wohngemeinschaft" gegen "Firmensitz" oder ähnliches ersetzen, ist dabei in der Praxis egal: Es kommt nur auf die Technik an.

Abbildung 1: Einfacher VPN-Tunnel mit DSL-Verbindung zum Intranet

Der leistungsfähigere Gateway-Rechner übernimmt dabei die Aufgabe des Servers am Tunnelende, der leistungsschwächere bekommt die Rolle des Client zugeteilt. In unserem in Abbildung 1 skizzierten Beispiel zweier WGs hat der Rechner in Haus 2 einen besseren Prozessor als die Gegenstelle in Haus 5, womit die Rollenverteilung fest steht: Haus 2 hostet den Server.

vpn-pppssh als Shell-Skript ruft einige Programme auf, die zusätzlich installiert sein müssen. Dazu gehört besagte Secure Shell, die den Datentunnel aufbaut und für die verschlüsselte Übertragung der Pakete durch's Internet sorgt. Als Transportprogramm kommt der pppd zum Einsatz. Sowohl das SSH-Paket, als auch der PPP-Daemon müssen auf beiden Rechnern am Tunnel installiert sein, damit eine Kommunikation mit dem jeweils anderen Ende des Tunnels zustande kommt.

Um auf dem Server für ein Mindestmaß an Sicherheit gegenüber der angeschlossenen Clients zu sorgen, sollten VPN-Anforderungen von einem eigens dafür zuständigen System-Account ohne besondere Privilegien bearbeitet werden. Doch auch wenn sich das auf dem Client noch abzulegende VPN-Skript auf dem Server nicht als root anmeldet, benötigen einzelne, nach dem Login gestartete Prozesse (namentlich der pppd) doch Superuser-Berechtigungen. Aus dieser Zwickmühle hilft das Programm sudo. Sind ssh und pppd auf beiden Maschinen und auf dem Server, also dem Internet-Gateway-Rechner in Haus 2, zusätzlich noch sudo installiert, geht es an die Konfiguration des VPNs.

Arbeitstier

Den unprivilegierten User vpn, in dessen Namen sich das VPN-Skript auf dem Server einloggt, erzeugt man als root auf dem Server mit folgendem Kommandozeilen-Befehl:

adduser --system --shell /bin/bash --gecos "VPN Account"  --disabled-password --group vpn

Damit vpn den pppd im Skript per sudo aufrufen darf, muss der Server-Sysadmin aus Haus 2 dies in der sudo-Konfigurationsdatei /etc/sudoers extra erlauben. Diese Datei editiert er mit dem Befehl visudo. Durch diesen Aufruf startet der in der Umgebungsvariablen EDITOR oder VISUAL festgelegte Texteditor. Sehr wahrscheinlich ist dies der vi. Ihn schaltet man ggf. mit der Taste [i] in den Einfügemodus, schreibt die beiden folgenden Zeilen hinein, und beendet ihn anschließend mit [Esc] :wq:

vpn ALL=NOPASSWD:/usr/sbin/pppd
vpn ALL=NOPASSWD:/sbin/route

Die zweite Zeile erlaubt es vpn, mit Hilfe des Programms /sbin/route die Routing-Tabelle zu ändern.

Müsste man bei jedem Verbindungsaufbau zum Server das Login-Passwort für vpn von Hand eingeben, ginge das am Ziel des automatisierten VPN-Aufbaus vollkommen vorbei. Deswegen kommt statt der Passwortabfrage eine alternative Möglichkeit der Authentifizierung zur Anwendung, das Public-Key-Verfahren der Secure Shell. Versucht sich der Client auf dem Server einzuloggen, nimmt der dortige Secure-Shell-Daemon sshd den auf dem Server-Rechner hinterlegten öffentlichen Key des Clients. Damit verschlüsselt er eine kurze Nachricht und schickt sie an den Client zurück. Passt der auf dem Server abgelegte öffentliche Schlüssel zum privaten Key des Clients, ist dieser in der Lage, die "Challenge"-Nachricht ("Herausforderung") zu dechiffrieren. Er schickt dem Server einen Beleg dafür, worauf dieser einen kontrollierten, aber automatischen Login gestattet.

Liegt auf dem Client bislang kein Schlüsselpaar in den Dateien /root/.ssh/id_dsa und /root/.ssh/id_dsa.pub vor, muss eines mit dem Befehl ssh-keygen erzeugt werden (Listing 1). Der Parameter -t dsa legt die Verschlüsselungsmethode auf DSA fest. Auf die Frage nach der Passphrase antwortet man mit einem beherzten [Enter] nicht – sonst wäre bei jedem Verbindungsaufbau doch wieder ein Passwort fällig.

Listing 1

Generieren eines SSH-Schlüssels

client:~# ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/root/.ssh/id_dsa):
Enter passphrase (empty for no passphrase): [Enter]
Enter same passphrase again: [Enter]
Your identification has been saved in /root/.ssh/id_dsa.
Your public key has been saved in /root/.ssh/id_dsa.pub.

Der öffentliche Schlüssel des gerade auf dem Client erzeugten Schlüsselpaares muss nun in den Schlüsselkatalog des Systemkontos vpn auf dem Server gebracht werden. Anders als zu erwarten, geht das nicht einfach durch Umkopieren der Datei /root/.ssh/id_dsa.pub vom Client nach /home/vpn/.ssh/authorized_keys auf dem Server!

In authorized_keys befinden sich unter Umständen sehr viele öffentliche Schlüssel anderer Rechner, dann nämlich, wenn ein Login per SSH-Public-Key-Verfahren von mehreren Rechnern aus erwünscht ist. Deswegen sollte man die Datei id_dsa.pub mit dem neu aufzunehmenden Schlüssel grundsätzlich zuerst auf den Server übertragen (hier bietet sich scp, ein USB-Stick oder auch eine Diskette an), um ihren Inhalt anschließend mittels cat an die Datei authorized_keys anzufügen:

cat /mnt/usb/id_dsa.pub >> /home/vpn/.ssh/authorized_keys
Einem Freund empfehlen    Druckansicht Bookmark and Share
Kommentare

685 Hits
Wertung: 0 Punkte (0 Stimmen)

Schlecht Gut

Infos zur Publikation

Infos zur Publikation

LinuxUser 03/2012

Aktuelle Ausgabe kaufen:

Heft bestellen Heft als PDF kaufen

LinuxUser erscheint monatlich und kostet in der Nomedia-Ausgabe EUR 5,50 und mit DVD EUR 8,50. Weitere Informationen zum Heft finden Sie auf der LinuxUser-Homepage.

Im LinuxUser-Probeabo erhalten Sie drei Ausgaben für 3 Euro. Das Jahresabo (ab EUR 56,10) können Sie im LNM-Shop bestellen.

Tipp der Woche

Duden Korrektor unter 64-Bit
Duden Korrektor unter 64-Bit
Tim Schürmann, 06.02.2012 10:36, 0 Kommentare

Der Duden Korrektor bietet eine äußerst nützliche Rechtschreib- und Grammatikkorrektur für LibreOffice und bringt in der aktuellen Version 8 e...

Aktuelle Fragen

N24 Stick (Huawei E173) und Ubuntu 11.04
Patrick Obenauer, 11.02.2012 11:54, 0 Antworten
Hallo zusammen! Ich benutze einen alten Laptop, der mit Ubuntu 11.04 flott und problemlos läuft....
Wie kann man beim Einsatz von Compiz die Fenster-Dekoration einstellen?
GoaSkin , 10.02.2012 20:12, 0 Antworten
Hallo, ich nutze Linux Mint mit dem Gnome-Derivat Mate. Da die Distribution Compiz nicht autom...
rndc reload zone - failed bad zone
Ludwig jun. B., 06.02.2012 16:08, 2 Antworten
Schönen guten Tag, ich habe folgendes Problem. Immer wenn ich folgendes Kommando ausführen bek...
Skype für 64-Bit-Prozessor u. Suse 12.1
Klaus Sigerist, 05.02.2012 11:39, 3 Antworten
Hallo Gemeinde! Ich bin nur ein einfacher Nutzer und habe Probleme mit der Installation von Skyp...
8! Anfängerfrage :) Wie finde ich in Ubuntu die Datenträger (Bild, Text)
samuel leusam, 04.02.2012 15:53, 2 Antworten
Ich habe neu Ubuntu. Wenn ich die SD Karte im Laptop einstecke, erkennt er sie und gibt ihr den N...