Tukaj boste dobili odgovore na pomembna vprašanja o življenju, vesolju in vsem v Linuxu z izboljšano varnostjo.
"Pomembna resnica, da stvari niso vedno takšne, kot se zdijo, je splošno znana ..."
-Douglas Adams, Autostoperski vodnik po galaksiji
Varnost. Povečana zanesljivost. Dopisovanje. Politika. Sistemski administrator Štirje jezdeci apokalipse. Poleg vsakodnevnih nalog – spremljanje, varnostno kopiranje, implementacija, konfiguracija, posodabljanje itd. – smo odgovorni tudi za varnost naših sistemov. Tudi tisti sistemi, kjer tretji ponudnik priporoča, da onemogočimo povečano varnost. Zdi se kot delo Ethan Hunt iz filma "Misija: nemogoče".
Ko se soočijo s to dilemo, se nekateri sistemski skrbniki odločijo za uporabo modra tabletka, ker mislijo, da nikoli ne bodo izvedeli odgovora na veliko vprašanje življenja, vesolja in vsega tega. In kot vsi vemo, je ta odgovor 42.
V duhu Štoparskega vodnika po galaksiji je tukaj 42 odgovorov na pomembna vprašanja o nadzoru in uporabi. SELinux na vaših sistemih.
1. SELinux je prisilni sistem za nadzor dostopa, kar pomeni, da ima vsak proces oznako. Vsaka datoteka, imenik in sistemski objekt ima tudi oznake. Pravila pravilnika nadzorujejo dostop med označenimi procesi in objekti. Jedro uveljavlja ta pravila.
2. Dva najpomembnejša pojma sta: Označevanje — oznake (datoteke, procesi, vrata itd.) in Vrsta uveljavitve (ki ločuje procese drug od drugega na podlagi tipov).
3. Pravilna oblika etikete user:role:type:level (neobvezno).
4. Namen zagotavljanja večnivojske varnosti (Varnost na več ravneh – MLS) je upravljanje procesov (domen) glede na stopnjo varnosti podatkov, ki jih bodo uporabljali. Skrivni proces na primer ne more brati strogo zaupnih podatkov.
5. Zagotavljanje večkategorijske varnosti (Multi-Category Security - MCS) ščiti podobne procese drug pred drugim (na primer virtualne stroje, motorje OpenShift, peskovnike SELinux, vsebnike itd.).
6. Možnosti jedra za spreminjanje načinov SELinux ob zagonu:
autorelabel=1 → povzroči, da sistem izvede ponovno označevanje
selinux=0 → jedro ne naloži infrastrukture SELinux
enforcing=0 → nalaganje v dovoljenem načinu
7. Če morate znova označiti celoten sistem:
# touch /.autorelabel
#reboot
Če označevanje sistema vsebuje veliko število napak, se boste morda morali zagnati v dovoljenem načinu, da bo označevanje uspelo.
8. Če želite preveriti, ali je SELinux omogočen: # getenforce
9. Če želite začasno omogočiti/onemogočiti SELinux: # setenforce [1|0]
10. Preverjanje stanja SELinux: # sestatus
11. Konfiguracijska datoteka: /etc/selinux/config
12. Kako deluje SELinux? Tukaj je primer označevanja za spletni strežnik Apache:
Proces teče v kontekstu httpd_t, lahko komunicira z označenim predmetom httpd_something_t.
13. Mnogi ukazi sprejmejo argument -Z za ogled, ustvarjanje in spreminjanje konteksta:
ls -Z
id -Z
ps -Z
netstat -Z
cp -Z
mkdir -Z
Konteksti so vzpostavljeni, ko so datoteke ustvarjene na podlagi konteksta njihovega nadrejenega imenika (z nekaterimi izjemami). RPM-ji lahko vzpostavijo kontekst kot med namestitvijo.
14. Obstajajo štirje glavni vzroki za napake SELinux, ki so podrobneje opisani v točkah 15-21 spodaj:
Težave z označevanjem
Zaradi nečesa, kar mora SELinux vedeti
Napaka v pravilniku/aplikaciji SELinux
Vaši podatki so lahko ogroženi
15.Težava z označevanjem: če so vaše datoteke v /srv/myweb so nepravilno označeni, bo dostop morda zavrnjen. Tukaj je nekaj načinov, kako to popraviti:
Če poznate oznako: # semanage fcontext -a -t httpd_sys_content_t '/srv/myweb(/.*)?'
Če poznate datoteko z enakovrednimi oznakami: # semanage fcontext -a -e /srv/myweb /var/www
Obnovitev konteksta (za oba primera): # restorecon -vR /srv/myweb
16.Težava z označevanjem: če datoteko premaknete, namesto da bi jo kopirali, bo datoteka ohranila prvotni kontekst. Če želite odpraviti to težavo:
Spremenite kontekstni ukaz z oznako: # chcon -t httpd_system_content_t /var/www/html/index.html
Spremenite kontekstni ukaz z oznako povezave: # chcon --reference /var/www/html/ /var/www/html/index.html
Obnovite kontekst (za oba primera): # restorecon -vR /var/www/html/
17. če SELinux morate poznatida HTTPD posluša na vratih 8585, povejte SELinuxu:
# semanage port -a -t http_port_t -p tcp 8585
18.SELinux morate poznati Logične vrednosti, ki omogočajo spreminjanje delov pravilnika SELinux med izvajanjem, ne da bi vedeli, da je pravilnik SELinux prepisan. Na primer, če želite, da httpd pošilja e-pošto, vnesite: # setsebool -P httpd_can_sendmail 1
19.SELinux morate poznati logične vrednosti za omogočanje/onemogočanje nastavitev SELinux:
Če želite videti vse logične vrednosti: # getsebool -a
Če si želite ogledati opis vsakega: # semanage boolean -l
Če želite nastaviti logično vrednost: # setsebool [_boolean_] [1|0]
Za trajno namestitev dodajte -P. Na primer: # setsebool httpd_enable_ftp_server 1 -P
20. Politike/aplikacije SELinux lahko vsebujejo napake, vključno z:
Nenavadne kodne poti
Konfiguracije
Preusmerjanje stdout
Puščanje deskriptorja datoteke
Izvedljiv pomnilnik
Slabo zgrajene knjižnice
Odprite vstopnice (ne oddajte poročila Bugzilli; Bugzilla nima SLA).
21.Vaši podatki so lahko ogroženiče imate omejene domene, ki poskušajo:
25. Če pride do napake SELinux, uporabite dnevnik setroubleshoot ponuja več možnih rešitev.
Na primer od 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. Beleženje: SELinux beleži informacije na številnih mestih:
Prepričajte se, da SELinux deluje v dovoljenem načinu: # setenforce 0
Uporabite skript fixfilesda zagotovite, da so datoteke ob naslednjem ponovnem zagonu ponovno označene:
# fixfiles -F onboot # reboot
34. Ustvarite uporabnika z določenim obsegom MLS: # useradd -Z staff_u john
Uporaba ukaza useraddpreslika novega uporabnika v obstoječega uporabnika SELinux (v tem primeru staff_u).
35. Za ogled preslikave med uporabniki SELinux in Linux: # semanage login -l
36. Določite določen obseg za uporabnika: # semanage login --modify --range s2:c100 john
37. Če želite popraviti oznako domačega imenika uporabnika (če je potrebno): # chcon -R -l s2:c100 /home/john
38. Za ogled trenutnih kategorij: # chcat -L
39. Če želite spremeniti kategorije ali začeti ustvarjati svojo, uredite datoteko na naslednji način:
/etc/selinux/_<selinuxtype>_/setrans.conf
40. Če želite zagnati ukaz ali skript v določeni datoteki, vlogi in uporabniškem kontekstu: