Open Source im professionellen Einsatz

Foto: Charite

Große VPNs einfach verwalten mit OpenVPN und Skripten

Wehrhafte Mediziner

, ,

Individuelle Firewallregeln und Authentifizierungsmechanismen für jeden VPN-User sind mit OpenVPN kein Problem. Admins der renommierten Berliner Universitätsklinik Charité zeigen wie.

Barmherzigkeit (frz. Charité) ist es sicher nicht, die eine der größten Universitätskliniken Europas, die Charité [1] in Berlin, zu freier Software brachte. Wie in Unternehmen üblich, zählten harte Fakten, und in der Health-Care-Branche sind die Ansprüche an Sicherheit besonders hoch. Sichere Verschlüsselung ist da in vielen Fällen unabdingbar, und hier kommen so genannte virtuelle private Netze (VPNs) ins Spiel.

Das VPN der Charite umfasst über 3000 registrierte User, die ein Server mit Dual-Xeon-Prozessor (3,4 GHz, 2 GByte RAM) versorgt. Die Durchschnittslast dieser Maschine beträgt lediglich 0.02, obwohl meist 50 User angemeldet sind, von denen jeder rund 200 KByte pro Minute Datentraffic verursacht. Die klassischen Lösungen für diese Größenordnung verwenden IPsec und gelten als teuer, unhandlich und vor allem für die Firewall-Administration als sehr kompliziert zu verwalten.

Noch vor wenigen Jahren brauchte es für solche Anforderungen teuere Lösungen mit Geräten von Cisco und entsprechend geschulten und ausgebildeten Admins. Dank der freien VPN-Software OpenVPN [2] von James Yonan hat sich das aber nachhaltig geändert. Das Tool bietet einfache Konfiguration, hohe Sicherheit und flexible Scripting-Hooks.

Die mitgelieferte Sample-Konfiguration lässt sich fast beliebig erweitern. Zertifikate, Passwörter, spezielle Routingvorgaben, IP-Pools stehen ebenso zur Verfügung wie das automatische Zuweisen von Netzwerkeinstellungen via DHCP und Windows-spezifische Netzwerk-Funktionen.

OpenVPN: Skripte

Das Beste aber ist: OpenVPN ist skriptbar. Für jeden Benutzer, der sich mit dem Server verbindet, kann der Admin ein eigenes Programm spezifieren. So gibt er dem Client zum Beispiel bestimmte Rechte, setzt Routen und verbietet oder erlaubt über Firewalls wie IPtables den Zugriff auf interne Server. Mit Hilfe solcher Skripte erstellt der Admin ein komplettes, indivuelles Firewallkonzept für das VPN, auch das Masquerading der Tunnel-IPs ist da kein Problem.

Per-User-Authentifizierung

In der Charité bestand zudem die Anforderung, für die externen Benutzer unterschiedliche Authentifizierungsquellen zu nutzen: LDAP, Kerberos, ADS, Passwort- und eine IMAP-gestützte Authentisierung galt es für die VPN-Benutzer umzusetzen. Weil OpenVPN auch auf die Pluggable Authentication Modules zurückgreifen kann, bietet sich dafür PAM-per-User [3] an. Dieses PAM-Modul delegiert die Authentisierung einfach an andere Module, basierend auf der Datei »/etc/pam_per_user.map«.

Zunächst konfiguriert der Admin OpenVPN so, dass es PAM-per-User verwendet. Die Datei »/etc/pam.d/openvpn« sollte dazu so aussehen:

auth       required     pam_per_user.so.1
account    required     pam_permit.so

In »/etc/pam_per_user.map« trägt er dann die für die Benutzer gewünschten PAM-Module ein:

user1 : openvpn-ldap
user2 : openvpn-krb5
user3 : openvpn-imap

In diesem Beispiel authentifiziert sich »user1» gegen ein LDAP-Verzeichnis, weil PAM die Konfiguration der Datei »/etc/pam.d/openvpn-ldap« heranzieht:

auth       required     pam_env.so
auth       required     pam_ldap.so
account    required     pam_ldap.so

Der »user2« dagegen soll Kerberos verwenden, in »/etc/pam.d/openvpn-krb5« steht deshalb der Verweis auf die Kerberos-Bibliothek »pam_krb5.so«. Die eigentliche, bisweilen komplexe Kerberos-Konfiguration erfolgt via »/etc/krb5.conf«.

auth    requisite pam_krb5.so no_ ccache
account required  pam_permit.so

User3 soll sich über seine IMAP-Identität ausweisen. Daher findet sich in »/etc/pam.d/openvpn-imap«:

auth       required     pam_imap.so conf=/etc/pam.d/pam_imap.conf 
account    required     pam_imap.so conf=U/etc/pam.d/pam_imap.conf

Die Datei »/etc/pam.d/pam_imap.conf« spezifiziert, gegen welchen IMAP-Server PAM die übergebenen Username-Passwort-Kombination prüft:

PAM_PasswordString = Password:CertificateFile /usr/share/ssl/certs/imapd.pem 
PAM_Server0 = imapserver.example.com:143
PAM_BlockList = root, admin, Administrator,apache 
PAM_HashEnable = no
PAM_HashFile = /etc/pam_imap.gdbm
PAM_HashDelta = 20

Damit stehen auch Autentifizierungen gegen proprietäre Mechanismen zur Verfügung, solange es nur einen IMAP-Server im LAN gibt, der diese versteht.

Damit alle User sich wie beschrieben anmelden können, bestimmt der Admin als letzten Schritt in der OpenVPN-Konfiguration das PAM-Plugin. In »/etc/openvpn/server.conf« gibt der Parameter »openvpn« in der Zeile »plugin /usr/lib/openvpn/openvpn-auth-pam.so openvpn« an, dass OpenVPN die PAM-Konfigurationsdatei »/etc/pam.d/openvpn« nutzen soll. Auf Clientseite muss in der Konfiguration »auth-user-pass« eingetragen sein, damit der OpenVPN-Client den Benutzer nach Usernamen und Passwort fragt.

Abbildung 1: OpenVPN-graph zeigt den Ein- und Ausgangs-Traffic auf dem VPN-Server detailliert in Tages-, Wochen- oder Monats-Statistiken. .

Abbildung 1: OpenVPN-graph zeigt den Ein- und Ausgangs-Traffic auf dem VPN-Server detailliert in Tages-, Wochen- oder Monats-Statistiken. .

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 4 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

Als digitales Abo

Als PDF im Abo bestellen

comments powered by Disqus

Ausgabe 07/2013

Preis € 6,40

Insecurity Bulletin

Insecurity Bulletin

Im Insecurity Bulletin widmet sich Mark Vogelsberger aktuellen Sicherheitslücken sowie Hintergründen und Security-Grundlagen. mehr...

Linux-Magazin auf Facebook