Denne artikel er en spejling af maskinoversættelse, klik venligst her for at springe til den oprindelige artikel.

Udsigt: 28349|Svar: 4

[linux] En grundig forståelse af, hvad SELINUX i Linux er

[Kopier link]
Opslået på 05/07/2019 11.25.50 | | | |
1. Præambel

Security-Enhanced Linux (SELinux) er et Linux-kernemodul og et sikkerhedssubsystem i Linux.

SELinux blev primært udviklet af NSA. Linux-kerner 2.6 og derover integrerer allerede SELinux-moduler.

SELinux er meget komplekst og har en masse konceptuel ting, som er svære at lære. Mange Linux-systemadministratorer har slået SELinux fra, fordi de finder det besværligt.

Hvis du kan mestre SELinux og bruge det korrekt, tror jeg, at hele systemet grundlæggende kan nå det punkt, hvor det er "uforgængeligt" (husk altid, at der ikke er nogen absolut sikkerhed).

At mestre de grundlæggende koncepter i SELinux samt simple konfigurationsmetoder er et obligatorisk kursus for enhver Linux-systemadministrator.

Denne artikel er baseret på CentOS 7.4.1708.

Denne artikel er udelukkende en personlig læringsoplevelse og udveksling – fejl er uundgåelige, kun til reference! Hvis du finder en fejl, så gør det endelig opmærksom på det, mange tak!

2. SELinux' rolle og tilladelsesstyringsmekanismen

2.1 SELinux' rolle

SELinux' hovedfunktion er at minimere de ressourcer, som serviceprocesser i systemet kan tilgå (princippet om mindst privilegium).

Forestil dig, at hvis en netværkstjeneste, der kører som root, har en 0day-sårbarhed, kan hackere udnytte denne sårbarhed til at gøre, hvad de vil på din server som root. Er det ikke skræmmende?

SELinux er her for at løse dette problem.

2.2 DAC

I et operativsystem, der ikke bruger SELinux, er faktoren, der afgør, om en ressource kan tilgås, om en ressource har tilladelser fra den tilsvarende bruger (læs, skriv, eksekver).

Så længe processen, der tilgår denne ressource, opfylder ovenstående betingelser, kan den tilgås.

Det mest fatale problem er, at root-brugere ikke er underlagt nogen regulering, og alle ressourcer på systemet kan tilgås uden begrænsninger.

Hoveddelen af denne tilladelsesstyringsmekanisme er brugeren, også kendt som autonom adgangskontrol (DAC).

2.3 MAC

I et operativsystem, der bruger SELinux, er de faktorer, der afgør, om en ressource kan tilgås, ikke kun ovenstående faktorer, men også om hver type proces har adgang til en bestemt type ressource.

På denne måde er det, selv hvis en proces kører som root, nødvendigt at bestemme typen af proces og hvilke typer ressourcer, der må tilgås, før man beslutter, om adgang til en ressource skal tillas. Processens aktive rum kan også komprimeres til et minimum.

Selv en serviceproces, der kører som root, har som regel kun adgang til de ressourcer, den har brug for. Selv hvis et program er sårbart, er omfanget af påvirkningen begrænset til de ressourcer, det har adgang til. Sikkerheden øges betydeligt.

Hoveddelen af denne tilladelsesstyringsmekanisme er processen, også kendt som obligatorisk adgangskontrol (MAC).

MAC er opdelt i to måder, den ene kaldes Category Security (MCS) mode, og den anden kaldes Multi-Level Security (MLS) mode.

Følgende handlinger er i MCS-tilstand.

2.4 Sammenligning af DAC og MAC

Her er et billede til at illustrere.



Som du kan se, kan den tilsvarende mappe i DAC-tilstand tilgås, så længe den tilsvarende mappe har brugerens rettigheder. I MAC-tilstand er det også begrænset af det udvalg af mapper, som processer har adgang til.

3. Grundlæggende begreber i SELinux

3.1 Emne

Det kan fuldstændigt sidestilles med en proces.

Bemærk: For nem forståelse betragtes processen, medmindre andet er angivet, som hoveddelen nedenfor.

3.2 Formål

Ressourcer tilgået af rektoren. Det kan være filer, mapper, porte, enheder osv.

Bemærk: For nemheds skyld, medmindre andet er angivet, betragtes følgende dokumenter eller kataloger som objekter.

3.3 Politik og regel

Der er som regel et stort antal filer og processer i systemet, og for at spare tid og overhead regulerer vi som regel kun visse processer selektivt.

Og hvilke processer der skal reguleres, og hvordan de skal kontrolleres, bestemmes af politikken.

Der er flere regler i en police. Nogle regler kan aktiveres eller deaktiveres efter behov (herefter kaldet booleske regler).

Reglerne er modulære og kan udvides. Når en ny applikation installeres, kan applikationen tilføje regler ved at tilføje nye moduler. Brugere kan også manuelt tilføje eller trække regler fra.

I CentOS 7-systemet findes der tre sæt politikker, nemlig:

1. målrettet: Kontrollerer de fleste netværksserviceprocesser. Dette er den politik, systemet bruger som standard (alle nedenfor bruges).

2. Minimum: Baseret på målrettede systemer reguleres kun udvalgte netværksserviceprocesser. Generelt ikke.

3. MLS: Flerniveaus sikkerhedsbeskyttelse. Reguler alle processer. Dette er den strengeste politik, og konfigurationen er meget vanskelig. Generelt bruges det ikke, medmindre der er ekstremt høje sikkerhedskrav.

Politikker kan sættes i /etc/selinux/config.

3.4 Sikkerhedskontekst

Sikkerhedskontekst er kernen i SELinux.

Sikkerhedskontekst Jeg opdeler det i "processikkerhedskontekst" og "dokumentsikkerhedskontekst".

En processikkerhedskontekst svarer typisk til flere dokumentsikkerhedskontekster.

Kun når sikkerhedskonteksten for de to svarer til, kan en proces få adgang til filen. Deres korrespondance bestemmes af reglerne i policen.

Filsikkerhedskonteksten bestemmes af, hvor filen blev oprettet, og den proces, der skabte den. Og systemet har et sæt standardværdier, og brugerne kan også indstille standardværdierne.

Det er vigtigt at bemærke, at det ikke ændrer sikkerhedskonteksten for dine filer blot at flytte filer.

Strukturen og betydningen af sikkerhedskonteksten

Sikkerhedskonteksten har fire felter, adskilt af kolon. Form som: system_u:object_r:admin_home_t:s0.


3.5 SELinux Arbejdstilstand

SELinux har tre driftsformer, nemlig:

1. håndhævet: Håndhævet tilstand. Overtrædelser af SELinux-reglerne vil blive blokeret og registreret i loggene.

2. Tilladende: Tolerance-mode. SELinux-regelovertrædelser logges kun i loggene. Generelt til fejlfinding.

3. deaktiveret: Sluk for SELinux.

SELinux-arbejdstilstand kan sættes i /etc/selinux/config.

Hvis du vil skifte fra deaktiveret til håndhævelse eller tilladelse, skal du genstarte systemet. Og omvendt.

Håndhævelses- og tilladelsestilstande kan hurtigt skiftes med Setenforce 1|0-kommandoen.

Det er vigtigt at bemærke, at hvis systemet har kørt med SELinux slået fra i et stykke tid, kan den første genstart efter SELinux er tændt være langsommere. Fordi systemet skal skabe en sikker kontekst for filerne på disken (jeg sagde, jeg genstartede i cirka 10 minutter og troede, den var død...... )。

SELinux-logs skal logges med hjælp fra auditd.service, venligst deaktivér dem ikke.

3.6 SELinux Arbejdsgang

Her er et citat fra et billede, uden meget forklaring.



Bemærk: Sikkerhedsteksten ovenfor henviser til sikkerhedskonteksten.

4. Grundlæggende SELinux-operationer

4.1 Forespørg sikkerhedskonteksten for en fil eller mappe

Kommando grundlæggende brug

ls -Z

Eksempler på anvendelse

Forespørg sikkerhedskonteksten for /etc/hosts.

ls -Z /etc/hosts

Udførelsesresultater

-rw-r-r--. rodrod system_u:object_r:net_conf_t:s0 /etc/hosts

4.2 Forespørg processens sikkerhedskontekst

Kommando grundlæggende brug

ps auxZ | grep -v grep | greb

Eksempler på anvendelse

Forespørg sikkerhedskonteksten for Nginx-relaterede processer.

ps auxZ | grep -v grep | grep nginx

Udførelsesresultater

system_u:system_r:httpd_t:s0 root 7997 0.0 0.0 122784 2156 ? Ss 14:31 0:00 nginx: master process /usr/sbin/nginx

system_u:system_r:httpd_t:s0 nginx 7998 0.0 0.0 125332 7560 ? S 14:31 0:00 nginx: worker process

4.3 Manuelt modificerer sikkerhedskonteksten for en fil eller mappe

Kommando grundlæggende brug

CHCON [...]

Optionsfunktion -u Ændr brugerfeltet i sikkerhedskonteksten -r Ændr rollefeltet i sikkerhedskonteksten -t Ændr typefeltet for sikkerhedskonteksten -l Ændr niveaufeltet i sikkerhedskonteksten --reference Ændr sikkerhedskonteksten i overensstemmelse med den angivne fil eller mappe -R Rekursiv operation -h Ændr sikkerhedskonteksten for soft linket (ændr den tilsvarende fil for soft link uden denne mulighed)

Eksempler på anvendelse

Ændr sikkerhedskonteksten for testen til aaa_u:bbb_r:ccc_t:s0.

CHCON -U aaa_u -R bbb_r -T ccc_t Test

4.4 Tilbagefør sikkerhedskonteksten for en fil eller mappe til dens standardværdi

Kommando grundlæggende brug

restorecon [muligheder] [...]

Optionsfunktion - V Printoperation Procedure - R Rekursiv Operation

Eksempler på anvendelse

Efter du har tilføjet nogle webfiler til mappen på din Nginx-server, skal du sætte den korrekte sikkerhedskontekst for disse nye filer.

