[CentOS-de] Kein Zugriff auf Webseite

Alex JOST jost+lists at dimejo.at
Di Sep 12 10:14:09 UTC 2017


Am 12.09.2017 um 10:55 schrieb Rainer.Rose at HannIT.de:
> Moin!
> 
>>> Am 08.09.2017 um 23:05 schrieb Andreas Meyer <a.meyer at nimmini.de>:
>> Apache hat da einen 403 gemeldet. Es funktioniert jetzt.
>> [...], weil auch die Rechte gestimmt haben und eine index.html vorhanden war.
>> [...]
>> Ich habe gesucht und auch gelesen, dass selinux schuld sein kann. [...]kenne es nicht.
>>
>>> Zeigt 'sealert -a /var/log/audit/audit.log' denn überhaupt SELinux Fehler?
>>
>> # sealert -a /var/log/audit/audit.log
>> bash: sealert: Kommando nicht gefunden.

Wenn man Probleme mit einem Programm hat, die vermutlich von SELinux 
verursacht werden, macht es Sinn SELinux zuerst auf 'Permissive' zu 
setzen. Damit werden die Regeln nicht angewendet, aber die 
Fehlermeldungen ins Log geschrieben.

   root:~# setenforce 0


Danach kann mit 'audit2allow' aus dem Paket 'policycoreutils-python' das 
Log ausgewertet werden. Das zeigt einem schnell ein Problem auf, und es 
kann sogar Lösungen vorschlagen.

  root:~# audit2allow -a -w


Manchmal muss man einfach nur einen Schalter umlegen:

   root:~# setsebool httpd_can_network_connect=1
   root:~# setsebool -P httpd_can_network_connect=1


 
https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/SELinux_Users_and_Administrators_Guide/sect-Security-Enhanced_Linux-Troubleshooting-Fixing_Problems.html#sect-Security-Enhanced_Linux-Fixing_Problems-Allowing_Access_audit2allow


> Mir geht es ähnlich. Ich bin recht neu unter CentOS und hatte es mir vor Jahren mal angeguckt. Jetzt muss ich mich beruflich damit beschäftigen. Leider habe ich auch so meine Schwierigkeiten mit SElinux.
> Grundsätzlich ist es so, dass reine Dateirechte mit SElinux erstmal nicht ausreichen. Die SElinux-Rechte bzw. ACLs müssen auch stimmen.
> Es soll eine zusätzliche Sicherheitsschicht darstellen. Ich mach es mal kurz, so wie ich es verstanden habe. Theoretische könnte man unter Ausnutzung von Sicherheits und Konfig-Lücken, den Apache dazu bringen einen kleinen zusätzlichen Webserver mit nc (netcat) zum rennen zu bringen und sich dann auf dem System auszutoben.[1] Auch das Auslesen der /etc/passwd ist so ein beliebtes Szenario.
> SElinux soll nun genau das verhindern. Ausbrechen außerhalb der konfigurierten Verzeichnisse und einfach mal so eben eine Port (für den nc) aufzumachen is' nich'.
> 
> Dafür gibt es weitere "Gefängnisse" für den Apache-Prozess.
> Im Dateisystem gibt es erweiterte Dateirechte, die man sich z.B. mit -Z ,also
> $ ls -lZ
> angucken kann. Wichtig, auch z.B. tar muss man den SElinux-Kontext beim Sichern beibringen, sonst verschwindet die Info (  --selinux)
> 
> Sieht dann z.B. so aus
> 
> $ ls -lZ /var/www/
> drwxr-xr-x. root root system_u:object_r:httpd_sys_script_exec_t:s0 cgi-bin
> drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 html
> 
> Wie und wo man diese Labels (httpd_sys_content_t) konfiguriert werden, habe ich noch nicht rausgefunden und tue mich damit schwer, weil auch bei mir sealert nicht vorhanden scheint

Einen bestimmten Kontext für eine Datei oder ein Verzeichnis setzen:

   root:~# chcon -t httpd_sys_content_t /var/www/html


Den Kontext eines Verzeichnisses und der Unterverzeichnisse wieder auf 
die Standardeinstellung zurücksetzen:

   root:~# restorecon -vR /var/www/html


Man kann mit 'semanage' auch selbst Standardeinstellungen für ein 
Verzeichnis definieren. Damit bekommen neue Dateien automatisch den 
richtigen Kontext:

   root:~# semanage fcontext -a -t httpd_sys_content_t '/srv/www(/.*)?'

-- 
Alex JOST


Mehr Informationen über die Mailingliste CentOS-de