Preklad článku bol pripravený špeciálne pre študentov kurzu .

Tu nájdete odpovede na dôležité otázky o živote, vesmíre a všetkom, čo sa deje v... Linux so zvýšenou bezpečnosťou.
„Dôležitá pravda, že veci nie sú vždy také, aké sa zdajú byť, je všeobecne známa...“
―Douglas Adams, Stopárov sprievodca po Galaxii
Bezpečnosť. Spoľahlivosť. Súlad. Politika. Štyria jazdci apokalypsy systémových administrátorov. Okrem našich každodenných úloh – monitorovania, zálohovania, nasadzovania, konfigurácie, aktualizácií atď. – sme zodpovední aj za bezpečnosť našich systémov. Dokonca aj tých systémov, u ktorých poskytovateľ tretej strany odporúča vypnúť rozšírené zabezpečenie. Zdá sa, že to funguje. z filmu „Misia nemožná“.
Tvárou v tvár tejto dileme sa niektorí správcovia systému rozhodnú , pretože si myslia, že nikdy nebudú poznať odpoveď na veľkú otázku života, vesmíru a všetkého ostatného. A ako všetci vieme, táto odpoveď je 42.
V duchu Stopárovho sprievodcu po Galaxii prinášame 42 odpovedí na dôležité otázky týkajúce sa ovládania a používania. vo vašich systémoch.
1. SELinux — je povinný systém riadenia prístupu, čo znamená, že každý proces má označenie. Každý súbor, adresár a systémový objekt má tiež označenie. Pravidlá politiky riadia prístup medzi označenými procesmi a objektmi. Jadro vynucuje dodržiavanie týchto pravidiel.
2. Dva najdôležitejšie koncepty sú: označovanie — označovanie (súborov, procesov, portov atď.) a Vynucovanie typu (ktorý izoluje procesy od seba na základe typov).
3. Správny formát štítku user:role:type:level (voliteľné).
4. Účelom zabezpečenia viacúrovňovej bezpečnosti (Viacúrovňové zabezpečenie (MLS)) je správa procesov (domén) na základe úrovne zabezpečenia údajov, ktoré budú používať. Napríklad tajný proces nemôže čítať prísne tajné údaje.
5. Zabezpečenie bezpečnosti vo viacerých kategóriách (Viackategóriová bezpečnosť – MCS) chráni podobné procesy navzájom (napr. virtuálne stroje, OpenShift enginy, SE sandboxy)Linux, kontajnery atď.).
6. Parametre jadra pre zmenu SE režimovLinux pri nakladaní:
autorelabel=1→ núti systém spustiť preznačovanieselinux=0→ jadro nezaťažuje infraštruktúru SELinuxenforcing=0→ spustenie v povolenom režime
7. Ak potrebujete preznačiť celý systém:
# touch /.autorelabel
#reboot
Ak označenie systému obsahuje veľký počet chýb, možno budete musieť systém spustiť v permisívnom režime, aby sa opätovné označenie úspešne prebehlo.
8. Ak chcete skontrolovať, či je SE povolenéLinux: # getenforce
9. Dočasné zapnutie/vypnutie SELinux: # setenforce [1|0]
10. Kontrola stavu SELinux: # sestatus
11. Konfiguračný súbor: /etc/selinux/config
12. Ako funguje SELinuxTu je príklad označenia pre webový server Apache:
- Binárna reprezentácia:
/usr/sbin/httpd→httpd_exec_t - Konfiguračný adresár:
/etc/httpd→httpd_config_t - Adresár súborov denníka:
/var/log/httpd → httpd_log_t - Adresár obsahu:
/var/www/html → httpd_sys_content_t - Spúšťací skript:
/usr/lib/systemd/system/httpd.service → httpd_unit_file_d - postup:
/usr/sbin/httpd -DFOREGROUND → httpd_t - Porty:
80/tcp, 443/tcp → httpd_t, http_port_t
Proces bežiaci v kontexte httpd_t, môže interagovať s označeným objektom httpd_something_t.
13. Mnoho príkazov akceptuje argument -Z na zobrazenie, vytvorenie a úpravu kontextu:
ls -Zid -Zps -Znetstat -Zcp -Zmkdir -Z
Kontexty sa nastavujú pri vytváraní súborov na základe kontextu ich nadradeného adresára (s niekoľkými výnimkami). RPM balíky môžu nastavovať kontexty počas inštalácie aj počas behu.
14. Existujú štyri hlavné dôvody chýb SELinux, ktoré sú podrobnejšie opísané v odsekoch 15 – 21 nižšie:
- Problémy s označovaním
- Kvôli niečomu, čo SELinux musí vedieť
- Chyba v politike/aplikácii SELinux
- Vaše informácie môžu byť ohrozené
15. Problém s označovaním: ak sú vaše súbory v /srv/myweb Ak sú označené nesprávne, prístup môže byť zamietnutý. Tu je niekoľko spôsobov, ako to opraviť:
- Ak poznáte označenie:
# semanage fcontext -a -t httpd_sys_content_t '/srv/myweb(/.*)?' - Ak poznáte súbor s ekvivalentným označením:
# semanage fcontext -a -e /srv/myweb /var/www - Obnovenie kontextu (v oboch prípadoch):
# restorecon -vR /srv/myweb
16. Problém s označovaním: Ak súbor presuniete namiesto kopírovania, súbor si zachová svoj pôvodný kontext. Ak chcete tento problém vyriešiť:
- Zmeňte kontextový príkaz s popisom:
# chcon -t httpd_system_content_t /var/www/html/index.html - Zmeňte kontextový príkaz s označením odkazu:
# chcon --reference /var/www/html/ /var/www/html/index.html - Obnoviť kontext (pre oba prípady):
# restorecon -vR /var/www/html/
17. Ak SELinux potrebujem vedieť, že HTTPD počúva na porte 8585, povedzte SELinux:
# semanage port -a -t http_port_t -p tcp 8585
18. SELinux potrebujem vedieť Boolovské hodnoty, ktoré vám umožňujú zmeniť časti politiky SELinux za behu bez znalosti prepisovania politík SELinuxNapríklad, ak chcete, aby httpd odosielal e-maily, zadajte: # setsebool -P httpd_can_sendmail 1
19. SELinux potrebujem vedieť logické hodnoty pre povolenie/zakázanie nastavení SELinux:
- Ak chcete zobraziť všetky logické hodnoty:
# getsebool -a - Ak chcete zobraziť popis každého z nich:
# semanage boolean -l - Nastavenie logickej hodnoty:
# setsebool [_boolean_] [1|0] - Pre trvalú inštaláciu pridajte
-P, Napríklad:# setsebool httpd_enable_ftp_server 1 -P
20. Zásady/žiadosti SELinux môže obsahovať chyby, vrátane:
- Nezvyčajné cesty kódu
- Konfigurácie
- Presmerovanie stdout
- Úniky deskriptorov súborov
- Spustiteľná pamäť
- Zle postavené knižnice
Otvorené tikety (neposielajte hlásenie do Bugzilly; Bugzilla nemá SLA).
21. Vaše informácie môžu byť ohrozené, ak máte obmedzené domény, ktoré sa snažia:
- Načítanie modulov jadra
- Zakázať vynútený režim SELinux
- Napísať
etc_t/shadow_t - Zmena pravidiel iptables
22. Nástroje SELinux pre vývoj politických modulov:
# yum -y install setroubleshoot setroubleshoot-server
Reštart alebo reštart auditd po inštalácii.
23. použitie
journalctl zobraziť zoznam všetkých protokolov súvisiacich s setroubleshoot:
# journalctl -t setroubleshoot --since=14:20
24. použitie journalctl zobraziť zoznam všetkých protokolov priradených ku konkrétnej značke SELinux, Napríklad:
# journalctl _SELINUX_CONTEXT=system_u:system_r:policykit_t:s0
25. Keď sa vyskytne chyba SELinux použiť protokol setroubleshoot s návrhom niekoľkých možných riešení.
Napríklad 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.html26. Ťažba dreva: SELinux zaznamenáva informácie na mnohých miestach:
- / Var / log / messages
- /var/log/audit/audit.log
- /var/lib/setroubleshoot/setroubleshoot_database.xml
27. Záznamy: Hľadanie chýb SELinux v protokole auditu:
# ausearch -m AVC,USER_AVC,SELINUX_ERR -ts today
28. Vyhľadanie správ SELinux Prístup k vektorovej vyrovnávacej pamäti (AVC) pre konkrétnu službu:
# ausearch -m avc -c httpd
29. Užitočnosť audit2allow zhromažďuje informácie zo záznamov o zakázaných operáciách a následne generuje pravidlá politiky povolení SELinux, Napríklad:
- Ak chcete vytvoriť čitateľný popis dôvodu odmietnutia prístupu:
# audit2allow -w -a - Ak chcete zobraziť pravidlo presadzovania typu, ktoré povoľuje odmietnutý prístup:
# audit2allow -a - Vytvorenie vlastného modulu:
# audit2allow -a -M mypolicy - Možnosť
-MVytvorí súbor vynucovania typu (.te) so zadaným názvom a skompiluje pravidlo do balíka politík (.pp):mypolicy.pp mypolicy.te - Inštalácia vlastného modulu:
# semodule -i mypolicy.pp
30. Ak chcete nakonfigurovať samostatný proces (doménu) na spustenie v permisívnom režime: # semanage permissive -a httpd_t
31. Ak už nechcete, aby bola doména permisívna: # semanage permissive -d httpd_t
32. Ak chcete zakázať všetky povolené domény: # semodule -d permissivedomains
33. Povolenie politiky MLS SELinux: # yum install selinux-policy-mls
в /etc/selinux/config:
SELINUX=povolený
SELINUXTYPE=mls
Uistite sa, že SELinux pracuje v permisívnom režime: # setenforce 0
Použite skript fixfilesaby sa zabezpečilo, že súbory budú pri ďalšom reštarte premenované:
# fixfiles -F onboot # reboot
34. Vytvorte používateľa s konkrétnym rozsahom MLS: # useradd -Z staff_u john
Pomocou príkazu useradd, namapujte nového používateľa na existujúceho používateľa SELinux (v tomto prípade, staff_u).
35. Zobrazenie korešpondencie medzi používateľmi SELinux и Linux: # semanage login -l
36. Definujte konkrétny rozsah pre používateľa: # semanage login --modify --range s2:c100 john
37. Ak chcete opraviť označenie v domovskom adresári používateľa (ak je to potrebné): # chcon -R -l s2:c100 /home/john
38. Ak chcete zobraziť aktuálne kategórie: # chcat -L
39. Ak chcete zmeniť kategórie alebo začať vytvárať vlastné, upravte súbor takto:
/etc/selinux/_<selinuxtype>_/setrans.conf
40. Ak chcete spustiť príkaz alebo skript v konkrétnom súbore, role a kontexte používateľa:
# runcon -t initrc_t -r system_r -u user_u yourcommandhere
-tkontext súboru-rkontext roly-ukontext používateľa
41. Kontajnery spustené s vypnutým SELinux:
- Podman:
# podman run --security-opt label=disable … - docker:
# docker run --security-opt label=disable …
42. Ak potrebujete udeliť kontajneru plný prístup k systému:
- Podman:
# podman run --privileged … - docker:
# docker run --privileged …
A teraz už odpoveď poznáte. Takže prosím: neprepadajte panike a zapnite SE.Linux.
odkazy:
- by
- od Dana Walsha
- by
- by
Zdroj: hab.com
