[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