Linuxhotel Wiki

Wie ging das nochmal?

Benutzer-Werkzeuge

Webseiten-Werkzeuge


admin_grundlagen:se-linux

Dies ist eine alte Version des Dokuments!


SELinux

Linux Dateiberechtigungen: DAC ⇒ Discretionary 1) 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

2)

setenforce disabled

rebootfest

/etc/sysconfig/selinux : (CentoOS 5)

SELINUX=disabled
reboot

SE-Linux einschalten

/etc/sysconfig/selinux : (CentoOS 5)

SELINUX=enforcing
genhomedircon
touch /.autorelabel
reboot

Beispiel: Webserver auf anderem Port

Pakete: httpd

/etc/httpd/conf/httpd.conf :

Listen 88
service httpd start

→ Fehler

Ursache

/var/log/audit/audit.log:

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)

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:

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)
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

1)
discretionary: dem eigenen Ermessen anheim gestellt
2)
oder nicht komplett ausschalten, sondern nur Verstöße gegen die Policy protokollieren:
setenforce permissive
admin_grundlagen/se-linux.1542065493.txt.gz · Zuletzt geändert: 2018/11/12 23:31 von ingo_wichmann