[PATCH] openvpn: chroot

mehle

Mitglied
Mitglied seit
26 Jan 2009
Beiträge
273
Punkte für Reaktionen
0
Punkte
0
Hallo,

anbei ein Patch für openvpn:

- Hinzufügen von chroot, user, group Optionen in Konfigdatei
- Anlegen des Benutzers openvpn beim Start
- Anlegen eines chroot Verzeichnisses

==> openvpn läuft im chroot mit uid/gid != 0 - das chroot ist leer, da openvpn alle benötigten Dateien vor dem chroot() öffnet.

Es funktioniert bei mir.

Mit diesem Patch gibt es ein theoretisches Problem: wenn einer irgend welche Skripte nutzt die bei einem Event geladen werden (nicht konfigurierbar via Webfrontend), müssen die und die gesamte Ausführungslogik im chroot liegen.

Bezüglich dem letzten Punkt hätte ich gerne eure Meinungen, ob das chroot eine Konfigoption im Webfrontend werden soll oder nicht.

Ciao
Stephan
 

Anhänge

  • openvpn-1.patch.bz2
    618 Bytes · Aufrufe: 8
Hi.
Theoretisch weiß ich was ein chroot ist. Aber kannst du mal bitte erläutern welche Vorteile ich davon habe!? ;-)

MfG Oliver
 
Erklärung: http://de.wikipedia.org/wiki/Chroot

Vorteil: Wenn das Programm geknackt wird, dann befindet sich der Angreifer erst einmal in dem chroot (d.h. der Kernel erlaubt dem Prozess oder jedem Kindprozess nicht, Dateien ausserhalb des chroots "anzufassen"). Es ist eben eine weitere Verteidigungslinie gegen Eindringlinge (und seinen wir mal ehrlich, eine Fritz Box ist der beste Bot :), den ich mir vorstellen kann).

Problem: wenn das Programm im chroot noch mit root-Rechten läuft, kann man relativ leicht ausbrechen, wenn ein Angreifer einmal eine Shell hat. Deswegen muss man auch die root-Rechte fallen lassen, damit man wirklich ein sauberes chroot hat.

Ciao
Stephan

PS: es gibt z.B. ein Problem auf Freetz, welches ich im Moment als lokale Sicherheitslücke definiere. D.h. wenn eines meiner Daemons geknackt wird, ist diese Lücke dein Weg zum Glück (sprich root), auch wenn der Angreifer uid!=0 hat. Die Lücke ist, daß /tmp/shadow und /tmp/gshadow welt-lesbar sind - moduser:load() muss noch ein chmod 400 bekommen.
 
Vielleicht noch ein Nachtrag. Meine Annahme an die Nutzung eines Routers wie der Fritz Box von Endanwendern sieht so aus: die meisten werden die AVM Firmware und die Freetz Mods installieren und solange rumschrauben, bis alles so klappt, wie sie sich das vorstellen. Danach wird die Box nicht mehr angefaßt.

Es wird aber nach Abschluß der Konfiguration kaum einer Sicherheitsprobleme prüfen und ggf. ein neues Image aufspielen (z.B. was habt ihr gemacht, als die Schwachstelle in openssl vor Kurzem gefunden wurde - habt ihr das Image neu installiert?).

Dies alles bedeutet, dass über kurz oder lang einige Softwarepakete auf der Box bekannte Löcher haben werden. Zumindest die Softwarepakete, die mit dem Internet zu tun haben sollten demnach nach dem least-privilege Prinzip betrieben werden - so wenig Rechte wie nötig.

Mit einem chroot und dem Betreiben unter einer unpriviligierten UID/GID kann ein Angreifer zwar den betroffenen Daemon abschießen, aber er kann die Box nicht weiter verwüsten oder sonstige Dinge mit ihr anstellen. Das einzigste, wogegen auch ein chroot nichts ausrichten kann ist die Installation eines Bots, welcher statisch gelinkt ist und, z.B. für DDOS mittels normaler Netzwerkkommunikation erzeugen kann, die ein normaler Benutzer auch kann. Solche DDOS Angriffe kann ein Angegriffener aber einigermaßen sicher abblocken.

Deswegen bin ich sehr dafür, bei allen Daemons, die am Internet hängen, chroot und/oder normale UIDs/GIDs zu verwenden.

Ciao
Stephan
 
Da bis jetzt keine Gegenrede zu meinen Bedenken hinsichtlich der Skripte gekommen ist, könntet ihr den Patch einspielen?

Danke
Stephan
 
Danke - wenn einer ein Problem hat, erkläre ich mich auch bereit, eine Option in das Webfrontent einzubauen.

Ciao
Stephan
 
Hallo,

da fehlen aber noch die Optionen "persist-key" und "persist-tun", denn sonst funktioniert
kein Restart und OpenVPN beendet sich nach jedem Disconnect!

OpenVPN spuckt auch entsprechende Warnungen aus:
Code:
Apr  8 00:40:12 fritz daemon.warn openvpn[1620]: WARNING: you are using user/group/chroot without persist-tun -- this may cause restarts to fail
Apr  8 00:40:12 fritz daemon.warn openvpn[1620]: WARNING: you are using user/group/chroot without persist-key -- this may cause restarts to fail
 
Hier der Patch.

Ciao
Stephan
 

Anhänge

  • openvpn-2.patch.bz2
    337 Bytes · Aufrufe: 12
Hi.
Scheint hier ein Problem mit dem chroot zu geben -> Thread

MfG Oliver
 
Hallo,

ich würde die Implementierung einer optionalen chroot Benutzung sehr begrüßen, da ich durch chroot mein Skript beim client-connect nun nicht mehr aufrufen kann.
Alle Abhängigkeiten im chroot-Verzeichnis abzubilden ist viel zu aufwändig und würde wahrscheinlich durch den begrenzten den Speicherplatz der Box gar nicht möglich sein.
 

Zurzeit aktive Besucher

Statistik des Forums

Themen
246,781
Beiträge
2,257,377
Mitglieder
374,825
Neuestes Mitglied
Waldi2000
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.