ProHoster > Blog > administratë > Fletë mashtrimi SELinux për administratorët e sistemit: 42 përgjigje për pyetje të rëndësishme
Fletë mashtrimi SELinux për administratorët e sistemit: 42 përgjigje për pyetje të rëndësishme
Përkthimi i artikullit u përgatit posaçërisht për studentët e kursit "Administrator Linux".
Këtu do të merrni përgjigje për pyetje të rëndësishme për jetën, universin dhe gjithçka në Linux me siguri të përmirësuar.
“E vërteta e rëndësishme që gjërat nuk janë gjithmonë ashtu siç duken është njohuri e zakonshme...”
- Douglas Adams, Udhëzuesi i Hitchhiker -it për Galaxy
Siguria. Rritja e besueshmërisë. Korrespondencë. Politika. Katër kalorës të Apokalipsit sysadmin. Përveç detyrave tona të përditshme - monitorimi, rezervimi, zbatimi, konfigurimi, përditësimi, etj. - ne jemi gjithashtu përgjegjës për sigurinë e sistemeve tona. Edhe ato sisteme ku ofruesi i palës së tretë rekomandon që të çaktivizojmë sigurinë e zgjeruar. Ndjehet si punë Ethan Hunt nga "Misioni: i pamundur".
Përballë kësaj dileme, disa administratorë të sistemit vendosin ta marrin pilulë blu, sepse mendojnë se nuk do ta dinë kurrë përgjigjen për pyetjen e madhe të jetës, universit dhe gjithë kësaj. Dhe siç e dimë të gjithë, kjo përgjigje është 42.
Në frymën e Udhëzuesit të Autostopit për Galaxy, këtu janë 42 përgjigje për pyetjet e rëndësishme rreth kontrollit dhe përdorimit. SELinux në sistemet tuaja.
1. SELinux është një sistem i kontrollit të aksesit të detyruar, që do të thotë se çdo proces ka një etiketë. Çdo skedar, drejtori dhe objekt sistemi ka gjithashtu etiketa. Rregullat e politikës kontrollojnë aksesin ndërmjet proceseve dhe objekteve të etiketuara. Kerneli i zbaton këto rregulla.
2. Dy konceptet më të rëndësishme janë: etiketimi — shënimet (skedarët, proceset, portet, etj.) dhe Lloji i zbatimit (që izolon proceset nga njëri-tjetri në bazë të llojeve).
3. Formati i saktë i etiketës user:role:type:level (opsionale).
4. Qëllimi i ofrimit të sigurisë në shumë nivele (Siguri me shumë nivele - MLS) është për të menaxhuar proceset (domainet) bazuar në nivelin e sigurisë së të dhënave që do të përdorin. Për shembull, një proces sekret nuk mund të lexojë të dhëna tepër sekrete.
5. Sigurimi i sigurisë me shumë kategori (Siguri me shumë kategori - MCS) mbron procese të ngjashme nga njëri-tjetri (për shembull, makinat virtuale, motorët OpenShift, sandboxet SELinux, kontejnerët, etj.).
6. Opsionet e kernelit për ndryshimin e mënyrave SELinux në nisje:
autorelabel=1 → bën që sistemi të ekzekutojë rietiketimin
selinux=0 → kerneli nuk ngarkon infrastrukturën SELinux
enforcing=0 → ngarkimi në modalitetin lejues
7. Nëse keni nevojë të rietiketoni të gjithë sistemin:
# touch /.autorelabel
#reboot
Nëse shënimi i sistemit përmban një numër të madh gabimesh, mund t'ju duhet të nisni në modalitetin lejues që shënimi të ketë sukses.
8. Për të kontrolluar nëse SELinux është i aktivizuar: # getenforce
9. Për të aktivizuar/çaktivizuar përkohësisht SELinux: # setenforce [1|0]
10. Kontrollimi i statusit të SELinux: # sestatus
11. Skedari i konfigurimit: /etc/selinux/config
12. Si funksionon SELinux? Këtu është një shembull i shënimit për serverin në internet Apache:
Paraqitja binar: /usr/sbin/httpd→httpd_exec_t
Drejtoria e konfigurimit: /etc/httpd→httpd_config_t
Drejtoria e skedarit të regjistrit: /var/log/httpd → httpd_log_t
Drejtoria e përmbajtjes: /var/www/html → httpd_sys_content_t
Procesi po funksionon në kontekst httpd_t, mund të ndërveprojë me një objekt të etiketuar httpd_something_t.
13. Shumë komanda pranojnë një argument -Z për të parë, krijuar dhe ndryshuar kontekstin:
ls -Z
id -Z
ps -Z
netstat -Z
cp -Z
mkdir -Z
Kontekstet krijohen kur skedarët krijohen bazuar në kontekstin e drejtorisë së tyre mëmë (me disa përjashtime). RPM-të mund të krijojnë kontekste si gjatë instalimit.
14. Ka katër shkaqe kryesore të gabimeve të SELinux, të cilat përshkruhen më në detaje në pikat 15-21 më poshtë:
Çështjet e etiketimit
Për shkak të diçkaje që SELinux duhet të dijë
Gabim në politikën/aplikacionin SELinux
Informacioni juaj mund të komprometohet
15.Problemi i etiketimit: nëse skedarët tuaj janë në /srv/myweb janë shënuar gabimisht, qasja mund të refuzohet. 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 dini një skedar me shenja ekuivalente: # semanage fcontext -a -e /srv/myweb /var/www
Rivendosja e kontekstit (për të dyja rastet): # restorecon -vR /srv/myweb
16.Problemi i etiketimit: nëse e zhvendosni skedarin në vend që ta kopjoni, skedari do të ruajë kontekstin e tij origjinal. Për të rregulluar këtë problem:
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
Rivendos kontekstin (për të dyja rastet): # restorecon -vR /var/www/html/
17. Nëse SELinux duhet të diniqë HTTPD po dëgjon në portin 8585, tregoni SELinux:
# semanage port -a -t http_port_t -p tcp 8585
18.SELinux duhet të dini Vlerat Boolean që lejojnë që pjesët e politikës SELinux të ndryshohen në kohën e ekzekutimit pa dijeninë që politika SELinux të mbishkruhet. Për shembull, nëse dëshironi që httpd të dërgojë email, shkruani: # setsebool -P httpd_can_sendmail 1
19.SELinux duhet të dini vlerat logjike për aktivizimin/çaktivizimin e cilësimeve të SELinux:
Për të parë të gjitha vlerat boolean: # getsebool -a
Për të parë një përshkrim të secilit: # semanage boolean -l
Për të vendosur një vlerë boolean: # setsebool [_boolean_] [1|0]
Për një instalim të përhershëm, shtoni -P. Për shembull: # setsebool httpd_enable_ftp_server 1 -P
20. Politikat/aplikacionet SELinux mund të përmbajnë gabime, duke përfshirë:
Shtigje të pazakonta kodi
Konfigurimet
Ridrejtimi i stdout
Rrjedhjet e përshkruesit të skedarëve
Memorie e ekzekutueshme
Bibliotekat e ndërtuara keq
Biletat e hapura (mos dorëzoni një raport në Bugzilla; Bugzilla nuk ka SLA).
21.Informacioni juaj mund të komprometohetnëse keni domene të kufizuara duke u përpjekur të:
Ngarko modulet e kernelit
Çaktivizo modalitetin e imponuar SELinux
Shkruani në etc_t/shadow_t
Ndryshoni rregullat e iptables
22. Mjetet SELinux për zhvillimin e moduleve të politikave:
25. Nëse ndodh një gabim SELinux, përdorni regjistrin setroubleshoot duke ofruar disa zgjidhje të mundshme.
Për shembull, nga 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.html
26. Regjistrimi: SELinux regjistron informacione në shumë vende:
27. Regjistrimi: kërkimi i gabimeve të SELinux në regjistrin e auditimit:
# ausearch -m AVC,USER_AVC,SELINUX_ERR -ts today
28. Për të gjetur mesazhet e SELinux Access Vector Cache (AVC) për një shërbim specifik:
# ausearch -m avc -c httpd
29. Shërbim audit2allow mbledh informacion nga regjistrat e operacioneve të ndaluara dhe më pas gjeneron rregullat e politikave të lejeve të SELinux. Për shembull:
Për të krijuar një përshkrim të lexueshëm nga njeriu se pse është refuzuar qasja: # audit2allow -w -a
Për të parë një rregull të zbatimit të tipit që lejon aksesin e mohuar: # audit2allow -a
Për të krijuar një modul të personalizuar: # audit2allow -a -M mypolicy
Opsioni -M krijon një skedar të zbatimit të tipit (.te) me emrin e specifikuar dhe përpilon rregullin në një paketë politikash (.pp): mypolicy.pp mypolicy.te
Për të instaluar një modul të personalizuar: # semodule -i mypolicy.pp
30. Për të konfiguruar një proces të veçantë (domain) për të punuar në modalitetin lejues: # semanage permissive -a httpd_t
31. Nëse nuk dëshironi që domeni të jetë më lejues: # semanage permissive -d httpd_t
32. Për të çaktivizuar të gjitha domenet lejuese: # semodule -d permissivedomains
33. Aktivizimi i politikës MLS SELinux: # yum install selinux-policy-mls
в /etc/selinux/config:
SELINUX=permissive
SELINUXTYPE=mls
Sigurohuni që SELinux po funksionon në modalitetin lejues: # setenforce 0
Përdorni një skenar fixfilespër të siguruar që skedarët të rietiketohen në rindezjen tjetër:
# fixfiles -F onboot # reboot
34. Krijo një përdorues me një gamë specifike MLS: # useradd -Z staff_u john
Duke përdorur komandën useradd, hartojeni përdoruesin e ri me një përdorues ekzistues SELinux (në këtë rast, staff_u).
35. Për të parë hartën midis përdoruesve të SELinux dhe Linux: # semanage login -l
36. Përcaktoni një gamë specifike për përdoruesin: # semanage login --modify --range s2:c100 john
37. Për të korrigjuar etiketën e drejtorisë kryesore të 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 krijimin tuajin, modifikoni skedarin si më poshtë:
/etc/selinux/_<selinuxtype>_/setrans.conf
40. Për të ekzekutuar një komandë ose skript në një skedar, rol dhe kontekst specifik të përdoruesit: