Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung | ||
admin_grundlagen:se-linux [2014/07/12 09:11] 127.0.0.1 Externe Bearbeitung |
— (aktuell) | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | ====== SELinux ====== | ||
- | Linux Dateiberechtigungen: DAC => Discretionary ((discretionary: dem eigenen Ermessen anheim gestellt)) Access Controll => Der Besitzer einer Datei entscheidet nach eigenem Ermessen, wer wie auf diese Datei zugreifen darf. | ||
- | |||
- | SELinux: MAC => Mandatory Access Control => begrenzt den Zugriff auf Objekte wie Dateien, Prozesse, ..., ohne Benutzern Einfluss auf diese Begrenzungen zu geben. | ||
- | |||
- | ===== Ein/Ausschalten ===== | ||
- | ==== Ist SE-Linux eingeschaltet? ==== | ||
- | sestatus | ||
- | oder | ||
- | getenforce | ||
- | |||
- | ==== SE-Linux ausschalten ==== | ||
- | === temporär === | ||
- | (( oder nicht komplett ausschalten, sondern nur Verstöße gegen die Policy protokollieren: | ||
- | setenforce permissive | ||
- | )) | ||
- | setenforce disabled | ||
- | === rebootfest === | ||
- | ''/etc/sysconfig/selinux'' : (CentoOS 5) | ||
- | <file> | ||
- | SELINUX=disabled | ||
- | </file> | ||
- | |||
- | reboot | ||
- | |||
- | ==== SE-Linux einschalten ==== | ||
- | ''/etc/sysconfig/selinux'' : (CentoOS 5) | ||
- | <file> | ||
- | SELINUX=enforcing | ||
- | </file> | ||
- | |||
- | genhomedircon | ||
- | touch /.autorelabel | ||
- | reboot | ||
- | |||
- | ===== Beispiel: Webserver auf anderem Port ===== | ||
- | Pakete: httpd | ||
- | |||
- | ''/etc/httpd/conf/httpd.conf'' : | ||
- | <file> | ||
- | Listen 88 | ||
- | </file> | ||
- | |||
- | service httpd start | ||
- | |||
- | -> Fehler | ||
- | |||
- | ==== Ursache ==== | ||
- | |||
- | /var/log/audit/audit.log: | ||
- | |||
- | <file> | ||
- | type=AVC msg=audit(1404208507.970:1184): avc: denied { name_bind } for pid=3907 comm="httpd" src=88 scontext=unconfined_u:system_r:httpd_t:s0 tcontext=system_u:object_r:kerberos_port_t:s0 tclass=tcp_socket | ||
- | type=SYSCALL msg=audit(1404208507.970:1184): arch=c000003e syscall=49 success=no exit=-13 a0=4 a1=7f8dbbdcd820 a2=1c a3=7fff56fc58a0 items=0 ppid=3906 pid=3907 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts2 ses=4 comm="httpd" exe="/usr/sbin/httpd" subj=unconfined_u:system_r:httpd_t:s0 key=(null) | ||
- | type=AVC msg=audit(1404208507.971:1185): avc: denied { name_bind } for pid=3907 comm="httpd" src=88 scontext=unconfined_u:system_r:httpd_t:s0 tcontext=system_u:object_r:kerberos_port_t:s0 tclass=tcp_socket | ||
- | type=SYSCALL msg=audit(1404208507.971:1185): arch=c000003e syscall=49 success=no exit=-13 a0=3 a1=7f8dbbdcd760 a2=10 a3=7fff56fc5b0c items=0 ppid=3906 pid=3907 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts2 ses=4 comm="httpd" exe="/usr/sbin/httpd" subj=unconfined_u:system_r:httpd_t:s0 key=(null) | ||
- | </file> | ||
- | |||
- | scongext = source context | ||
- | tcongext = target context | ||
- | |||
- | ==== Lösungsmöglichkeit: SELinux abschalten ==== | ||
- | setenforce 0 | ||
- | service httpd start | ||
- | |||
- | ==== Lösungsmöglichkeit: SELinux audit2allow ==== | ||
- | setenforce permissive | ||
- | service httpd start | ||
- | |||
- | cp -a /var/log/audit/audit.log /tmp/audit.log | ||
- | vim /tmp/audit.log | ||
- | entsprechende Zeilen aus ''/tmp/audit.log'' heraussuchen: | ||
- | <file> | ||
- | type=AVC msg=audit(1404208813.307:1194): avc: denied { name_bind } for pid=3960 comm="httpd" src=88 scontext=unconfined_u:system_r:httpd_t:s0 tcontext=system_u:object_r:kerberos_port_t:s0 tclass=tcp_socket | ||
- | type=SYSCALL msg=audit(1404208813.307:1194): arch=c000003e syscall=49 success=yes exit=0 a0=4 a1=7f0c8a9b3820 a2=1c a3=7fff7a5dac30 items=0 ppid=3959 pid=3960 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts2 ses=4 comm="httpd" exe="/usr/sbin/httpd" subj=unconfined_u:system_r:httpd_t:s0 key=(null) | ||
- | </file> | ||
- | cat /tmp/audit.log | audit2why | ||
- | cat /tmp/audit.log | audit2allow -M httpd_listen88 | ||
- | semodule -i httpd_listen88.pp | ||
- | setenforce enforcing | ||
- | semodule -l | grep httpd_listen88 | ||
- | |||
- | ==== Lösungsmöglichkeit: SELinux booleans? ==== | ||
- | setenforce enforcing | ||
- | |||
- | ==== Lösungsmöglichkeit: SELinux semanage ==== | ||
- | semanage port -l | grep http | ||
- | semanage port -a -t ssh_port_t -p tcp 88 | ||
- | |||
- | ====== Dokus & Links ====== | ||
- | * http://wiki.centos.org/HowTos/SELinux/ | ||
- | * https://access.redhat.com/site/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Security-Enhanced_Linux/index.html | ||
- | * https://access.redhat.com/site/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Managing_Confined_Services/index.html | ||