Artikli tõlge koostati spetsiaalselt kursuse üliõpilastele .

Siit leiad vastused olulistele küsimustele elu, universumi ja kõige muu kohta. Linux täiustatud turvalisusega.
"Oluline tõde, et asjad ei ole alati nii, nagu nad paistavad, on üldteada..."
-Douglas Adams, Hitchhiker's Guide to the Galaxy
Ohutus. Suurenenud töökindlus. Kirjavahetus. poliitika. Neli Apokalüpsise ratsanikku süsadmin. Lisaks igapäevastele ülesannetele – monitooring, varundamine, juurutamine, seadistamine, uuendamine jne – vastutame ka oma süsteemide turvalisuse eest. Isegi need süsteemid, kus kolmandast osapoolest teenusepakkuja soovitab täiustatud turvalisuse keelata. See tundub nagu töö filmist "Mission: Impossible".
Selle dilemma ees otsustavad mõned süsteemiadministraatorid selle ette võtta , sest nad arvavad, et ei saa kunagi vastust suurele küsimusele elu, universumi ja kõige muu kohta. Ja nagu me kõik teame, on see vastus 42.
Siin on The Hitchhiker's Guide to the Galaxy vaimus 42 vastust olulistele küsimustele juhtimise ja kasutamise kohta. teie süsteemides.
1. SELinux — on kohustuslik juurdepääsukontrollisüsteem, mis tähendab, et igal protsessil on silt. Igal failil, kataloogil ja süsteemiobjektil on samuti silt. Poliitikareeglid reguleerivad juurdepääsu sildistatud protsesside ja objektide vahel. Kernel jõustab neid reegleid.
2. Kaks kõige olulisemat mõistet on järgmised: Sildistamine — märgised (failid, protsessid, pordid jne) ja Tüübi jõustamine (mis isoleerib protsessid üksteisest tüüpide alusel).
3. Õige sildi formaat user:role:type:level (valikuline).
4. Mitmetasemelise turvalisuse tagamise eesmärk (Mitmetasandiline turvalisus – MLS) on hallata protsesse (domeene) nende poolt kasutatavate andmete turvalisuse taseme alusel. Näiteks ei saa salajane protsess lugeda ülisalajasti andmeid.
5. Mitme kategooria turvalisuse tagamine (Mitme kategooria turvalisus – MCS) kaitseb sarnaseid protsesse üksteise eest (nt virtuaalmasinad, OpenShifti mootorid, SE liivakastidLinux, konteinerid jne).
6. Kerneli parameetrid SE režiimide muutmiseksLinux laadimise ajal:
autorelabel=1→ käivitab süsteemi ümbermärgistamiseselinux=0→ tuum ei laadi SE infrastruktuuriLinuxenforcing=0→ laadimine lubavas režiimis
7. Kui teil on vaja kogu süsteem ümber sildistada:
# touch /.autorelabel
#reboot
Kui süsteemimärgistus sisaldab palju vigu, peate märkimise õnnestumiseks võib-olla käivitama lubava režiimi.
8. SE lubamise kontrollimiseksLinux: # getenforce
9. SE ajutiseks lubamiseks/keelamiseksLinux: # setenforce [1|0]
10. SE staatuse kontrollimineLinux: # sestatus
11. Konfiguratsioonifail: /etc/selinux/config
12. Kuidas SE töötabLinuxSiin on näide Apache veebiserveri märgistamisest:
- Binaarne esitus:
/usr/sbin/httpd→httpd_exec_t - Konfiguratsioonikataloog:
/etc/httpd→httpd_config_t - Logifailide kataloog:
/var/log/httpd → httpd_log_t - Sisukataloog:
/var/www/html → httpd_sys_content_t - Käivitage skript:
/usr/lib/systemd/system/httpd.service → httpd_unit_file_d - Protsess:
/usr/sbin/httpd -DFOREGROUND → httpd_t - Pordid:
80/tcp, 443/tcp → httpd_t, http_port_t
Protsess töötab kontekstis httpd_t, saab suhelda märgistatud objektiga httpd_something_t.
13. Paljud käsud aktsepteerivad argumenti -Z konteksti vaatamiseks, loomiseks ja muutmiseks:
ls -Zid -Zps -Znetstat -Zcp -Zmkdir -Z
Kontekstid luuakse siis, kui failid luuakse nende emakataloogi konteksti alusel (mõnede eranditega). RPM-id võivad luua kontekste nagu installimise ajal.
14. SE vigadel on neli peamist põhjustLinux, mida on üksikasjalikumalt kirjeldatud allpool punktides 15–21:
- Märgistamisega seotud probleemid
- Millegi pärast, mida SELinux peab teadma
- Viga SE poliitikas/rakendusesLinux
- Teie teave võib olla ohus
15. Märgistamise probleem: kui teie failid on sees /srv/myweb on valesti märgitud, võidakse juurdepääs keelata. Siin on mõned viisid selle parandamiseks.
- Kui teate silti:
# semanage fcontext -a -t httpd_sys_content_t '/srv/myweb(/.*)?' - Kui teate samaväärsete märgistega faili:
# semanage fcontext -a -e /srv/myweb /var/www - Konteksti taastamine (mõlemal juhul):
# restorecon -vR /srv/myweb
16. Märgistamise probleem: kui faili kopeerimise asemel teisaldate, säilitab fail oma esialgse konteksti. Selle probleemi lahendamiseks tehke järgmist.
- Muutke kontekstikäsku sildiga:
# chcon -t httpd_system_content_t /var/www/html/index.html - Muutke lingisildiga kontekstikäsku:
# chcon --reference /var/www/html/ /var/www/html/index.html - Taasta kontekst (mõlemal juhul):
# restorecon -vR /var/www/html/
17. kui SELinux vaja teada, et HTTPD kuulab porti 8585, ütle SE-leLinux:
# semanage port -a -t http_port_t -p tcp 8585
18. SELinux vaja teada Boole'i väärtused, mis võimaldavad teil SE-poliitika osi muutaLinux käitusajal ilma SE poliitika ümberkirjutamise tundmisetaLinuxNäiteks kui soovite, et httpd saadaks e-kirju, sisestage: # setsebool -P httpd_can_sendmail 1
19. SELinux vaja teada loogilised väärtused SE sätete lubamiseks/keelamiseksLinux:
- Kõigi tõeväärtuste vaatamiseks toimige järgmiselt.
# getsebool -a - Iga kirjelduse vaatamiseks toimige järgmiselt.
# semanage boolean -l - Tõeväärtuse määramiseks toimige järgmiselt.
# setsebool [_boolean_] [1|0] - Püsipaigalduse jaoks lisage
-P. Näiteks:# setsebool httpd_enable_ftp_server 1 -P
20. SE poliitikad/rakendusedLinux võib sisaldada vigu, sealhulgas:
- Ebatavalised kooditeed
- Konfiguratsioonid
- Stdouti ümbersuunamine
- Faili deskriptor lekib
- Käivitatav mälu
- Halvasti ehitatud raamatukogud
Avatud piletid (ärge esitage Bugzillale aruannet; Bugzillal puudub SLA).
21. Teie teave võib olla ohuskui teil on piiratud domeenid, mis üritavad:
- Laadige kerneli moodulid
- Keela sunnitud režiim SELinux
- Kirjuta
etc_t/shadow_t - Muutke iptablesi reegleid
22. SE tööriistadLinux poliitikamoodulite väljatöötamiseks:
# yum -y install setroubleshoot setroubleshoot-server
Taaskäivitage või taaskäivitage auditd pärast paigaldamist.
23. Kasutage
journalctl kõigi seotud logide loendi kuvamiseks setroubleshoot:
# journalctl -t setroubleshoot --since=14:20
24. Kasutage journalctl kõigi konkreetse SE-sildiga seotud logide loetlemiseksLinux. Näiteks:
# journalctl _SELINUX_CONTEXT=system_u:system_r:policykit_t:s0
25. Kui ilmneb SE vigaLinux kasutage logi setroubleshoot pakkudes mitmeid võimalikke lahendusi.
Näiteks alates 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. Metsandus: KaguLinux salvestab teavet paljudes kohtades:
- / var / log / messages
- /var/log/audit/audit.log
- /var/lib/setroubleshoot/setroubleshoot_database.xml
27. Logimine: SE vigade leidmineLinux auditilogis:
# ausearch -m AVC,USER_AVC,SELINUX_ERR -ts today
28. SE-sõnumite leidmiseksLinux Juurdepääsuvektori vahemälu (AVC) konkreetse teenuse jaoks:
# ausearch -m avc -c httpd
29. Utiliit audit2allow kogub keelatud toimingute logidest teavet ja seejärel genereerib SE loapoliitika reeglidLinux. Näiteks:
- Inimloetava kirjelduse loomiseks selle kohta, miks juurdepääs on keelatud, toimige järgmiselt.
# audit2allow -w -a - Juurdepääsu keelamist lubava tüübi jõustamisreegli vaatamiseks tehke järgmist.
# audit2allow -a - Kohandatud mooduli loomiseks tehke järgmist.
# audit2allow -a -M mypolicy - Variant
-Mloob määratud nimega tüübi jõustamisfaili (.te) ja kompileerib reegli poliitikapaketiks (.pp):mypolicy.pp mypolicy.te - Kohandatud mooduli installimiseks tehke järgmist.
# semodule -i mypolicy.pp
30. Eraldi protsessi (domeeni) konfigureerimiseks lubavas režiimis töötama: # semanage permissive -a httpd_t
31. Kui te ei soovi enam, et domeen oleks lubatav: # semanage permissive -d httpd_t
32. Kõigi lubatud domeenide keelamiseks tehke järgmist. # semodule -d permissivedomains
33. MLS SE poliitika lubamineLinux: # yum install selinux-policy-mls
в /etc/selinux/config:
SELINUX=lubav
SELINUXTYPE=mls
Veenduge, et SELinux töötab lubavas režiimis: # setenforce 0
Kasutage skripti fixfilestagamaks, et failid järgmisel taaskäivitamisel ümber märgitakse:
# fixfiles -F onboot # reboot
34. Looge kasutaja konkreetse MLS-i vahemikuga: # useradd -Z staff_u john
Kasutades käsku useradd, kaardista uus kasutaja olemasoleva SE kasutajagaLinux (sel juhul, staff_u).
35. SE kasutajate vahelise kirjavahetuse vaatamiseksLinux и Linux: # semanage login -l
36. Määrake kasutaja jaoks konkreetne vahemik: # semanage login --modify --range s2:c100 john
37. Kasutaja kodukataloogi sildi parandamiseks (vajadusel): # chcon -R -l s2:c100 /home/john
38. Praeguste kategooriate vaatamiseks: # chcat -L
39. Kategooriate muutmiseks või enda loomise alustamiseks muutke faili järgmiselt.
/etc/selinux/_<selinuxtype>_/setrans.conf
40. Konkreetses failis, rollis ja kasutaja kontekstis käsu või skripti käitamiseks tehke järgmist.
# runcon -t initrc_t -r system_r -u user_u yourcommandhere
-tfaili kontekst-rrolli kontekst-ukasutaja kontekst
41. Konteinerid töötavad SE-ga keelatudLinux:
- Podman:
# podman run --security-opt label=disable … - Docker:
# docker run --security-opt label=disable …
42. Kui teil on vaja anda konteinerile täielik juurdepääs süsteemile:
- Podman:
# podman run --privileged … - Docker:
# docker run --privileged …
Ja nüüd sa juba tead vastust. Seega palun: ära paanitse ja lülita SE sisse.Linux.
Lingid:
- by
- autor Dan Walsh
- by
- by
Allikas: www.habr.com
