SĂŒsteemiadministraatori Ă”pik SELinuxi kohta: 42 vastust olulistele kĂŒsimustele

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

SĂŒsteemiadministraatori Ă”pik SELinuxi kohta: 42 vastust olulistele kĂŒsimustele

Siit leiate vastuseid olulistele kĂŒsimustele elu, universumi ja kĂ”ige muu kohta Linuxis, koos paranenud turvalisusega.

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

―Douglas Adams, MaailmarĂ€nduri juhend

Turvalisus. UsaldusvÀÀrsuse tĂ”stmine. Vastavus. Poliitika. Neljandad ratsanikud administraatori apokalĂŒpsis. Peale meie igapĂ€evaste ĂŒlesannete — jĂ€lgimise, varukoopiate tegemise, rakendamise, seadistamise, uuendamise jne — vastutame ka meie sĂŒsteemide turvalisuse eest. Isegi nende sĂŒsteemide eest, kus kolmas osapool soovitab meil vĂ€lja lĂŒlitada tugeva turvalisuse. See on nagu töö Ethan Hunt filmist 'Misjon: VĂ”imatu'.

Selle dilemmas seistes otsustavad mĂ”ned sĂŒsteemiadministraatorid 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.

Vaimus nagu 'MaailmarĂ€nduri juhend', on siin 42 vastust olulistele kĂŒsimustele haldamise ja kasutamise kohta SELinux teie sĂŒsteemides.

1. SELinux on juurkontrolli haldamise sĂŒsteem, mis tĂ€hendab, et igal protsessil on silt (label). Igal failil, kataloogil ja sĂŒsteemiobjektil on samuti sildid. Poliitika reeglid reguleerivad juurdepÀÀsu siltidega protsesside ja objektide vahel. SĂŒdamik tagab nende reeglite tĂ€itmise.

2. Kaks kĂ”ige olulisemat mĂ”istet on: Labeling — sildistamine (failid, protsessid, pordid jne) ja Type enforcement (mis isoleerib protsessid omavahel tĂŒĂŒpide alusel).

3. Õige sildi formaat user:role:type:level (valikuline).

4. Mitme tasandi turvalisuse tagamise eesmĂ€rk (Multi-Level Security — MLS) on juhtida protsesse (domeene) andmete turvalisuse taseme alusel, mida nad kasutavad. NĂ€iteks ei saa salajane protsess lugeda ĂŒlivÀÀrseid andmeid.

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

6. Kerniparameetrid SELinuxi reĆŸiimide muutmiseks kĂ€ivitamisel:

  • autorelabel=1 → sunnib sĂŒsteemi kĂ€ivitama ĂŒmber sildistamise
  • selinux=0 → kernel ei laadita SELinux infrastruktuuri
  • enforcing=0 → laadimine permissive reĆŸiimis

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

# touch /.autorelabel
#reboot

Kui sĂŒsteemi mĂ€rgistamine sisaldab palju vigu, vĂ”ib osutuda vajalikuks laadida permissive reĆŸiimis, et ĂŒmbermĂ€rgistamine Ă”nnestuks.

8. SELinuxi sisselĂŒlitamise kontrollimiseks: # getenforce

9. SELinuxi ajutiseks sisselĂŒlitamiseks/vĂ€ljalĂŒlitamiseks: # setenforce [1|0]

10. SELinuxi staatuse kontroll: # sestatus

11. Konfiguratsioonifail: /etc/selinux/config

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

  • Binaarne esitlus: /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Ă€ivitusskrift: /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, millel on silt httpd_something_t.

13. Paljud kÀsud vÔtavad argumendi -Z konteksti vaatamiseks, loomiseks ja muutmiseks:

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

Kontekstid mÀÀratakse, kui failid luuakse nende vanemkatalooge konteksti pÔhjal (mÔningatel eranditel). RPM-id vÔivad mÀÀrata kontekste ka installimise ajal.

14. SELinuxi vigade nelja peamise pÔhjuse kohta on rohkem teavet punktides 15-21 allpool:

  • MĂ€rgistamisprobleemid
  • Miks SELinux peaks teadma
  • Viga SELinux poliitikas/rakenduses
  • Teie teave vĂ”ib olla ohus

15. MÀrgistamise probleem: 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 sildi:
    # semanage fcontext -a -t httpd_sys_content_t '/srv/myweb(/.*)?'
  • Kui teate faili vastava mĂ€rgistusega:
    # semanage fcontext -a -e /srv/myweb /var/www
  • Taastades konteksti (mĂ”lemal juhul):
    # restorecon -vR /srv/myweb

16. MÀrgistamise probleem: kui te teisaldate faili, mitte ei kopeeri, siis fail sÀilitab oma algse konteksti. Probleemi parandamiseks:

  • Muuda konteksti kĂ€sklusega, millel on mĂ€rk:
    # chcon -t httpd_system_content_t /var/www/html/index.html
  • Muuda konteksti kĂ€sklusega, millel on viitemĂ€rk:
    # 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, teavita SELinuxit:

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

