SĂŒsteemi administraatori Ă”pik SELinuxist: 42 vastust olulistele kĂŒsimustele

Artikli tĂ”lge on ette valmistatud spetsiaalselt kursuse ĂŒliĂ”pilastele Linuxi administraator.

SĂŒsteemi administraatori Ă”pik SELinuxist: 42 vastust olulistele kĂŒsimustele

Siit leiate vastused olulistele kĂŒsimustele elu, universumi ja Linuxi kĂ”igi asjade kohta, millel on paranenud turvalisus.

„Oluline tĂ”de, et asjad ei ole alati sellised, nagu nad nĂ€ivad, on ĂŒldiselt tuntud...“

―Douglas Adams, Galaktiline reisijate juht

Turvalisus. UsaldusvÀÀrsuse suurendamine. Vastavus. Poliitika. SĂŒsteemi administraatori neli apokalĂŒpsise ratsanikku. Lisaks meie igapĂ€evastele ĂŒlesannetele — jĂ€lgimisele, varundamisele, juurutamisele, seadistamisele, uuendamisele jne — vastutame ka meie sĂŒsteemide turvalisuse eest. Isegi nende sĂŒsteemide, kus kolmanda osapoole teenusepakkuja soovitab meil ranget turvalisust keelata. See on nagu töö Ethan Hunt filmist „Missegatakse tĂ€ide“.

Kuna silmitsi seistes selle dilemmaga otsustavad mĂ”ned sĂŒsteemi administraatorid vĂ”tta sinise tableti, sest nad arvavad, et nad ei saa kunagi teada elu, universumi ja kĂ”igi asjade suure kĂŒsimuse vastust. Ja nagu me kĂ”ik teame, on see vastus 42.

„Galaktilise reisijate juhina“ on siin 42 vastust olulistele kĂŒsimustele haldamise ja kasutamise kohta SELinux teie sĂŒsteemides.

1. SELinux on sundjuhtimise sĂŒsteem, mis tĂ€hendab, et igal protsessil on silt (mĂ€rk). Igal failil, kataloogil ja sĂŒsteemiobjektil on samuti etiketid. Poliitikareeglid reguleerivad juurdepÀÀsu mĂ€rgistatud protsesside ja objektide vahel. SĂŒdamik tagab nende reeglite jĂ€rgimise.

2. Kahe kĂ”ige olulisema kontseptsiooni hulka kuuluvad: MĂ€rgistamine – etiketid (failid, protsessid, pordid jne) ja TĂŒĂŒpide jĂ”ustamine (mis isoleerib protsessid ĂŒksteisest tĂŒĂŒpide alusel).

3. Etiketi Ă”ige formaat kasutaja:roll:tyĂŒp:tase (valikuline).

4. Mitme taseme turvalisuse tagamise eesmĂ€rk (Multi-Level Security — MLS) on protsesside (valdkondade) juhtimine andmete turvalisuse taseme alusel, mida nad kasutavad. NĂ€iteks ei saa salajane protsess lugeda ĂŒleliia salajasi andmeid.

5. Mitmekategorilise turvalisuse tagamine (Multi-Category Security — MCS) kaitseb sarnaseid protsesse ĂŒksteise eest (nĂ€iteks virtuaalmasinad, OpenShifti mehhanismid, SELinuxi liivakastid, konteinerid jne).

6. SĂŒdamikuvalikud, et muuta SELinuxi reĆŸiime kĂ€ivitamisel:

  • autorelabel=1 → sunnib sĂŒsteemi kĂ€ivitama ĂŒmbermĂ€rgistamise
  • selinux=0 → sĂŒdamik ei laadita SELinuxi infrastruktuuri
  • enforcing=0 → laadimine lubavas reĆŸiimis

7. Kui peate kogu sĂŒsteemi ĂŒmbermĂ€rgistama:

# touch /.autorelabel
#reboot

Kui sĂŒsteemi mĂ€rgistamisel esineb palju vigu, vĂ”ib teil olla vajalik laadida lubavas reĆŸiimis, et ĂŒmbermĂ€rgistus Ă”nnestuks.

8. Kuidas kontrollida, kas SELinux on sisse lĂŒlitatud: # getenforce

9. Kuidas ajutiselt sisse/vĂ€lja lĂŒlitada SELinux: # setenforce [1|0]

10. Kontrolli SELinuxi staatust: # sestatus

11. Konfiguratsioonifail: /etc/selinux/config

12. Kuidas SELinux töötab? Siin on nÀide mÀrkest veebiserverile Apache:

  • Binaarne esitus: /usr/sbin/httpd→httpd_exec_t
  • Konfiguratsioonikataloog: /etc/httpd→httpd_config_t
  • Logifailide kataloog: /var/log/httpd → httpd_log_t
  • Sisu kataloog: /var/www/html → httpd_sys_content_t
  • KĂ€ivituskript: /usr/lib/systemd/system/httpd.service → httpd_unit_file_d
  • Protsess: /usr/sbin/httpd -DFOREGROUND → httpd_t
  • Pordid: 80/tcp, 443/tcp → httpd_t, http_port_t

Protsess, mis on kÀivitatud kontekstis httpd_t, vÔib suhelda objekti mÀrgiga httpd_something_t.

13. Paljud kÀsud aktsepteerivad argumenti -Z konteksti vaatamiseks, loomiseks ja muutmiseks:

  • ls -Z
  • id -Z
  • ps -Z
  • netstat -Z
  • cp -Z
  • mkdir -Z

Kontekstid mÀÀratakse, kui failid luuakse oma vanemkatalooge konteksti alusel (mÔningate eranditega). RPM-id saavad kontekste mÀÀrata paigaldamise kÀigus.

14. SELinuxi vigade nelja peamise pĂ”hjuse kohta on ĂŒksikasjalikum info punktides 15-21 allpool:

  • MĂ€rgistamisprobleemid
  • Kuna midagi, mida SELinux peab teadma
  • Viga SELinuxi poliitikas/rakenduses
  • Teie teave vĂ”ib olla ohus

15. MÀrgistamisprobleem: kui teie failid on /srv/myweb vale mÀrgistusega, vÔib juurdepÀÀs olla keelatud. Siin on mÔned viisid, kuidas seda parandada:

  • Kui teate mĂ€rgistust:
    # semanage fcontext -a -t httpd_sys_content_t '/srv/myweb(/.*)?'
  • Kui teate faili, millel on vĂ”rdsed mĂ€rgised:
    # semanage fcontext -a -e /srv/myweb /var/www
  • Konteksti taastamine (mĂ”lemal juhul):
    # restorecon -vR /srv/myweb

16. MÀrgistamisprobleem: kui liigute faili, mitte ei kopeeri seda, sÀilitab fail oma algse konteksti. Selle probleemi lahendamiseks:

  • Muutke konteksti kĂ€sku mĂ€rgiga:
    # chcon -t httpd_system_content_t /var/www/html/index.html
  • Muutke konteksti kĂ€sku viidatud mĂ€rgiga:
    # chcon --reference /var/www/html/ /var/www/html/index.html
  • Taasta kontekst (mĂ”lemal juhul): # restorecon -vR /var/www/html/

17. Kui SELinux peab teadma, et HTTPD kuulab porti 8585, teavitage SELinuxi:

# semanage port -a -t http_port_t -p tcp 8585

18. SELinux peab teadma loogilised vÀÀrtused, mis vĂ”imaldavad muuta osa SELinuxi poliitikast töötamise ajal ilma SELinuxi poliitika ĂŒmberkirjutamise teadmisteta. NĂ€iteks, kui soovite, et httpd saadaks e-kirju, sisestage: # setsebool -P httpd_can_sendmail 1

19. SELinux peab teadma logilised vÀÀrtused, mis lubavad/keelavad SELinuxi seadeid:

  • Kuidas nĂ€ha kĂ”iki loogilisi vÀÀrtusi: # getsebool -a
  • Kuidas nĂ€ha igaĂŒhe kirjeldust: # semanage boolean -l
  • Kuidas seada loogiline vÀÀrtus: # setsebool [_boolean_] [1|0]
  • PĂŒsiva seadistuse jaoks lisage -P. NĂ€iteks: # setsebool httpd_enable_ftp_server 1 -P

20. SELinuxi poliitikad/rakendused vÔivad sisaldada vigu, sealhulgas:

  • Ebatavalised kooditeed
  • Konfiguratsioonid
  • stdout'i suunamine
  • Failideskrijatsiooni lekked
  • TĂ€idetav mĂ€lu
  • Halvasti koostatud raamatukogud

Avage tikett (Ă€rge saatke aruannet Bugzilasse; Bugzilas ei ole SLA-d).

21. Teie teave vĂ”ib olla ohus, kui teil on piiratud domeene, mis pĂŒĂŒavad:

  • Laadida tuumamooduleid
  • Keenid enforced reĆŸiimi SELinuxi
  • Kirjutada etc_t/shadow_t
  • Muuda iptables reegleid

22. SELInuxi poliitikamoodulite arendustooted:

# yum -y install setroubleshoot setroubleshoot-server

TaaskÀivitage vÔi kÀivitage uuesti auditd pÀrast installimist.

23. Kasutage

journalctl

kÔigi logide loetlemiseks, mis on seotud setroubleshoot:

# journalctl -t setroubleshoot --since=14:20

24. Kasutage journalctl kÔigi logide loetlemiseks, mis on seotud konkreetse SELinuxi sildiga. NÀiteks:

