En fusklapp för en sysadministratör pÄ SELinux42 svar pÄ viktiga frÄgor

ÖversĂ€ttningen av artikeln förbereddes speciellt för kursens studenter "Administratör Linux».

En fusklapp för en sysadministratör pÄ SELinux42 svar pÄ viktiga frÄgor

HÀr fÄr du svar pÄ viktiga frÄgor om livet, universum och allt i Linux med förbÀttrad sÀkerhet.

"Den viktiga sanningen att saker inte alltid Àr vad de verkar vara Àr vÀlkÀnd..."

―Douglas Adams, Liftarens guide till galaxen

SĂ€kerhet. Tillförlitlighet. Efterlevnad. Policy. Sysadmin-apokalypsens fyra ryttare. Utöver vĂ„ra dagliga uppgifter – övervakning, sĂ€kerhetskopiering, driftsĂ€ttning, konfigurering, uppdatering etc. – Ă€r vi ocksĂ„ ansvariga för sĂ€kerheten i vĂ„ra system. Även de system dĂ€r en tredjepartsleverantör rekommenderar att vi inaktiverar utökad sĂ€kerhet. Det verkar som arbete Ethan Hunt frĂ„n "Mission Impossible".

Inför detta dilemma vÀljer vissa systemadministratörer att ta blÄ piller, eftersom de tror att de aldrig kommer att fÄ veta svaret pÄ den stora frÄgan om livet, universum och allting. Och som vi alla vet Àr det svaret 42.

I samma anda som Liftarens guide till galaxen kommer hÀr 42 svar pÄ viktiga frÄgor om kontroll och anvÀndning. SELinux i era system.

1. SELinux — Ă€r ett obligatoriskt Ă„tkomstkontrollsystem, vilket innebĂ€r att varje process har en etikett. Varje fil, katalog och systemobjekt har ocksĂ„ en etikett. Policyregler styr Ă„tkomst mellan etiketterade processer och objekt. KĂ€rnan upprĂ€tthĂ„ller dessa regler.

2. De tvĂ„ viktigaste begreppen Ă€r: mĂ€rkning — mĂ€rkning (filer, processer, portar etc.) och TyptillĂ€mpning (vilket isolerar processer frĂ„n varandra baserat pĂ„ typer).

3. Korrekt format pÄ etiketten user:role:type:level (frivillig).

4. Syftet med att tillhandahĂ„lla sĂ€kerhet pĂ„ flera nivĂ„er (FlernivĂ„sĂ€kerhet — MLS) Ă€r hanteringen av processer (domĂ€ner) baserat pĂ„ sĂ€kerhetsnivĂ„n för de data de kommer att anvĂ€nda. Till exempel kan en hemlig process inte lĂ€sa topphemliga data.

5. SÀkerstÀlla sÀkerhet i flera kategorier (Flerkategoriserad sÀkerhet - MCS) skyddar liknande processer frÄn varandra (t.ex. virtuella maskiner, OpenShift-motorer, SE-sandlÄdorLinux, containrar, etc.).

6. KÀrnparametrar för att Àndra SE-lÀgenLinux vid laddning:

  • autorelabel=1 → tvingar systemet att initiera ommĂ€rkning
  • selinux=0 → kĂ€rnan laddar inte SE-infrastrukturenLinux
  • enforcing=0 → starta i tillĂ„tande lĂ€ge

7. Om du behöver ommÀrka hela systemet:

# touch /.autorelabel
#reboot

Om systemetiketten innehÄller ett stort antal fel kan du behöva starta i tillÄtande lÀge för att ometiketteringen ska lyckas.

8. För att kontrollera om SE Àr aktiveratLinux: # getenforce

9. För att tillfÀlligt aktivera/avaktivera SELinux: # setenforce [1|0]

10. Kontrollera SE-statusLinux: # sestatus

11. InstÀllningsfil: /etc/selinux/config

12. Hur SE fungerarLinuxHÀr Àr ett exempel pÄ mÀrkning för Apache-webbservern:

  • BinĂ€r representation: /usr/sbin/httpd→httpd_exec_t
  • Konfigurationskatalog: /etc/httpd→httpd_config_t
  • Loggfilkatalog: /var/log/httpd → httpd_log_t
  • InnehĂ„llskatalog: /var/www/html → httpd_sys_content_t
  • Startskript: /usr/lib/systemd/system/httpd.service → httpd_unit_file_d
  • processen: /usr/sbin/httpd -DFOREGROUND → httpd_t
  • Hamnar: 80/tcp, 443/tcp → httpd_t, http_port_t

Process som körs i kontext httpd_t, kan interagera med objektet med etiketten httpd_something_t.

13. MÄnga lag accepterar argumentet -Z för att visa, skapa och redigera kontext:

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

Kontexter anges nÀr filer skapas baserat pÄ kontexten i deras överordnade katalog (med vissa undantag). RPM:er kan ange kontexter bÄde vid installationstillfÀllet och vid installationstillfÀllet.

14. Det finns fyra huvudorsaker till SE-felLinux, vilka beskrivs mer i detalj i punkterna 15–21 nedan:

  • MĂ€rkningsproblem
  • PĂ„ grund av nĂ„got som SELinux mĂ„ste veta
  • Fel i SE-policy/applikationLinux
  • Din information kan vara komprometterad

15. Problem med mÀrkning: om dina filer finns i /srv/myweb Àr felaktigt markerade kan Ätkomst nekas. HÀr Àr nÄgra sÀtt att ÄtgÀrda detta:

  • Om du kĂ€nner till etiketten:
    # semanage fcontext -a -t httpd_sys_content_t '/srv/myweb(/.*)?'
  • Om du kĂ€nner till en fil med motsvarande markeringar:
    # semanage fcontext -a -e /srv/myweb /var/www
  • ÅterstĂ€lla sammanhanget (för bĂ„da fallen):
    # restorecon -vR /srv/myweb

16. Problem med mÀrkning: Om du flyttar en fil istÀllet för att kopiera den, behÄller filen sin ursprungliga kontext. SÄ hÀr ÄtgÀrdar du problemet:

  • Ändra kontextkommandot med etiketten:
    # chcon -t httpd_system_content_t /var/www/html/index.html
  • Ändra kontextkommandot med lĂ€nketiketten:
    # chcon --reference /var/www/html/ /var/www/html/index.html
  • ÅterstĂ€ll kontext (för bĂ„da fallen): # restorecon -vR /var/www/html/

17. Om SELinux behöver veta, att HTTPD lyssnar pÄ port 8585, berÀtta för SELinux:

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

18. SELinux behöver veta Booleska vÀrden som lÄter dig Àndra delar av SE-policynLinux vid körning utan kÀnnedom om omskrivning av SE-policyLinuxOm du till exempel vill att httpd ska skicka e-post, ange: # setsebool -P httpd_can_sendmail 1

19. SELinux behöver veta logiska vÀrden för att aktivera/avaktivera SE-instÀllningarLinux:

  • För att se alla logiska vĂ€rden: # getsebool -a
  • För att se en beskrivning av varje: # semanage boolean -l
  • För att stĂ€lla in ett logiskt vĂ€rde: # setsebool [_boolean_] [1|0]
  • För permanent installation, lĂ€gg till -P. Till exempel: # setsebool httpd_enable_ftp_server 1 -P

20. SE-policyer/ansökningarLinux kan innehÄlla fel, inklusive:

  • Ovanliga kodvĂ€gar
  • konfigurationer
  • Omdirigera stdout
  • LĂ€ckage av filbeskrivningar
  • Körbart minne
  • DĂ„ligt byggda bibliotek

Öppna Ă€renden (skicka inte in en rapport till Bugzilla; det finns inget SLA i Bugzilla).

21. Din information kan vara komprometterad, om du har begrÀnsade domÀner och försöker:

  • Ladda kĂ€rnmoduler
  • Inaktivera pĂ„tvingat lĂ€ge SELinux
  • Skriv till etc_t/shadow_t
  • Ändra iptables regler

22. SE-verktygLinux för att utveckla policymoduler:

# yum -y install setroubleshoot setroubleshoot-server

