Ich hatte bis jetzt immer Preshared Keys benutzt aber es wurde mal Zeit sich Zertifikate anzuschauen. Also schreibe ich mal alles auf was ich so gemacht habe.
Also erstmal brauchen wir eine PKI-Infrastruktur. Ich sage euch…da hatte ich richtig schiß vor. Weil ich mich noch nie mit Zertifikaten so richtig aussernander gesetzt habe. OpenVPN bringt Skripte mit dafür. Dann geht das ganze sehr schön locker. Ihr müßte einfach auf eurem Rechner nach einem easy-rsa Verzeichnis suchen. Das kopiert ihr dann nach /etc/openvpn
cp -r /usr/foo/easy-rsa /etc/openvpn
Dann geht es los. Die vars-Datei muss angepasst werden. Also da stehen so ein paar Sachen drin die man beantwqorten sollte. Name und hier und da. Dann muss diese Datei gesourct werden
. ./vars
Und nun geht es wirklich los. Es wird die CA gebaut. Diese ist wichtig um die Schlüßel zu signieren die später generiert werden
./build-ca
Dabei werden die Daten schon übernommen die wir in die vars Datei eingetragen hatten.
./build-key-server server
Das hintere “server” steht für einen eindeutigen Namen. Das ist sehr wichtig. Als letztes wird gefragt ob die Schlüßel signiert werden sollen
Sign the certificate? [y/n]
1 out of 1 certificate requests certified, commit? [y/n]
Da sollte man besser mit “y” anworten. So nun sind die ersten Zertifikate fertig. Nun geht es an den ersten Client
./build-key client1
wobei client1 wieder der eindeutige Name ist. Am Ende muss man wieder die beiden Fragen beantworten um die Keys zu signieren. Nun müßen die Deffie-Hellman Parameter generiert werden. Soweit ich weiß sind diese dazu da private Daten über eine unsichere Leitung zu schicken ohne das beide Enden einen Schlüßel haben. (korrigiert mich wenn es falsch ist)
./build-dh
Für mehr Sicherheit kann man noch einen statischen Key generien der zur signierung der TLS-Kommandos dient
openvpn –genkey –secret key.asc
Nun sind die Zertifikate komplett und wir kümmern uns um die Config-Dateien. Meine Server Config Datei sieht so aus
dev tun
port 5000
server 10.7.0.0 255.255.255.248
ifconfig-pool-persist /etc/openvpn/home/ipp.txt
mssfix 1200
fragment 1200# TLS config
tls-server
ca /etc/openvpn/home/ca.crt
cert /etc/openvpn/home/server.crt
key /etc/openvpn/home/server.key
dh /etc/openvpn/home/dh1024.pem
tls-auth /etc/openvpn/home/key.asc 0# compression
comp-lzo# UID
user nobody
group nobody# timeouts
#keepalive 10 600
ping 15
ping-restart 300
resolv-retry 300
ping-timer-rem
persist-tun
persist-key# push
push “redirect-gateway def1″
push “route 192.168.38.0 255.255.255.0″
push “dhcp-option DNS 192.168.38.150″# UP Script
up /etc/openvpn/ip_forward.up
Wenn man möchte das die Standard-Route nun über das VPN gehen soll kann push “redirect-gateway” setzen. Zu dem ip_forward.up Skript komme ich noch. Erstmal die Client config
remote serverurl.tld
port 5000
resolv-retry infinite
dev tun
client
fragment 1200# TLS config
tls-client
ca ca.crt
cert client1.crt
key client1.key
tls-auth key.asc 1
ns-cert-type server# compression
comp-lzo# UID
user nobody
group nobody# timeouts
ping 15
ping-restart 300
resolv-retry 300
persist-tun
Die aufgeführten Zertifikate müßen natürlich in den richtigen Verzeichnissen liegen. Das ip_forward Skript sieht so aus
#!/bin/bash
echo 1 > /proc/sys/net/ipv4/ip_forward
Das ist dazu da um Traffic weiterzuleiten. Sonst könnte man nicht über den Server raus in das andere Netz. Und wenn wir schon bei Routing sind: auf dem Standard Gateway des anderen Neztes muss natürlich auch eine Rückroute in das VPN-Netz gesetzt werden. Sonst wissen die Pakete ja nicht wie sie zurück zum Absender kommen.



0 Responses to “OpenVPN mit Zertifikaten”
Leave a Reply