A traduzzione di l'articulu hè stata preparata apposta per i studienti di u corsu .

Quì truverete risposte à dumande impurtanti nantu à a vita, l'universu è tuttu ciò chì ci hè. Linux cù una sicurezza migliorata.
"A verità impurtante chì e cose ùn sò micca sempre ciò chì parenu hè a cunniscenza cumuni ..."
-Douglas Adams, A Guida di l'Autostoppista à a Galassia
Sicurezza. Aumentu affidabilità. Corrispondenza. Pulitica. Four Horsemen of the Apocalypse sysadmin. In più di i nostri compiti di ogni ghjornu - monitoraghju, salvezza, implementazione, cunfigurazione, aghjurnamentu, etc. - simu ancu rispunsevuli di a sicurità di i nostri sistemi. Ancu quelli sistemi induve u fornitore di terzu ricumanda di disattivà a sicurità rinfurzata. Sente u travagliu da "Mission: Impossible".
Di fronte à stu dilema, certi amministratori di u sistema decide di piglià , perchè pensanu chì ùn sanu mai a risposta à a grande quistione di a vita, l'universu è tuttu ciò. È cum'è tutti sapemu, sta risposta hè 42.
In u spiritu di The Hitchhiker's Guide to the Galaxy, eccu 42 risposte à dumande impurtanti nantu à u cuntrollu è l'usu. nantu à i vostri sistemi.
1. SELinux — hè un sistema di cuntrollu d'accessu ubligatoriu, vale à dì chì ogni prucessu hà una etichetta. Ogni schedariu, cartulare è ughjettu di sistema hà ancu una etichetta. E regule di pulitica guvernanu l'accessu trà i prucessi è l'ughjetti etichettati. U kernel impone queste regule.
2. I dui cuncetti più impurtanti sò: Etichettatura - marcature (fichi, prucessi, porti, etc.) è Tipu di rinfurzà (chì isola i prucessi l'una di l'altru basatu nantu à i tipi).
3. Formatu di l'etichetta curretta user:role:type:level (opcional).
4. U scopu di furnisce una sicurità multi-livellu (Sicurezza Multi-Level - MLS) hè di gestisce i prucessi (duminii) basatu annantu à u livellu di sicurità di e dati chì anu da utilizà. Per esempiu, un prucessu sicretu ùn pò micca leghje dati top secret.
5. Assicurendu a sicurità multi-categoria (Sicurezza Multi-Categoria - MCS) prutege prucessi simili l'uni da l'altri (per esempiu, macchine virtuali, motori OpenShift, sandbox SELinux, cuntenitori, ecc.).
6. Parametri di u kernel per cambià i modi SELinux quandu si carica:
autorelabel=1→ provoca u sistema per eseguisce rietichettaturaselinux=0→ u kernel ùn carica micca l'infrastruttura SELinuxenforcing=0→ carica in modu permissive
7. Sè avete bisognu di rinfurzà tuttu u sistema:
# touch /.autorelabel
#reboot
Se a marcatura di u sistema cuntene un gran numaru d'errori, pudete avè bisognu di boot in modu permissivu per rimarcà per successu.
8. Per verificà se SE hè attivatuLinux: # getenforce
9. Per attivà/disattivà temporaneamente SELinux: # setenforce [1|0]
10. Verificazione di u Statu di SELinux: # sestatus
11. File di cunfigurazione: /etc/selinux/config
12. Cumu funziona SELinuxEccu un esempiu di marcatura per u servitore web Apache:
- Rappresentazione binaria:
/usr/sbin/httpd→httpd_exec_t - Directory di cunfigurazione:
/etc/httpd→httpd_config_t - U cartulare di u schedariu di logu:
/var/log/httpd → httpd_log_t - Directory di cuntenutu:
/var/www/html → httpd_sys_content_t - Script di lanciamentu:
/usr/lib/systemd/system/httpd.service → httpd_unit_file_d - Proċessu:
/usr/sbin/httpd -DFOREGROUND → httpd_t - Porti:
80/tcp, 443/tcp → httpd_t, http_port_t
Prucessu in esecuzione in u cuntestu httpd_t, pò interagisce cù un oggettu marcatu httpd_something_t.
13. Parechji cumandamenti accettanu un argumentu -Z per vede, creà è cambià u cuntestu:
ls -Zid -Zps -Znetstat -Zcp -Zmkdir -Z
I cuntesti sò stabiliti quandu i schedari sò creati in basa di u cuntestu di u so repertoriu parenti (cù alcune eccezzioni). L'RPM ponu stabilisce cuntesti cum'è durante a stallazione.
14. Ci sò quattru ragioni principali per l'errori SELinux, chì sò descritti in più dettagliu in i paragrafi 15-21 quì sottu:
- Problemi di etichettatura
- Per via di qualcosa chì SELinux deve sapè
- Errore in a pulitica/applicazione SELinux
- A vostra infurmazione pò esse cumprumessa
15. Prublemu di etichettatura: se i vostri schedari sò in /srv/myweb sò marcati incorrectamente, l'accessu pò esse denegatu. Eccu alcuni modi per riparà questu:
- Se cunnosci l'etichetta:
# semanage fcontext -a -t httpd_sys_content_t '/srv/myweb(/.*)?' - Se cunnosci un schedariu cù marcature equivalenti:
# semanage fcontext -a -e /srv/myweb /var/www - Ripristina u cuntestu (per i dui casi):
# restorecon -vR /srv/myweb
16. Problema di etichettatura: se move u schedariu invece di cupià, u schedariu mantene u so cuntestu originale. Per risolve stu prublema:
- Cambia u cumandamentu di u cuntestu cù l'etichetta:
# chcon -t httpd_system_content_t /var/www/html/index.html - Cambia u cumandamentu di u cuntestu cù l'etichetta di ligame:
# chcon --reference /var/www/html/ /var/www/html/index.html - Ripristina u cuntestu (per i dui casi):
# restorecon -vR /var/www/html/
17. se SELinux bisognu di sapè, chì HTTPD hè in ascoltu nant'à u portu 8585, dite à SELinux:
# semanage port -a -t http_port_t -p tcp 8585
18. SELinux bisognu di sapè Valori booleani chì vi permettenu di cambià parti di a pulitica SELinux à u mumentu di l'esecuzione senza cunniscenza di a riscrittura di a pulitica SELinuxPer esempiu, sè vo vulete chì httpd mandi email, inserite: # setsebool -P httpd_can_sendmail 1
19. SELinux bisognu di sapè valori logichi per attivà/disattivà i paràmetri SELinux:
- Per vede tutti i valori booleani:
# getsebool -a - Per vede una descrizzione di ognunu:
# semanage boolean -l - Per stabilisce un valore booleanu:
# setsebool [_boolean_] [1|0] - Per una stallazione permanente, aghjunghje
-P. Per esempiu:# setsebool httpd_enable_ftp_server 1 -P
20. Pulitiche/Applicazioni SELinux pò cuntene errori, cumpresi:
- Percorsi di codice inusual
- Cunfigurazioni
- Redirecting stdout
- Fuga di descrittore di file
- Memoria eseguibile
- Biblioteche mal custruite
Biglietti aperti (ùn inviate micca un rapportu à Bugzilla; Bugzilla ùn hà micca SLA).
21. A vostra infurmazione pò esse cumprumessas'è vo avete duminii ristretti chì prova à:
- Caricà i moduli di u kernel
- Disattivà a modalità SE applicataLinux
- Scrivite à
etc_t/shadow_t - Cambia e regule iptables
22. Strumenti SELinux per u sviluppu di moduli di pulitica:
# yum -y install setroubleshoot setroubleshoot-server
Riavvia o riavvia auditd dopu a stallazione.
23. Usu
journalctl per vede una lista di tutti i logs assuciati cù setroubleshoot:
# journalctl -t setroubleshoot --since=14:20
24. Usu journalctl per elencà tutti i logs assuciati à un tag SE specificuLinux. Per esempiu:
# journalctl _SELINUX_CONTEXT=system_u:system_r:policykit_t:s0
25. Quandu si verifica un errore SELinux aduprà u log setroubleshoot offre parechje soluzioni pussibuli.
Per esempiu, da 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.html26. Taglio di legnu: SELinux registra l'infurmazioni in parechji lochi:
- / var / log / missaghji
- /var/log/audit/audit.log
- /var/lib/setroubleshoot/setroubleshoot_database.xml
27. Registrazione: Truvà errori SELinux in u registru di audit:
# ausearch -m AVC,USER_AVC,SELINUX_ERR -ts today
28. Per truvà i missaghji SELinux Accessu à a cache vettoriale (AVC) per un serviziu specificu:
# ausearch -m avc -c httpd
29. Utilità audit2allow raccoglie informazioni da i registri di l'operazioni pruibite è poi genera e regule di pulitica di permessu SELinux. Per esempiu:
- Per creà una descrizzione leggibile da l'omu di perchè l'accessu hè denegatu:
# audit2allow -w -a - Per vede un tipu di regula d'applicazione chì permette l'accessu denegatu:
# audit2allow -a - Per creà un modulu persunalizatu:
# audit2allow -a -M mypolicy - Opzione
-Mcrea un schedariu d'infurzazioni di tipu (.te) cù u nome specificatu è compila a regula in un pacchettu di pulitica (.pp):mypolicy.pp mypolicy.te - Per installà un modulu persunalizatu:
# semodule -i mypolicy.pp
30. Per cunfigurà un prucessu separatu (domain) per travaglià in modu permissivu: # semanage permissive -a httpd_t
31. Se ùn vulete più chì u duminiu sia permissivu: # semanage permissive -d httpd_t
32. Per disattivà tutti i domini permissivi: # semodule -d permissivedomains
33. Attivazione di a pulitica MLS SELinux: # yum install selinux-policy-mls
в /etc/selinux/config:
SELINUX=permissivu
SELINUXTYPE=mls
Assicuratevi SELinux funziona in modu permissivo: # setenforce 0
Aduprate un script fixfilesper assicurà chì i schedari sò rietichettati in u prossimu reboot:
# fixfiles -F onboot # reboot
34. Crea un utilizatore cù un intervallu MLS specificu: # useradd -Z staff_u john
Utilizendu u cumandimu useradd, mappa u novu utilizatore à un utilizatore SE esistenteLinux (in stu casu, staff_u).
35. Per vede a currispundenza trà l'utilizatori SELinux и Linux: # semanage login -l
36. Definite un intervallu specificu per l'utilizatori: # semanage login --modify --range s2:c100 john
37. Per correggere l'etichetta di u cartulare di casa di l'utilizatore (se necessariu): # chcon -R -l s2:c100 /home/john
38. Per vede e categurie attuali: # chcat -L
39. Per cambià e categurie o cuminciate à creà u vostru propiu, editate u schedariu cusì:
/etc/selinux/_<selinuxtype>_/setrans.conf
40. Per eseguisce un cumandamentu o script in un schedariu specificu, rolu è cuntestu d'utilizatore:
# runcon -t initrc_t -r system_r -u user_u yourcommandhere
-tcuntestu di u schedariu-rcuntestu di rolu-ucuntestu di l'utilizatori
41. Cuntenitori chì funzionanu cù SE disattivatuLinux:
- Podman:
# podman run --security-opt label=disable … - Docker:
# docker run --security-opt label=disable …
42. Sè avete bisognu di dà u cuntenutu sanu accessu à u sistema:
- Podman:
# podman run --privileged … - Docker:
# docker run --privileged …
È avà sapete digià a risposta. Dunque, per piacè: ùn vi panicate è accendete SELinux.
Referenze:
- by
- di Dan Walsh
- by
- by
Source: www.habr.com
