3 votes

Serveur OpenVPN - l'abandon des privilèges affecte-t-il l'accès aux fichiers au moment de l'exécution ?

Sur Article sur le durcissement d'OpenVPN il est recommandé que le démon du serveur abandonne ses privilèges après le démarrage sous Linux :

OpenVPN a été très soigneusement conçu pour permettre aux privilèges root d'être abandonnés après l'initialisation, et cette fonctionnalité devrait toujours être utilisée sur Linux/BSD/Solaris. Sans privilèges root, un démon serveur OpenVPN en cours d'exécution constitue une cible bien moins attrayante pour un attaquant.

Ils recommandent de définir les directives suivantes :

user nobody
group nobody

ce qui, je suppose, signifie que le démon sera exécuté en tant que nobody une fois le démarrage terminé.

Cependant, il y a plusieurs fichiers auxquels OpenVPN accède au moment de l'exécution, notamment le fichier LCR :

Lorsque l'option crl-verify est utilisée dans OpenVPN, le fichier CRL sera relu chaque fois qu'un nouveau client se connecte ou qu'un client existant renégocie la connexion SSL/TLS (par défaut une fois par heure). Cela signifie que vous pouvez mettre à jour le fichier CRL pendant que le démon du serveur OpenVPN est en cours d'exécution, et que la nouvelle CRL prend effet immédiatement pour les clients qui se connectent.

Je m'inquiète donc naturellement de l'incompatibilité de ces deux fonctionnalités - si le démon abandonne les privilèges après le démarrage, comment peut-il lire les données de l'ordinateur ? /etc/openvpn/server/crl.pem (propriétaire root:root , mode 0600 ; application de SELinux) au moment de l'exécution ?

  • Si le démon est effectivement incapable d'accéder au fichier CRL au moment de l'exécution, existe-t-il un bon moyen de contourner ce problème ?
  • Si le démon peut accéder aux fichiers CRL au moment de l'exécution, j'aimerais savoir comment cela est possible.

Le système d'exploitation est RHEL8.5 x86_64, si cela est pertinent.

2voto

SmallClanger Points 8832

Comme beaucoup d'applications qui abandonnent leurs privilèges, OpenVPN ouvre divers fichiers pendant qu'il a encore la racine, qui persistent ensuite. Une fois qu'il a abandonné les privilèges, le processus est toujours capable d'accéder à ces handles dans le mode avec lequel ils ont été ouverts, aussi longtemps qu'ils restent ouverts.

Un compromis de la openvpn n'exposerait pas le fichier à des modifications dans ce cas, car le fichier est (probablement, je n'ai pas vérifié) ouvert en lecture seule. Un nouveau gestionnaire de fichier serait nécessaire pour l'ouvrir en mode écriture, ce qui échouerait puisque le processus ne peut plus en créer.

0 votes

Ah, merci. Cela a du sens. Existe-t-il une source officielle où ce comportement est documenté ? Ou bien ce comportement est-il si banal qu'il est devenu essentiellement idiomatique et ne mérite pas d'être documenté ?

2 votes

Je suppose que le seul officiel La source est le code source réel, car c'est votre seul véritable guide pour savoir ce qui se passe réellement. Si vous cherchez à comprendre plus, alors peut-être commencer par les pages wiki/man sur descripteurs de fichiers et le appel système open() . Une fois que vous aurez compris que les vérifications des permissions sont effectuées à ces appels système tout cela a plus de sens :)

1 votes

Abandonner les privilèges après avoir ouvert des ports privés est certainement une bonne pratique répandue pour les démons *nix de la vieille école comme openvpn et bind. Je ne suis pas sûr d'une référence faisant autorité pour cette habitude.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X