# journalctl _SELINUX_CONTEXT=system_u:system_r:policykit_t:s0

25. SELinuxi vea korral kasutage logi setroubleshoot mitmete vÔimalike lahenduste esitamiseks.
NĂ€iteks, journalctl:

14. juuni 19:41:07 web1 setroubleshoot: SELinux takistab httpd-l gettari juurdepÀÀsu failile /var/www/html/index.html. TÀieliku sÔnumi saamiseks kÀivitage: sealert -l 12fd8b04-0119-4077-a710-2d0e0ee5755e

# sealert -l 12fd8b04-0119-4077-a710-2d0e0ee5755e
SELinux takistab httpd-l gettari juurdepÀÀsu failile /var/www/html/index.html.

***** Plugin restorecon (99.5 usaldusvÀÀrsus) soovitab ************************

Kui soovite siluda sildistust,
/var/www/html/index.html vaikimisi silt peaks olema httpd_syscontent_t.
Siis saate restorecon'i kÀivitada.
Tehke 
# /sbin/restorecon -v /var/www/html/index.html

26. Logimine: SELinux logib teavet paljudes kohtades:

  • /var/log/messages
  • /var/log/audit/audit.log
  • /var/lib/setroubleshoot/setroubleshoot_database.xml

27. Logimine: Otsige SELinuxi vigu auditilogis:

# ausearch -m AVC,USER_AVC,SELINUX_ERR -ts today

28. SELinuxi Access Vector Cachi (AVC) sÔnumite leidmiseks teatud teenuste jaoks:

# ausearch -m avc -c httpd

29. Utiliit audit2allow kogub teavet keelatud toimingute logidest ja genereerib seejÀrel SELinuxi loa poliitikareegleid. NÀiteks:

  • JuurdepÀÀsu keelamise pĂ”hjuse arusaadava kirjelduse loomiseks: # audit2allow -w -a
  • Kohustusliku tĂŒĂŒbi reegli vaatamiseks, mis lubab keelatud juurdepÀÀsu: # audit2allow -a
  • Kohandatud mooduli loomiseks: # audit2allow -a -M mypolicy
  • Valik -M loob mÀÀratud nimega kohustusliku tĂŒĂŒbi (.te) faili ja kompileerib reegli poliitikapaketi (.pp) sisse: mypolicy.pp mypolicy.te
  • Kohandatud mooduli installimiseks: # semodule -i mypolicy.pp

30. Kohandatud protsessi (domeeni) seadistamiseks töötamiseks lubava reĆŸiimi korral: # semanage permissive -a httpd_t

31. Kui te ei soovi, et domeen oleks enam lubav: # semanage permissive -d httpd_t

32. KÔigi lubavate domeenide keelamine: # semodule -d permissivedomains

33. SELInuxi MLS poliitika lubamine: # yum install selinux-policy-mls
ka /etc/selinux/config:

SELINUX=permissive
SELINUXTYPE=mls

Veenduge, et SELinux töötaks lubavas reĆŸiimis: # setenforce 0
Kasutage skripti fixfiles, et tagada, et failid mÀrgistatakse uuesti jÀrgmise taaskÀivitamise ajal:

# fixfiles -F onboot # reboot

34. Looge kasutaja kindla MLS vahemikuga: # useradd -Z staff_u john

Kasutades kÀsku useradd, seadke uus kasutaja olemasoleva SELinux kasutajaga (antud juhul, staff_u).

35. Kuidas vaadata vastavust SELinuxi ja Linuxi kasutajate vahel: # semanage login -l

36. MÀÀrake kasutajale kindel vahemik: # semanage login --modify --range s2:c100 john

37. Kuidas parandada kasutaja kodukaustas silti (kui vajalik): # chcon -R -l s2:c100 /home/john

38. Praeguste kategooriate vaatamiseks: # chcat -L

39. Kategooriate muutmiseks vÔi enda omadest loomiseks muutke faili jÀrgmiselt:

/etc/selinux/_<selinuxtype>_/setrans.conf

40. KÀitage kÀsku vÔi skripti kindlas failis, rollis ja kasutajakontekstis:

# runcon -t initrc_t -r system_r -u user_u yourcommandhere

  • -t faili kontekst
  • -r rolli kontekst
  • -u kasutaja kontekst

41. Konteinerid, mis töötavad keelatud SELinuxiga:

  • Podman: # podman run --security-opt label=disable 

  • Docker: # docker run --security-opt label=disable 


42. Kui peate andma konteinerile tĂ€isjuurdepÀÀsu sĂŒsteemile:

  • Podman: # podman run --privileged 

  • Docker: # docker run --privileged 


Ja nĂŒĂŒd teate juba vastust. SeetĂ”ttu, palun: Ă€rge paanitsege ja aktiveerige SELinux.

Lingid:

Allikas: habr.com

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster