SELinux Cheatsheet fir Systemadministratoren: 42 Äntwerten op wichteg Froen

D'Iwwersetzung vum Artikel gouf speziell fir d'Schüler vum Cours virbereet "Linux Administrator".

SELinux Cheatsheet fir Systemadministratoren: 42 Äntwerten op wichteg Froen

Hei kritt Dir Äntwerten op wichteg Froen iwwer d'Liewen, den Universum an alles am Linux mat verbesserter Sécherheet.

"Déi wichteg Wourecht datt d'Saachen net ëmmer sinn wat se schéngen ass allgemeng Wëssen ..."

-Douglas Adams, Den Hitchhiker's Guide zu der Galaxis

Sécherheet. Méi Zouverlässegkeet. Korrespondenz. Politik. Véier Reider vun der Apokalypse sysadmin. Nieft eisen alldeeglechen Aufgaben - Iwwerwachung, Backup, Ëmsetzung, Konfiguratioun, Aktualiséierung, etc. - si mir och verantwortlech fir d'Sécherheet vun eise Systemer. Och déi Systemer wou den Drëtte-Partei-Provider recommandéiert datt mir verstäerkte Sécherheet auszeschalten. Et fillt sech wéi Aarbecht Ethan Hunt aus "Mission: Impossible."

Konfrontéiert mat dësem Dilemma, decidéiert e puer System Administrateuren ze huelen blo Pille, well se mengen, si wäerten ni d'Äntwert op déi grouss Fro vum Liewen, dem Universum an alles wëssen. A wéi mir all wëssen, ass dës Äntwert 42.

Am Geescht vum The Hitchhiker's Guide to the Galaxy, hei sinn 42 Äntwerten op wichteg Froen iwwer Kontroll a Gebrauch. SELinux op Äre Systemer.

1. SELinux ass e gezwongenen Zougangskontrollsystem, dat heescht datt all Prozess e Label huet. All Datei, Verzeechnes a Systemobjekt huet och Etiketten. Politikregele kontrolléieren den Zougang tëscht tagged Prozesser an Objeten. De Kernel ëmsetzt dës Regelen.

2. Déi zwee wichtegst Konzepter sinn: Etikettéieren - Marquage (Dateien, Prozesser, Häfen, etc.) an Typ Duerchféierung (wat Prozesser vuneneen isoléiert baséiert op Typen).

3. Korrekt Label Format user:role:type:level (optional).

4. Den Zweck fir Multi-Level Sécherheet ze liwweren (Multi-Level Sécherheet - MLS) ass fir Prozesser (Domänen) ze managen baséiert op dem Sécherheetsniveau vun den Donnéeën déi se benotzen. Zum Beispill kann e geheime Prozess net Top geheim Daten liesen.

5. Multi-Kategorie Sécherheet garantéieren (Multi-Kategorie Sécherheet - MCS) schützt ähnlech Prozesser vuneneen (zum Beispill virtuell Maschinnen, OpenShift Motoren, SELinux Sandboxen, Container, etc.).

6. Kernel Optiounen fir SELinux Modi beim Boot z'änneren:

  • autorelabel=1 → bewierkt datt de System nei Label leeft
  • selinux=0 → de Kernel lued d'SELinux Infrastruktur net
  • enforcing=0 → Luede am permissive Modus

7. Wann Dir de ganze System nei bezeechnen musst:

# touch /.autorelabel
#reboot

Wann d'Systemmarkéierung eng grouss Zuel vu Feeler enthält, musst Dir vläicht am permissive Modus booten fir d'Remarkéierung ze erfollegräich.

8. Fir ze kontrolléieren ob SELinux aktivéiert ass: # getenforce

9. Fir SELinux temporär z'aktivéieren / auszeschalten: # setenforce [1|0]

10. Iwwerpréift SELinux Status: # sestatus

11. Konfiguratiounsdatei: /etc/selinux/config

12. Wéi funktionnéiert SELinux? Hei ass e Beispill Markéierung fir den Apache Webserver:

  • Binär Representatioun: /usr/sbin/httpd→httpd_exec_t
  • Konfiguratiounsverzeichnis: /etc/httpd→httpd_config_t
  • Log Datei Verzeechnes: /var/log/httpd → httpd_log_t
  • Inhaltsverzeechnes: /var/www/html → httpd_sys_content_t
  • Start Skript: /usr/lib/systemd/system/httpd.service → httpd_unit_file_d
  • Prozess: /usr/sbin/httpd -DFOREGROUND → httpd_t
  • Häfen: 80/tcp, 443/tcp → httpd_t, http_port_t

Prozess Lafen am Kontext httpd_t, kann mat engem markéierten Objet interagéieren httpd_something_t.

13. Vill Kommandoen akzeptéieren en Argument -Z Kontext kucken, erstellen an änneren:

  • ls -Z
  • id -Z
  • ps -Z
  • netstat -Z
  • cp -Z
  • mkdir -Z

Kontexter ginn etabléiert wann Dateien erstallt ginn op Basis vum Kontext vun hirem Elterenverzeichnis (mat e puer Ausnahmen). RPMs kënnen Kontexter etabléieren wéi während der Installatioun.

14. Et gi véier Haaptursaachen vu SELinux Feeler, déi méi detailléiert an de Punkten 15-21 hei ënnen beschriwwe ginn:

  • Etikettéieren Problemer
  • Wéinst eppes wat SELinux muss wëssen
  • Feeler an der SELinux Politik / Applikatioun
  • Är Informatioun kann kompromittéiert ginn

15. Etikettéierungsproblem: wann Är Dateien an /srv/myweb sinn falsch markéiert, Zougang kann refuséiert ginn. Hei sinn e puer Weeër fir dëst ze fixéieren:

  • Wann Dir de Label kennt:
    # semanage fcontext -a -t httpd_sys_content_t '/srv/myweb(/.*)?'
  • Wann Dir e Fichier mat gläichwäertege Marquage kennt:
    # semanage fcontext -a -e /srv/myweb /var/www
  • De Kontext restauréieren (fir béid Fäll):
    # restorecon -vR /srv/myweb

16. Etikettéierungsproblem: wann Dir d'Datei réckelt anstatt se ze kopéieren, behält d'Datei säin urspréngleche Kontext. Fir dëse Problem ze fixéieren:

  • Ännert de Kontextbefehl mam Label:
    # chcon -t httpd_system_content_t /var/www/html/index.html
  • Ännert de Kontext Kommando mam Link Label:
    # chcon --reference /var/www/html/ /var/www/html/index.html
  • De Kontext restauréieren (fir béid Fäll): # restorecon -vR /var/www/html/

17. wann SELinux Dir musst wëssendatt HTTPD um Hafen 8585 lauschtert, sot SELinux:

# semanage port -a -t http_port_t -p tcp 8585

18. SELinux Dir musst wëssen Boolesch Wäerter déi et erlaben Deeler vun der SELinux Politik während der Runtime z'änneren ouni Wësse vun der SELinux Politik ze iwwerschreiwe. Zum Beispill, wann Dir httpd wëllt E-Mail schécken, gitt: # setsebool -P httpd_can_sendmail 1

19. SELinux Dir musst wëssen logesch Wäerter fir SELinux Astellungen z'aktivéieren / auszeschalten:

  • Fir all boolesch Wäerter ze gesinn: # getsebool -a
  • Fir eng Beschreiwung vun all eenzel ze gesinn: # semanage boolean -l
  • Fir e boolesche Wäert ze setzen: # setsebool [_boolean_] [1|0]
  • Fir eng permanent Installatioun, addéieren -P. Zum Beispill: # setsebool httpd_enable_ftp_server 1 -P

20. SELinux Politiken / Uwendungen kënne Feeler enthalen, dorënner:

  • Ongewéinlech Code Weeër
  • Konfiguratiounen
  • Redirecting stdout
  • Dateibeschreiwung leeft
  • Ausféierbar Erënnerung
  • Schlecht gebaut Bibliothéiken

Open Ticketen (ginn e Bericht un Bugzilla of; Bugzilla huet keng SLA).

21. Är Informatioun kann kompromittéiert ginnwann Dir limitéiert Domainen hutt probéiert:

  • Lueden Kernel Moduler
  • Auszeschalten erzwongen SELinux Modus
  • Schreiwen un etc_t/shadow_t
  • Iptables Regelen änneren

22. SELinux Tools fir Politikmoduler z'entwéckelen:

# yum -y install setroubleshoot setroubleshoot-server

Restart oder nei starten auditd no Installatioun.

23. Benotzt

journalctl

fir eng Lëscht vun all Logbicher ze weisen verbonne mat setroubleshoot:

# journalctl -t setroubleshoot --since=14:20

24. Benotzt journalctl fir all Logbicher mat engem spezifesche SELinux Tag ze lëschten. Zum Beispill:

# journalctl _SELINUX_CONTEXT=system_u:system_r:policykit_t:s0

25. Wann e SELinux Feeler geschitt, benotzt de Log setroubleshoot bitt verschidde méiglech Léisungen.
Zum Beispill vun 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 registréiert Informatioun op ville Plazen:

  • / var / log / Messagen
  • /var/log/audit/audit.log
  • /var/lib/setroubleshoot/setroubleshoot_database.xml

27. Logging: Sich no SELinux Feeler am Audit Log:

# ausearch -m AVC,USER_AVC,SELINUX_ERR -ts today

28. Fir SELinux Access Vector Cache (AVC) Messagen fir e spezifesche Service ze fannen:

# ausearch -m avc -c httpd

29. Utility audit2allow sammelt Informatioun aus Logbicher vu verbuedenen Operatiounen a generéiert dann SELinux Erlaabnis Politik Regelen. Zum Beispill:

  • Fir eng mënschlech liesbar Beschreiwung ze kreéieren firwat den Zougang verweigert gëtt: # audit2allow -w -a
  • Fir eng Zort Duerchféierungsregel ze gesinn déi den Zougang verweigert erlaabt: # audit2allow -a
  • Fir e personaliséierte Modul ze kreéieren: # audit2allow -a -M mypolicy
  • Optioun -M erstellt en Typ Duerchféierungsdatei (.te) mam spezifizéierten Numm a kompiléiert d'Regel an e Politikpaket (.pp): mypolicy.pp mypolicy.te
  • Fir e personaliséierte Modul z'installéieren: # semodule -i mypolicy.pp

30. Fir e separaten Prozess (Domain) ze konfiguréieren fir am permissive Modus ze schaffen: # semanage permissive -a httpd_t

31. Wann Dir net méi wëllt datt d'Domain permissiv ass: # semanage permissive -d httpd_t

32. Fir all permissiv Domainen auszeschalten: # semodule -d permissivedomains

33. MLS SELinux Politik aktivéieren: # yum install selinux-policy-mls
в /etc/selinux/config:

SELINUX=permissive
SELINUXTYPE=mls

Vergewëssert Iech datt SELinux am permissive Modus leeft: # setenforce 0
Benotzt e Skript fixfilesFir sécherzestellen datt d'Dateien um nächste Restart nei markéiert ginn:

# fixfiles -F onboot # reboot

34. Erstellt e Benotzer mat enger spezifescher MLS Gamme: # useradd -Z staff_u john

Benotzt de Kommando useradd, map den neie Benotzer op en existente SELinux Benotzer (an dësem Fall, staff_u).

35. Fir d'Mapping tëscht SELinux a Linux Benotzer ze gesinn: # semanage login -l

36. Definéiert eng spezifesch Gamme fir de Benotzer: # semanage login --modify --range s2:c100 john

37. Fir de Benotzer säin Heemverzeichnis Label ze korrigéieren (wann néideg): # chcon -R -l s2:c100 /home/john

38. Fir aktuell Kategorien ze gesinn: # chcat -L

39. Fir Kategorien z'änneren oder Äert eegent ze kreéieren, ännert d'Datei wéi follegt:

/etc/selinux/_<selinuxtype>_/setrans.conf

40. Fir e Kommando oder Skript an enger spezifescher Datei, Roll a Benotzerkontext auszeféieren:

# runcon -t initrc_t -r system_r -u user_u yourcommandhere

  • -t Fichier Kontext
  • -r Roll Kontext
  • -u Benotzerkontext

41. Container lafen mat SELinux behënnert:

  • Podman: # podman run --security-opt label=disable …
  • Docker: # docker run --security-opt label=disable …

42. Wann Dir de Container voll Zougang zum System gitt:

  • Podman: # podman run --privileged …
  • Docker: # docker run --privileged …

An elo wësst Dir schonn d'Äntwert. Also w.e.g.: Panik net an aktivéiert SELinux.

Referenzen:

Source: will.com

Setzt e Commentaire