| Home Profil Fun |
#47 Linux 24.02.2009
SELinux-Befehle in der ÜbersichtDiese Seite soll ein kleiner Notizzettel sein für die gängisten Befehle im Zusammenhang mit SELinux. Viele der bestehenden Linux-Kommandos wurden für SELinux mit der Option -Z erweitert. Hier einige Beispiele: id -Z Bei der Gelegenheit der Hinweis, dass 'su -' den security context nicht ändert! $ id uid=888(xyz) gid=888(xyz) groups=888(xyz) context=user_u:system_r:unconfined_t:s0 $ su - Password: # id uid=0(root) gid=0(root) groups=0(root) context=user_u:system_r:unconfined_t:s0 ls -Z ps -auxZ find /etc -context "system_u:object_r:etc_t:s0" Jetzt kommen wir zu den eigentlichen Userland-Kommandos von SELinux: Die SELinux-Rolle wechseln (gibt es nur in der strict policy). newrole -r sysadm_t Überblick über den Status von SELinux abrufen. # sestatus -v SELinux status: enabled SELinuxfs mount: /selinux Current mode: enforcing Mode from config file: enforcing Policy version: 23 Policy from config file: targeted Process contexts: Current context: unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 Init context: system_u:system_r:init_t:s0 /sbin/mingetty system_u:system_r:getty_t:s0 /usr/sbin/sshd system_u:system_r:sshd_t:s0-s0:c0.c1023 File contexts: Controlling term: unconfined_u:object_r:unconfined_devpts_t:s0 /etc/passwd system_u:object_r:etc_t:s0 /etc/shadow system_u:object_r:shadow_t:s0 /bin/bash system_u:object_r:shell_exec_t:s0 /bin/login system_u:object_r:login_exec_t:s0 /bin/sh system_u:object_r:bin_t:s0 -> system_u:object_r:shell_exec_t:s0 /sbin/agetty system_u:object_r:getty_exec_t:s0 /sbin/init system_u:object_r:init_exec_t:s0 /sbin/mingetty system_u:object_r:getty_exec_t:s0 /usr/sbin/sshd system_u:object_r:sshd_exec_t:s0 /lib/libc.so.6 system_u:object_r:lib_t:s0 -> system_u:object_r:lib_t:s0 /lib/ld-linux.so.2 system_u:object_r:lib_t:s0 -> system_u:object_r:ld_so_t:s0 Befindet sich SELinux im permissive oder enforcing mode? # getenforce Enforcing Den enforcing mode aus- und wieder anschalten. setenforce 0 setenforce 1 Alle Booleans anzeigen. # getsebool -a allow_console_login --> off allow_cvs_read_shadow --> off allow_daemons_dump_core --> on ... Oder nur einzelne Booleans anzeigen. # getsebool allow_console_login allow_console_login --> off Den Wert einer einzelnen Boolean ändern. # setsebool allow_console_login On Den security context einzelner Dateien oder Dateisysteme ändern. Als Beispiel ändern wir hier den SELinux-Benutzer der Datei xyz.txt von unconfined_u nach system_u. # ls -Z ./xyz.txt -rw-r--r-- root root unconfined_u:object_r:admin_home_t:s0 xyz.txt # chcon 'system_u:object_r:admin_home_t:s0' ./xyz.txt # ls -Z ./xyz.txt -rw-r--r-- root root system_u:object_r:admin_home_t:s0 ./xyz.txt Dateien mit dem Standardkontext der Policy relablen. Mit -vn kann man sich erstmal anschauen, was geändert würde. # ls -lZ /etc/zshrc -rw-r--r-- root root unconfined_u:object_r:admin_home_t:s0 zshrc # restorecon -vn /etc/zshrc restorecon reset /etc/zshrc context unconfined_u:object_r:admin_home_t:s0->system_u:object_r:etc_t:s0 # restorecon /etc/zshrc # ls -lZ /etc/zshrc -rw-r--r-- root root system_u:object_r:etc_t:s0 /etc/zshrc Einen Prozess in einem bestimmten Kontext starten (geht nur im permissive mode): # setenforce 0 # vim& [1] 5686 # runcon 'system_u:object_r:admin_home_t:s0' vim& [2] 5701 # ps Z ... unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 5686 pts/1 T 0:00 vim system_u:object_r:admin_home_t:s0 5701 pts/1 T 0:00 vim ... Initskripte und somit einen Dämon im richtigen security context starten: # run_init /etc/init.d/apache2 start Es folgen noch einige Befehle ohne Beispiele. Hilfsmittel, um aus Regelverletzungen, die in den SELinux logs erscheinen, entsprechende Änderungen an der Policy durchzuführen. Es bewahrt einen davor, selbst manuell ins Regelwerk einzugreifen zu müssen. audit2allow Hilfsmittel, um den Grund von denied-Meldungen zu verstehen. audit2why Dateisysteme mit security context labeln bzw. korrigieren. setfiles fixfiles Das folgende Kommando zeigt Zahlen des access vector caches an (Statistik). avcstat SELinux-Training |