Ovdje ćete dobiti odgovore na važna pitanja o životu, svemiru i svemu u Linuxu uz poboljšanu sigurnost.
“Opće je poznata važna istina da stvari nisu uvijek onakve kakvima se čine...”
-Douglas Adams, Vodič kroz galaksiju za autostopere
Sigurnost. Povećana pouzdanost. Dopisivanje. Politika. Četiri jahača apokalipse sistemski administrator. Uz naše svakodnevne zadatke - nadzor, backup, implementacija, konfiguracija, ažuriranje itd. - odgovorni smo i za sigurnost naših sustava. Čak i oni sustavi za koje dobavljač treće strane preporučuje da onemogućimo poboljšanu sigurnost. Osjeća se kao posao Ethan Hunt iz filma "Nemoguća misija".
Suočeni s ovom dilemom, neki administratori sustava odlučuju uzeti plava pilula, jer misle da nikada neće znati odgovor na veliko pitanje života, svemira i svega toga. I kao što svi znamo, taj odgovor je 42.
U duhu Vodiča kroz galaksiju za autostopere, evo 42 odgovora na važna pitanja o kontroli i korištenju. Uklanjanje poteškoća na vašim sustavima.
1. SELinux je prisilni sustav kontrole pristupa, što znači da svaki proces ima oznaku. Svaka datoteka, direktorij i sistemski objekt također ima oznake. Pravila politike kontroliraju pristup između označenih procesa i objekata. Kernel provodi ova pravila.
2. Dva najvažnija koncepta su: označavanje — oznake (datoteke, procesi, portovi itd.) i Ovrha tipa (koji izolira procese jedne od drugih na temelju tipova).
3. Ispravan format naljepnice user:role:type:level (neobavezno).
4. Svrha pružanja sigurnosti na više razina (Višerazinska sigurnost - MLS) je upravljanje procesima (domenama) na temelju razine sigurnosti podataka koje će koristiti. Na primjer, tajni proces ne može čitati strogo povjerljive podatke.
5. Osiguravanje višekategorijske sigurnosti (Multi-Category Security - MCS) štiti slične procese jedan od drugog (na primjer, virtualne strojeve, OpenShift motore, SELinux sandboxe, spremnike itd.).
6. Opcije kernela za promjenu načina rada SELinuxa pri dizanju sustava:
autorelabel=1 → uzrokuje pokretanje sustava za ponovno označavanje
selinux=0 → kernel ne učitava SELinux infrastrukturu
enforcing=0 → učitavanje u dopuštenom načinu rada
7. Ako trebate ponovno označiti cijeli sustav:
# touch /.autorelabel
#reboot
Ako označavanje sustava sadrži velik broj pogrešaka, možda ćete se morati pokrenuti u dopuštenom načinu rada da bi označavanje uspjelo.
8. Da provjerite je li SELinux omogućen: # getenforce
9. Da biste privremeno omogućili/onemogućili SELinux: # setenforce [1|0]
10. Provjera SELinux statusa: # sestatus
11. Konfiguracijska datoteka: /etc/selinux/config
12. Kako radi SELinux? Ovdje je primjer označavanja za Apache web poslužitelj:
Proces koji se izvodi u kontekstu httpd_t, može komunicirati s označenim objektom httpd_something_t.
13. Mnoge naredbe prihvaćaju argument -Z za pregled, stvaranje i promjenu konteksta:
ls -Z
id -Z
ps -Z
netstat -Z
cp -Z
mkdir -Z
Konteksti se uspostavljaju kada se datoteke kreiraju na temelju konteksta nadređenog direktorija (uz neke iznimke). RPM-ovi mogu uspostaviti kontekste kao tijekom instalacije.
14. Postoje četiri glavna uzroka SELinux pogrešaka, koji su detaljnije opisani u točkama 15-21 u nastavku:
Problemi s označavanjem
Zbog nečega što SELinux mora znati
Greška u politici/aplikaciji SELinuxa
Vaši podaci mogu biti ugroženi
15.Problem s označavanjem: ako su vaše datoteke unutra /srv/myweb su netočno označeni, pristup može biti odbijen. Evo nekoliko načina da to popravite:
Ako znate oznaku: # semanage fcontext -a -t httpd_sys_content_t '/srv/myweb(/.*)?'
Ako znate datoteku s ekvivalentnim oznakama: # semanage fcontext -a -e /srv/myweb /var/www
Vraćanje konteksta (za oba slučaja): # restorecon -vR /srv/myweb
16.Problem s označavanjem: ako premjestite datoteku umjesto da je kopirate, datoteka će zadržati svoj izvorni kontekst. Da biste riješili ovaj problem:
Promijenite naredbu konteksta s oznakom: # chcon -t httpd_system_content_t /var/www/html/index.html
Vratite kontekst (za oba slučaja): # restorecon -vR /var/www/html/
17. Ako SELinux morate znatida HTTPD sluša port 8585, recite SELinuxu:
# semanage port -a -t http_port_t -p tcp 8585
18.SELinux morate znati Booleove vrijednosti koje dopuštaju promjenu dijelova SELinux politike tijekom izvođenja bez znanja o prepisivanju SELinux politike. Na primjer, ako želite da httpd šalje e-poštu, unesite: # setsebool -P httpd_can_sendmail 1
19.SELinux morate znati logičke vrijednosti za omogućavanje/onemogućavanje SELinux postavki:
Da biste vidjeli sve Booleove vrijednosti: # getsebool -a
Da biste vidjeli opis svakog: # semanage boolean -l
Za postavljanje Booleove vrijednosti: # setsebool [_boolean_] [1|0]
Za trajnu instalaciju dodajte -P, Na primjer: # setsebool httpd_enable_ftp_server 1 -P
20. SELinux pravila/aplikacije mogu sadržavati pogreške, uključujući:
Neobične staze koda
Konfiguracije
Preusmjeravanje stdout-a
Curenje deskriptora datoteke
Izvršna memorija
Loše izgrađene knjižnice
Otvorite tikete (ne šaljite izvješće Bugzilli; Bugzilla nema SLA).
21.Vaši podaci mogu biti ugroženiako imate ograničene domene koje pokušavaju:
25. Ako se pojavi greška SELinuxa, koristite dnevnik setroubleshoot nudeći nekoliko mogućih rješenja.
Na primjer, iz 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. Zapisivanje: SELinux bilježi informacije na mnogim mjestima:
Provjerite radi li SELinux u dopuštenom načinu rada: # setenforce 0
Koristite skriptu fixfileskako biste bili sigurni da su datoteke ponovno označene pri sljedećem ponovnom pokretanju:
# fixfiles -F onboot # reboot
34. Stvorite korisnika s određenim MLS rasponom: # useradd -Z staff_u john
Korištenje naredbe useradd, mapirajte novog korisnika na postojećeg SELinux korisnika (u ovom slučaju, staff_u).
35. Za pregled preslikavanja između SELinux i Linux korisnika: # semanage login -l
36. Definirajte određeni raspon za korisnika: # semanage login --modify --range s2:c100 john
37. Da biste ispravili oznaku korisničkog matičnog imenika (ako je potrebno): # chcon -R -l s2:c100 /home/john
38. Za pregled trenutnih kategorija: # chcat -L
39. Da biste promijenili kategorije ili počeli stvarati vlastitu, uredite datoteku na sljedeći način:
/etc/selinux/_<selinuxtype>_/setrans.conf
40. Za pokretanje naredbe ili skripte u određenoj datoteci, ulozi i korisničkom kontekstu: