En jukselapp for en sysadministrator pÄ SELinux42 svar pÄ viktige spÞrsmÄl

Oversettelsen av artikkelen ble utarbeidet spesielt for studentene pÄ kurset "Administrator Linux».

En jukselapp for en sysadministrator pÄ SELinux42 svar pÄ viktige spÞrsmÄl

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 Ethan Hunt fra «Mission: Impossible».

Stilt overfor dette dilemmaet bestemmer noen systemadministratorer seg for Ä ta blÄ pille, 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. SELinux 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 ommerking
  • selinux=0 → kjernen laster ikke inn SE-infrastrukturenLinux
  • enforcing=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 -Z
  • id -Z
  • ps -Z
  • netstat -Z
  • cp -Z
  • mkdir -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.html

26. 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 -M oppretter 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

  • -t filkontekst
  • -r rollekontekst
  • -u brukerkontekst

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:

Kilde: www.habr.com

KjĂžp pĂ„litelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere đŸ”„ KjĂžp pĂ„litelig webhotell med DDoS-beskyttelse, VPS VDS-servere | ProHoster