schienbein
31.07.2014, 09:43
OpenVPN einrichten Part 1 – VPN-Server konfigurieren
Da ich mich seid ein Paar Wochen mit dem Thema Openvpn und co. beschäftige und gefühlte 1001 Howtos gelesen habe sowie die offizielle Dokumentation durch gearbeitet habe möchte ich euch hier mal 1 meiner erarbeiteten Nutzungs Möglichkeiten als kleines howto bereitstellen.
Als erstes prüfen wir ob auf unserem System Tun/Tap Device Supportet wird.
Fall nicht könnt ihr hier schon Diereckt aufhören weiter zu Lesen!!!!!!!!!
Das ganze wurde mit einem Frisch eingerichtetem Debian7.0 64 bit System
Part 1 Tun/Tap Device
1. Das System auf den neuesten Stand bringen
apt-get update && apt-get upgrade
2.Überprüfen ob TUN/TAP aktiviert ist
cat /dev/net/tun
cat: /dev/net/tun: File descriptor in bad state
Info: Wenn hier eine Meldung der Art “File descriptor in bad state” erscheint dann ist alles in Ordnung und TUN/TAP ist aktiviert. Wenn hier hingegen eine Meldung der Form “No such device” erscheint dann sollte der Support des Hosters mit der Bitte kontaktiert werden TUN/TAP zu aktivieren.
Alternativ zum Support könnt ich auch noch versuchen das Modul Tun zu mit modprobe zu laden
modprobe tun
überprüft ob das Modul geladen wurde und bereit ist mit
lsmod | grep tun
info: vielleicht sollte mann noch überlegen eine Datei zu erstellen die das Modul bei einem System neustart automatisch mit startet
sollte tun aktiv sein kann man normal weiter machen.
Alle anderen müssen sich an ihren Support wenden um Tun zu Aktivieren
Part 2 Mit Openvpn einen Root/Vserver als Gateway Nutzen
1. OpenVPN installieren und einrichten
Root werden
su
# OpenVPN und OpenSSL installieren
apt-get install openvpn openssl
# wechseln in Open-VPN-Verzeichnis und kopieren der Standardkonfiguration
cd /etc/openvpn
cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0 ./easy-rsa
# Datei easy-rsa/vars editieren
nano easy-rsa/vars
In der Datei wird die Variable export EASY_RSA editiert:
export EASY_RSA="/etc/openvpn/easy-rsa"
#ändern von
export KEY_SIZE=2048
#zu
export KEY_SIZE=4096
#optional
Jetzt beginnt die Basiskonfiguration zur Vorbereitungs der Schlüsselgenerierung.
#Verzeichnis wechseln
cd /etc/openvpn/easy-rsa
# Konfiguration
source vars
./clean-all
./pkitool --initca
# symbolischen (weichen) Link erzeugen
ln -s openssl-1.0.0.cnf openssl.cnf
Jetzt werden die Zertifikate und Schlüssel generiert. Beim Kürzel für das Land tragen wir DE für Deutschland ein. Die anderen Angaben sind optional. Sofern der gleiche Common Name (CN) mehrmals bei verschiedenen Clients vergeben wird erscheint die folgende Fehlermeldung:
failed to update database
TXT_DB error number 2
Die Lösung ist, dass der CN nur einmal vergeben werden darf.
# Root CA erzeugen
./etc/openvpn/easy-rsa/build-ca OpenVPN
# Server Certificate erzeugen
./etc/openvpn/easy-rsa/build-key-server server
# erstes Client Certificate erzeugen (bei weiteren einfach durchzählen)
./etc/openvpn/easy-rsa/build-key client1
#Diffie Hellman Parameter erzeugen:
./etc/openvpn/easy-rsa//build-dh
#Dies dauert ne gewisse Zeit, je nach Speed der Server-CPU.
Um DOS-Attacken oder Port Scanning auf den OpenVPN Server zu erschweren erstellt man noch einen zusätzlichen TLS-AUTH Schlüssel:
openvpn --genkey --secret ta.key
Die Schlüssel und Zertifikate sowie die Clients befinden sich nun im Verzeichnis /etc/openvpn/easy-rsa/keys.
Der ta.key befindet sich unter /etc/openvpn/easy-rsa/
Ihr könnt diese dort liegen lassen oder wie ich es gemacht habe und legt euch weitere Ordner an und trennt die Zertifikate
zb. erstellt ihr den Ordner User und packt dort alle user.keys hinein achtet drauf das ihr die server.conf dem entsprechend
anpasst
# Konfigurationsdatei für OpenVPN anlegen
cd /etc/openvpn
touch openvpn.conf
nano openvpn.conf
Die Datei hat folgenden Inhalt und dient uns als server
port 1194
proto udp
tun-mtu 1500
dev tun
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/server.crt
key /etc/openvpn/keys/server.key
dh /etc/openvpn/keys/dh2048.pem
tls-auth /etc/openvpn/keys/ta.key 0
cipher AES-256-CBC
auth SHA256
tls-cipher DHE-RSA-AES256-SHA
topology subnet
server 10.8.0.0 255.255.255.0
push "redirect-gateway def1"
;push "dhcp-option DNS DNS-Server-IP"
;push "dhcp-option DNS DNS-Server-IP"
keepalive 10 120
comp-lzo
max-clients 10
user nobody
group nogroup
persist-key
persist-tun
verb 0
Wenn man mïöchte, dass der Server alternative DNS Server an die Clients bei Verbindungsaufbau mit pusht, so muss man bei den Zeilen:
;push "dhcp-option DNS DNS-Server-IP"
;push "dhcp-option DNS DNS-Server-IP"
das einleitende Semikolon löschen und jeweils DNS-Server-IP durch die IP Adresse des DNS Servers ersetzen.
neustart von openvpn
service openvpn restart
Nun erzeugt man (unter Windows zb mit dem Notepad) auf dem Client Rechner von user1 (für user2 entsprechend genauso) die Client Konfig Datei:
Man kann die Datei client1.ovpn client2.ovpn usw. nennen oder auch beliebig anders, wichtig ist nur die Dateiendung *.ovpn. und das für jeden user ein eigenen Schlüssel erstellt wird
Anschließend editiert man diese folgender maßen
client
dev tun
remote IP_DES_oVPN_SERVERS 1194
proto udp
resolv-retry infinite
nobind
persist-key
persist-tun
route-delay 2
tun-mtu 1500
ca ca.crt
cert user1.crt
key user1.key
tls-auth ta.key 1
cipher AES-256-CBC
auth SHA256
remote-cert-tls server
comp-lzo
verb 3
IP_DES_oVPN_SERVERS natïürlich durch die Server-IP ersetzen!
Um jetzt eine Verbindung zum Server aufzubauen benötigt man unter Windows als Beispiel den OpenVPN client, download unter:
OpenVPN Client
Dort den Windows installer laden und installieren. Anschlieïßend kopiert man die Dateien:
- ca.crt
- ta.key
- user1.crt
- user1.key
- client.ovpn
in den config Ordner dieses Programms. Die Verbindung client wird dann bereits nach dem Start des Tools in der Taskleiste unter den möglichen Verbindungen angezeigt und mit Klick auf Verbinden startet man die OpenVPN Session. Sollte alles klappen, so zeigt das Tool in der Taskleiste kurz die vom Server zugewiesene VPN-IP an und mit einem:
ping 10.8.0.1
Es fehlen nun noch einige Einstellungen am OpenVPN Server um über diesen surfen zu können.
Dazu muss zunächst das IP-Forwarding aktiviert werden, dazu gibt man als root folgenden Befehl ein:
echo "1" > /proc/sys/net/ipv4/ip_forward
Um diese Einstellung dauerhaft im System zu aktivieren, also auch nach einem Reboot des Servers muss man
etc/sysctl.conf editieren:
Man sucht die Zeile:
nano /etc/sysctl.conf
# Raute entfernen vor folgenden Einträgen bzw. diese hinzufügen
#net.ipv4.ip_forward=1
net.inet.ip.fastforwarding = 1
und löscht die einleitende #. und erweitert um net.inet.ip.fastforwarding = 1
Letzter Schritt: Konfigurieren des Servers als NAT über die iptables:
Man gibt als root folgenden Befehl ein:
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j SNAT --to-source SERVER_IP
sofern die Netzwerkschnittstelle des Servers eth0 ist, was aber im Regelfall der Fall ist.
Zum vergewissern kann man sich seine verfügbaren Netzwerkschnittstellen über den Befehl:
ifconfig
anzeigen lassen.
So konfiguriert maskiert der OpenVPN Server alle eingehenden privaten VPN IPs aus dem Netz 10.8.0.0/24 durch seine an eth0 gebundene IP, was seine öffentliche im Internet gültige IP darstellt. Damit ist es nun mïöglich über den Server zu surfen.
Um auch diese Einstellung dauerhaft im System zu integrieren kann man folgendermaßen vorgehen:
Man sichert sich die iptables settings in die Datei /etc/iptables.conf mit folgendem Befehl:
iptables-save > /etc/iptables.conf
Anschlieïßend fügt man in der Datei /etc/network/interfaces am Ende von den Eintrügen zu "iface eth0" folgende Zeile an:
pre-up /sbin/iptables-restore < /etc/iptables.conf
Wählt man sich nun erneut zu diesem Server ein und man startet den Webbrowser, so surft man via OpenVPN mit der IP des Servers statt mit seiner eigenen.
Da alle Einstellungen dazu fest im System integriert sind, funktioniert auch nach einem Reboot des Servers wieder alles wie gehabt.
Info: Ich werde das ganze hier noch nach und nach erweitern
ihr könnt sobald ihr openvpn Installiet habt und die Server.conf und client.conf zusätzlich noch Access Server installieren einrichten um mittels einer visuellen Oberfläche Eueren vpnserver weiter zu bearbeiten.
Ich verweise auch mal auf TrackerPolizei poxy howto (http://www.netvision-technik.de/forum/showthread.php?t=2661&highlight=dante) welches sich mit unserem ssh2 dem Tool myentunnel oder PROXIFIER in verbindung mit dem Socks5-Server und dem vpn tunnel super kombieniren lassen beim richtigen port forwarding das werde ich heute Abend mal ergänzen
Da ich mich seid ein Paar Wochen mit dem Thema Openvpn und co. beschäftige und gefühlte 1001 Howtos gelesen habe sowie die offizielle Dokumentation durch gearbeitet habe möchte ich euch hier mal 1 meiner erarbeiteten Nutzungs Möglichkeiten als kleines howto bereitstellen.
Als erstes prüfen wir ob auf unserem System Tun/Tap Device Supportet wird.
Fall nicht könnt ihr hier schon Diereckt aufhören weiter zu Lesen!!!!!!!!!
Das ganze wurde mit einem Frisch eingerichtetem Debian7.0 64 bit System
Part 1 Tun/Tap Device
1. Das System auf den neuesten Stand bringen
apt-get update && apt-get upgrade
2.Überprüfen ob TUN/TAP aktiviert ist
cat /dev/net/tun
cat: /dev/net/tun: File descriptor in bad state
Info: Wenn hier eine Meldung der Art “File descriptor in bad state” erscheint dann ist alles in Ordnung und TUN/TAP ist aktiviert. Wenn hier hingegen eine Meldung der Form “No such device” erscheint dann sollte der Support des Hosters mit der Bitte kontaktiert werden TUN/TAP zu aktivieren.
Alternativ zum Support könnt ich auch noch versuchen das Modul Tun zu mit modprobe zu laden
modprobe tun
überprüft ob das Modul geladen wurde und bereit ist mit
lsmod | grep tun
info: vielleicht sollte mann noch überlegen eine Datei zu erstellen die das Modul bei einem System neustart automatisch mit startet
sollte tun aktiv sein kann man normal weiter machen.
Alle anderen müssen sich an ihren Support wenden um Tun zu Aktivieren
Part 2 Mit Openvpn einen Root/Vserver als Gateway Nutzen
1. OpenVPN installieren und einrichten
Root werden
su
# OpenVPN und OpenSSL installieren
apt-get install openvpn openssl
# wechseln in Open-VPN-Verzeichnis und kopieren der Standardkonfiguration
cd /etc/openvpn
cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0 ./easy-rsa
# Datei easy-rsa/vars editieren
nano easy-rsa/vars
In der Datei wird die Variable export EASY_RSA editiert:
export EASY_RSA="/etc/openvpn/easy-rsa"
#ändern von
export KEY_SIZE=2048
#zu
export KEY_SIZE=4096
#optional
Jetzt beginnt die Basiskonfiguration zur Vorbereitungs der Schlüsselgenerierung.
#Verzeichnis wechseln
cd /etc/openvpn/easy-rsa
# Konfiguration
source vars
./clean-all
./pkitool --initca
# symbolischen (weichen) Link erzeugen
ln -s openssl-1.0.0.cnf openssl.cnf
Jetzt werden die Zertifikate und Schlüssel generiert. Beim Kürzel für das Land tragen wir DE für Deutschland ein. Die anderen Angaben sind optional. Sofern der gleiche Common Name (CN) mehrmals bei verschiedenen Clients vergeben wird erscheint die folgende Fehlermeldung:
failed to update database
TXT_DB error number 2
Die Lösung ist, dass der CN nur einmal vergeben werden darf.
# Root CA erzeugen
./etc/openvpn/easy-rsa/build-ca OpenVPN
# Server Certificate erzeugen
./etc/openvpn/easy-rsa/build-key-server server
# erstes Client Certificate erzeugen (bei weiteren einfach durchzählen)
./etc/openvpn/easy-rsa/build-key client1
#Diffie Hellman Parameter erzeugen:
./etc/openvpn/easy-rsa//build-dh
#Dies dauert ne gewisse Zeit, je nach Speed der Server-CPU.
Um DOS-Attacken oder Port Scanning auf den OpenVPN Server zu erschweren erstellt man noch einen zusätzlichen TLS-AUTH Schlüssel:
openvpn --genkey --secret ta.key
Die Schlüssel und Zertifikate sowie die Clients befinden sich nun im Verzeichnis /etc/openvpn/easy-rsa/keys.
Der ta.key befindet sich unter /etc/openvpn/easy-rsa/
Ihr könnt diese dort liegen lassen oder wie ich es gemacht habe und legt euch weitere Ordner an und trennt die Zertifikate
zb. erstellt ihr den Ordner User und packt dort alle user.keys hinein achtet drauf das ihr die server.conf dem entsprechend
anpasst
# Konfigurationsdatei für OpenVPN anlegen
cd /etc/openvpn
touch openvpn.conf
nano openvpn.conf
Die Datei hat folgenden Inhalt und dient uns als server
port 1194
proto udp
tun-mtu 1500
dev tun
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/server.crt
key /etc/openvpn/keys/server.key
dh /etc/openvpn/keys/dh2048.pem
tls-auth /etc/openvpn/keys/ta.key 0
cipher AES-256-CBC
auth SHA256
tls-cipher DHE-RSA-AES256-SHA
topology subnet
server 10.8.0.0 255.255.255.0
push "redirect-gateway def1"
;push "dhcp-option DNS DNS-Server-IP"
;push "dhcp-option DNS DNS-Server-IP"
keepalive 10 120
comp-lzo
max-clients 10
user nobody
group nogroup
persist-key
persist-tun
verb 0
Wenn man mïöchte, dass der Server alternative DNS Server an die Clients bei Verbindungsaufbau mit pusht, so muss man bei den Zeilen:
;push "dhcp-option DNS DNS-Server-IP"
;push "dhcp-option DNS DNS-Server-IP"
das einleitende Semikolon löschen und jeweils DNS-Server-IP durch die IP Adresse des DNS Servers ersetzen.
neustart von openvpn
service openvpn restart
Nun erzeugt man (unter Windows zb mit dem Notepad) auf dem Client Rechner von user1 (für user2 entsprechend genauso) die Client Konfig Datei:
Man kann die Datei client1.ovpn client2.ovpn usw. nennen oder auch beliebig anders, wichtig ist nur die Dateiendung *.ovpn. und das für jeden user ein eigenen Schlüssel erstellt wird
Anschließend editiert man diese folgender maßen
client
dev tun
remote IP_DES_oVPN_SERVERS 1194
proto udp
resolv-retry infinite
nobind
persist-key
persist-tun
route-delay 2
tun-mtu 1500
ca ca.crt
cert user1.crt
key user1.key
tls-auth ta.key 1
cipher AES-256-CBC
auth SHA256
remote-cert-tls server
comp-lzo
verb 3
IP_DES_oVPN_SERVERS natïürlich durch die Server-IP ersetzen!
Um jetzt eine Verbindung zum Server aufzubauen benötigt man unter Windows als Beispiel den OpenVPN client, download unter:
OpenVPN Client
Dort den Windows installer laden und installieren. Anschlieïßend kopiert man die Dateien:
- ca.crt
- ta.key
- user1.crt
- user1.key
- client.ovpn
in den config Ordner dieses Programms. Die Verbindung client wird dann bereits nach dem Start des Tools in der Taskleiste unter den möglichen Verbindungen angezeigt und mit Klick auf Verbinden startet man die OpenVPN Session. Sollte alles klappen, so zeigt das Tool in der Taskleiste kurz die vom Server zugewiesene VPN-IP an und mit einem:
ping 10.8.0.1
Es fehlen nun noch einige Einstellungen am OpenVPN Server um über diesen surfen zu können.
Dazu muss zunächst das IP-Forwarding aktiviert werden, dazu gibt man als root folgenden Befehl ein:
echo "1" > /proc/sys/net/ipv4/ip_forward
Um diese Einstellung dauerhaft im System zu aktivieren, also auch nach einem Reboot des Servers muss man
etc/sysctl.conf editieren:
Man sucht die Zeile:
nano /etc/sysctl.conf
# Raute entfernen vor folgenden Einträgen bzw. diese hinzufügen
#net.ipv4.ip_forward=1
net.inet.ip.fastforwarding = 1
und löscht die einleitende #. und erweitert um net.inet.ip.fastforwarding = 1
Letzter Schritt: Konfigurieren des Servers als NAT über die iptables:
Man gibt als root folgenden Befehl ein:
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j SNAT --to-source SERVER_IP
sofern die Netzwerkschnittstelle des Servers eth0 ist, was aber im Regelfall der Fall ist.
Zum vergewissern kann man sich seine verfügbaren Netzwerkschnittstellen über den Befehl:
ifconfig
anzeigen lassen.
So konfiguriert maskiert der OpenVPN Server alle eingehenden privaten VPN IPs aus dem Netz 10.8.0.0/24 durch seine an eth0 gebundene IP, was seine öffentliche im Internet gültige IP darstellt. Damit ist es nun mïöglich über den Server zu surfen.
Um auch diese Einstellung dauerhaft im System zu integrieren kann man folgendermaßen vorgehen:
Man sichert sich die iptables settings in die Datei /etc/iptables.conf mit folgendem Befehl:
iptables-save > /etc/iptables.conf
Anschlieïßend fügt man in der Datei /etc/network/interfaces am Ende von den Eintrügen zu "iface eth0" folgende Zeile an:
pre-up /sbin/iptables-restore < /etc/iptables.conf
Wählt man sich nun erneut zu diesem Server ein und man startet den Webbrowser, so surft man via OpenVPN mit der IP des Servers statt mit seiner eigenen.
Da alle Einstellungen dazu fest im System integriert sind, funktioniert auch nach einem Reboot des Servers wieder alles wie gehabt.
Info: Ich werde das ganze hier noch nach und nach erweitern
ihr könnt sobald ihr openvpn Installiet habt und die Server.conf und client.conf zusätzlich noch Access Server installieren einrichten um mittels einer visuellen Oberfläche Eueren vpnserver weiter zu bearbeiten.
Ich verweise auch mal auf TrackerPolizei poxy howto (http://www.netvision-technik.de/forum/showthread.php?t=2661&highlight=dante) welches sich mit unserem ssh2 dem Tool myentunnel oder PROXIFIER in verbindung mit dem Socks5-Server und dem vpn tunnel super kombieniren lassen beim richtigen port forwarding das werde ich heute Abend mal ergänzen