restorecon -R /usr/share/nginx/html/

4.5 Forespørgsel Booleske regler og deres status i systemet

Kommando grundlæggende brug

getsebool -a

Da kommandoen enten forespørger alle regler eller kun én regel, forespørger den som regel alle regler først og filtrerer derefter med grep.

Eksempler på anvendelse

Forespørg booleske regler relateret til httpd.

getsebool -a | grep httpd

Udførelsesresultater

httpd_anon_write --> af

httpd_builtin_scripting --> på

httpd_can_check_spam --> væk

httpd_can_connect_ftp --> væk

#以下省略

4.6 Skift af en boolesk regel

Kommando grundlæggende brug

setsebool [mulighed]

Mulighedsfunktionen -P genstart træder stadig i kraft

Eksempler på anvendelse

Tænd httpd_anon_write regler.

setsebool -P httpd_anon_write på

4.7 Tilføj en standard sikkerhedskontekst for en mappe

Kommando grundlæggende brug

semanage fcontext -a -t "(/.*)?"

Bemærk: Standardsikkerhedskonteksten for en mappe eller fil kan vises ved at bruge kommandoen semanage fcontext -l i kombination med grep-filtrering.

Eksempler på anvendelse

Efter du tilføjer en ny sitemappe /usr/share/nginx/html2 til Nginx, skal du sætte samme standard sikkerhedskontekst for den som for den oprindelige mappe.

Semanage Fcontext -a -t httpd_sys_content_t "/usr/share/nginx/html2(/.*)?"

4.8 Tilføj porte, der er tilladt af visse typer processer

Kommando grundlæggende brug

semanage port -a -t -p

Bemærk: Portnumrene tilladt for forskellige servicetyper kan ses ved at bruge kommandoen semanage port -l med grep-filtrering.

Eksempler på anvendelse

For Nginx skal du bruge port 10080 til HTTP-tjenester.

Semanage Port -A -t http_port_t -P TCP 10080

5. SELinux-fejlanalyse og -løsning

5.1 Forståelse af SELinux-logs

Når SELinux er aktiveret, betragtes en vis normal adfærd hos mange tjenester som en overtrædelse (både i titlen og i fejlene nedenfor).

På nuværende tidspunkt skal vi bruge SELinux-overtrædelseslogs til at analysere og løse dem.

SELinux-overtrædelseslogfiler gemmes i /var/log/audit/audit.log.

/var/log/audit/audit.log 的内容大概是这样的。

type=LOGIN msg=audit(1507898701.391:515): pid=8523 uid=0 subj=system_u:system_r:crond_t:s0-s0:c0.c1023 old-auid=4294967295 auid=0 tty=(ingen) old-ses=4294967295 ses=25 res=1

type=USER_START msg=audit(1507898701.421:516): pid=8523 uid=0 auid=0 ses=25 subj=system_u:system_r:crond_t:s0:c0.c1023 msg='op=PAM:session_open grantors=pam_loginuid,pam_ keyinit,pam_limits,pam_systemd acct="root" exe="/usr/sbin/crond" hostname=? ADDR=? terminal=cron res=succes'

...

Filen består af meget indhold, og det er blandet med mange systemrevisionslogs, som intet har med SELinux-fejl at gøre. Vi bruger sealert-værktøjet til at hjælpe med analysen (hvis prompten ikke kan finde kommandoen, installer setroubleshoot-pakken).

5.2 Analyser fejl med forseglingsmiddel

Kommando grundlæggende brug

sealert -a /var/log/audit/audit.log

Efter at have udført kommandoen, skal systemet tage sig tid til at analysere overtrædelserne i logbøgerne og levere en analyserapport.




Tidligere:CentOS7 View og sluk firewallen
Næste:Mestre adgangen til Java API-grænsefladen i HDFS
 Udlejer| Opslået på 22/07/2021 17.17.58 |
Sluk for SELinux

Getenforce #查看是否是 deaktiveret, hvis ikke, udfør kommandoen nedenfor
vim /etc/selinux/config
Skift SELINUX=enforcing til SELINUX=disabled, gem og afslut
 Udlejer| Opslået på 15/10/2021 13.21.42 |
 Udlejer| Opslået på 15/10/2021 14.22.40 |
Deaktiver swap partition swap swap

 Udlejer| Opslået på 03/09/2024 14.16.43 |
Luk SELINUX





Ansvarsfraskrivelse:
Al software, programmeringsmaterialer eller artikler udgivet af Code Farmer Network er kun til lærings- og forskningsformål; Ovenstående indhold må ikke bruges til kommercielle eller ulovlige formål, ellers skal brugerne bære alle konsekvenser. Oplysningerne på dette site kommer fra internettet, og ophavsretstvister har intet med dette site at gøre. Du skal slette ovenstående indhold fuldstændigt fra din computer inden for 24 timer efter download. Hvis du kan lide programmet, så understøt venligst ægte software, køb registrering og få bedre ægte tjenester. Hvis der er nogen overtrædelse, bedes du kontakte os via e-mail.

Mail To:help@itsvse.com