Šis straipsnis yra veidrodinis mašininio vertimo straipsnis, spauskite čia norėdami pereiti prie originalaus straipsnio.

Rodinys: 28349|Atsakyti: 4

[Linux] Išsamus supratimas, kas yra selinux sistemoje Linux

[Kopijuoti nuorodą]
Paskelbta 2019-07-05 11:25:50 | | | |
1. Preambulė

"Security-Enhanced Linux" (SELinux) yra "Linux" branduolio modulis ir "Linux" saugos posistemis.

SELinux pirmiausia sukūrė NSA. Linux branduoliai 2.6 ir naujesnės versijos jau integruoja SELinux modulius.

SELinux yra labai sudėtingas ir turi daug konceptualių dalykų, kuriuos sunku išmokti. Daugelis Linux sistemos administratorių išjungė SELinux, nes jiems tai kelia problemų.

Jei sugebėsite įvaldyti SELinux ir teisingai jį naudoti, manau, kad visa sistema iš esmės gali pasiekti "nesunaikinamą" tašką (visada atminkite, kad nėra absoliutaus saugumo).

Pagrindinių SELinux sąvokų ir paprastų konfigūravimo metodų įsisavinimas yra privalomas kursas kiekvienam Linux sistemos administratoriui.

Šis straipsnis pagrįstas CentOS 7.4.1708.

Šis straipsnis yra grynai asmeninis mokymosi patirties dalijimasis ir mainai, klaidos yra neišvengiamos, tik nuoroda! Jei radote klaidą, atkreipkite dėmesį į ją, labai ačiū!

2. SELinux vaidmuo ir leidimų valdymo mechanizmas

2.1 SELinux vaidmuo

Pagrindinė SELinux funkcija yra sumažinti išteklius, kuriuos gali pasiekti sistemos aptarnavimo procesai (mažiausių privilegijų principas).

Įsivaizduokite, kad jei tinklo paslauga, veikianti kaip root, turi 0day pažeidžiamumą, įsilaužėliai gali išnaudoti šį pažeidžiamumą ir padaryti viską, ko nori jūsų serveryje kaip root. Argi ne baisu?

SELinux yra čia, kad išspręstų šią problemą.

2.2 DAC

Operacinėje sistemoje, kuri nenaudoja SELinux, veiksnys, lemiantis, ar išteklius gali būti pasiekiamas, yra tai, ar išteklius turi atitinkamo vartotojo leidimus (skaityti, rašyti, vykdyti).

Jei procesas, pasiekiantis šį šaltinį, atitinka aukščiau nurodytas sąlygas, jį galima pasiekti.

Lemtingiausia problema yra ta, kad root vartotojams netaikomas joks reguliavimas, o bet kokie sistemos ištekliai gali būti pasiekiami be apribojimų.

Pagrindinė šio leidimų valdymo mechanizmo dalis yra vartotojas, dar žinomas kaip autonominė prieigos kontrolė (DAC).

2.3 MAC

Operacinėje sistemoje, naudojančioje SELinux, veiksniai, lemiantys, ar galima pasiekti išteklius, yra ne tik aukščiau išvardyti veiksniai, bet ir tai, ar kiekvienas proceso tipas turi prieigą prie tam tikro tipo išteklių.

Tokiu būdu, net jei procesas veikia kaip root, prieš nusprendžiant, ar leisti prieigą prie išteklių, būtina nustatyti proceso tipą ir išteklių, kuriuos leidžiama pasiekti, tipus. Aktyvią proceso erdvę taip pat galima suspausti iki minimumo.

Net paslaugos procesas, veikiantis kaip root, paprastai turi prieigą tik prie reikiamų išteklių. Net jei programa yra pažeidžiama, poveikio mastas apsiriboja ištekliais, kuriuos jai leidžiama pasiekti. Saugumas labai padidėja.

Pagrindinis šio leidimų valdymo mechanizmo elementas yra procesas, dar žinomas kaip privaloma prieigos kontrolė (MAC).

MAC yra padalintas į du būdus: vienas vadinamas kategorijos saugumo (MCS) režimu, o kitas - daugiapakopio saugumo (MLS) režimu.

Šie veiksmai atliekami MCS režimu.

2.4 DAC ir MAC palyginimas

Štai paveikslėlis iliustracijai.



Kaip matote, DAC režimu, kol atitinkamas katalogas turi atitinkamo vartotojo leidimus, jį galima pasiekti. MAC režimu jį taip pat riboja katalogų, kuriuos leidžiama pasiekti procesams, asortimentas.

3. Pagrindinės SELinux sąvokos

3.1 Objektas

Tai gali būti visiškai prilyginta procesui.

Pastaba: Kad būtų lengviau suprasti, jei nenurodyta kitaip, procesas laikomas pagrindiniu žemiau pateiktu tekstu.

3.2 Objektas

Direktoriaus prieinami ištekliai. Tai gali būti failai, katalogai, prievadai, įrenginiai ir kt.

Pastaba: Kad būtų lengviau suprasti, jei nenurodyta kitaip, objektais laikomi šie dokumentai arba katalogai.

3.3 Politika ir taisyklės

Paprastai sistemoje yra daug failų ir procesų, o norėdami sutaupyti laiko ir pridėtinių išlaidų, paprastai selektyviai reguliuojame tik tam tikrus procesus.

Kokius procesus reikia reguliuoti ir kaip juos kontroliuoti, nustato politika.

Strategijoje yra kelios taisyklės. Kai kurias taisykles galima įjungti arba išjungti pagal poreikį (toliau – Bulio taisyklės).

Taisyklės yra modulinės ir išplečiamos. Diegdama naują programą, programa gali pridėti taisykles pridėdama naujų modulių. Vartotojai taip pat gali rankiniu būdu pridėti arba atimti taisykles.

"CentOS 7" sistemoje yra trys politikos rinkiniai, būtent:

1. tikslinis: valdo daugumą tinklo paslaugų procesų. Tai yra strategija, kurią sistema naudoja pagal numatytuosius nustatymus (naudojamos visos toliau pateiktos).

2. Minimalus: Remiantis tiksliniais, reguliuojami tik pasirinkti tinklo paslaugų procesai. Paprastai ne.

3. MLS: daugiapakopė saugumo apsauga. Reguliuokite visus procesus. Tai yra griežčiausia politika, o konfigūracija yra labai sudėtinga. Paprastai jis nenaudojamas, nebent yra itin aukšti saugumo reikalavimai.

Strategijas galima nustatyti /etc/selinux/config.

3.4 Saugumo kontekstas

Saugumo kontekstas yra SELinux pagrindas.

Saugumo kontekstas Aš jį skirstau į "proceso saugumo kontekstą" ir "dokumentų saugumo kontekstą".

Proceso saugos kontekstas paprastai atitinka kelis dokumentų saugos kontekstus.

Tik tada, kai abiejų saugos kontekstas sutampa, procesas gali pasiekti failą. Jų atitikimą lemia politikos taisyklės.

Failo saugos kontekstas nustatomas pagal tai, kur failas buvo sukurtas ir procesas, kuris jį sukūrė. Sistema turi numatytųjų reikšmių rinkinį, o vartotojai taip pat gali nustatyti numatytąsias reikšmes.

Svarbu pažymėti, kad paprasčiausias failų perkėlimas nepakeičia failų saugos konteksto.

Saugumo konteksto struktūra ir reikšmė

Saugos kontekste yra keturi laukai, atskirti dvitaškiais. Forma, pvz.: system_u:object_r:admin_home_t:s0.


3.5 SELinux darbo režimas

SELinux turi tris veikimo režimus, būtent:

1. vykdymas: priverstinis režimas. SELinux taisyklių pažeidimai bus blokuojami ir registruojami žurnaluose.

2. Leistinas: tolerancijos režimas. SELinux taisyklių pažeidimai registruojami tik žurnaluose. Paprastai derinimui.

3. išjungta: išjunkite SELinux.

SELinux darbo režimą galima nustatyti /etc/selinux/config.

Jei norite perjungti iš išjungto į vykdomąjį arba leistiną, turėsite iš naujo paleisti sistemą. Ir atvirkščiai.

Vykdymo ir leidimo režimus galima greitai perjungti naudojant komandą Setenforce 1|0.

Svarbu pažymėti, kad jei sistema kurį laiką veikė išjungus SELinux, pirmasis paleidimas iš naujo įjungus SELinux gali būti lėtesnis. Nes sistema turi sukurti saugų kontekstą diske esantiems failams (sakiau, kad paleidau iš naujo apie 10 minučių ir maniau, kad jis negyvas...... )。

SELinux žurnalai turi būti registruojami auditd.service pagalba, prašome jo neišjungti.

3.6 SELinux darbo eiga

Štai citata iš nuotraukos, be didelio paaiškinimo.



Pastaba: Aukščiau pateiktas saugos tekstas nurodo saugos kontekstą.

4. Pagrindinės SELinux operacijos

4.1 Užklauskite failo ar katalogo saugos konteksto

Komandos pagrindinis naudojimas

ls -z

Naudojimo pavyzdžiai

Užklauskite /etc/hosts saugos kontekstą.

ls -Z /etc/hosts

Vykdymo rezultatai

-rw-r--r--. šakninė šaknis system_u:object_r:net_conf_t:s0 /etc/hosts

4.2 Užklauskite proceso saugos konteksto

Komandos pagrindinis naudojimas

ps auxZ | grep -v grep | grep

Naudojimo pavyzdžiai

Užklauskite su "Nginx" susijusių procesų saugos konteksto.

ps auxZ | grep -v grep | grep nginx

Vykdymo rezultatai

system_u:system_r:httpd_t:s0 šaknis 7997 0.0 0.0 122784 2156 ? Ss 14:31 0:00 nginx: pagrindinis procesas /usr/sbin/nginx

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

4.3 Rankiniu būdu pakeiskite failo ar katalogo saugos kontekstą

Komandos pagrindinis naudojimas

CHCON [...]

Parinktis funkcija -u Modifikuoti saugos konteksto vartotojo lauką -r Modifikuoti saugos konteksto vaidmens lauką -t Modifikuoti saugos konteksto tipo lauką -l Modifikuoti saugos konteksto lygio lauką --reference Modifikuoti saugos kontekstą, atitinkantį nurodytą failą arba katalogą -R Rekursinė operacija -h Modifikuoti minkštosios nuorodos saugos kontekstą (modifikuoti atitinkamą minkštosios nuorodos failą be šios parinkties)

Naudojimo pavyzdžiai

Pakeiskite bandymo saugos kontekstą į aaa_u:bbb_r:ccc_t:s0.

CHCON -u aaa_u -r bbb_r -t ccc_t testas

4.4 Grąžinkite failo ar katalogo saugos kontekstą į numatytąją reikšmę

Komandos pagrindinis naudojimas

restorecon [parinktys] [...]

Parinktis Funkcija - V Spausdinimo operacija Procedūra - R Rekursinė operacija

Naudojimo pavyzdžiai

Pridėję keletą žiniatinklio failų į "Nginx" serverio katalogą, nustatykite tinkamą šių naujų failų saugos kontekstą.

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

4.5 Užklauskite Bulio logikos taisykles ir jų būseną sistemoje

Komandos pagrindinis naudojimas

getsebool -a

Kadangi komanda užklausia visas taisykles arba tik vieną taisyklę, ji paprastai pirmiausia užklausia visas taisykles, o tada filtruoja grep.

Naudojimo pavyzdžiai

Užklausti Bulio logikos taisykles, susijusias su httpd.

getsebool -a | grep httpd

Vykdymo rezultatai

httpd_anon_write --> išjungti

httpd_builtin_scripting --> įjungta

httpd_can_check_spam --> išjungti

httpd_can_connect_ftp --> išjungti

#以下省略

4.6 Bulio taisyklės perjungimas

Komandos pagrindinis naudojimas

setsebool [parinktis]

