12. OpenVPN
IPSec Lösungen eignen sich ausgezeichnet zur Verbindung von ganzen
Netzen. Es ist jedoch nicht ganz einfach, einzelne mobile
Clients mit Hilfe von IPSec an ein Netz anzubinden − insbesondere
dann, wenn es sich um Clients mit verschiedenen Betriebssystemen handelt.
Alle modernen Systeme unterstützen IPSec, aber dies bedeutet nicht,
dass sich alle IPSec-Implementierungen problemlos miteinander kombinieren
lassen.
Die hier vorgeschlagene Architektur benützt OpenVPN für die
Anbindung von mobilen Geräten an ein LAN, das von einem DMZ-fähigen
Router geschützt wird − beispielsweise von Linuxrouter!
Die hier diskutierte Lösung platziert den OpenVPN-Server jedoch nicht
auf dem Router − was technisch ohne weiteres möglich wäre −
sondern auf einer separaten Maschine in der DMZ. Die folgenden Gründe
sprechen für OpenVPN und für die Anordnung des Servers in einer DMZ:
-
Portierungen: Es existieren Portierungen von OpenVPN für W2K, Win XP
WIN 7 und für Mac OS X. Für Mac und für Windows sind
Pakete verfügbar, mit denen sich OpenVPN und eine zugehörige
GUI per Mausklick installieren lassen, vergl. Links
-
Firewalls: OpenVPN benützt wahlweise udp oder tcp und hört auf
einem frei wählbaren Port − damit ist es ausgesprochen
«firewall and NAT friendly». Ein Umstand, der bei mobilen
Clients, die unter Umständen selbst in geschützten Netzen
angesiedelt sind, von Wichtigkeit ist.
-
Verbindungs-Sicherheit: OpenVPN verwendet bewährte Verfahren (TLS)
für die Authentisierung der Peers und für die sichere
Übermittlung der Pakete.
-
Separate Hardware für den Router und für den OpenVPN Gateway: Eine
aufwändige Lösung − anderseits ist der Router die am
stärksten exponierte Komponente des LAN. Aus diesem Grund sollte
Linuxrouter selbst wenn immer möglich keine extern zugänglichen
Dienste anbieten.
Die nachstehende Skizze zeigt den Aufbau der oben diskutierten Lösung.
Die Architektur geht von der Annahme aus, dass mobile Clients via VPN auf
einen File-, Mail- und Imapserver im LAN zugreifen sollen.
+------------------+
| |
| File-Mail-Imap- |
| Server |
| |
|------------------|
| 10.10.10.20 |
+------------------+
|
|
| LAN 10.10.10.0/24
----------------------------
|
|
eth0
+------------------+
| 10.10.10.10 |
|------------------| +------------------+
| | | | Mobile Client |
| | | |------------------|
| Linuxrouter |eth1------/INTERNET/------| tun0: 10.50.50.6 |
| | | |------------------|
| | | | a.b.c.d |
|------------------| +------------------+
| 10.10.11.10 |
+------------------+
eth2
|
| DMZ 10.10.11.0/24
-------------------------------
|
|
eth0
+-------------------+
| 10.10.11.20 |
|-------------------|
| tun0: 10.50.50.1 |
|-------------------|
| |
| OpenVPN Gateway |
| |
+-------------------+
|
|
Clientseitig wurde der OpenVPN Server auf Windows 2000 SP4, Windows XP
Professional SP3, Windows 7 Ultimate, Mac OS X 10.3.9, Mac OS X 10.4.8 und
Slackware Linux 10.2, Slackware Linux 13.0 getestet.
Die VPN-Gateway Maschine basiert auf Slackware 10.2 mit Kernel 2.6.17.11.
Auf dieser Plattform wurden neben OpenVPN 2.0.7 auch Apache mit
WebDAV-Support, sowie ein ProFTP-, ein Squid- und ein Postfix-Server
installiert. Mit diesem Ausbaugrad liegt der Platzbedarf des Systems
bei 480MB.
Beim LAN-Server handelt es sich um eine Linux Plattform mit NFS,
Samba, Postfix und Courier-Imap und Kalenderserver.
In einer Small-Office-Home-Office Anwendung kann der beschriebene DMZ-Server
problemlos auf einem Soekris- oder PC-Engines-Board betrieben werden. In einem
derartigen Umfeld ist gewöhnlich die Upstream-Transfer-Rate des Providers der
limitierende Faktor bei Filetransfers oder bei VPN-Verbindungen, nicht die
IO- oder die CPU-Leistung der Server-Plattform. Messungen mit Filetransfers
durch einen IPSec-Tunnel mit beidseitiger 3000/300Kbit/sec Anbindung
ergaben, dass die maximal mögliche Transferrate von 300Kbit/sec immer
erreicht wurde.
Voraussetzungen:
-openssl >= 0.9.5
-libtool
-iproute2
-lzo (optional, eine Bibliothek zur verlustfreien Komprimierung von Dateien.
Download: Links.)
-bridge-utils für /dev/tap (optional, nötig falls
das tap-Device eingesetzt wird. Download: Links.)
Systemkonfiguration:
-Auf dem Gateway muss IP-Forwarding aktiviert werden
(echo 1 > /proc/sys/net/ipv4/ip_forward ).
-Es muss eine TUN Device-Node vorhanden sein. (Diese gegebenenfalls mit
mknod /dev/net/tun c 10 200 anlegen.)
Es ist sinnvoll, den OpenVPN Server unter einer eigenen Gruppe und einem eigenen
User zu betreiben. (Sicherstellen, dass /bin/false existiert und
in /etc/shells aufgeführt ist.)
# /usr/sbin/groupadd openvpn
# /usr/sbin/useradd openvpn -g openvpn -c "OpenVPN server" -d /dev/null -s /bin/false
|
|
Kernelkonfiguration:
Der Kernel muss mit TUN/TAP und Bridging Support
kompiliert werden.
Device Drivers -->
Network device support -->
[*] Universal TUN/TAP device driver support (TUN)
Networking -->
[*] Networking support (NET)
Networking options -->
[*] Network packet filtering (replaces ipchains) (NETFILTER) -->
[*] Network packet filtering debugging (NETFILTER_DEBUG)
[*] Bridged IP/ARP packets filtering (BRIDGE_NETFILTER)
Bridge: Netfilter Configuration -->
[*] Ethernet Bridge tables (BRIDGE_NF_EBTABLES)
[*] ebt: filter table support (BRIDGE_EBT_T_FILTER)
[*] ebt IP filter support (BRIDGE_EBT_IP)
[*] 802.1d Ethernet Bridging (BRIDGE)
|
|
Die Bridge-Utils bridge-utils-0.9.7.tgz entpacken, kompilieren
und installieren.
$ tar xzvf bridge-utils-1.2.tar.gz
$ cd /bridge-utils-directory-tree
$ autoconf
$ ./configure --prefix=/usr/local/bridge-utils-1.2
$ make
# make install
# ln -s /usr/local/bridge-utils-1.2 /usr/local/bridge
# cp /usr/local/bridge/sbin/brctl /usr/local/sbin/brctl
|
|
Die Komprimierungs-Bibliothek lzo-2.02.tar.gz entpacken,
kompilieren und installieren.
$ tar xzvf lzo-2.02.tar.gz
$ cd /lzo-directory-tree
$ ./configure
$ make
$ make check
$ make test
# make install
|
|
Den OpenVPN Server openvpn-2.0.7.tar.gz entpacken, kompilieren und
installieren.
$ tar xzvf openvpn-2.0.7.tar.gz
$ cd /openvpn-directory-tree
$ ./configure --prefix=/usr/local \
--sysconfdir=/etc/openvpn \
--mandir=/usr/local/man \
--enable-iproute2 \
--with-lzo-headers=/usr/local/include \
--with-lzo-lib=/usr/local/lib
$ make
$ make check
# make install
|
|
OpenVPN authentisiert die am Tunnel beteiligten Peers via Public Key
Verfahren. Auf dem Gateway und auf den Clients müssen somit
Maschinenzertifikate und -Keys, sowie das Zertifikat des Trustcentres,
das diese ausgestellt hat, installiert werden.
Der OpenVPN Source Code enthät im Verzeichnis
/openvpn-directory-tree/easy-rsa/ eine Anzahl Scripts, mit
deren Hilfe die nötigen Keys und Zertifikate generiert werden können.
(Vergl. http://openvpn.net/howto.html.)
Selbstverständlich können die notwendigen Files ebensogut mit
Hilfe der CA.pl Perl Utility erzeugt werde, die im OpenSSL
Source Code enthalten ist (/openssl-directory-tree/apps/ ).
Vergl.
http://www.openssl.org/docs/apps/CA.pl.html.)
Die Diffie-Hellmann Parameter, die der Gateway Server benötigt,
werden mit dem SSL-Kommando:
$ openssl dhparam -out dh1024.pem 1024 erzeugt.
Falls das Server Zertifikat via CA.pl erzeugt wird,
muss die Direktive nsCertType=server im Konfigurationsfile
/openssl-directory-tree/apps/openssl.cnf aktiviert werden.
HINWEIS: Die Sicherheit der gesamten Public Key Infrastructure hängt
davon ab, dass der Private Key der CA geheim bleibt. Die SSL Schlüssel
und Zertifikate sollten somit auf einer separaten Maschine generiert und
verwaltet werden − nicht auf dem OpenVPN Gateway in der DMZ!
Wenn die nötigen Keys und Zertifikate zur Verfügung stehen,
können die zugehörigen Directories angelegt und mit den korrekten
Files versehen werden. (Zum Testen kann auf die Liste der revozierten
Zertifikate, crl.pem , verzichtet werden.)
# mkdir /etc/openvpn
# mkdir /etc/openvpn/ssl.ca
# mkdir /etc/openvpn/ssl.crl
# mkdir /etc/openvpn/ssl.crt
# mkdir /etc/openvpn/ssl.dh
# mkdir /etc/openvpn/ssl.key
# cp my_root_ca.crt /etc/openvpn/ssl.ca
# cp crl.pem /etc/openvpn/ssl.crl
# cp server.crt /etc/openvpn/ssl.crt
# cp dh1024.pem /etc/openvpn/ssl.dh
# cp server.key /etc/openvpn/ssl.key
|
|
Danach die Berechtigungen der Files und Directories anpassen.
# cd /etc/openvpn
# chown root:root ssl.key
# chmod 0700 ssl.key
# cd /etc/openvpn/ssl.ca
# chown root:root my_root_ca.crt
# chmod 0444 my_root_ca.crt
# cd /etc/openvpn/ssl.crl
# chown root:root crl.pem
# chmod 0444 crl.pem
# cd /etc/openvpn/ssl.crt
# chown root:root server.crt
# chmod 0444 server.crt
# cd /etc/openvpn/ssl.dh
# chown root:root dh1024.pem
# chmod 0444 dh1024.pem
# cd /etc/openvpn/ssl.key
# chown root:root server.key
# chmod 0400 server.key
|
|
Das Directory für das OpenVPN Logfile /var/log/openvpn
und das Konfigurationsfile /etc/openvpn/server.conf anlegen.
(Muster Konfigurationsfiles befinden sich im
/openvpn-directory-tree/sample-config-files Directory. Die
Konfigurationsoptionen von OpenVPN sind in der OpenVPN manpage
http://openvpn.net/man.html
detailliert beschrieben.)
# /etc/openvpn/server.conf
#
#=============================================
# Main settings
#=============================================
port 8443
dev tun
proto udp
user openvpn
group openvpn
persist-key
persist-tun
max-clients 10
keepalive 10 120
comp-lzo
#=============================================
# Settings for connecting clients
#=============================================
client-config-dir /etc/openvpn
#=============================================
# SSL
#=============================================
ca /etc/openvpn/ssl.ca/my_root_ca.crt
cert /etc/openvpn/ssl.crt/server.crt
key /etc/openvpn/ssl.key/server.key
dh /etc/openvpn/ssl.dh/dh1024.pem
;crl-verify /etc/openvpn/ssl.crl/crl.pem
#=============================================
# VPN subnet settings
#=============================================
# Set the VPN subnet.
server 10.50.50.0 255.255.255.0
ifconfig-pool-persist ipp.txt
# Tell the clients, which subnets are accessible for them.
push "route 10.10.11.0 255.255.255.0"
push "route 10.10.10.0 255.255.255.0"
#=============================================
# Logging
#=============================================
status /var/log/openvpn/openvpn-status.log
verb 3
|
|
Den OpenVPN Server starten und seinen Output auf Fehlermeldungen
überprüfen.
# /usr/local/sbin/openvpn /etc/openvpn/server.conf
|
|
Wenn der Server korrekt startet, ein OpenVPN Startscript anlegen und in die
Bootscripts des verwendeten Systems einbinden.
# /etc/rc.d/rc.openvpn
OPENVPN_DIR="/usr/local/sbin"
OPENVPN_CONF_DIR="/etc/openvpn"
openvpn_start() {
if [ -f ${OPENVPN_CONF_DIR}/server.conf ];
then
echo "Starting OpenVPN server..."
${OPENVPN_DIR}/openvpn ${OPENVPN_CONF_DIR}/server.conf &
fi
if [ -f ${OPENVPN_CONF_DIR}/client.conf ];
then
echo "Starting OpenVPN client..."
${OPENVPN_DIR}/openvpn ${OPENVPN_CONF_DIR}/client.conf &
fi
}
openvpn_stop() {
echo "Stopping OpenVPN..."
/bin/killall openvpn
}
openvpn_restart() {
openvpn_stop
sleep 1
openvpn_start
}
case "$1" in
'start')
openvpn_start
;;
'stop')
openvpn_stop
;;
'restart')
openvpn_restart
;;
*)
echo "usage $0 {start|stop|restart}"
exit 1
;;
esac
exit 0
|
|
Das Vorgehen für eine Linux Client Installation von lzo und OpenVPN
ist weitgehend identisch mit der Server Installation. Der Client benötigt
kein Diffie-Hellmann-File und kein IP-Forwarding, ausserdem erhält er
ein abgeändertes Konfigurationsfile. Selbstverständlich muss für
jeden Client, der mit dem Gateway einen VPN-Tunnel aufbauen soll, ein eigenes
Zertifikat und ein eigener Client Key angelegt werden.
# /etc/openvpn/client.conf
#
#=============================================
# Main settings
#=============================================
client
nobind
dev tun
proto udp
user openvpn
group openvpn
persist-key
persist-tun
comp-lzo
#============================================
# VPN connection settings
#============================================
remote www.my-server.ch 8443
resolv-retry infinite
#=============================================
# SSL
#=============================================
ca /etc/openvpn/ssl.ca/my_root_ca.crt
cert /etc/openvpn/ssl.crt/client.crt
key /etc/openvpn/ssl.key/client.key
ns-cert-type server
#=============================================
# Logging
#=============================================
verb 3
|
|
Sobald zwei OpenVPN Installationen zur Verfügung stehen, können
die Server getestet werden (es ist ratsam, dazu die Firewalls auf der
Client- und auf der Server-Seite des Tunnels zu deaktivieren).
Falls die unter 12.2 vorgeschlagene, DMZ-basierte Lösung angewandt wird,
müssen auf den beteiligten Maschinen die folgenden Routen eingerichtet
werden:
Auf dem OpenVPN Gateway ist eine Route nötig, die Pakete mit der Destination
10.10.10.0/24 an Linuxrouter weiterleitet.
# /sbin/route add -net 10.10.10.0 netmask 255.255.255.0 gw 10.10.11.10 eth0
|
|
Auf Linuxrouter muss eine Route eingetragen werden, die dafür sorgt,
dass Pakete, die von einem Server auf 10.10.10.20 an den Tunnel-Endpunkt auf
dem Gateway 10.50.50.1 gesandt werden, dorthin weitergeleitet werden.
# /sbin/route add -net 10.50.50.0 netmask 255.255.255.0 gw 10.10.11.20 eth2
|
|
HINWEIS: Falls auf dem File-Mail-Imap-Server (im Beispiel die Maschine 10.10.10.20)
mehr als eine Netzwerkkarte installiert ist - beispielsweise weil die Maschine mehr
als ein Subnetz bedient - dann kann es nötig sein, die Rückroute
zum OpenVPN Gateway auf dem Fileserver ebenfalls einzutragen
(Wert des «default gateway» beachten):
# /sbin/route add -net 10.50.50.0 netmask 255.255.255.0 gw 10.10.10.10 eth0
|
|
Wenn sich 10.10.10.20 ab einem mobilen Client pingen lässt, können
die NFS Shares des Fileservers gemounted werden.
# mount -t nfs 10.10.10.20:/nfs_share /nfs_mountpoint
|
|
Falls das Mount-Kommando fehlschlägt, die Konfiguration des NFS Servers
überprüfen:
-Erlauben die File Permissions des NFS Servers Zugriffe für die uid des entfernten Users?
-Erlaubt der TCP Wrapper des NFS Servers (/etc/hosts.allow ) Zugriffe
aus dem virtuellen Netz 10.50.50.0/24 ?
-Erlaubt /etc/exports Zugriffe aus dem virtuellen
Netz 10.50.50.0/24 ? (Siehe Beispiel.)
# /etc/exports
/nfs_share 10.10.10.0/255.255.255.0(rw,root_squash,async,insecure) \
10.50.50.0/255.255.0.0(rw,root_squash,async,insecure)
|
|
Damit mobile Clients Mails via 10.10.10.20:25 versenden können, muss der
LAN Mailserver Verbindungsversuche aus dem virtuellen Netz 10.50.50.0/24
akzeptieren. Im Fall von Postfix muss dafür die mynetworks
Direktive des Servers wie folgt angepasst werden:
# /etc/postfix/main.cf
mynetworks = 127.0.0.0/8, 10.10.10.0/24, 10.50.50.0/24
|
|
Ein erfolgreicher Verbindungsaufbau zum Imap Server setzt voraus, dass
der verbindungswillige Client über einen gültigen Imap-Account
verfügt.
Sobald der Verbindungsaufbau der OpenVPN Peers, sowie der Zugriff auf die
gewünschten Services korrekt funktionieren, können die
iptables-Scripts der beteiligten Firewalls angepasst werden. Auf der Seite
des Clients müssen ausgehende Pakete zum OpenVPN Gateway zugelassen
werden.
# Allow outgoing packets to destination port $p_open_vpn.
$IPTABLES -A FORWARD -o $EXT -p UDP --sport $p_high --dport $p_open_vpn -j ACCEPT
|
|
Auf der Seite des OpenVPN Gateways sind PREROUTING
und FORWARD Regeln nötig. (Die Variablen
$p_open_vpn, $OPEN_VPN_SERVER, $FILE_SERVER, $OPEN_VPN_NET,
$DMZ, $EXT sind mit den korrekten Werten zu versehen.)
# Allow portforwarding to the OpenVPN server.
$IPTABLES -t nat -A PREROUTING -p udp --dport $p_open_vpn -i $EXT \
-j DNAT --to-destination $OPEN_VPN_SERVER
# Allow new incoming traffic going to the OpenVPN server.
$IPTABLES -A FORWARD -i $EXT -o $DMZ -d $OPEN_VPN_SERVER -p udp \
--dport $p_open_vpn -j ACCEPT
# Allow outgoing packets sent by the OpenVPN server.
$IPTABLES -A FORWARD -i $DMZ -o $EXT -s $OPEN_VPN_SERVER -p udp -j ACCEPT
# Allow NFS and Samba mounts accross the VPN tunnel.
# NOTE: NFS uses tcp ports for the portmapper and udp ports for the server.
# Samba uses udp and tcp ports 137:139 and tcp port 445. Make sure these
# ports are not blacklisted elsewhere in the firewall script).
$IPTABLES -A FORWARD -i $DMZ -o $INT -s $OPEN_VPN_NET -p tcp \
-d $FILE_SERVER_LAN -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A FORWARD -i $INT -o $DMZ -s $FILE_SERVER_LAN -p tcp \
-d $OPEN_VPN_NET -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A FORWARD -i $DMZ -o $INT -s $OPEN_VPN_NET -p udp -d $FILE_SERVER_LAN -j ACCEPT
$IPTABLES -A FORWARD -i $INT -o $DMZ -s $FILE_SERVER_LAN -p udp -d $OPEN_VPN_NET -j ACCEPT
|
|
Voraussetzungen:
-Windows 2000 oder besser.
-Gültige PKI-Zertifikate und ein Client Key müssen
zur Verfügung stehen.
Downloads: Links
Installation von lzo:
lzo-x.y.z.exe ausführen. Damit wird lzo nach
c:\programme\gnuwin32\ installiert. Anschliessend sicherstellen,
dass die folgenden Umgebungsvariabeln existieren:
TMPDIR=%TEMP%
TMP=%TEMP%
HOME=%HOMEDRIVE%%HOMEPATH%
Installation von OpenVPN via Windows Installer:
Der Installer erzeugt ein Muster-Konfigurationsfile
C:\Program Files\OpenVPN\config\sample.ovpn.txt.
Eine OpenVPN Gruppe und ein OpenVPN User fehlen unter Windows, ausserdem
benötigt das System den Namen des TAP-Win32 Adapters,
der in der «Netzwerkumgebung» aufgeführt ist. Ansonsten
sind die Konfigurationsparameter des Clients unter Windows identisch
mit der Linux Clientkonfiguration.
# c:\programme\openvpn\config\client.ovpn
#
#=============================================
# Main settings
#=============================================
client
nobind
dev tun
dev-node "LAN-Verbindung 3"
proto udp
persist-key
persist-tun
comp-lzo
#============================================
# VPN connection settings
#============================================
remote www.my-server.ch 8443
resolv-retry infinite
#=============================================
# SSL
#=============================================
ca ssl.ca/my_root_ca.crt
cert ssl.crt/client.crt
key ssl.key/client.key
ns-cert-type server
#=============================================
# Logging
#=============================================
verb 3
|
|
Die SSL Directories anlegen und mit den Zertifikats- und Key-Files versehen.
# cd c:\programme\openvpn\config\
# mkdir ssl.ca
# mkdir ssl.cert
# mkdir ssl.key
# copy my_root_ca.crt c:\programme\openvpn\config\ssl.ca
# copy client.crt c:\programme\openvpn\config\ssl.cert
# copy client.key c:\programme\openvpn\config\ssl.key
|
|
Starten des Servers unter Windows:
Falls der OpenVPN Server inklusive GUI installiert wurde, wird der Daemon durch
Doppelklick auf das Icon im System Tray gestartet, ansonsten per DOS-Box:
c:\programme\openvpn\config > openvpn --config client.ovpn .
(F4 zum Beenden des Servers.)
BEACHTEN: Unter Windows muss OpenVPN mit Administrator Rechten gestartet werden.
Hilfe: http://openvpn.net/INSTALL-win32.html
Sobald ein VPN-Tunnel zum Gateway aufgebaut ist, können vorhandene Samba
Shares mit Hilfe von net use auf freie Win-Laufwerksbuchstaben
abgebildet werden.
> net use s: \\10.10.10.20\samba_share sambapw /user:sambauser
> net use /delete s:
|
|
Troubleshooting Samba:
Überprüfen, ob die hosts allow Direktive in
/etc/samba/smb.conf Zugriffe aus dem virtuellen Netz
10.50.50.0/24 erlaubt.
Voraussetzungen:
-Mac OS X >= 10.3.x
-Gültige PKI-Zertifikate und ein Client Key müssen
zur Verfügung stehen.
-Es scheinen (noch) keine «easy-to-install» lzo-Images für
Macintosh zu existieren.
Downloads: Links
Installation:
-Das Tunnelblick Disc-Image downloaden und mounten.
-Den Installer Tunnelblick-Complete.mpkg mit Doppelklick starten.
-Tunnelblick wird damit nach /Applications/Tunnelblick.app installiert.
-Das Tunnelblick Image umounten.
Konfiguration:
Den Server mit Doppelklick auf /Applications/Tunnelblick.app
starten. Beim ersten Start erscheint eine Warnung, dass noch kein
Konfigurationsfile existiert. Continue auswählen,
damit wird ein Muster-Konfigurationsfile geöffnet.
Das Konfigurationsfile editieren und speichern. (Das Konfigurationsfile
für den User admin wird unter
/Users/admin/Library/openvpn/openvpn.conf angelegt.)
# /Users/admin/Library/openvpn/openvpn.conf
#
#=============================================
# Main settings
#=============================================
client
nobind
dev tun
proto udp
user nobody
group nobody
persist-key
persist-tun
;comp-lzo
#============================================
# VPN connection settings
#============================================
remote www.my-server.ch 8443
resolv-retry infinite
#=============================================
# SSL
#=============================================
ca ssl.ca/my_root_ca.crt
cert ssl.cert/client.crt
key ssl.pkey/client.key
ns-cert-type server
#=============================================
# Logging
#=============================================
verb 3
|
|
Die SSL Directories anlegen und mit den Zertifikats- und Key-Files versehen.
(Im Beispiel wird angenommen, dass die OpenVPN Installation für den
User admin vorgenommen wird.)
# cd /Users/admin/Library/openvpn
# mkdir ssl.ca
# mkdir ssl.cert
# mkdir ssl.pkey
# cp my_root_ca.crt /Users/admin/Library/openvpn/ssl.ca
# cp client.crt /Users/admin/Library/openvpn/ssl.cert
# cp client.key /Users/admin/Library/openvpn/ssl.pkey
|
|
Die Berechtigungen der Directories und Files überprüfen und
gegebenfalls anpassen.
# cd /Users/admin/Library/openvpn
# chown -R admin:staff *
# chmod 0700 ssl.pkey
# cd /Users/admin/Library/openvpn/ssl.ca
# chmod 0444 my_root_ca.crt
# cd /Users/admin/Library/openvpn/ssl.cert
# chmod 0444 client.crt
# cd /etc/openvpn/ssl.pkey
# chmod 0400 client.key
|
|
Starten des Servers unter Mac OS X:
Mit Klick auf das Tunnelsymbol rechts oben in der Haupmenue-Leiste das
Tunnelblick Startmenue öffnen. Connect startet den Server.
Troubleshooting Tunnelblick:
Falls der Server sich nicht mit Doppelklick und Connect starten
lässt, auf die Kommandozeile wechseln und die Startmeldungen des Daemons
auf Fehlermeldungen überprüfen.
$ cd /Users/admin/Library/openvpn
$ /usr/local/sbin/openvpn openvpn.conf
|
|
Wenn der Tunnel zum Gateway aufgebaut ist, können vorhandene Samba
Shares gemounted werden.
Dazu im Finder den Menuepunkt Go auswählen
(Shortcut Apple-k ) und im Fenster, das damit geöffnet
wird, die Server Adresse eintragen.
(HINWEIS: Das Browse -Kommando funktioniert nicht über
Netzwerkgrenzen hinweg, denn Browse beruht auf Broadcasts.)
cifs://sambauser:sambapw@10.10.10.20/samba_share
|
|
NFS Shares werden via Finder mit dem folgenden Kommando gemounted:
nfs://10.10.10.20/nfs_share
|
|
Troubleshooting Samba:
-Überprüfen, ob die hosts allow Direktive in
/etc/samba/smb.conf Zugriffe aus dem virtuellen Netz
10.50.50.0/24 erlaubt.
Troubleshooting NFS:
-Vergl. 12.7
-HINWEIS: Für Macintosh-Connects müssen NFS Shares mit der Direktive
insecure exportiert werden, da der Mac Finder defaultmässig
versucht, sich mit Ports > 1024 zu verbinden.
Hilfe:
Das README File der Tunnelblick Software beinhaltet alle
nötigen Informationen für die Installation von OpenVPN auf
Macintosh.
Die Installation des OpenVPN Servers in der DMZ ( wie oben diskutiert )
stellt für Firmen und sicherheitsbewusste ( oder leicht paranoide ;-) )
Anwender die Lösung der Wahl dar. Im Home-Office-Bereich kann es aber
sinnvoll sein, eine weniger komplexe Lösung zu implementieren.
Bezüglich Installation und Konfiguration des OpenVPN Servers gibt es keinen
Unterschied zwischen einer DMZ- und einer LAN-Installation.
Bei einer Installation im LAN gemäss der nachstehend skizzierten Architektur
ist lediglich folgendes zu beachten:
+-------------------+ +------------------+
| OpenVPN Host | | |
| Maschine | | File-Mail-Imap- |
|-------------------| | Server |
| tun0: 10.50.50.1 | | |
|-------------------| |------------------|
| 10.10.10.11 | | 10.10.10.20 |
+-------------------+ +------------------+
| |
| |
| LAN 10.10.10.0/24 |
---------------------------------------------------
|
|
eth0
+------------------+
| 10.10.10.10 |
|------------------| +------------------+
| | | | Mobile Client |
| | | |------------------|
| Linuxrouter |eth1------/INTERNET/------| tun0: 10.50.50.6 |
| | | |------------------|
| | | | a.b.c.d |
+------------------+ +------------------+
|
|
-Falls zusätzlich zum LAN-Host (10.10.10.11) weitere Maschinen im LAN
(10.10.10.20) via OpenVPN erreichbar sein sollen, dann muss auf dem LAN-Host
das Kernel IP Forwarding aktiviert werden.
echo "1" > /proc/sys/net/ipv4/ip_forward
|
|
-Auf den zusätzlichen Zielmaschinen im LAN (10.10.10.20) muss die Rück-Route
zum OpenVPN Host definiert werden, damit Pakete, die für den OpenVPN Server
bestimmt sind, nicht an den Default Gateway, 10.10.10.10, geschickt werden, sondern
an die OpenVPN Host Maschine.
/sbin/route add -net 10.50.50.0 netmask 255.255.255.0 gw 10.10.10.11 eth0
|
|
-Linuxrouter: Selbstverständlich muss dass Port-Forwarding auf Linuxrouter so
konfiguriert werden, dass Pakete, die für den OpenVPN Server bestimmt sind,
an den korrekten LAN-Host weitergeleitet werden.
|