Artikli tõlge on ette valmistatud spetsiaalselt kursuse üliõpilastele .

Здесь вы получите ответы на важные вопросы о жизни, вселенной и всем таком в Linux с улучшенной безопасностью.
«Важная истина, что вещи не всегда являются тем, чем кажутся, общеизвестна…»
―Дуглас Адамс, Автостопом по Галактике
Безопасность. Повышение надежности. Соответствие. Политика. Четыре Всадника Апокалипсиса сисадмина. В дополнение к нашим ежедневным задачам — мониторингу, резервному копированию, внедрению, настройке, обновлению и т. д. — мы также отвечаем за безопасность наших систем. Даже тех систем, где сторонний провайдер рекомендует нам отключить усиленную безопасность. Это похоже на работу из “Миссия невыполнима”.
Столкнувшись с этой дилеммой, некоторые системные администраторы решают взять , потому что они думают, что никогда не узнают ответ на большой вопрос жизни, вселенной и всем таком. И, как мы все знаем, этот ответ 42.
В духе “Автостопом по галактике”, здесь приведены 42 ответа на важные вопросы об управлении и использовании в ваших системах.
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
