De oersetting fan it artikel waard spesifyk taret foar de learlingen fan 'e kursus .

Hjir krije jo antwurden op wichtige fragen oer it libben, it universum en alles yn Linux mei ferbettere feiligens.
"De wichtige wierheid dat dingen net altyd binne wat se lykje is gewoane kennis ..."
-Douglas Adams, De Hitchhiker's Guide to the Galaxy
Feilichheid. Ferhege betrouberens. Korrespondinsje. Belied. Four Horsemen of the Apocalypse sysadmin. Neist Ășs deistige taken - tafersjoch, reservekopy, ymplemintaasje, konfiguraasje, fernijing, ensfh - binne wy ââek ferantwurdlik foar de feiligens fan Ășs systemen. Sels dy systemen wĂȘr't de provider fan tredden advisearret dat wy ferbettere feiligens Ăștskeakelje. It fielt as wurk fan "Mission: Impossible."
Mei dit dilemma beslute guon systeembehearders te nimmen , om't se tinke dat se it antwurd nea witte sille op 'e grutte fraach fan it libben, it universum en dat alles. En sa't wy allegearre witte, is dat antwurd 42.
Yn 'e geast fan The Hitchhiker's Guide to the Galaxy, hjir binne 42 antwurden op wichtige fragen oer kontrÎle en gebrûk. op jo systemen.
1. SELinux â is in ferplicht tagongskontrĂŽlesysteem, wat betsjut dat elk proses in label hat. Elk bestĂąn, elke map en elk systeemobjekt hat ek in label. Beliedsregels regelje tagong tusken labelde prosessen en objekten. De kernel hanthavenet dizze regels.
2. De twa wichtichste begripen binne: Labeling - markearrings (bestannen, prosessen, havens, ensfh.) en Typ hanthavenjen (dat isolearret prosessen fan elkoar basearre op typen).
3. Korrekte labelformaat user:role:type:level (fakultatyf).
4. It doel fan befeiliging op meardere nivo's (Multi-Level Security - MLS) is om prosessen (domeinen) te behearjen basearre op it nivo fan feiligens fan 'e gegevens dy't se sille brĂ»ke. Bygelyks, in geheim proses kin net lĂȘze top geheime gegevens.
5. Befeiliging fan meardere kategoryen garandearje (Multi-Category Security - MCS) beskermet ferlykbere prosessen fan elkoar (bygelyks firtuele masines, OpenShift-motors, SE-sĂąnbakkenLinux, konteners, ensfh.).
6. Kernelparameters foar it feroarjen fan SE-modiLinux by it laden:
autorelabel=1â feroarsaket it systeem om relabeling Ășt te fierenselinux=0â de kernel laadt de SE-ynfrastruktuer netLinuxenforcing=0â laden yn permissive modus
7. As jo ââââit heule systeem opnij moatte markearje:
# touch /.autorelabel
#reboot
As de systeemmarkearring in grut oantal flaters befettet, moatte jo miskien bootje yn permissive modus foar it slagjen fan remarking.
8. Om te kontrolearjen oft SE ynskeakele isLinux: # getenforce
9. Om SE tydlik yn/Ășt te skeakeljenLinux: # setenforce [1|0]
10. SE-status kontrolearjeLinux: # sestatus
11. Konfiguraasjetriem: /etc/selinux/config
12. Hoe SE wurketLinuxHjir is in foarbyld fan markearring foar de Apache-webserver:
- BinĂȘre fertsjintwurdiging:
/usr/sbin/httpdâhttpd_exec_t - Konfiguraasjemap:
/etc/httpdâhttpd_config_t - Logtriemmap:
/var/log/httpd â httpd_log_t - YnhĂąld map:
/var/www/html â httpd_sys_content_t - Launch skript:
/usr/lib/systemd/system/httpd.service â httpd_unit_file_d - Procesje:
/usr/sbin/httpd -DFOREGROUND â httpd_t - Poarten:
80/tcp, 443/tcp â httpd_t, http_port_t
Proses rint yn kontekst httpd_t, kin ynteraksje mei in markearre foarwerp httpd_something_t.
13. In protte kommando's akseptearje in argumint -Z om kontekst te besjen, te meitsjen en te feroarjen:
ls -Zid -Zps -Znetstat -Zcp -Zmkdir -Z
Konteksten wurde fĂȘststeld as bestannen makke wurde basearre op 'e kontekst fan har Ăąldermap (mei guon ĂștsĂ»nderings). RPM's kinne konteksten fĂȘstigje lykas by ynstallaasje.
14. Der binne fjouwer haadredenen foar SE-flatersLinux, dy't yn mear detail beskreaun wurde yn paragrafen 15-21 hjirûnder:
- Labeling saken
- Fanwegen eat dat SELinux moat witte
- Fout yn SE-belied/applikaasjeLinux
- Jo ynformaasje kin kompromittearre wurde
15. Labeling probleem: as jo bestannen yn binne /srv/myweb binne ferkeard markearre, tagong kin wurde wegere. Hjir binne wat manieren om dit te reparearjen:
- As jo ââââit label kenne:
# semanage fcontext -a -t httpd_sys_content_t '/srv/myweb(/.*)?' - As jo ââââin bestĂąn kenne mei lykweardige markearring:
# semanage fcontext -a -e /srv/myweb /var/www - De kontekst weromsette (foar beide gefallen):
# restorecon -vR /srv/myweb
16. Labeling probleem: as jo it bestĂąn ferpleatse ynstee fan it te kopiearjen, sil it bestĂąn syn oarspronklike kontekst behĂąlde. Om dit probleem op te lossen:
- Feroarje it kontekstkommando mei it label:
# chcon -t httpd_system_content_t /var/www/html/index.html - Feroarje it kontekstkommando mei it linklabel:
# chcon --reference /var/www/html/ /var/www/html/index.html - De kontekst weromsette (foar beide gefallen):
# restorecon -vR /var/www/html/
17. as SELinux moatte witte, dat HTTPD harket op poarte 8585, fertel SELinux:
# semanage port -a -t http_port_t -p tcp 8585
18. SELinux moatte witte Booleaanske wearden dy't jo tastean om dielen fan it SE-belied te feroarjenLinux by runtime sûnder kennis fan SE-beliedsherskriuwingLinuxBygelyks, as jo wolle dat httpd e-post ferstjoert, fier dan yn: # setsebool -P httpd_can_sendmail 1
19. SELinux moatte witte logyske wearden foar it ynskeakeljen/Ăștskeakeljen fan SE-ynstellingenLinux:
- Om alle Booleaanske wearden te sjen:
# getsebool -a - Om in beskriuwing fan elk te sjen:
# semanage boolean -l - Om in Booleaanske wearde yn te stellen:
# setsebool [_boolean_] [1|0] - Foar in permaninte ynstallaasje, add
-P. Bygelyks:# setsebool httpd_enable_ftp_server 1 -P
20. SE-belied/applikaasjesLinux kin flaters befetsje, ynklusyf:
- Ungewoane koade paden
- Konfiguraasjes
- Stdout trochferwizing
- BestĂąnsbeskriuwing lekt
- Utfierber ûnthùld
- Min boude biblioteken
Iepenje tickets (ferslach net yntsjinje by Bugzilla; Bugzilla hat gjin SLA).
21. Jo ynformaasje kin kompromittearre wurdeas jo beheinde domeinen hawwe besykje te:
- Laad kernel modules
- SE-ĂŽftwongen modus ĂștskeakeljeLinux
- Skriuw nei
etc_t/shadow_t - Feroarje iptables regels
22. SE-arkLinux foar it ûntwikkeljen fan beliedsmodules:
# yum -y install setroubleshoot setroubleshoot-server
Reboot of opnij starte auditd nei ynstallaasje.
23. Gebrûk
journalctl om in list fan alle logs te sjen dy't ferbûn binne mei setroubleshoot:
# journalctl -t setroubleshoot --since=14:20
24. Gebrûk journalctl om alle logs te listjen dy't ferbûn binne mei in spesifike SE-tagLinux. Bygelyks:
# journalctl _SELINUX_CONTEXT=system_u:system_r:policykit_t:s0
25. As in SE-flater optreedtLinux logboek brûke setroubleshoot biedt ferskate mooglike oplossingen.
Bygelyks, fan 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. Logging: SELinux registrearret ynformaasje op in protte plakken:
- / var / log / berjochten
- /var/log/audit/audit.log
- /var/lib/setroubleshoot/setroubleshoot_database.xml
27. Logging: SE-fouten fineLinux yn it auditlogboek:
# ausearch -m AVC,USER_AVC,SELINUX_ERR -ts today
28. Om SE-berjochten te finenLinux Tagong ta Vector Cache (AVC) foar in spesifike tsjinst:
# ausearch -m avc -c httpd
29. Utility audit2allow sammelet ynformaasje Ășt logs fan ferbeane operaasjes en genereart dan SE-tastimmingsbeliedsregelsLinux. Bygelyks:
- Om in minsklik lĂȘsbere beskriuwing te meitsjen fan wĂȘrom tagong wegere wurdt:
# audit2allow -w -a - Om in type hanthaveningsregel te besjen dy't tagong wegere jout:
# audit2allow -a - Om in oanpaste module te meitsjen:
# audit2allow -a -M mypolicy - Opsje
-Mmakket in type hanthaveningsbestùn (.te) mei de opjûne namme en kompilearret de regel yn in beliedspakket (.pp):mypolicy.pp mypolicy.te - Om in oanpaste module te ynstallearjen:
# semodule -i mypolicy.pp
30. Om in apart proses (domein) te konfigurearjen om yn permissive modus te wurkjen: # semanage permissive -a httpd_t
31. As jo âââânet langer wolle dat it domein permissyf is: # semanage permissive -d httpd_t
32. Om alle permissive domeinen Ășt te skeakeljen: # semodule -d permissivedomains
33. MLS SE-belied ynskeakeljeLinux: # yum install selinux-policy-mls
ĐČ /etc/selinux/config:
SELINUX=permissyf
SELINUXTYPE=mls
Soargje derfoar dat SELinux wurket yn permissive modus: # setenforce 0
Brûk in skript fixfilesom te soargjen dat de bestannen opnij wurde markearre by de folgjende herstart:
# fixfiles -F onboot # reboot
34. Meitsje in brûker mei in spesifyk MLS-berik: # useradd -Z staff_u john
Mei help fan it kommando useradd, wize de nije brûker ta oan in besteande SE-brûkerLinux (yn dit gefal, staff_u).
35. Om de korrespondinsje tusken SE-brûkers te besjenLinux О Linux: # semanage login -l
36. Definiearje in spesifyk berik foar de brûker: # semanage login --modify --range s2:c100 john
37. Om it label fan 'e thĂșsmap fan 'e brĂ»ker te korrigearjen (as nedich): # chcon -R -l s2:c100 /home/john
38. Om hjoeddeistige kategoryen te besjen: # chcat -L
39. Om kategoryen te feroarjen of jo eigen te begjinnen, bewurkje it bestĂąn as folget:
/etc/selinux/_<selinuxtype>_/setrans.conf
40. Om in kommando of skript Ășt te fieren yn in spesifike triem, rol en brĂ»kerskontekst:
# runcon -t initrc_t -r system_r -u user_u yourcommandhere
-ttriem kontekst-rrol kontekst-ubrûker kontekst
41. Konteners dy't rinne mei SE ĂștskeakeleLinux:
- Podman:
# podman run --security-opt label=disable ⊠- Docker:
# docker run --security-opt label=disable âŠ
42. As jo ââââde kontener folsleine tagong moatte jaan ta it systeem:
- Podman:
# podman run --privileged ⊠- Docker:
# docker run --privileged âŠ
En no witte jo it antwurd al. Dus asjebleaft: gjin panyk en set SE oanLinux.
Ferwizings:
- by
- troch Dan Walsh
- by
- by
Boarne: www.habr.com
