Netze mit OpenVPN
 

Business solutions by foobar



WLAN - Aufbau und Absicherung mit OpenVPN


Vorwort
Vorbereitung
Einstellungen am Access Point
OpenVPN

Vorwort

Auf dieser Seite geht es um unsere Erfahrungen beim Aufbau eines Wireless LAN und die Absicherung mit OpenVPN. Als Access Point haben wir den WG302 von Netgear benutzt, als WLAN-Clients kommen hauptsächlich unsere Notebooks mit Centrino-Chipsatz und eingebautem WLAN-Interface von Intel zum Einsatz. Dieser Text beschreibt den Aufbau des WLAN anhand des WG302, wir versuchen aber, auf die Einstellungen so allgemein wie möglich zu bleiben. Es kann jedoch vorkommen, daß die eine oder andere Option nicht bei jedem Access Point verfügbar ist.

Wir möchten an dieser Stelle noch einmal darauf hinweisen, daß wir für die Richtigkeit des nachfolgenden Textes und der angebotenen Scripte keine Garantie übernehmen.

top

Vorbereitung

WLAN-Clients
Firewalleinstellungen

Wir wollen einem bestehenden Intranet ein WLAN in einem neuen Subnetz hinzufügen. Es soll über ein VPN abgesichert und mit dem Intranet verbunden werden. Dazu bekommt ein Router bzw. die Firewall (wenn es sich dabei um einen PC handelt) ein neues Interface spendiert, an dem später der Access Point angeschlossen wird. Man sollte den AP nicht einfach in ein bestehendes LAN einbinden, sondern ihn immer mit einer Firewall davon trennen. Viele Geräte bringen diese Funktionalität schon mit, der WG302 ist jedoch ein reiner Access Point und hat keinen eingebauten Router bzw. Firewall. Die Rolle des VPN-Servers wird von einem PC im Intranet übernommen.

Wir wollen uns auch hier nicht auf bestimmte Systeme oder Software festlegen und auf Einstellung nur allgemein eingehen.

Setup der WLAN-Clients

Da mittlerweile eigentlich alle gängigen Linux-Distributionen WLAN-Karten unterstützen, sollte es kein Problem sein, einen unterstützten WLAN-Adapter unter Linux mit Bordmitteln in Betrieb zu nehmen. In der Regel ist der Ablauf wie bei einem LAN-Interface, nur das zusätzlich eine SSID (manchmal auch ESSID genannt), ein Modus (in der Regel Managed) und ggf. ein Schlüssel angegeben werden muß. Da OpenVPN nicht nur auf Linux läuft, sondern u.a. auch unter Windows, Mac und verschiedenen BSD-Versionen, kann man diese Lösung als plattformunabhängig bezeichnen und weil es an dieser Stelle keine allgemeingültige Anleitung gibt, gehen wir auch nicht weiter darauf ein.

Firewalleinstellungen

Die Firewall der Clients wird so eingestellt, daß über das WLAN-Interface nur der DHCP-Dienst erreichbar ist und OpenVPN über einen festgelegten Port seine Verbindung zum Server aufbauen kann. Alle anderen Pakete, die über das WLAN-Interface ankommen oder raus wollen, werden verworfen.

Am Gateway zum Intranet sollen nur die VPN-Tunnel weitergeleitet werden. Das kann entweder durch Routing geschehen oder man setzt an dieser Stelle Portforwarding ein. Wir werden Portforwarding einsetzen, denn so kann der VPN-Server notfalls auch mal umziehen, ohne gleich jede Client-Konfiguration ändern zu müssen. Alle anderen Pakete ins und aus dem WLAN werden nicht durchgelassen.

Am VPN-Server sind keine speziellen Einstellungen nötig, solange dort der richtige Port offen ist. Im Fall von OpenVPN ist das der UDP-Port 1194 (Standardport) oder jeder andere freie Port, TCP ist auch möglich.

top

Einstellungen am Access Point

Grundlegende Wireless-Einstellungen
Wireless-Sicherheit
Weitere Einstellungen

Wir haben uns für den WG302 entschieden, weil er viele interessante Features bietet, u.a. RADIUS-Support und VPN-Passthrough. Man findet leider keine genaue Erklärung dieses Feature, damit wird aber meistens gemeint, daß das Gerät mit VPN-Lösungen auf Basis von IPsec, L2TP und PPTP zurechtkommen. Laut Hersteller ist das Gerät auch für den neuen Sicherheitsstandard IEEE 802.11i vorbereitet, was sehr interessant für die Zukunft ist. Auch die einstellbare Sendeleistung, die mit max. 100 mW, die größte hier zugelassene Sendeleistung, angegeben ist, war ein Kriterium. Die wichtigsten Einstellungen werden nun kurz erlätert.

Grundlegende Wireless-Einstellungen

Um die Einstellungen vorzunehmen, meldet man sich am AP an. Bei diesem Gerät geht das per http mit einem Browser oder von einem Terminal aus per ssh. Das voreingestellte Standardpasswort sollte zuerst durch ein neues und vor allem sicheres ersetzt werden.

Landeseinstellung: Hier wird das Land eingestellt, in dem der AP betrieben werden soll. Ein falsches Land kann zur Folge haben, daß gesetzliche Bestimmungen nicht mehr eingehalten werden.

SSID: Das ist der Netzwerkname. Der sollte so gewählt werden, daß man daraus nicht sofort auf den verwendeten AP (default beim WG302: NETGEAR) oder den Betreiber schließen kann. An manchen Stellen wird auch die ESSID benutzt - die Bedeutung ist im Prinzip die gleiche.

Broadcast SSID: Oft wird diese Option deaktiviert, um die Sicherheit zu erhöhen. Diese Maßnahme ist jedoch zweifelhaft und stört bei manchen Produkten die Suche nach Netzwerken. Es ist also bequemer, die Option zu aktivieren, wenn sowieso noch weitere Sicherungsmaßnahmen getroffen werden.

Operating Mode: Hier wird eingestellt, ob der AP im b-Modus (11 Mbit/s) oder im g-Modus (54 Mbit/s) arbeiten soll. Es gibt auch noch die Möglichkeit, den automatischen Modus einzustellen. Dann arbeitet der AP im g-Modus und fällt in den b-Modus zurück, wenn dieser von einem Client benötigt wird. Alle anderen Clients müssen dann ebenfalls auf 11 Mbit/s zurückschalten.

Channel/Frequency: Für die Wahl des Kanals wird empfohlen, einen Abstand von 5 Kanälen zu benachbarten APs einzuhalten, um Störungen gering zu halten. Da dieses Gerät AutoCell unterstüzt, das sich um die Organisation mit benachbarten WLAN-Zellen kümmert, wird der beste Kanal automatisch ausgewählt.

Data Rate: Hier wird die verfügbare Übertragungsrate eingestellt. Mit dem WG302 ist auch eine Rate von 108 Mbit/s möglich, wenn der AP im g-Modus arbeitet und Kanal 6 eingestellt ist. Weil diese Datenrate nicht standardisiert ist, ist außerdem immer passende Hardware vom gleichen Hersteller nötig. Am günstigsten ist hier der Defaultwert "Best".

Output Power: Diese Einstellung wird ebenfalls durch AutoCell reguliert. Hat man diese Funktion nicht zur Verfügung, stellt man die Sendeleistung am besten so ein, daß man an allen benötigten Stellen ausreichend guten Empfang hat, dabei aber der abgedeckte Bereich nicht unnötig groß ist. Ein optimaler Standort des AP's spielt dabei eine wesentliche Rolle.

IP Settings: Hier wird die IP-Adresse des AP's, die Subnetzmaske des WLAN's und das Gateway eingestellt. Weitere Angaben, wie DNS-Server, sind an dieser Stelle nicht nötig. Der WG302 hat zwar auch einen DHCP-Client an Bord, eine feste IP ist hier aber günstiger. Achtung: Wenn die IP-Adresse geändert wird, geht die Verbindung verloren, wenn die neuen Einstellungen übernommen werden und man muß sich neu anmelden!

Einstellungen am Access Point

Wireless-Sicherheit

Um die Sicherheit der Übertragung zu gewährleisten, bieten Access Points die Möglichkeit WEP und die meisten aktuellen Modelle auch WPA an. WEP bietet aber kaum Sicherheit und sollte nicht benutzt werden. WPA wird jedoch von älteren WLAN-Adaptern nicht unterstützt bzw. einige Treiber aktueller Adapter kommen mit WPA (noch) nicht zurecht. Deshalb lassen wir die Verschlüsselung deaktiviert und nehmen statt dessen OpenVPN zur Absicherung.

Network Authentication: Die Einstellung zur Authentifizierung bietet die Möglichkeit, daß der AP die Benutzer durch den Shared Key zu authentifiziert oder keine derartigen Aktionen durchführt (OpenSystem). Dann kann diese Aufgabe optional von einem RADIUS-Server übernommen werden. OpenVPN bietet auch in dieser Hinsicht viele Möglichkeiten, sodaß wir uns darauf beschränken, auch um die Konfiguration überschaubar zu halten.

Wireless Security Client Seperator: Da man sich zwar ohne weiteres am WLAN anmelden kann, wird durch diese Option verhindert, daß sich die WLAN-Clients gegenseitig erreichen. Im VPN ist das für die Clients wieder möglich.

MAC Access Control List: Hier kann man auf Basis der MAC-Adressen einstellen, welche Clients auf das Netz Zugriff haben sollen. Diese Sicherheitsvorkehrung gehört zu denen, die keine wirkliche Sicherheit bieten, denn eine MAC-Adresse läßt sich sehr leicht fälschen.

Einstellungen am Access Point

Weitere Einstellungen

Wie die meisten aktuellen Access Points hat auch der WG302 einen integrierten DHCP-Server. Den nutzen wir, um IP-Adressen, die Subnetzmaske und das Standardgateway an die Clients zu verteilen. DNS- und WINS-Server werden nicht gebraucht, weil aus Sicht des WLAN nur ein einziger Dienst das Netz benutzt, nämlich OpenVPN, das von jedem Client eine Verbindung zu einer festen IP-Adesse aufbaut.