18. SELinux peab teadma loogilised vÀÀrtused, mis vĂ”imaldavad muuta SELinuxi poliitika osi jooksvalt ilma SELinuxi poliitika ĂŒmberkirjutamist teadmata. NĂ€iteks, kui soovite, et httpd saadaks e-kirju, sisestage: # setsebool -P httpd_can_sendmail 1

19. SELinux peab teadma loogilised vÀÀrtused, mis lĂŒlitavad SELinuxi seadeid sisse/ vĂ€lja:

  • KĂ”igi loogiliste vÀÀrtuste nĂ€gemiseks: # getsebool -a
  • IgaĂŒhe kirjelduse nĂ€gemiseks: # semanage boolean -l
  • Loogilise vÀÀrtuse seadmiseks: # setsebool [_boolean_] [1|0]
  • PĂŒsivaks installimiseks 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 edastamine
  • Faili descriptorite leke
  • TĂ€idetav mĂ€lu
  • Halvasti koostatud raamatukogud

Avage piletid (Ă€rge saatke aruannet Bugzilla'sse; Bugzilla's pole SLA-d).

21. Teie teave vĂ”ib olla ohus, kui teil on piiratud domeenid, mis ĂŒritavad:

  • Kerneli mooduleid laadida
  • SELinux'i enforced reĆŸiimi keelata
  • Kirjutada etc_t/shadow_t
  • Muuda iptables reegleid

22. SELinuxi poliitikate moodulite arendamise tööriistad:

# yum -y install setroubleshoot setroubleshoot-server

TaaskÀivitage vÔi taaskÀivitage auditd pÀrast installimist.

23. Kasutage

journalctl

kÔikide logide loendi vÀljastamiseks, mis on seotud setroubleshoot:

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

24. Kasutage journalctl kÔikide logide loendi vÀljastamiseks, mis on seotud konkreetse SELinuxi sildiga. NÀiteks:

# journalctl _SELINUX_CONTEXT=system_u:system_r:policykit_t:s0

25. SELinuxi veateate korral kasutage logi setroubleshoot ja pakutakse mitmeid vÔimalikke lahendusi.
NĂ€iteks, journalctl:

Jun 14 19:41:07 web1 setroubleshoot: SELinux takistab httpd-l pÀÀsemast 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 pÀÀsemast failile /var/www/html/index.html.

***** Plugin restorecon (99,5 protsendi usaldusvÀÀrsusega) soovitab ************************

Kui soovite sildi parandada,
/var/www/html/index.html vaike silt peaks olema httpd_syscontent_t.
Siis saate kasutada restorecon-i.
Tehke
# /sbin/restorecon -v /var/www/html/index.html

26. Logimine: SELinux kirjutab teavet paljudesse kohtadesse:

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

27. Logimine: SELinuxi vigade otsimine auditi logis:

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

28. Kuidas leida SELinux Access Vector Cache (AVC) sÔnumeid kindla teenuse jaoks:

# ausearch -m avc -c httpd

29. Tööriist audit2allow kogub teavet keelatud toimingute logidest ja genereerib seejÀrel SELinuxi Ôiguste poliitika reeglid. NÀiteks:

  • Kuidas luua loetav kirjeldus juurdepÀÀsuloo keeldumise pĂ”hjusest: # audit2allow -w -a
  • Kuidas vaadata tĂŒĂŒbi sundrakendamise reeglit, mis lubab keelatud juurdepÀÀsu: # audit2allow -a
  • Kuidas luua kasutaja moodul: # audit2allow -a -M mypolicy
  • Valik -M loob sundrakendamise tĂŒĂŒbi faili (.te) antud nimega ja kompileerib reegli poliitika paketti (.pp): mypolicy.pp mypolicy.te
  • Kuidas installida kasutaja moodul: # semodule -i mypolicy.pp

30. Kuidas seadistada ĂŒksik protsess (domen) töötama lubava reĆŸiimiga: # semanage permissive -a httpd_t

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

32. Kuidas keelata kÔik lubavad domeenid: # semodule -d permissivedomains

33. SELinuxi MLS poliitika aktiveerimine: # yum install selinux-policy-mls
failis /etc/selinux/config:

SELINUX=permissive
SELINUXTYPE=mls

Veenduge, et SELinux töötaks lubavas reĆŸiimis: # setenforce 0
Kasutage skripti fixfiles, et tagada failide ĂŒmbermarkeerimine jĂ€rgmise taasalustamise ajal:

# fixfiles -F onboot # reboot

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

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

35. Selleks, et vaadata kasutajate SELinux ja Linuxi vastavust: # semanage login -l

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

37. Kasutaja kodukatalooge sildi parandamiseks (vajadusel): # chcon -R -l s2:c100 /home/john

38. KĂ€itumise vaatamiseks praeguseid kategooriaid: # chcat -L

39. Kategooriate muutmiseks vÔi omade loomise alustamiseks muutke faili jÀrgmiselt:

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

40. KÀivitada kÀsu vÔi skripti teatud failis, rolli ja kasutaja konteksti:

# 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 deaktiveeritud SELinuxiga:

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

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


42. Kui peate konteinerile andma tĂ€isĂŒsteemi juurdepÀÀsu:

  • Podman: # podman run --privileged 

  • Docker: # docker run --privileged 


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

Lingid:

Allikas: habr.com

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster