Ta članek je zrcalni članek strojnega prevajanja, kliknite tukaj za skok na izvirni članek.

Pogled: 28349|Odgovoriti: 4

[linux] Temeljito razumevanje, kaj je selinux v Linuxu

[Kopiraj povezavo]
Objavljeno na 5. 07. 2019 11:25:50 | | | |
1. Predgovor

Varnostno izboljšani Linux (SELinux) je modul jedra Linuxa in varnostni podsistem Linuxa.

SELinux je bil predvsem razvit s strani NSA. Linux jedra 2.6 in novejši že vključujejo SELinux module.

SELinux je zelo kompleksen in vsebuje veliko konceptualnih stvari, ki jih je težko osvojiti. Veliko Linux sistemskih administratorjev je izklopilo SELinux, ker jim povzroča težave.

Če obvladaš SELinux in ga pravilno uporabljaš, mislim, da lahko celoten sistem doseže točko, ko postane "neuničljiv" (vedno ne pozabi, da ni absolutne varnosti).

Obvladovanje osnovnih konceptov SELinuxa ter preprostih metod konfiguracije je obvezen predmet za vsakega Linux sistemskega administratorja.

Ta članek temelji na CentOS 7.4.1708.

Ta članek je zgolj osebna izkušnja, deljenje in izmenjava učnih izkušenj, napake so neizogibne, le za referenco! Če najdete napako, jo prosim opozorite, najlepša hvala!

2. Vloga SELinuxa in mehanizem upravljanja dovoljenj

2.1 Vloga SELinuxa

Glavna funkcija SELinuxa je zmanjšati vire, do katerih lahko dostopajo servisni procesi v sistemu (načelo najmanjših privilegijev).

Predstavljajte si, da ima omrežna storitev, ki teče kot root, ranljivost 0day, hekerji pa lahko to ranljivost izkoristijo in počnejo karkoli želijo na vašem strežniku kot root. Ali ni strašljivo?

SELinux je tukaj, da reši ta problem.

2.2 DAC

V operacijskem sistemu, ki ne uporablja SELinuxa, je dejavnik, ki določa, ali je vir dostopen, ali ima vir dovoljenja ustreznega uporabnika (branje, pisanje, izvajanje).

Dokler proces, ki dostopa do tega vira, izpolnjuje zgoraj navedene pogoje, je dostopen do njega.

Najbolj usodna težava je, da root uporabniki niso podvrženi nobeni regulaciji, vsi viri v sistemu pa so dostopni brez omejitev.

Glavni del tega mehanizma za upravljanje dovoljenj je uporabnik, znan tudi kot avtonomni nadzor dostopa (DAC).

2.3 MAC

V operacijskem sistemu, ki uporablja SELinux, dejavniki, ki določajo, ali je vir dostopen, niso le zgoraj navedeni dejavniki, temveč tudi, ali ima vsaka vrsta procesa dostop do določene vrste vira.

Na ta način, tudi če proces teče kot koren, je treba določiti vrsto procesa in vrste virov, do katerih je dovoljen dostop, preden se odločimo, ali dovoliti dostop do vira. Aktivni prostor procesa je mogoče prav tako stisniti na minimum.

Tudi storitveni proces, ki teče kot root, ima običajno dostop le do potrebnih virov. Tudi če je program ranljiv, je obseg vpliva omejen na vire, do katerih ima dostop. Varnost je močno povečana.

Glavni del tega mehanizma za upravljanje dovoljenj je proces, znan tudi kot obvezni nadzor dostopa (MAC).

MAC je razdeljen na dva načina: eden se imenuje Category Security (MCS) način, drugi pa Multi-Level Security (MLS) način.

Naslednje akcije so v načinu MCS.

2.4 Primerjava DAC in MAC

Tukaj je slika za ilustracijo.



Kot lahko vidite, je v načinu DAC, dokler ima ustrezna mapa dovoljenja ustreznega uporabnika, dostopna do nje. V MAC načinu je omejen tudi z obsegom imenikov, do katerih lahko procesi dostopajo.

3. Osnovni koncepti SELinuxa

3.1 Tema

Lahko ga popolnoma enačimo s procesom.

Opomba: Za lažje razumevanje, razen če ni drugače navedeno, se postopek šteje kot glavno telo spodaj.

3.2 Namen

Viri, do katerih dostopa ravnatelj. Lahko so datoteke, imeniki, porti, naprave itd.

Opomba: Za lažje razumevanje, razen če ni drugače navedeno, se naslednji dokumenti ali imeniki štejejo za predmete.

3.3 Politika in pravila

V sistemu je običajno veliko datotek in procesov, zato za prihranek časa in režije običajno selektivno reguliramo le določene procese.

In katere procese je treba regulirati ter kako jih nadzorovati, določa politika.

V polici je več pravil. Nekatera pravila je mogoče omogočiti ali onemogočiti po potrebi (v nadaljevanju Booleova pravila).

