La traduko de la artikolo estis preparita specife por la kursanoj .

Ĉi tie vi ricevos respondojn al gravaj demandoj pri la vivo, la universo kaj ĉio en ĝi. Linux 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 de "Misio: Neebla."
Fronte al ĉi tiu dilemo, iuj sistemadministrantoj decidas preni , ĉ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. sur viaj sistemoj.
1. SELinux — estas deviga sistemo por kontroli aliron, kio signifas, ke ĉiu procezo havas etikedon. Ĉiu dosiero, dosierujo kaj sistema objekto ankaŭ havas etikedon. Politikaj reguloj regas aliron inter etikeditaj procezoj kaj objektoj. La kerno devigas ĉi 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).
3. Ĝusta etikedo formato user:role:type:level (laŭvola).
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 (ekz. virtualaj maŝinoj, OpenShift-motoroj, SE-sablokestojLinux, ujoj, ktp.).
6. Kernaj parametroj por ŝanĝi SE-reĝimojnLinux dum ŝarĝado:
autorelabel=1→ igas la sistemon ruli remarkadonselinux=0→ la kerno ne ŝarĝas la SE-infrastrukturonLinuxenforcing=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 SE estas ebligitaLinux: # getenforce
9. Por provizore ebligi/malebligi SELinux: # setenforce [1|0]
10. Kontrolado de SE-StatoLinux: # sestatus
11. Dosiero de agordo: /etc/selinux/config
12. Kiel SE funkciasLinuxJen 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 - Enhava dosierujo:
/var/www/html → httpd_sys_content_t - Lanĉa skripto:
/usr/lib/systemd/system/httpd.service → httpd_unit_file_d - Procezo:
/usr/sbin/httpd -DFOREGROUND → httpd_t - Havenoj:
80/tcp, 443/tcp → httpd_t, http_port_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 -Zid -Zps -Znetstat -Zcp -Zmkdir -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 kialoj por SE-erarojLinux, kiuj estas priskribitaj pli detale en paragrafoj 15-21 sube:
- Etikedaj aferoj
- Pro io, kion SELinux devas scii
- Eraro en SE-politiko/aplikaĵoLinux
- 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 bezonas scii, ke HTTPD aŭskultas ĉe pordo 8585, diru al SELinux:
# semanage port -a -t http_port_t -p tcp 8585
18. SELinux bezonas scii Buleaj valoroj, kiuj permesas al vi ŝanĝi partojn de la SE-politikoLinux dum rulado sen scio pri SE-strategireverkadoLinuxEkzemple, se vi volas, ke httpd sendu retpoŝton, tajpu: # setsebool -P httpd_can_sendmail 1
19. SELinux bezonas scii logikaj valoroj por ebligi/malebligi SE-agordojnLinux:
- Por vidi ĉiujn buleajn valorojn:
# getsebool -a - Por vidi priskribon de ĉiu:
# semanage boolean -l - Por agordi bulean valoron:
# setsebool [_boolean_] [1|0] - Por konstanta instalado, aldonu
-P. Ekzemple:# setsebool httpd_enable_ftp_server 1 -P
20. SE-Politikoj/AplikojLinux povas enhavi erarojn, inkluzive de:
- Nekutimaj kodaj vojoj
- Agordoj
- Redirektante stdout
- Dosiera priskribilo fukas
- Ekzekutebla memoro
- Malbone konstruitaj bibliotekoj
Malfermu biletojn (ne sendu raporton al Bugzilla; Bugzilla ne havas SLA).
21. Viaj informoj povas esti endanĝerigitajse vi havas limigitajn domajnojn provante:
- Ŝarĝu kernaj moduloj
- Malŝalti devigitan reĝimon SELinux
- Skribu al
etc_t/shadow_t - Ŝanĝu regulojn de iptables
22. SE-IlojLinux por disvolvi politikajn modulojn:
# yum -y install setroubleshoot setroubleshoot-server
Rekomencu aŭ rekomencu auditd post instalado.
23. Uzu
journalctl por montri liston de ĉiuj protokoloj asociitaj kun setroubleshoot:
# journalctl -t setroubleshoot --since=14:20
24. Uzu journalctl por listigi ĉiujn protokolojn asociitajn kun specifa SE-etikedoLinux. Ekzemple:
# journalctl _SELINUX_CONTEXT=system_u:system_r:policykit_t:s0
25. Kiam SE-eraro okazasLinux uzi 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.html26. Arbohakado: SELinux registras informojn en multaj lokoj:
- / var / log / messages
- /var/log/audit/audit.log
- /var/lib/setroubleshoot/setroubleshoot_database.xml
27. Protokolado: Trovante SE-ErarojnLinux en la revizia protokolo:
# ausearch -m AVC,USER_AVC,SELINUX_ERR -ts today
28. Por trovi SE-mesaĝojnLinux Aliru Vektoran Kaŝmemoron (AVC) por specifa servo:
# ausearch -m avc -c httpd
29. Utileco audit2allow kolektas informojn el protokoloj de malpermesitaj operacioj kaj poste generas SE-permesajn politikoregulojnLinux. 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
-Mkreas 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. Ebligi MLS SE-politikonLinux: # yum install selinux-policy-mls
в /etc/selinux/config:
SELINUX=permesiva
SELINUXTYPE=mls
Certigu SELinux funkcias en permesema 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, mapu la novan uzanton al ekzistanta SE-uzantoLinux (tiuokaze, staff_u).
35. Por vidi la korespondadon inter SE-uzantojLinux и Linux: # 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:
# runcon -t initrc_t -r system_r -u user_u yourcommandhere
-tdosiero kunteksto-rrola kunteksto-uuzanta kunteksto
41. Ujoj funkciantaj kun SE malŝaltitaLinux:
- Podman:
# podman run --security-opt label=disable … - Docker:
# docker run --security-opt label=disable …
42. Se vi bezonas doni al la ujo plenan aliron al la sistemo:
- Podman:
# podman run --privileged … - Docker:
# docker run --privileged …
Kaj nun vi jam scias la respondon. Do bonvolu: ne paniku kaj ŝaltu SE.Linux.
Referencoj
- by
- de Dan Walsh
- by
- by
fonto: www.habr.com
