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

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öö filmist 'Misjon: VĂ”imatu'.
Selle dilemmas seistes otsustavad mĂ”ned sĂŒsteemiadministraatorid vĂ”tta , 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 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 sildistamiseselinux=0â kernel ei laadita SELinux infrastruktuurienforcing=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 -Zid -Zps -Znetstat -Zcp -Zmkdir -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.html26. 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
-Mloob 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
-tfaili kontekst-rrolli kontekst-ukasutaja 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:
- by
- Dan Walshi poolt
- by
- by
Allikas: habr.com
