ProHoster > Bloc > Administració > Full de trucs de SELinux per a administradors de sistemes: 42 respostes a preguntes importants
Full de trucs de SELinux per a administradors de sistemes: 42 respostes a preguntes importants
La traducció de l'article s'ha elaborat expressament per als alumnes del curs "Administrador Linux".
Aquí obtindreu respostes a preguntes importants sobre la vida, l'univers i tot a Linux amb seguretat millorada.
"La veritat important que les coses no sempre són el que semblen és de coneixement comú..."
-Douglas Adams, La guia de l'autoestopista de la galàxia
Seguretat. Augment de la fiabilitat. Correspondència. Política. Administrador del sistema Quatre genets de l'Apocalipsi. A més de les nostres tasques diàries -vigilància, còpia de seguretat, implementació, configuració, actualització, etc.- també som responsables de la seguretat dels nostres sistemes. Fins i tot aquells sistemes en què el proveïdor extern recomana que desactivem la seguretat millorada. Sembla una feina Ethan Hunt de "Missió: Impossible".
Davant d'aquest dilema, alguns administradors del sistema decideixen prendre pastilla blava, perquè pensen que mai sabran la resposta a la gran pregunta de la vida, l'univers i tot això. I com tots sabem, aquesta resposta és 42.
En l'esperit de La guia de l'autoestopista de la galàxia, aquí hi ha 42 respostes a preguntes importants sobre control i ús. SELinux als vostres sistemes.
1. SELinux és un sistema de control d'accés forçat, el que significa que cada procés té una etiqueta. Cada fitxer, directori i objecte del sistema també té etiquetes. Les regles de política controlen l'accés entre els processos i objectes etiquetats. El nucli fa complir aquestes regles.
2. Els dos conceptes més importants són: Etiquetatge — marques (fitxers, processos, ports, etc.) i Tipus d'execució (que aïlla els processos entre si en funció dels tipus).
3. Format d'etiqueta correcte user:role:type:level (opcional).
4. El propòsit de proporcionar seguretat a diversos nivells (Seguretat multinivell - MLS) és gestionar processos (dominis) en funció del nivell de seguretat de les dades que utilitzaran. Per exemple, un procés secret no pot llegir dades secretes.
5. Garantir la seguretat multicategoria (Seguretat multicategoria - MCS) protegeix processos similars entre si (per exemple, màquines virtuals, motors OpenShift, sandbox SELinux, contenidors, etc.).
6. Opcions del nucli per canviar els modes de SELinux a l'arrencada:
autorelabel=1 → fa que el sistema executi el reetiquetatge
selinux=0 → el nucli no carrega la infraestructura SELinux
enforcing=0 → càrrega en mode permissiu
7. Si necessiteu reetiquetar tot el sistema:
# touch /.autorelabel
#reboot
Si el marcatge del sistema conté un gran nombre d'errors, és possible que hàgiu d'arrencar en mode permissiu perquè el comentari tingui èxit.
8. Per comprovar si SELinux està habilitat: # getenforce
9. Per habilitar/desactivar temporalment SELinux: # setenforce [1|0]
10. Comprovació de l'estat de SELinux: # sestatus
11. Fitxer de configuració: /etc/selinux/config
12. Com funciona SELinux? Aquí teniu un exemple de marcatge per al servidor web Apache:
Directori de configuració: /etc/httpd→httpd_config_t
Directori del fitxer de registre: /var/log/httpd → httpd_log_t
Directori de continguts: /var/www/html → httpd_sys_content_t
Guió de llançament: /usr/lib/systemd/system/httpd.service → httpd_unit_file_d
Procés: /usr/sbin/httpd -DFOREGROUND → httpd_t
Ports: 80/tcp, 443/tcp → httpd_t, http_port_t
Procés que s'executa en context httpd_t, pot interactuar amb un objecte etiquetat httpd_something_t.
13. Moltes ordres accepten un argument -Z per veure, crear i canviar el context:
ls -Z
id -Z
ps -Z
netstat -Z
cp -Z
mkdir -Z
Els contextos s'estableixen quan es creen fitxers en funció del context del seu directori principal (amb algunes excepcions). Els RPM poden establir contextos com durant la instal·lació.
14. Hi ha quatre causes principals dels errors de SELinux, que es descriuen amb més detall als punts 15-21 següents:
Problemes d'etiquetatge
Per alguna cosa que SELinux necessita saber
Error a la política/aplicació SELinux
La vostra informació pot estar compromesa
15.Problema d'etiquetatge: si els vostres fitxers estan a /srv/myweb estan marcats incorrectament, es pot denegar l'accés. Aquí hi ha algunes maneres de solucionar-ho:
Si coneixeu l'etiqueta: # semanage fcontext -a -t httpd_sys_content_t '/srv/myweb(/.*)?'
Si coneixeu un fitxer amb marques equivalents: # semanage fcontext -a -e /srv/myweb /var/www
Restauració del context (per als dos casos): # restorecon -vR /srv/myweb
16.Problema d'etiquetatge: si moveu el fitxer en lloc de copiar-lo, el fitxer conservarà el seu context original. Per solucionar aquest problema:
Canvieu l'ordre de context amb l'etiqueta: # chcon -t httpd_system_content_t /var/www/html/index.html
Canvieu l'ordre de context amb l'etiqueta d'enllaç: # chcon --reference /var/www/html/ /var/www/html/index.html
Restaura el context (per als dos casos): # restorecon -vR /var/www/html/
17. Si SELinux que necessites saberque HTTPD està escoltant al port 8585, digueu a SELinux:
# semanage port -a -t http_port_t -p tcp 8585
18.SELinux que necessites saber Valors booleans que permeten canviar parts de la política SELinux en temps d'execució sense que s'hagi sobreescriu la política SELinux. Per exemple, si voleu que httpd enviï correu electrònic, introduïu: # setsebool -P httpd_can_sendmail 1
19.SELinux que necessites saber valors lògics per activar/desactivar la configuració de SELinux:
Per veure tots els valors booleans: # getsebool -a
Per veure una descripció de cadascun: # semanage boolean -l
Per establir un valor booleà: # setsebool [_boolean_] [1|0]
Per a una instal·lació permanent, afegiu -P. Per exemple: # setsebool httpd_enable_ftp_server 1 -P
20. Les polítiques/aplicacions de SELinux poden contenir errors, com ara:
Camins de codi inusuals
Configuracions
Redirigint stdout
Fuites de descriptors de fitxers
Memòria executable
Biblioteques mal construïdes
Entrades obertes (no envieu cap informe a Bugzilla; Bugzilla no té SLA).
21.La vostra informació pot estar compromesasi teniu dominis restringits intentant:
Carregueu els mòduls del nucli
Desactiveu el mode SELinux forçat
Escriu a etc_t/shadow_t
Canvia les regles d'iptables
22. Eines SELinux per desenvolupar mòduls de polítiques:
25. Si es produeix un error de SELinux, utilitzeu el registre setroubleshoot oferint diverses solucions possibles.
Per exemple, de journalctl:
Jun 14 19:41:07 web1 setroubleshoot: SELinux is preventing httpd from getattr access on the file /var/www/html/index.html. For complete message run: sealert -l 12fd8b04-0119-4077-a710-2d0e0ee5755e
# sealert -l 12fd8b04-0119-4077-a710-2d0e0ee5755e
SELinux is preventing httpd from getattr access on the file /var/www/html/index.html.
***** Plugin restorecon (99.5 confidence) suggests ************************
If you want to fix the label,
/var/www/html/index.html default label should be httpd_syscontent_t.
Then you can restorecon.
Do
# /sbin/restorecon -v /var/www/html/index.html
26. Registre: SELinux registra informació en molts llocs:
27. Registre: cerca d'errors de SELinux al registre d'auditoria:
# ausearch -m AVC,USER_AVC,SELINUX_ERR -ts today
28. Per trobar missatges de SELinux Access Vector Cache (AVC) per a un servei específic:
# ausearch -m avc -c httpd
29. Utilitat audit2allow recopila informació dels registres d'operacions prohibides i després genera regles de política de permisos de SELinux. Per exemple:
Per crear una descripció llegible per les persones de per què es denega l'accés: # audit2allow -w -a
Per veure una regla d'aplicació de tipus que permet l'accés denegat: # audit2allow -a
Per crear un mòdul personalitzat: # audit2allow -a -M mypolicy
Opció -M crea un fitxer d'aplicació de tipus (.te) amb el nom especificat i compila la regla en un paquet de polítiques (.pp): mypolicy.pp mypolicy.te
Per instal·lar un mòdul personalitzat: # semodule -i mypolicy.pp
30. Per configurar un procés separat (domini) perquè funcioni en mode permissiu: # semanage permissive -a httpd_t
31. Si ja no voleu que el domini sigui permissiu: # semanage permissive -d httpd_t
32. Per desactivar tots els dominis permissius: # semodule -d permissivedomains
33. Habilitació de la política MLS SELinux: # yum install selinux-policy-mls
в /etc/selinux/config:
SELINUX=permissive
SELINUXTYPE=mls
Assegureu-vos que SELinux s'està executant en mode permissiu: # setenforce 0
Utilitzeu un guió fixfilesper assegurar-vos que els fitxers es tornen a etiquetar en el proper reinici:
# fixfiles -F onboot # reboot
34. Creeu un usuari amb un rang MLS específic: # useradd -Z staff_u john
Utilitzant l'ordre useradd, assigneu el nou usuari a un usuari SELinux existent (en aquest cas, staff_u).
35. Per veure el mapeig entre els usuaris de SELinux i Linux: # semanage login -l
36. Definiu un interval específic per a l'usuari: # semanage login --modify --range s2:c100 john
37. Per corregir l'etiqueta del directori inicial de l'usuari (si cal): # chcon -R -l s2:c100 /home/john
38. Per veure les categories actuals: # chcat -L
39. Per canviar de categories o començar a crear-ne una, editeu el fitxer de la següent manera:
/etc/selinux/_<selinuxtype>_/setrans.conf
40. Per executar una ordre o un script en un fitxer, una funció i un context d'usuari específics: