• Diese Seite verwendet Cookies. Indem du diese Website weiterhin nutzt, erklärst du dich mit der Verwendung von Cookies einverstanden. Erfahre mehr

Absichern OpenVPN

mogbo

if (virus == true) {virus = false}
Themenstarter #1
Hallo,
Ausschnitt *.ovpn
Code:
user _openvpn
group _openvpn
chroot /var/empty
up /etc/openvpn/up.conf
Damit mein up.conf Script funktioniert habe ich natürlich die entsprechenden Ordner in /var/empty hinterlegt und die Config darin platziert. Da das Ausführen der *.ovpn Datei noch im root geschieht habe ich:
Code:
chown root:wheel /var/empty/etc
chown root:wheel /var/empty/etc/*
chown root:wheel /var/empty/etc/openvpn
chown root:wheel /var/empty/etc/openvpn/*
chmod 700 /var/empty/etc
chmod 700 /var/empty/etc/*
chmod 700 /var/empty/etc/openvpn
chmod 700 /var/empty/etc/openvpn/*
Gehe ich mit einer leeren chroot einen "sichereren" Weg, bzw. einen saubereren? Der Inhalt der up.conf ist lediglich eine pf.conf die mit pfctl -f /var/empty/etc/pf.conf ausgeführt wird. Notfalls könnte ich mir auch ein Script basteln, was das ganze außerhalb der chroot ausführt, wäre dann natürlich nicht innerhalb der *.ovpn Datei ausführbar und somit ein klein wenig unübersichtlicher.

EDIT: Glaube mir fällt grad selber auf wie dämlich es ist eine pfctl innerhalb einer chroot auszuführen... :ugly:


Weiterhin habe ich ein DNS-leak Problem, was lustigerweise beim ersten Start von OpenVPN (direkt nach dem Boot) bisher nie aufgetreten ist.
Meine DNS wird von unbound an 127.0.0.1@5353 weitergegeben und fragt dann über einen dnscrypt-Server an, diesen sehe ich dann als Leak.

Meine resolv.conf enthält (was ich nur sehr ungerne ändern würde)
Code:
127.0.0.1
Der Hauptgrund warum ich nur ungerne die resolv.conf ändere ist der Fortbestand des Inhalts nach jedem Neustart und ein
Code:
echo '/pfad/zu/echo "nameserver 127.0.0.1" > /etc/resolv.conf' >> /etc/rc.local
gleicht nach meinem Erachten einem Alptraum :)


Ich denke mit einer Anpassung via Script könnte ich diesen Leak umgehen (ständiges Ändern auf den DNS-Server des VPNs), da er jedoch nach dem Boot nicht leaked sollte es auch anders möglich sein?
Könnte ich dieses Problem evtl mit dem vollständigen Schließen der Firewall erreichen, sodass Traffic nurnoch über das VPN-Port rausgeht? Reicht ein Schließen von Port 53 auf dem Ausgangsinterface bzw. dem Blocken von Port 5353 auf lo? Habe bisher mehrere Linux-Guides auf meine Situation angepasst, musste jedoch ständig feststellen, dass ich das eigentliche Problem nicht verstehe und mehr oder weniger blind scrpiten möchte...


Bin denke ich nicht zu doof zum Googeln, das Thema DNS-Leak wird jedoch komischerweise fast überall ignoriert oder mit sehr komischen Workarounds gelöst, zB.:
Füge in die resolv.conf:
Code:
nameserver 8.8.8.8
ein, dann klappts. Ging auch lustigerweise, finde ich jedoch ziemlich dämlich, weil naja, braucht man denke ich nichts zu sagen...
 

mogbo

if (virus == true) {virus = false}
Themenstarter #2
Hallo,
Ausschnitt *.ovpn
Code:
user _openvpn
group _openvpn
chroot /var/empty
up /etc/openvpn/up.conf
Damit mein up.conf Script funktioniert habe ich natürlich die entsprechenden Ordner in /var/empty hinterlegt und die Config darin platziert. Da das Ausführen der *.ovpn Datei noch im root geschieht habe ich:
Code:
chown root:wheel /var/empty/etc
chown root:wheel /var/empty/etc/*
chown root:wheel /var/empty/etc/openvpn
chown root:wheel /var/empty/etc/openvpn/*
chmod 700 /var/empty/etc
chmod 700 /var/empty/etc/*
chmod 700 /var/empty/etc/openvpn
chmod 700 /var/empty/etc/openvpn/*
Gehe ich mit einer leeren chroot einen "sichereren" Weg, bzw. einen saubereren? Der Inhalt der up.conf ist lediglich eine pf.conf die mit pfctl -f /var/empty/etc/pf.conf ausgeführt wird. Notfalls könnte ich mir auch ein Script basteln, was das ganze außerhalb der chroot ausführt, wäre dann natürlich nicht innerhalb der *.ovpn Datei ausführbar und somit ein klein wenig unübersichtlicher.

EDIT: Glaube mir fällt grad selber auf wie dämlich es ist eine pfctl innerhalb einer chroot auszuführen... :ugly:
Dieser Teil hat sich vollständig erledigt, die down.conf wird innerhalb der chroot und die up.conf außerhalb gestartet, somit finde ich keinen wirklich Sinn für die Scripte in der chroot.
 

mogbo

if (virus == true) {virus = false}
Themenstarter #3
Also habe weiter durchprobiert:
/etc/resolv.conf
Code:
nameserver 208.67.222.222
nameserver 208.67.220.220
OpenDNS

/etc/resolv.conf
Code:
nameserver 8.8.8.8
nameserver 8.8.4.4
Google

Anscheinend (oder offensichtlich) haben die DNS Anfragen hier für OpenVPN etwas besonderes, sodass der DNS-Leak nicht entsteht, wenn ich versuche den Unsinn zu googeln erhalte ich zwar die Bestätigung, aber nirgends eine Erklärung warum das so ist. Hat hier keiner eine Idee an was das liegen könnte?

(eventuell hab ich mich oben umständlich ausgedrückt, dass keiner mein Problem versteht?)
 

mogbo

if (virus == true) {virus = false}
Themenstarter #4
Habe mein Problem gefunden, ich sende meine DNS Anfragen mit dnscrypt am VPN-Tunnel vorbei. Feste IPs in der resolv.conf, die außerhalb meines Lokalen Netzwerkes liegen laufen alle ohne Probleme.
Naja jetzt ist mir wenigstens klar, dass die Verwendung von dnscrypt-proxy serverseitig für einen OpenVPN-Server Sinn macht, clientseitig jedoch nicht.
 

mogbo

if (virus == true) {virus = false}
Themenstarter #6
Hast du dieses Projekt auf OpenBSD oder FreeBSD umgesetzt?
OpenBSD, müsste aber in FreeBSD fast bzw. mit Ausnahme der pf.conf gleich aussehen. Die Konfiguration ist eigentlich ohnehin extrem simpel, sobald man versteht wie OpenVPN routet

EDIT: Hast du ein ähnliches Problem?
 

raiding

Well-Known Member
#7
Ich habe mir deine Posts durchgelesen und die einzelnen Schritte kamen mir bekannt vor ;)

Das Tut habe ich via FreeBSD auf nem RPI1b+ erfolgreich umgesetzt, bin aber mit OpenBSD kläglich gescheitert. Ich kann allerdings monentan nicht sagen auf welcher Hardware das Problem vorhanden war, kann mir aber ungefähr denken, woran es lag.

Demnächst wollte ich mir wahrscheinlich nochmal mit OpenBSD einen OpenVPN-Router bauen und deshalb dachte ich mir, dass ich dich einfach vorher mal frage.

Ist immer gut zu wissen, dass das Problem lösbar ist und nicht am OS, Code oder sonstigem liegt.

Ich hoffe, ich kann dich ggf. anhauen, falls ich mich damit nochmals auf die Nase leg. Es wirkt ein bisschen so, als hättest du dich etwas mehr mit OpenBSD beschäftigt, als ich.
 

mogbo

if (virus == true) {virus = false}
Themenstarter #8
Ich hoffe, ich kann dich ggf. anhauen, falls ich mich damit nochmals auf die Nase leg. Es wirkt ein bisschen so, als hättest du dich etwas mehr mit OpenBSD beschäftigt, als ich.
Klar, kannst immer fragen wenn du was hast, bin aber auch noch ein Anfänger was Unix angeht, hab mit *BSD erst seit nem Jahr zu tun und mit OpenBSD seit 6 Monaten. Alles nur hobbytechnisch