
InArtikel zur Härtung von OpenVPNwird empfohlen, dass der Server-Daemon seine Berechtigungen nach dem Start unter Linux aufgibt:
OpenVPN wurde mit großer Sorgfalt so entwickelt, dass Root-Berechtigungen nach der Initialisierung gelöscht werden können. Diese Funktion sollte unter Linux/BSD/Solaris immer verwendet werden. Ohne Root-Berechtigungen ist ein laufender OpenVPN-Server-Daemon für einen Angreifer ein weit weniger attraktives Ziel.
Sie empfehlen die Festlegung folgender Richtlinien:
user nobody
group nobody
was meiner Meinung nach bedeutet, dass der Daemon ausgeführt wird, nobody
nachdem der Start abgeschlossen ist.
Es gibt jedoch mehrere Dateien, auf die OpenVPN zur Laufzeit zugreift.insbesondere die CRL-Datei:
Wenn die Option „crl-verify“ in OpenVPN verwendet wird, wird die CRL-Datei jedes Mal neu gelesen, wenn ein neuer Client eine Verbindung herstellt oder ein vorhandener Client die SSL/TLS-Verbindung neu aushandelt (standardmäßig einmal pro Stunde). Das bedeutet, dass Sie die CRL-Datei aktualisieren können, während der OpenVPN-Server-Daemon ausgeführt wird, und die neue CRL für neu verbundene Clients sofort wirksam wird.
Daher mache ich mir natürlich Sorgen, ob diese beiden Funktionen nicht kompatibel sind. Wenn der Daemon die Berechtigungen nach dem Start verliert, wie kann er dann zur Laufzeit /etc/openvpn/server/crl.pem
(Besitzer root:root
, Modus , SELinux-Erzwingung) lesen?0600
- Wenn der Daemon zur Laufzeit tatsächlich nicht auf die CRL-Datei zugreifen kann, gibt es eine gute Möglichkeit, dieses Problem zu umgehen?
- Wenn der Daemon zur Laufzeit auf die CRL-Dateien zugreifen kann, würde ich gerne wissen, wie das möglich ist.
Falls das relevant ist, ist das Betriebssystem RHEL8.5 x86_64.
Antwort1
Wie viele Anwendungen, die Berechtigungen aufgeben, öffnet OpenVPN verschiedene Datei-Handles, während es noch Root-Rechte hat, die dann bestehen bleiben. Sobald die Berechtigungen aufgehoben wurden, kann der Prozess weiterhin auf diese Handles in dem Modus zugreifen, in dem sie geöffnet wurden, solange sie geöffnet bleiben.
Ein Kompromiss im openvpn
Prozess würde in diesem Fall keine Änderungen an der Datei zur Folge haben, da die Datei (wahrscheinlich, ich habe es nicht überprüft) nur schreibgeschützt geöffnet wird. Um sie im Schreibmodus zu öffnen, wäre ein neuer Datei-Handle erforderlich, was jedoch fehlschlagen würde, da der Prozess keinen mehr erstellen kann.