Einstellungen am Access Point

top

OpenVPN

Installation
Konfiguration des Servers
Konfiguration der Clients

OpenVPN ist ein Open Source Projekt, das eines der wenigen ist, die eine VPN-Lösung ohne IPsec auf sehr sichere Art implementiert. Es bietet u.a. verschiedene Verschlüsselungsverfahren, Integritätschecks, und Möglichkeiten zur Nutzerauthentifizierung.

Installation

Nachdem man sich die aktuellen Quellen von der OpenVPN-Homepage besorgt und an geeigneeter Stelle entpackt hat, kann man die Software aus dem eben entpackten Verzeichnis heraus mit den üblichen 3 Befehlen installieren:
./configure
make
make install
"./configure --help" zeigt dabei eine Liste aller verfügbaren Optionen an. Für die Konfigurationsdateien legt man nun das Verzeichnis "/etc/openvpn" an. Im Unterverzeichnis "sample-scripts/" der Quellen befindet sich das Script openvpn.init. Dieses Script kann man nun nach "/etc/rc.d/init.d/openvpn" kopieren. Der Befehl "chkconfig --add openvpn" fügt dann jedem Runlevel Start- und Kill-Einträge für OpenVPN hinzu. Beim Server ist das angebracht, bei den Clients ist es jedoch sinnvoller, OpenVPN auf andere Weise zu starten. Das init-Script sucht beim Start in /etc/openvpn nach Konfigurationsdateien mit der Endung .conf uns startet für jede gefundene Datei einen OpenVPN-Prozeß. Liegen in diesem Verzeichnis außerdem Shell-Scripte mit Namen .sh, wobei mit einer der Konfig-Dateien übereinstimmt, werden diese vor dem Start des jeweiligen Serverprozeß ausgeführt.

OpenVPN

Konfiguration des OpenVPN-Servers

In unserem Fall haben wir uns für die Variante entschieden, das VPN mit dem Intranet über einer Netzwerkbrücke zu verbinden. Den Quellen liegen weitere Scripte bei, u.a. auch bridge-start und bridge-stop, mit denen man vor dem Start des Servers mit Mitteln des Betriebssystems ein Brückeninterface aus tap- und eth-Schnittstelle einrichten bzw. wieder abbauen kann. Natürlich kann man diese Scripte noch nach belieben erweitern, aber auf jeden Fall sollte man sie an sein Netzwerk anpassen. bridge-start könnte dann auf die im vorigen Abschnitt beschriebene Weise vor dem Start des Servers ausgeführt werden.

Die wichtigsten Optionen sind:
# Brückenmodus
--server-bridge    

# das zu benutzende Interface;
# X steht für das Interface, daß vorher von bridge-start angelegt wurde
--dev tapX

# die TLS-Parameter
--dh 
--ca 
--key 
--cert 
Da wir weiter oben den Wireless Security Seperator aktiviert haben, geben wir den VPN-Clients hier durch die Option --client-to-client die Möglichkeit, miteinander zu kommunizieren. Weitere Parameter stehen in der Man-Page zu OpenVPN. In unseren Beispielen befinden sich Konfigurationsdateien für weitere Anwendungszwecke, die auch den Einsatz anderer Optionen demonstrieren.

OpenVPN

Konfiguration der Clients

Die Optionen für die Clients sind weniger umfangreich, sie müssen jedoch in einigen Punkten mit denen des Servers übereinstimmen. Soll z.B. mit --comp-lzo die Paketkomprimierung in der Verbindung benutzt werden, muß diese Option sowohl bei den Clients als auch beim Server angegeben werden. Bestimme Optionen müssen gar nicht beim Client angegeben werden, wenn sie vom Server durch --push "
AKTUELLES
[06.01.2017]
Wir sind umgezogen!
Nach fast 16 Jahren im TCC sind wird umgezogen und haben am 02. Januar unsere neuen Büroräumen im ...
[23.12.2017]
Frohes Fest
Wir wünschen allen Kunden und Partnern ein frohes Fest, eine besinnliche Weihnachtszeit und einen ...
[12.10.2016]
GIT / SVN / CVS Versionierungssysteme
GIT und SVN sind zur Zeit unsere preferierten Versionierungssysteme bei unseren ...
Copyright © 2000-2011 foobar GmbH Chemnitz | Impressum
Softwareentwicklung seit mehr als 10 Jahren mit Programmiersprachen C++, C, Python, PHP, Java, Shell, Perl
VxWorks auf x86, Embedded Linux auf PowerPC/x86, Macintosh PPC mit MacOSX/Intel-Mac, Linux auf x86
Spezialkenntnissen in Hochgeschwindigkeitsnetzwerken SCI / Infiniband / PCIExpress, Treiberenwicklung im Linux Kernel, Virtualisierungslösungen (XEN, VMWare)