Përkthimi i artikullit është përgatitur veçanë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 çdo gjëje tjetër në Linux me siguri të përmirësuar.
«E vĂ«rteta e rĂ«ndĂ«sishme Ă«shtĂ« se gjĂ«rat nuk janĂ« gjithmonĂ« ajo qĂ« duken, Ă«shtĂ« e njohurâŠÂ»
âDouglas Adams, UdhĂ«timi me gishta nĂ« GalaktikĂ«
Siguria. Rritja e besueshmĂ«risĂ«. PĂ«rputhshmĂ«ria. Politika. KatĂ«r JezuitĂ«t e Apokalipsit tĂ« administratorit tĂ« sistemit. PĂ«rveç detyrave tona tĂ« pĂ«rditshme â monitorimi, backup, 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 palĂ«s sĂ« tretĂ« na rekomandon tĂ« çaktivizojmĂ« sigurinĂ« e pĂ«rmirĂ«suar. Kjo Ă«shtĂ« si puna nĂ« âMisionin e PashmangshĂ«mâ.
Duke u përballur me këtë dilemë, disa administratorë sistemi vendosin të marrin , sepse mendojnë se nuk do ta dinë kurrë përgjigjen e pyetjes së madhe rreth jetës, universit dhe çdo gjëje tjetër. Dhe, siç e dimë të gjithë, kjo përgjigje është 42.
NĂ« frymĂ«n e âUdhĂ«timit me gishta nĂ« galaktikĂ«â, kĂ«tu janĂ« 42 pĂ«rgjigje pĂ«r pyetje tĂ« rĂ«ndĂ«sishme mbi menaxhimin dhe pĂ«rdorimin nĂ« sistemet tuaja.
1. SELinux Ă«shtĂ« njĂ« sistem i menaxhimit tĂ« detyruar tĂ« qasjes, qĂ« do tĂ« thotĂ« se çdo proces ka njĂ« etiketĂ« (label). Ădo skedar, katror dhe objekt sistemik gjithashtu kanĂ« etiketa. Rregullat e politikĂ«s menaxhojnĂ« qasjen midis proceseve dhe objekteve tĂ« etiketuar. BĂ«rthama garanton zbatimin e kĂ«tyre rregullave.
2. Dy konceptet mĂ« tĂ« rĂ«ndĂ«sishme janĂ«: Etiketimi â etiketime (skedarĂ«, procese, porte etj.) dhe Zbatimi i tipit (i cili izolon proceset nga njĂ«ra-tjetra nĂ« bazĂ« tĂ« llojeve).
3. Formati i duhur i etiketës user:role:type:level (opsionale).
4. Qëllimi i sigurimit të sigurisë shumë-nivel është menaxhimi i proceseve (domenëve) në bazë të nivelit të sigurisë së të dhënave që do të përdorin. Për shembull, një proces sekret nuk mund të lexojë të dhëna të mbrojtura.Sigurimi i sigurisë shumë-kategori është mbrojtja e proceseve të ngjashme nga njëra-tjetra (për shembull, makinat virtuale, mekanizmat OpenShift, rërëzit SELinux, kontejnerët etj.).Parametrat e bërthamës për të ndryshuar regjimet SELinux gjatë nisjes:
5. autorelabel=1â bĂ«n qĂ« sistemi tĂ« nisĂ« ri-etiketiminselinux=0
6. â bĂ«rthama nuk ngarkon infrastrukturĂ«n SELinux
enforcing=0â ngarkimi nĂ« modu permissiveâ ngarkimi nĂ« modin e lejuarâ bĂ«rthama nuk ngarkon infrastrukturĂ«n SELinuxenforcing=0â ngarkimi nĂ« modin permissive
7. Nëse ju nevojitet të rimerkoni të gjithë sistemin:
# touch /.autorelabel
#reboot
Nëse merkimi i sistemit përmban një numër të madh gabimesh, mund t'ju nevojitet ngarkimi në modin permissive për t'u siguruar që rimerkimi të kalojë me sukses.
8. Për të verifikuar nëse SELinux është aktiv: # getenforce
9. Për të aktivizuar/çaktivizuar përkohësisht SELinux: # setenforce [1|0]
10. Kontrolli i statusit të SELinux: # sestatus
11. Skeda e konfigurimit: /etc/selinux/config
12. Si funksionon SELinux? Ky është një shembull i një merkimi për serverin e uebit Apache:
- Përfaqësimi binar:
/usr/sbin/httpdâhttpd_exec_t - Katalogu i konfigurimit:
/etc/httpdâhttpd_config_t - Katalogu i skedave tĂ« tĂ« dhĂ«nave:
/var/log/httpd â httpd_log_t - Katalogu i pĂ«rmbajtjes:
/var/www/html â httpd_sys_content_t - Skripti i nisjes:
/usr/lib/systemd/system/httpd.service â httpd_unit_file_d - Procesi:
/usr/sbin/httpd -DFOREGROUND â httpd_t - Portat:
80/tcp, 443/tcp â httpd_t, http_port_t
Procesi që ekzekutohet në kontekstin httpd_t, mund të interaktojë me objektin me etiketë httpd_something_t.
13. Shumë komanda pranojnë argumentin -Z për të parë, krijuar dhe ndryshuar kontekstin:
ls -Zid -Zps -Znetstat -Zcp -Zmkdir -Z
Kontekste vendosen kur skedat krijohen mbi bazën e kontekstit të katalogut të tyre prind (me disa përjashtime). RPM mund të vendosin kontekste gjatë instalimit.
14. Ka katër arsye kryesore për gabimet e SELinux, të cilat janë përshkruar më hollësisht në pikën 15-21 më poshtë:
- Problemet me etiketimin
- Për ndonjë gjë që SELinux duhet të dijë
- Gabim në politikën/aplikacionin e SELinux
- Informacioni juaj mund të jetë i komprometuar
15. Problemi me etiketimin: nëse skedat tuaj janë /srv/myweb të etiketuar gabim, mund të ndalohet qasja. Këtu janë disa mënyra për ta rregulluar këtë:
- Nëse e dini etiketën:
# semanage fcontext -a -t httpd_sys_content_t '/srv/myweb(/.*)?' - Nëse e dini skedën me etiketën e barabartë:
# semanage fcontext -a -e /srv/myweb /var/www - Rivendosni kontekstin (për të dy rastet):
# restorecon -vR /srv/myweb
16. Problemi me etiketimin: nëse e lëvizni skedën në vend që ta kopjoni, skeda do të ruajë kontekstin e saj origjinal. Për ta rregulluar këtë:
- Ndryshoni komandën e kontekstit me etiketimin:
# 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 - Rivendosni 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ë vlera logjike që lejojnë ndryshimin e pjesëve të politikës së SELinux gjatë ekzekutimit pa njohuri për riparimin e politikës së SELinux. Për shembull, nëse dëshironi që httpd të dërgojë email, shkruani: # setsebool -P httpd_can_sendmail 1
19. SELinux duhet të dijë vlera logjike të aktivizimit/çaktivizimit të cilësimeve të 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 një vendosje të përhershme shtoni
-P. Për shembull:# setsebool httpd_enable_ftp_server 1 -P
20. Politikat/aplikacionet e SELinux mund të përmbajnë gabime, duke përfshirë:
- Rrugët e pazakonta të kodit
- Konfigurimet
- Redirectimi stdout
- Shkëputjet e deshkruesve të skedarëve
- Memoria ekzekutuese
- Biblioteka të ndërtuara keq
Hapni tiketë (mos dërgoni raport në Bugzilla; në Bugzilla nuk ka SLA).
21. Informacioni juaj mund të jetë i komprometuar, nëse keni domain të kufizuara që përpiqen të:
- Ngarkoni module bërthamore
- Ăaktivizoni modin e zbatuar SELinux
- Shkruani në
etc_t/shadow_t - Ndryshoni rregullat iptables
22. Mjetet SELinux për zhvillimin e moduleve të politikës:
# yum -y install setroubleshoot setroubleshoot-server
Rinisni ose ripërtërini auditd pas instalimit.
23. Përdorni
journalctl për të shfaqur listën e të gjitha logeve që lidhen me setroubleshoot:
# journalctl -t setroubleshoot --since=14:20
24. Përdorni journalctl për të shfaqur listën e të gjitha logeve që lidhen 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 propozime për zgjidhje të mundshme.
Për shembull, nga journalctl:
Jun 14 19:41:07 web1 setroubleshoot: SELinux po parandalon httpd nga access atributin në skedarin /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 access atributin në skedarin /var/www/html/index.html.
***** Plugin restorecon (99.5 besueshmëri) sugjeron ************************
Nëse dëshironi të rregulloni etiketën,
/var/www/html/index.html etiketa e parazgjedhur duhet të jetë httpd_syscontent_t.
Më pas mund të restorni etiketën.
Bëni
# /sbin/restorecon -v /var/www/html/index.html26. Logimi: SELinux regjistron informacion në shumë vende:
- /var/log/messages
- /var/log/audit/audit.log
- /var/lib/setroubleshoot/setroubleshoot_database.xml
27. Logimi: kërkimi i gabimeve 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. Mjeti audit2allow grupin informacionin nga logjet e operacioneve të ndaluara, dhe më pas gjeneron rregulla për politikën e lejes SELinux. Për shembull:
- Për të krijuar një përshkrim të lexueshëm të shkakut të refuzimit të aksesit:
# audit2allow -w -a - Për të parë rregullin e detyrueshëm që lejon aksesin e ndaluar:
# audit2allow -a - Për të krijuar një modul përdoruesi:
# audit2allow -a -M mypolicy - Opcioni
-Mkrijon një skedë të detyrueshme për tipin (.te) me emrin e dhënë dhe kompilon rregullën në një paketë politke (.pp):mypolicy.pp mypolicy.te - Për të instaluar modul përdoruesi:
# semodule -i mypolicy.pp
30. Për të konfiguruar një proces të veçantë (domain) për të punuar në modin permissive: # semanage permissive -a httpd_t
31. Nëse nuk dëshironi më që domain të jetë permissive: # semanage permissive -d httpd_t
32. Për të çaktuar të gjithë domainet 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 të funksionojë në modin permissive: # setenforce 0
Përdorni skriptin fixfiles, për të garantuar që skedarët do të rimarkohen në rinisjen e ardhshme:
# 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, lidhni përdoruesin e ri me përdoruesin ekzistues SELinux (në këtë rast, staff_u).
35. Për të parë përputhshmërinë mes përdoruesve SELinux dhe Linux: # semanage login -l
36. Për të përcaktuar një gamë të caktuar për përdoruesin: # semanage login --modify --range s2:c100 john
37. Për të korrigjuar etiketën në katalogun e shtëpisë së përdoruesit (nëse është e nevojshme): # 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, modifikoni skedarin si në vijim:
\/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ë që punojnë me SELinux të çaktivizuar:
- Podman:
# podman run --security-opt label=disable ⊠- Docker:
# docker run --security-opt label=disable âŠ
42. Nëse duhet të jepni një kontejnerit akses të plotë në sistem:
- Podman:
# podman run --privileged ⊠- Docker:
# docker run --privileged âŠ
Dhe tani ju tashmë e dini përgjigjen. Prandaj, ju lutem: mos u panicni dhe aktivizoni SELinux.
Lidhjet:
- duke
- nga Dan Walsh
- duke
- duke
Burimi: habr.com
