SELinux: Warum kann httpd Dateien in /var/www/html lesen?

SELinux: Warum kann httpd Dateien in /var/www/html lesen?

Ich versuche nur, zielgerichtetes SELinux besser zu verstehen. Ich verstehe zwar, dass Benutzer, Prozesse, Ports usw. mit einem Vierfachen gekennzeichnet sind <user>,role>,<type>,<sensitivity>und wie die Bezeichnungen semanage, restoreconusw. festgelegt werden. Ich verstehe jedoch noch nicht, wie SELinux entscheidet, ob eine Ressource von einem Prozess aus zugänglich ist und wie der Prozess darauf zugreifen kann.

Wenn ich mir beispielsweise httpdREL8 anschaue, kann ich die folgenden Bezeichnungen für den Prozess und das Standardverzeichnis DocumentRootsehen /var/www/html:

[root@mylinux targeted]# ls -alZ /var/www/html
total 0
drwxr-xr-x. 2 root root system_u:object_r:httpd_sys_content_t:s0  6 Aug 17 16:53 .
drwxr-xr-x. 4 root root system_u:object_r:httpd_sys_content_t:s0 33 Aug 17 16:53 ..

[root@mylinux targeted]# ps -efZ | grep httpd
system_u:system_r:httpd_t:s0    root       35291       1  0 13:23 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
system_u:system_r:httpd_t:s0    apache     35292   35291  0 13:23 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
system_u:system_r:httpd_t:s0    apache     35293   35291  0 13:23 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
system_u:system_r:httpd_t:s0    apache     35294   35291  0 13:23 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
system_u:system_r:httpd_t:s0    apache     35295   35291  0 13:23 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 root 35838 27088  0 13:30 pts/0 00:00:00 grep --color=auto httpd

Was ich jedoch suche, sind Antworten auf die folgenden Fragen:

  1. Warum darf der httpd-Prozess auf die Dateien in /var/www/html zugreifen?? Welche Labels werden hier in welcher Reihenfolge geprüft und welche Labels müssen übereinstimmen?
  2. Wie sieht die roleFestlegung aus, dass dieser Zugriff erlaubt ist? Wie kann ich die Rollendefinition überprüfen
  3. Wie kann ich bestimmen, wie ein Prozess auf eine Ressource einer bestimmten Bezeichnung zugreifen kann??
  4. Kann ich als Admin die Rolle so modifizieren, dass beispielsweise auch auf andere Dateikontexte zugegriffen werden kann?

Vielen Dank im Voraus für etwaige Klarstellungen.

Antwort1

Aus Ihrer Ausgabe:

[root@mylinux targeted]# ps -efZ | grep httpd
system_u:system_r:httpd_t:s0    root       35291       1  0 13:23 ?        

httpdwird als httpd_tLabel ausgeführt. Dieses Label wird dem Prozess über eine spezielle Selinux-Domänenübergangsregel zugewiesen.

Dann können wir sehen:

[root@mylinux targeted]# ls -alZ /var/www/html
total 0
drwxr-xr-x. 2 root root system_u:object_r:httpd_sys_content_t:s0  6 Aug 17 16:53 .
drwxr-xr-x. 4 root root system_u:object_r:httpd_sys_content_t:s0 33 Aug 17 16:53 ..

/var/www/htmlhat die zulässige Domänenbezeichnung httpd_sys_content_t. Daher kann ein mit laufender Prozess httpd_dDateisysteminhalte lesen, die mit derselben Bezeichnung versehen sind httpd_sys_content_t.

All dies wird über sehr komplexe (und ausführliche) Selinux-Regeln gesteuert. Von Sysadmins wird nicht erwartet, dass sie den gesamten Regelsatz verstehen, also keine Panik. Wichtig ist, a) Selinux-Protokolle zu verstehen, b) semanageund c)audit2allow

Weitere Informationen finden Sie unterRedHat Selinux-Dokumente

So beantworten Sie Ihre Fragen:

  1. Warum darf der httpd-Prozess auf die Dateien in /var/www/html zugreifen?Weil eine Regel einem Prozess mit httpd_tdem Label erlaubt, Dateien mit dem Label zu lesen httpd_sys_content_t(z. B.: ALLOW apache_process apache_log:FILE READ;)

  2. Wie sieht die Rolle aus, die definiert, dass dieser Zugriff erlaubt ist?Rollen wenden MAC auf Benutzertypen an (z. B. Mitarbeiter), werden aber nicht in der Standardrichtlinie verwendet. Sie werden vielmehr in der (nicht standardmäßigen) MLS-Richtlinie verwendet.

  3. Wie kann ich bestimmen, wie ein Prozess auf eine Ressource mit einem bestimmten Label zugreifen kann?Sie können den gesamten Richtliniensatz ausgeben, aber das wird keine einfachen Informationen liefern. Schauen Sie sich stattdessen ansemange fcontext -l

  4. Kann ich als Admin die Rolle so anpassen, dass beispielsweise auch auf andere Dateikontexte zugegriffen werden kann?Sicher. Sie können eine Richtlinie von Grund auf neu schreiben (nicht empfohlen) oder verwenden audit2allow(besser). Versuchen Sie dies jedoch zu vermeiden, da jede benutzerdefinierte Richtlinienänderung schwer zu verfolgen/verwalten ist. Verwenden Sie stattdessen, wenn möglich, setsebooloder , semanageum Ihre Basisrichtlinie anzupassen.

verwandte Informationen