Oversettelsen av artikkelen ble utarbeidet spesielt for studentene pÄ kurset .

Her fÄr du svar pÄ viktige spÞrsmÄl om livet, universet og alt i verden. Linux med forbedret sikkerhet.
"Den viktige sannheten om at ting ikke alltid er som de ser ut er allmennkunnskap ..."
- Douglas Adams, Haikerens guide til galaksen
Sikkerhet. Ăkt pĂ„litelighet. Korrespondanse. Politikk. Four Horsemen of the Apocalypse sysadmin. I tillegg til vĂ„re daglige oppgaver â overvĂ„king, backup, implementering, konfigurering, oppdatering osv. â er vi ogsĂ„ ansvarlige for sikkerheten til vĂ„re systemer. Selv de systemene der tredjepartsleverandĂžren anbefaler at vi deaktiverer forbedret sikkerhet. Det fĂžles som jobb fra «Mission: Impossible».
Stilt overfor dette dilemmaet bestemmer noen systemadministratorer seg for Ä ta , fordi de tror de aldri vil vite svaret pÄ det store spÞrsmÄlet om livet, universet og alt det der. Og som vi alle vet, er svaret 42.
I Änden til The Hitchhiker's Guide to the Galaxy, her er 42 svar pÄ viktige spÞrsmÄl om kontroll og bruk. pÄ systemene dine.
1. SELinux â er et obligatorisk tilgangskontrollsystem, som betyr at hver prosess har en etikett. Hver fil, katalog og systemobjekt har ogsĂ„ en etikett. Policyregler styrer tilgang mellom merkede prosesser og objekter. Kjernen hĂ„ndhever disse reglene.
2. De to viktigste konseptene er: Merking â merkinger (filer, prosesser, porter osv.) og Type hĂ„ndhevelse (som isolerer prosesser fra hverandre basert pĂ„ typer).
3. Riktig etikettformat user:role:type:level (valgfri).
4. FormÄlet med Ä tilby sikkerhet pÄ flere nivÄer (Multi-Level Security - MLS) er Ä administrere prosesser (domener) basert pÄ sikkerhetsnivÄet til dataene de skal bruke. For eksempel kan ikke en hemmelig prosess lese topphemmelige data.
5. Sikre multi-kategori sikkerhet (Multi-Category Security - MCS) beskytter lignende prosesser fra hverandre (f.eks. virtuelle maskiner, OpenShift-motorer, SE-sandkasserLinux, containere osv.).
6. Kjerneparametere for endring av SE-moduserLinux ved lasting:
autorelabel=1â fĂ„r systemet til Ă„ kjĂžre ommerkingselinux=0â kjernen laster ikke inn SE-infrastrukturenLinuxenforcing=0â lasting i tillatelig modus
7. Hvis du trenger Ă„ ommerke hele systemet:
# touch /.autorelabel
#reboot
Hvis systemmerkingen inneholder et stort antall feil, mÄ du kanskje starte opp i permissive modus for Ä lykkes.
8. For Ă„ sjekke om SE er aktivertLinux: # getenforce
9. For Ă„ midlertidig aktivere/deaktivere SELinux: # setenforce [1|0]
10. Sjekker SE-statusLinux: # sestatus
11. Konfigurasjonsfil: /etc/selinux/config
12. Hvordan SE fungererLinuxHer er et eksempel pÄ merking for Apache-webserveren:
- BinĂŠr representasjon:
/usr/sbin/httpdâhttpd_exec_t - Konfigurasjonskatalog:
/etc/httpdâhttpd_config_t - Loggfilkatalog:
/var/log/httpd â httpd_log_t - Innholdskatalog:
/var/www/html â httpd_sys_content_t - Startskript:
/usr/lib/systemd/system/httpd.service â httpd_unit_file_d - prosessen:
/usr/sbin/httpd -DFOREGROUND â httpd_t - Porter:
80/tcp, 443/tcp â httpd_t, http_port_t
Prosess som kjĂžrer i kontekst httpd_t, kan samhandle med et merket objekt httpd_something_t.
13. Mange kommandoer godtar et argument -Z for Ă„ se, skape og endre kontekst:
ls -Zid -Zps -Znetstat -Zcp -Zmkdir -Z
Kontekster etableres nÄr filer opprettes basert pÄ konteksten til deres overordnede katalog (med noen unntak). RPM-er kan etablere kontekster som under installasjon.
14. Det er fire hovedĂ„rsaker til SE-feilLinux, som er beskrevet mer detaljert i avsnitt 15â21 nedenfor:
- Merkeproblemer
- PÄ grunn av noe som SELinux mÄ vite
- Feil i SE-policy/-applikasjonLinux
- Informasjonen din kan vĂŠre kompromittert
15. Merkeproblem: hvis filene dine er i /srv/myweb er merket feil, kan tilgang nektes. Her er noen mÄter Ä fikse dette pÄ:
- Hvis du kjenner etiketten:
# semanage fcontext -a -t httpd_sys_content_t '/srv/myweb(/.*)?' - Hvis du kjenner en fil med tilsvarende markeringer:
# semanage fcontext -a -e /srv/myweb /var/www - Gjenopprette konteksten (for begge tilfeller):
# restorecon -vR /srv/myweb
16. Merkeproblem: hvis du flytter filen i stedet for Ă„ kopiere den, vil filen beholde sin opprinnelige kontekst. Slik lĂžser du dette problemet:
- Endre kontekstkommandoen med etiketten:
# chcon -t httpd_system_content_t /var/www/html/index.html - Endre kontekstkommandoen med lenkeetiketten:
# chcon --reference /var/www/html/ /var/www/html/index.html - Gjenopprett konteksten (for begge tilfeller):
# restorecon -vR /var/www/html/
17. Hvis SELinux trenger Ä vite, at HTTPD lytter pÄ port 8585, fortell SELinux:
# semanage port -a -t http_port_t -p tcp 8585
18. SELinux trenger Ă„ vite Boolske verdier som lar deg endre deler av SE-policyenLinux under kjĂžring uten kjennskap til omskriving av SE-policyLinuxHvis du for eksempel vil at httpd skal sende e-post, skriver du inn: # setsebool -P httpd_can_sendmail 1
19. SELinux trenger Ă„ vite Logiske verdier for aktivering/deaktivering av SE-innstillingerLinux:
- For Ă„ se alle boolske verdier:
# getsebool -a - For Ă„ se en beskrivelse av hver:
# semanage boolean -l - For Ă„ angi en boolsk verdi:
# setsebool [_boolean_] [1|0] - For en permanent installasjon, legg til
-P. For eksempel:# setsebool httpd_enable_ftp_server 1 -P
20. SE-policyer/-sĂžknaderLinux kan inneholde feil, inkludert:
- Uvanlige kodebaner
- Konfigurasjoner
- Omdirigerer standard
- Filbeskrivelsen lekker
- KjĂžrbart minne
- DÄrlig bygde biblioteker
Ă pne billetter (ikke send inn en rapport til Bugzilla; Bugzilla har ingen SLA).
21. Informasjonen din kan vĂŠre kompromitterthvis du har begrensede domener som prĂžver Ă„:
- Last inn kjernemoduler
- Deaktiver hÄndhevet modus SELinux
- Skrive til
etc_t/shadow_t - Endre iptables regler
22. SE-verktĂžyLinux for utvikling av policymoduler:
# yum -y install setroubleshoot setroubleshoot-server
Start pÄ nytt eller start pÄ nytt auditd etter installasjon.
23. bruk
journalctl for Ă„ vise en liste over alle logger knyttet til setroubleshoot:
# journalctl -t setroubleshoot --since=14:20
24. bruk journalctl for Ă„ liste opp alle logger som er knyttet til en bestemt SE-tagLinux. For eksempel:
# journalctl _SELINUX_CONTEXT=system_u:system_r:policykit_t:s0
25. NÄr en SE-feil oppstÄrLinux bruk logg setroubleshoot tilbyr flere mulige lÞsninger.
For eksempel fra 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. Logging: SELinux registrerer informasjon mange steder:
- / var / log / meldinger
- /var/log/audit/audit.log
- /var/lib/setroubleshoot/setroubleshoot_database.xml
27. Logging: Finne SE-feilLinux i revisjonsloggen:
# ausearch -m AVC,USER_AVC,SELINUX_ERR -ts today
28. For Ă„ finne SE-meldingerLinux Tilgangsvektorbuffer (AVC) for en bestemt tjeneste:
# ausearch -m avc -c httpd
29. Nytte audit2allow samler inn informasjon fra logger over forbudte operasjoner og genererer deretter SE-tillatelsespolicyreglerLinux. For eksempel:
- For Ă„ lage en menneskelesbar beskrivelse av hvorfor tilgang nektes:
# audit2allow -w -a - Slik viser du en typehÄndhevelsesregel som tillater nektet tilgang:
# audit2allow -a - Slik oppretter du en egendefinert modul:
# audit2allow -a -M mypolicy - alternativ
-Moppretter en type enforcement-fil (.te) med det angitte navnet og kompilerer regelen til en policypakke (.pp):mypolicy.pp mypolicy.te - Slik installerer du en tilpasset modul:
# semodule -i mypolicy.pp
30. Slik konfigurerer du en egen prosess (domene) til Ă„ fungere i tillatelsesmodus: # semanage permissive -a httpd_t
31. Hvis du ikke lenger vil at domenet skal vĂŠre tillatt: # semanage permissive -d httpd_t
32. Slik deaktiverer du alle tillatte domener: # semodule -d permissivedomains
33. Aktivering av MLS SE-policyLinux: # yum install selinux-policy-mls
ĐČ /etc/selinux/config:
SELINUX=permissiv
SELINUXTYPE=mls
SĂžrg for at SELinux fungerer i permissiv modus: # setenforce 0
Bruk et skript fixfilesfor Ä sikre at filene blir merket pÄ nytt ved neste omstart:
# fixfiles -F onboot # reboot
34. Opprett en bruker med et spesifikt MLS-omrÄde: # useradd -Z staff_u john
Ved Ă„ bruke kommandoen useradd, tilordne den nye brukeren til en eksisterende SE-brukerLinux (i dette tilfellet, staff_u).
35. For Ă„ se korrespondansen mellom SE-brukereLinux Đž Linux: # semanage login -l
36. Definer et spesifikt omrÄde for brukeren: # semanage login --modify --range s2:c100 john
37. For Ă„ korrigere brukerens hjemmekatalogetikett (om nĂždvendig): # chcon -R -l s2:c100 /home/john
38. For Ă„ se gjeldende kategorier: # chcat -L
39. For Ă„ endre kategorier eller begynne Ă„ lage din egen, rediger filen som fĂžlger:
/etc/selinux/_<selinuxtype>_/setrans.conf
40. Slik kjĂžrer du en kommando eller et skript i en bestemt fil, rolle og brukerkontekst:
# runcon -t initrc_t -r system_r -u user_u yourcommandhere
-tfilkontekst-rrollekontekst-ubrukerkontekst
41. Containere som kjĂžrer med SE deaktivertLinux:
- Podman:
# podman run --security-opt label=disable ⊠- Docker:
# docker run --security-opt label=disable âŠ
42. Hvis du trenger Ă„ gi beholderen full tilgang til systemet:
- Podman:
# podman run --privileged ⊠- Docker:
# docker run --privileged âŠ
Og nÄ vet du allerede svaret. SÄ vÊr sÄ snill: ikke fÄ panikk og slÄ pÄ SELinux.
referanser:
- by
- av Dan Walsh
- by
- by
Kilde: www.habr.com
