Ĉi tie vi ricevos respondojn al gravaj demandoj pri vivo, universo kaj ĉio en Linukso kun plibonigita sekureco.
"La grava vero, ke aferoj ne ĉiam estas tio, kion ili ŝajnas, estas komuna scio..."
-Douglas Adams, La Petveturista Gvidilo pri la Galaksio
Sekureco. Pliigita fidindeco. Korespondado. Politiko. Kvar Rajdantoj de la Apokalipso sysadmin. Krom niaj ĉiutagaj taskoj - monitorado, sekurkopio, efektivigo, agordo, ĝisdatigo, ktp. - ni ankaŭ respondecas pri la sekureco de niaj sistemoj. Eĉ tiuj sistemoj, kie la triaparta provizanto rekomendas, ke ni malŝaltu plibonigitan sekurecon. Ĝi sentas kiel laboro Ethan Hunt de "Misio: Neebla."
Fronte al ĉi tiu dilemo, iuj sistemadministrantoj decidas preni blua pilolo, ĉar ili pensas, ke ili neniam scios la respondon al la granda demando pri vivo, la universo kaj ĉio tio. Kaj kiel ni ĉiuj scias, tiu respondo estas 42.
En la spirito de The Hitchhiker's Guide to the Galaxy, jen 42 respondoj al gravaj demandoj pri kontrolo kaj uzo. SELinux sur viaj sistemoj.
1. SELinux estas deviga alirkontrola sistemo, kio signifas, ke ĉiu procezo havas etikedon. Ĉiu dosiero, dosierujo kaj sistema objekto ankaŭ havas etikedojn. Politikreguloj kontrolas aliron inter etikeditaj procezoj kaj objektoj. La kerno devigas tiujn regulojn.
2. La du plej gravaj konceptoj estas: Etikedado — markoj (dosieroj, procezoj, havenoj, ktp.) kaj Tajpu devigon (kiu izolas procezojn unu de la alia surbaze de tipoj).
4. La celo provizi plurnivelan sekurecon (Plurnivela Sekureco - MLS) estas administri procezojn (domajnojn) surbaze de la nivelo de sekureco de la datumoj kiujn ili uzos. Ekzemple, sekreta procezo ne povas legi sekretegajn datumojn.
5. Certigante multkategorian sekurecon (Multi-Kategoria Sekureco - MCS) protektas similajn procezojn unu de la alia (ekzemple, virtualajn maŝinojn, OpenShift-motorojn, SELinux-sablokestojn, ujojn ktp.).
6. Kernel-opcioj por ŝanĝi SELinux-reĝimojn ĉe lanĉo:
autorelabel=1 → igas la sistemon ruli remarkadon
selinux=0 → la kerno ne ŝarĝas la SELinux-infrastrukturon
enforcing=0 → ŝarĝo en permesa reĝimo
7. Se vi bezonas remarki la tutan sistemon:
# touch /.autorelabel
#reboot
Se la sistema markado enhavas grandan nombron da eraroj, vi eble bezonos ekŝalti en permesema reĝimo por ke rimarkado sukcesu.
8. Por kontroli ĉu SELinux estas ebligita: # getenforce
9. Por provizore ebligi/malŝalti SELinux: # setenforce [1|0]
10. Kontrolante SELinux-statuson: # sestatus
11. Dosiero de agordo: /etc/selinux/config
12. Kiel funkcias SELinux? Jen ekzemplo de markado por la retservilo Apache:
Binara prezento: /usr/sbin/httpd→httpd_exec_t
Agorda dosierujo: /etc/httpd→httpd_config_t
Dosierujo de protokolo: /var/log/httpd → httpd_log_t
Procezo funkcianta en kunteksto httpd_t, povas interagi kun etikedita objekto httpd_something_t.
13. Multaj komandoj akceptas argumenton -Z por vidi, krei kaj ŝanĝi kuntekston:
ls -Z
id -Z
ps -Z
netstat -Z
cp -Z
mkdir -Z
Kuntekstoj estas establitaj kiam dosieroj estas kreitaj surbaze de la kunteksto de sia gepatra dosierujo (kun kelkaj esceptoj). RPMoj povas establi kuntekstojn kiel dum instalado.
14. Estas kvar ĉefaj kaŭzoj de SELinux-eraroj, kiuj estas priskribitaj pli detale en punktoj 15-21 sube:
Etikedaj aferoj
Pro io, kion SELinux bezonas scii
Eraro en SELinux-politiko/aplikaĵo
Viaj informoj povas esti endanĝerigitaj
15.Problemo pri etikedado: se viaj dosieroj estas en /srv/myweb estas markitaj malĝuste, aliro povas esti malakceptita. Jen kelkaj manieroj ripari ĉi tion:
Se vi konas la etikedon: # semanage fcontext -a -t httpd_sys_content_t '/srv/myweb(/.*)?'
Se vi konas dosieron kun ekvivalentaj markoj: # semanage fcontext -a -e /srv/myweb /var/www
Restarigante la kuntekston (por ambaŭ kazoj): # restorecon -vR /srv/myweb
16.Problemo pri etikedado: se vi movas la dosieron anstataŭ kopii ĝin, la dosiero konservos sian originan kuntekston. Por solvi ĉi tiun problemon:
Ŝanĝu la kuntekstan komandon kun la etikedo: # chcon -t httpd_system_content_t /var/www/html/index.html
Ŝanĝu la kuntekstan komandon kun la ligilo: # chcon --reference /var/www/html/ /var/www/html/index.html
Restarigu la kuntekston (por ambaŭ kazoj): # restorecon -vR /var/www/html/
17. se SELinux vi devas sciike HTTPD aŭskultas sur la haveno 8585, diru al SELinux:
# semanage port -a -t http_port_t -p tcp 8585
18.SELinux vi devas scii Buleaj valoroj kiuj permesas partojn de la SELinux-politiko esti ŝanĝitaj ĉe rultempo sen scio pri la SELinux-politiko esti anstataŭita. Ekzemple, se vi volas ke httpd sendu retpoŝton, enigu: # setsebool -P httpd_can_sendmail 1
19.SELinux vi devas scii logikaj valoroj por ebligi/malŝalti SELinux-agordojn:
Por vidi ĉiujn buleajn valorojn: # getsebool -a
Por vidi priskribon de ĉiu: # semanage boolean -l
Por agordi bulean valoron: # setsebool [_boolean_] [1|0]
25. Se SELinux-eraro okazas, uzu la protokolon setroubleshoot proponante plurajn eblajn solvojn.
Ekzemple, de 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. Registrado: SELinux registras informojn en multaj lokoj:
27. Registrado: serĉante SELinux-erarojn en la revizia protokolo:
# ausearch -m AVC,USER_AVC,SELINUX_ERR -ts today
28. Por trovi mesaĝojn de SELinux Access Vector Cache (AVC) por specifa servo:
# ausearch -m avc -c httpd
29. Utileco audit2allow kolektas informojn el protokoloj de malpermesitaj operacioj kaj poste generas regulojn pri permesaj politikoj de SELinux. Ekzemple:
Por krei homlegeblan priskribon de kial aliro estas malakceptita: # audit2allow -w -a
Por vidi tipan plenuman regulon, kiu permesas rifuzitan aliron: # audit2allow -a
Por krei kutiman modulon: # audit2allow -a -M mypolicy
Opcio -M kreas tipan devigdosieron (.te) kun la specifita nomo kaj kompilas la regulon en politikan pakaĵon (.pp): mypolicy.pp mypolicy.te
Por instali kutiman modulon: # semodule -i mypolicy.pp
30. Por agordi apartan procezon (domajno) por labori en permesema reĝimo: # semanage permissive -a httpd_t
31. Se vi ne plu volas, ke la domajno estu permesema: # semanage permissive -d httpd_t
32. Por malŝalti ĉiujn permesajn domajnojn: # semodule -d permissivedomains
33. Ebligante MLS SELinux-politikon: # yum install selinux-policy-mls
в /etc/selinux/config:
SELINUX=permissive
SELINUXTYPE=mls
Certigu, ke SELinux funkcias en permesa reĝimo: # setenforce 0
Uzu skripton fixfilespor certigi, ke la dosieroj estas reetikeditaj dum la sekva rekomenco:
# fixfiles -F onboot # reboot
34. Kreu uzanton kun specifa MLS-gamo: # useradd -Z staff_u john
Uzante la komandon useradd, mapi la novan uzanton al ekzistanta SELinux-uzanto (en ĉi tiu kazo, staff_u).
35. Por vidi la mapadon inter uzantoj de SELinux kaj Linukso: # semanage login -l
36. Difinu specifan intervalon por la uzanto: # semanage login --modify --range s2:c100 john
37. Por korekti la hejmdosierujon de la uzanto (se necese): # chcon -R -l s2:c100 /home/john
38. Por vidi aktualajn kategoriojn: # chcat -L
39. Por ŝanĝi kategoriojn aŭ komenci krei viajn proprajn, redaktu la dosieron jene:
/etc/selinux/_<selinuxtype>_/setrans.conf
40. Por ruli komandon aŭ skripton en specifa dosiero, rolo kaj uzantkunteksto: