Përkthimi i artikullit është përgatitur posaçërisht për studentët e kursit .

Këtu do të merrni përgjigje për pyetje të rëndësishme rreth jetës, universit dhe gjithçkaje në Linux me siguri të përmirësuar.
«E vërtetë e rëndësishme është që gjërat nuk janë gjithmonë ato që duken, kjo është e njohur...»
―Douglas Adams, Udhëtimi me Autostop në Galaktikë
Siguria. Rritja e besueshmërisë. Përputhshmëria. Politika. Katër Kavalierët e Apokalipsit të sistem administratorit. Përveç detyrave tona të përditshme — monitorimi, kopjimi, implementimi, konfigurimi, përditësimi etj. — ne gjithashtu jemi përgjegjës për sigurinë e sistemeve tona. Edhe për ato sisteme ku ofruesi i jashtëm na rekomandon të çaktivizojmë sigurinë e përmirësuar. Kjo është si puna nga 'Misioni i Pamundur'.
Përballë kësaj dileme, disa administrues sistemi zgjedhin të marrin , sepse mendojnë se kurrë nuk do të dinë përgjigjen për pyetjen e madhe të jetës, universit dhe gjithçkaje. Dhe, siç e dimë të gjithë, kjo përgjigje është 42.
Në frymën e 'Udhëtimi me Autostop në galaktikë', këtu janë 42 përgjigje për pyetje të rëndësishme rreth menaxhimit dhe përdorimit në sistemet tuaja.
1. SELinux është një sistem për menaxhimin e qasjes me detyrim, që do të thotë se çdo proces ka një etiketë (label). Çdo skedar, katalog dhe objekt sistemik gjithashtu ka etiketa. Rregullat e politikës menaxhojnë qasjen midis proceseve dhe objekteve të etiketuar. Bërthama siguron zbatimin e këtyre rregullave.
2. Dy konceptet më të rëndësishme janë: Etiketimi — etiketimi (skedarët, proceset, portet etj.) dhe Mbikëqyrja e llojit (e cila ndan proceset nga njëra-tjetra në bazë të llojeve).
3. Formati i duhur i etiketës user:role:type:level (opsional).
4. Qëllimi i sigurimit të sigurisë shumëllojshmëri (Siguria Multi-Level - MLS) është të menaxhojë proceset (domenet) sipas nivelit të sigurisë së të dhënave që do të përdorin. Për shembull, një proces sekret nuk mund ta lexojë informacionin super sekret.
5. Sigurimi i sigurisë me shumë kategori (Siguria Multi-Kategori - MCS) mbron procese të ngjashme nga njëra-tjetra (p.sh. makina virtuale, mekanizmat OpenShift, ambientet e SELinux, kontejnerët etj.).
6. Parametrat e bërthamës për ndryshimin e mënyrave të SELinux gjatë ngarkimit:
autorelabel=1→ bën që sistemi të nisë ri-etiketiminselinux=0→ bërthama nuk ngarkon infrastrukturën e SELinuxenforcing=0→ ngarkohet në mënyrë lezhere
7. Nëse ju nevojitet të ri-etiketoni tërë sistemin:
# touch /.autorelabel
#reboot
Nëse etiketimi i sistemit ka shumë gabime, mund të nevojitet të ngarkohet në mënyrë lezhere për të kaluar me sukses ri-etiketimin.
8. Për të kontrolluar nëse SELinux është aktiv: # getenforce
9. Për të aktivizuar/apësuar temporalisht SELinux: # setenforce [1|0]
10. Kontrolli i statusit të SELinux: # sestatus
11. Skedari i konfigurimit: /etc/selinux/config
12. Si funksionon SELinux? Ja një shembull i etiketimit për serverin web Apache:
- Përfaqësimi binar:
/usr/sbin/httpd→httpd_exec_t - Katalogu i konfigurimit:
/etc/httpd→httpd_config_t - Katalogu i skedarëve të logut:
/var/log/httpd → httpd_log_t - Katalogu i përmbajtjes:
/var/www/html → httpd_sys_content_t - Skedari i nisjes:
/usr/lib/systemd/system/httpd.service → httpd_unit_file_d - Procesi:
/usr/sbin/httpd -DFOREGROUND → httpd_t - Portet:
80/tcp, 443/tcp → httpd_t, http_port_t
Procesi i lançuar në kontekstin httpd_t, mund të ndërveprojë me objektin me etiketën httpd_something_t.
13. Shumë komanda pranojnë argumentin -Z për shikimin, krijimin dhe ndryshimin e konteksteve:
ls -Zid -Zps -Znetstat -Zcp -Zmkdir -Z
Kontekste të vendosen kur skedarët krijohen në bazë të konteksteve të drejtorive prindërore (me disa përjashtime). RPM mund të vendosin kontekste gjatë instalimit.
14. Ka katër arsyet kryesore për gabimet SELinux, të cilat janë shqiptuar më në detaje në pikat 15-21 më poshtë:
- Problemet me etiketimin
- Për shkak të diçkaje që SELinux duhet të dijë
- Gabim në politikën/aplikacionin SELinux
- Informacioni juaj mund të jetë komprometuar
15. Problemi me etiketimin: nëse skedarët tuaj janë /srv/myweb etiketuar gabim, qasja mund të jetë e ndaluar. Ja disa mënyra për ta riparuar këtë:
- Nëse e dini etiketën:
# semanage fcontext -a -t httpd_sys_content_t '/srv/myweb(/.*)?' - Nëse e dini skedarin me etiketimin e barabartë:
# semanage fcontext -a -e /srv/myweb /var/www - Rikthimi i kontekstit (për të dy rastet):
# restorecon -vR /srv/myweb
16. Problemi me etiketimin: nëse e zhvendosni skedarin në vend që ta kopjoni, skedari do të mbajë kontekstin e tij origjinal. Për ta riparuar këtë:
- Ndryshoni komandën e kontekstit me etiketën:
# chcon -t httpd_system_content_t /var/www/html/index.html - Ndryshoni komandën e kontekstit me etiketën e lidhjes:
# chcon --reference /var/www/html/ /var/www/html/index.html - Riktheni kontekstin (për të dy rastet):
# restorecon -vR /var/www/html/
17. Nëse SELinux duhet të dijë, që HTTPD dëgjon portin 8585, informoni SELinux:
# semanage port -a -t http_port_t -p tcp 8585
18. SELinux duhet të dijë vlerat logjike që lejojnë ndryshimin e pjesëve të politikës SELinux gjatë ekzekutimit pa dijeni për riprogramimin e politikës SELinux. Për shembull, nëse dëshironi që httpd të dërgojë email, futni: # setsebool -P httpd_can_sendmail 1
19. SELinux duhet të dijë vlerat logjike që aktivizojnë/deaktivizojnë cilësimet SELinux:
- Për të parë të gjitha vlerat logjike:
# getsebool -a - Për të parë përshkrimin e secilës:
# semanage boolean -l - Për të vendosur një vlerë logjike:
# setsebool [_boolean_] [1|0] - Për vendosje të përhershme shtoni
-P. Për shembull:# setsebool httpd_enable_ftp_server 1 -P
20. Politikat/aplikacionet SELinux mund të përmbajnë gabime, duke përfshirë:
- Rrugë të pazakonta të kodit
- Konfigurimet
- Rivendosja e stdout
- Derdhjet e descriptorëve të skedarëve
- Memoria ekzekutuese
- Biblioteka të ndërtuara keq
Hapni biletat (mos dërgoni raport në Bugzilla; në Bugzilla nuk ka SLA).
21. Informacioni juaj mund të jetë komprometuar, nëse keni domene të kufizuara që përpiqen:
- Të ngarkoni module të bërthamës
- Të çaktivizoni modin e detyrueshëm SELinux
- Të shkruani në
etc_t/shadow_t - Të ndryshoni rregullat e iptables
22. Mjetet SELinux për zhvillimin e moduleve të politikës:
# yum -y install setroubleshoot setroubleshoot-server
Rifilloni ose rinisni auditd pas instalimit.
23. Përdorni
journalctl për të shfaqur listën e të gjitha logjeve të lidhura me setroubleshoot:
# journalctl -t setroubleshoot --since=14:20
24. Përdorni journalctl për të shfaqur listën e të gjitha logjeve të lidhura me një etiketë të caktuar SELinux. Për shembull:
# journalctl _SELINUX_CONTEXT=system_u:system_r:policykit_t:s0
25. Kur ndodh një gabim SELinux, përdorni logun setroubleshoot me disa zgjidhje të mundshme.
Për shembull, nga journalctl:
Jun 14 19:41:07 web1 setroubleshoot: SELinux po parandalon httpd nga qasje në atributet e skedarit /var/www/html/index.html. Për mesazhin e plotë, ekzekutoni: sealert -l 12fd8b04-0119-4077-a710-2d0e0ee5755e
# sealert -l 12fd8b04-0119-4077-a710-2d0e0ee5755e
SELinux po parandalon httpd nga qasje në atributet e skedarit /var/www/html/index.html.
***** Sugerimi i plugin-it restorecon (99.5 besim) ************************
Nëse dëshironi të rregulloni etiketën,
/var/www/html/index.html etiketë standarde duhet të jetë httpd_syscontent_t.
Pastaj mund të ekzekutoni restorecon.
Bëni
# /sbin/restorecon -v /var/www/html/index.html26. Logimi: SELinux regjistron informacionin në shumë vende:
- /var/log/messages
- /var/log/audit/audit.log
- /var/lib/setroubleshoot/setroubleshoot_database.xml
27. Logimi: kërkoni gabime SELinux në logun e auditit:
# ausearch -m AVC,USER_AVC,SELINUX_ERR -ts today
28. Për të gjetur mesazhet SELinux Access Vector Cache (AVC) për një shërbim të caktuar:
# ausearch -m avc -c httpd
29. Utilitari audit2allow grumbullon informacion nga logjet e operacioneve të ndaluara dhe pastaj gjeneron rregullat e politikës për lejet SELinux. Për shembull:
- Për të krijuar një përshkrim të lehtë për t'u lexuar për arsyen e refuzimit të qasjes:
# audit2allow -w -a - Për të parë rregullin e detyrimit të llojeve që lejon qasjen e ndaluar:
# audit2allow -a - Për të krijuar një moduli të personalizuar:
# audit2allow -a -M mypolicy - Opcioni
-Mkrijon një skedar të detyrimit të llojit (.te) me emrin e caktuar dhe kompilon rregullin në një paketë politike (.pp):mypolicy.pp mypolicy.te - Për të instaluar një moduli të personalizuar:
# semodule -i mypolicy.pp
30. Për të konfiguruar një proces të veçantë (domen) për të punuar në modin permissive: # semanage permissive -a httpd_t
31. Nëse nuk dëshironi më që domeni të jetë permissive: # semanage permissive -d httpd_t
32. Për të fikur të gjitha domenet permissive: # semodule -d permissivedomains
33. Aktivizimi i politikës MLS të SELinux: # yum install selinux-policy-mls
në /etc/selinux/config:
SELINUX=permissive
SELINUXTYPE=mls
Sigurohuni që SELinux funksionon në modin permissive: # setenforce 0
Përdorni skriptin fixfiles, për të garantuar që skedarët do të rimarkohen gjatë rifillimit të ardhshëm:
# fixfiles -F onboot # reboot
34. Krijoni një përdorues me një gamë të caktuar MLS: # useradd -Z staff_u john
Duke përdorur komandën useradd, maponi përdoruesin e ri me një përdorues ekzistues SELinux (në këtë rast, staff_u).
35. Për të parë përputhjen midis përdoruesve SELinux dhe Linux: # semanage login -l
36. Përcaktoni një gamë të caktuar për përdoruesin: # semanage login --modify --range s2:c100 john
37. Për të rregulluar etiketën në katalogun e shtëpisë të përdoruesit (nëse nevojitet): # chcon -R -l s2:c100 /home/john
38. Për të parë kategoritë aktuale: # chcat -L
39. Për të ndryshuar kategoritë ose për të filluar të krijoni të tuat, ndryshoni skedarin si më poshtë:
/etc/selinux/_<selinuxtype>_/setrans.conf
40. Për të ekzekutuar një komandë ose skript në një skedar të caktuar, rolin dhe kontekstin e përdoruesit:
# runcon -t initrc_t -r system_r -u user_u yourcommandhere
-tkonteksti i skedarit-rkonteksti i rolit-ukonteksti i përdoruesit
41. Kontejnerët që funksionojnë me SELinux të çaktivizuar:
- Podman:
# podman run --security-opt label=disable … - Docker:
# docker run --security-opt label=disable …
42. Nëse duhet t'i jepni kontejnerit qasje të plotë në sistem:
- Podman:
# podman run --privileged … - Docker:
# docker run --privileged …
Dhe tani ju tashmë e dini përgjigjen. Prandaj, ju lutem: mos panikoni dhe aktivizoni SELinux.
Linket:
- by
- nga Dan Walsh
- by
- by
Burimi: habr.com