Parinkties funkcija -P paleidimas iš naujo vis tiek įsigalioja

Naudojimo pavyzdžiai

Įjunkite httpd_anon_write taisykles.

setsebool -P httpd_anon_write įjungta

4.7 Pridėkite numatytąjį katalogo saugos kontekstą

Komandos pagrindinis naudojimas

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

Pastaba: Numatytąjį katalogo ar failo saugos kontekstą galima peržiūrėti naudojant komandą semanage fcontext -l kartu su grep filtravimu.

Naudojimo pavyzdžiai

Prie "Nginx" pridėję naują svetainės katalogą /usr/share/nginx/html2, turite nustatyti tą patį numatytąjį saugos kontekstą kaip ir pradiniame kataloge.

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

4.8 Pridėkite prievadus, kuriuos leidžia tam tikrų tipų procesai

Komandos pagrindinis naudojimas

semanage port -a -t -p

Pastaba: Įvairių tipų paslaugoms leidžiamus prievadų numerius galima peržiūrėti naudojant komandą semanage port -l su grep filtravimu.

Naudojimo pavyzdžiai

"Nginx" HTTP paslaugoms reikia naudoti 10080 prievadą.

SEMANAGE prievadas -a -t http_port_t -p TCP 10080

5. SELinux klaidų analizė ir sprendimas

5.1 SELinux žurnalų supratimas

Kai SELinux įjungtas, kai kurie normalūs daugelio paslaugų elgesys laikomi pažeidimu (tiek pavadinime, tiek žemiau esančiose klaidose).

Šiuo metu turime naudoti SELinux pažeidimų žurnalus, kad juos analizuotume ir išspręstume.

SELinux pažeidimų žurnalai išsaugomi /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=(nėra) 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" hostname=? addr=? terminal=cron res=sėkmė'

...

Failas yra daug turinio ir sumaišytas su daugybe sistemos audito žurnalų, kurie neturi nieko bendra su SELinux klaidomis. Analizei padėti naudosime "sealert" įrankį (jei raginimas neranda komandos, įdiekite trikčių šalinimo paketą).

5.2 Analizuokite klaidas naudodami "sealert"

Komandos pagrindinis naudojimas

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

Įvykdžius komandą, sistema turi šiek tiek laiko išanalizuoti žurnalų pažeidimus ir pateikti analizės ataskaitą.




Ankstesnis:CentOS7 Peržiūrėkite ir išjunkite ugniasienę
Kitą:Įvaldykite HDFS prieigą prie Java API sąsajos
 Savininkas| Paskelbta 2021-07-22 17:17:58 |
Išjunkite SELinux

GetEnforce #查看是否是 išjungtas, jei ne, vykdykite toliau pateiktą komandą
vim /etc/selinux/config
Pakeiskite SELINUX=entranscing į SELINUX=disabled, išsaugokite ir išeikite
 Savininkas| Paskelbta 2021-10-15 13:21:42 |
 Savininkas| Paskelbta 2021-10-15 14:22:40 |
Išjungti apsikeitimo skaidinių keitimą

 Savininkas| Paskelbta 2024-09-03 14:16:43 |
Uždaryti SELINUX





Atsakomybės apribojimas:
Visa programinė įranga, programavimo medžiaga ar straipsniai, kuriuos skelbia Code Farmer Network, yra skirti tik mokymosi ir mokslinių tyrimų tikslams; Aukščiau nurodytas turinys negali būti naudojamas komerciniais ar neteisėtais tikslais, priešingu atveju vartotojai prisiima visas pasekmes. Šioje svetainėje pateikiama informacija gaunama iš interneto, o ginčai dėl autorių teisių neturi nieko bendra su šia svetaine. Turite visiškai ištrinti aukščiau pateiktą turinį iš savo kompiuterio per 24 valandas nuo atsisiuntimo. Jei jums patinka programa, palaikykite autentišką programinę įrangą, įsigykite registraciją ir gaukite geresnes autentiškas paslaugas. Jei yra kokių nors pažeidimų, susisiekite su mumis el. paštu.

Mail To:help@itsvse.com