Pravila so modularna in razširljiva. Pri namestitvi nove aplikacije lahko aplikacija doda pravila z dodajanjem novih modulov. Uporabniki lahko pravila tudi ročno dodajajo ali odvzemajo.

V sistemu CentOS 7 obstajajo trije sklopi politik, in sicer:

1. Ciljno: Nadzoruje večino procesov omrežnih storitev. To je politika, ki jo sistem privzeto uporablja (uporabljene so vse spodaj).

2. Minimum: Na podlagi ciljnih storitev so regulirani le izbrani omrežni storitveni procesi. Na splošno ne.

3. MLS: večnivojska varnostna zaščita. Uravnavajte vse procese. To je najstrožja politika, konfiguracija pa je zelo zahtevna. Na splošno se ne uporablja, razen če obstajajo izjemno visoke varnostne zahteve.

Politike je mogoče nastaviti v /etc/selinux/config.

3.4 Varnostni kontekst

Varnostni kontekst je v središču SELinuxa.

Varnostni kontekst razdelim na "kontekst varnosti procesov" in "kontekst varnosti dokumentov".

Kontekst varnosti procesov običajno ustreza več kontekstom varnosti dokumentov.

Le kadar varnostni kontekst obeh ustrezuje, lahko proces dostopa do datoteke. Njuna korespondenca je določena s pravili v polici.

Kontekst varnosti datoteke določa kraj, kjer je bila datoteka ustvarjena, in proces, ki jo je ustvaril. Sistem ima nabor privzetih vrednosti, uporabniki pa lahko nastavijo tudi privzete vrednosti.

Pomembno je poudariti, da samo premikanje datotek ne spremeni varnostnega konteksta vaših datotek.

Struktura in pomen varnostnega konteksta

Varnostni kontekst ima štiri polja, ločena z dvopičji. Oblika, kot je: system_u:object_r:admin_home_t:s0.


3.5 Delovni način SELinuxa

SELinux ima tri načine delovanja, in sicer:

1. uveljavljanje: Prisilni način. Kršitve pravil SELinux bodo blokirane in zabeležene v dnevnike.

2. Permisivno: način tolerance. Kršitve pravil SELinux se beležijo le v dnevnikih. Na splošno za razhroščevanje.

3. onemogočen: Izklopite SELinux.

SELinux delovni način lahko nastavite v /etc/selinux/config.

Če želite preklopiti iz onemogočenega na izvrševanje ali permisivno, boste morali sistem znova zagnati. In obratno.

Načine izvrševanja in dovoljenja je mogoče hitro preklopiti z ukazom Setenforce 1|0.

Pomembno je poudariti, da če je sistem že nekaj časa deloval z izklopljenim SELinuxom, je prvi ponovni zagon po vklopu lahko počasnejši. Ker mora sistem ustvariti varen kontekst za datoteke na disku (rekel sem, da sem ponovno zagnal za približno 10 minut in mislil, da je pokvarjen...... )。

SELinux dnevnike je treba beležiti s pomočjo auditd.service, prosimo, da jih ne onemogočite.

3.6 Potek dela SELinux

Tukaj je citat s slike, brez večje razlage.



Opomba: Zgornje varnostno besedilo se nanaša na varnostni kontekst.

4. Osnovne operacije SELinuxa

4.1 Poizvedba o varnostnem kontekstu datoteke ali mape

Osnovna uporaba ukazov

ls -Z

Primeri uporabe

Poizvedba o varnostnem kontekstu /etc/host.

ls -Z /itd/gostitelji

Rezultati izvedbe

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

4.2 Poizvedba o varnostnem kontekstu procesa

Osnovna uporaba ukazov

ps auxZ | grep -v grep | grep

Primeri uporabe

Poizvedba o varnostnem kontekstu procesov, povezanih z Nginxom.

ps auxZ | grep -v grep | Grep Nginx

Rezultati izvedbe

system_u:system_r:httpd_t:s0 koren 7997 0.0 0.0 122784 2156 ? SS 14:31 0:00 nginx: glavni proces /usr/sbin/nginx

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

4.3 Ročna sprememba varnostnega konteksta datoteke ali mape

Osnovna uporaba ukazov

CHCON [...]

Funkcija možnosti -u Spremeni uporabniško polje varnostnega konteksta -r Spremeni polje vloge varnostnega konteksta -t Spremeni polje tipa varnostnega konteksta -l Spremeni polje nivoja varnostnega konteksta --referenca Spremeni varnostni kontekst, skladen z določeno datoteko ali imenikom -R Rekurzivna operacija -h Spremeni varnostni kontekst mehke povezave (spremeni ustrezno datoteko mehke povezave brez te možnosti)

Primeri uporabe

Spremenite varnostni kontekst testa v aaa_u:bbb_r:ccc_t:s0.

chcon -u aaa_u -r bbb_r -t ccc_t test

4.4 Povrniti varnostni kontekst datoteke ali mape na privzeto vrednost

Osnovna uporaba ukazov

RestoreCon [možnosti] [...]

Funkcija možnosti - V postopek tiskanja - R rekurzivna operacija

Primeri uporabe

Ko dodate nekaj spletnih datotek v mapo vašega Nginx strežnika, nastavite pravilen varnostni kontekst za te nove datoteke.

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

4.5 Poizvedba Booleovih pravil in njihov status v sistemu

Osnovna uporaba ukazov

getsebool -a

Ker ukaz poizveduje bodisi vsa pravila ali samo eno pravilo, običajno najprej povpraša vsa pravila in nato filtrira z grep.

Primeri uporabe

Poizvedba po Booleovih pravilih, povezanih s httpd.

getsebool -a | grep httpd

Rezultati izvedbe

httpd_anon_write --> stran

httpd_builtin_scripting -->

httpd_can_check_spam -->

httpd_can_connect_ftp -->

#以下省略

4.6 Zamenjava Booleovega pravila

Osnovna uporaba ukazov

Setsebool [možnost]

Funkcija možnosti -P ponovni zagon še vedno deluje

Primeri uporabe

Vklopi httpd_anon_write pravila.

setsebool -P httpd_anon_write on

4.7 Dodaj privzeti varnostni kontekst za imenik

Osnovna uporaba ukazov

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

Opomba: Privzeti varnostni kontekst mape ali datoteke je mogoče videti z uporabo ukaza semanage fcontext -l v povezavi z grep filtriranjem.

Primeri uporabe

Ko v Nginx dodate novo imenik za spletno stran /usr/share/nginx/html2, morate zanj nastaviti isti privzeti varnostni kontekst kot za izvirno mapo.

semanage fcontext -a -t httpd_sys_content_t "/usr/share/nginx/html2(/.*)?"

4.8 Dodajte priključke, ki jih dovoljujejo določene vrste procesov

Osnovna uporaba ukazov

semanage port -a -t -p

Opomba: Dovoljene številke vrat za različne vrste storitev je mogoče videti z uporabo ukaza semanage port -l z grep filtriranjem.

Primeri uporabe

Za Nginx morate uporabiti port 10080 za HTTP storitve.

semanage port -a -t http_port_t -p tcp 10080

5. Analiza in reševanje napak SELinux

5.1 Razumevanje SELinux dnevnikov

Ko je SELinux omogočen, se nekatera običajna vedenja mnogih storitev štejejo za kršitev (tako v naslovu kot v spodnjih napakah).

Trenutno moramo uporabiti dnevnike kršitev SELinuxa za njihovo analizo in rešitev.

Dnevniki kršitev SELinuxa so shranjeni v /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=(none) 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-s0:c0.c1023 msg='op=PAM:session_open grantors=pam_loginuid,pam_ keyinit,pam_limits,pam_systemd acct="root" exe="/usr/sbin/crond" ime gostitelja=? addr=? terminal=cron res=uspeh'

...

Datoteka vsebuje veliko vsebine in je pomešana z veliko dnevniki sistemskih revizij, ki nimajo nobene zveze s SELinux napakami. Uporabili bomo orodje sealert za pomoč pri analizi (če poziv ne najde ukaza, namestimo paket setroubleshoot).

5.2 Analiza napak s sealertom

Osnovna uporaba ukazov

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

Po izvedbi ukaza mora sistem vzeti nekaj časa za analizo kršitev v dnevnikih in pripravo analiznega poročila.




Prejšnji:CentOS7 Ogled in izklop požarnega zidu
Naslednji:Obvladujte dostop do vmesnika Java API za HDFS
 Najemodajalec| Objavljeno na 22. 07. 2021 17:17:58 |
Izklopi SELinux

getenforce #查看是否是 onemogočen, če ne, izvedite spodnji ukaz
vim /etc/selinux/config
Spremeni SELINUX=enforcing v SELINUX=onemogoč, shrani in zapusti
 Najemodajalec| Objavljeno na 15. 10. 2021 13:21:42 |
 Najemodajalec| Objavljeno na 15. 10. 2021 14:22:40 |
Onemogoči swap partition swap

 Najemodajalec| Objavljeno na 3. 09. 2024 14:16:43 |
Zapri SELINUX





Disclaimer:
Vsa programska oprema, programski materiali ali članki, ki jih izdaja Code Farmer Network, so namenjeni zgolj učnim in raziskovalnim namenom; Zgornja vsebina ne sme biti uporabljena v komercialne ali nezakonite namene, sicer uporabniki nosijo vse posledice. Informacije na tej strani prihajajo z interneta, spori glede avtorskih pravic pa nimajo nobene zveze s to stranjo. Zgornjo vsebino morate popolnoma izbrisati z računalnika v 24 urah po prenosu. Če vam je program všeč, podprite pristno programsko opremo, kupite registracijo in pridobite boljše pristne storitve. Če pride do kakršne koli kršitve, nas prosimo kontaktirajte po elektronski pošti.

Mail To:help@itsvse.com