Starta om eller starta om auditd efter installationen.

23. anvÀndning

journalctl

för att lista alla loggar relaterade till setroubleshoot:

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

24. anvÀndning journalctl för att lista alla loggar som Àr kopplade till en specifik SE-taggLinux. Till exempel:

# journalctl _SELINUX_CONTEXT=system_u:system_r:policykit_t:s0

25. NÀr ett SE-fel uppstÄrLinux anvÀnd logg setroubleshoot med ett förslag pÄ flera möjliga lösningar.
Till exempel frÄn 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. Loggning: SELinux registrerar information pÄ mÄnga stÀllen:

  • / var / log / messages
  • /var/log/audit/audit.log
  • /var/lib/settroubleshoot/settroubleshoot_database.xml

27. Loggning: Hitta SE-felLinux i revisionsloggen:

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

28. För att hitta SE-meddelandenLinux Åtkomstvektorcache (AVC) för en specifik tjĂ€nst:

# ausearch -m avc -c httpd

29. Verktyg audit2allow samlar in information frÄn loggar över förbjudna operationer och genererar sedan SE-behörighetspolicyreglerLinux. Till exempel:

  • För att skapa en lĂ€sbar beskrivning av orsaken till Ă„tkomstnegationen: # audit2allow -w -a
  • SĂ„ hĂ€r visar du vilken typ av tillĂ€mpningsregel som tillĂ„ter nekad Ă„tkomst: # audit2allow -a
  • För att skapa en anpassad modul: # audit2allow -a -M mypolicy
  • alternativ -M skapar en tillĂ€mpningsfil av typen (.te) med det angivna namnet och kompilerar regeln till ett policypaket (.pp): mypolicy.pp mypolicy.te
  • SĂ„ hĂ€r installerar du en anpassad modul: # semodule -i mypolicy.pp

30. SÄ hÀr konfigurerar du en separat process (domÀn) för att köras i tillÄtande lÀge: # semanage permissive -a httpd_t

31. Om du inte lÀngre vill att domÀnen ska vara tillÄtande: # semanage permissive -d httpd_t

32. SÄ hÀr inaktiverar du alla tillÄtande domÀner: # semodule -d permissivedomains

33. Aktivera MLS SE-policyLinux: # yum install selinux-policy-mls
ĐČ /etc/selinux/config:

SELINUX=permissiv
SELINUXTYPE=mls

Se till att SELinux fungerar i tillÄtande lÀge: # setenforce 0
AnvÀnd skriptet fixfilesför att sÀkerstÀlla att filerna fÄr nya namn vid nÀsta omstart:

# fixfiles -F onboot # reboot

34. Skapa en anvÀndare med ett specifikt MLS-intervall: # useradd -Z staff_u john

AnvÀnda kommandot useradd, mappa den nya anvÀndaren till en befintlig SE-anvÀndareLinux (I detta fall, staff_u).

35. För att se korrespondensen mellan SE-anvÀndareLinux О Linux: # semanage login -l

36. Definiera ett specifikt intervall för anvÀndaren: # semanage login --modify --range s2:c100 john

37. SÄ hÀr korrigerar du etiketten i anvÀndarens hemkatalog (om det behövs): # chcon -R -l s2:c100 /home/john

38. För att visa aktuella kategorier: # chcat -L

39. För att Àndra kategorier eller börja skapa dina egna, redigera filen enligt följande:

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

40. SÄ hÀr kör du ett kommando eller skript i en specifik fil, roll och anvÀndarkontext:

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

  • -t filkontext
  • -r rollkontext
  • -u anvĂ€ndarkontext

41. BehÄllare som körs med SE inaktiveratLinux:

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

  • Hamnarbetare: # docker run --security-opt label=disable 


42. Om du behöver ge en container fullstÀndig Ätkomst till systemet:

  • Podman: # podman run --privileged 

  • Hamnarbetare: # docker run --privileged 


Och nu vet du redan svaret. SÄ snÀlla: fÄ inte panik och slÄ pÄ SELinux.

LĂ€nkar:

KĂ€lla: will.com

Köp pĂ„litlig hosting för webbplatser med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster