Tämä artikkeli on konekäännöksen peiliartikkeli, klikkaa tästä siirtyäksesi alkuperäiseen artikkeliin.

Näkymä: 28349|Vastaus: 4

[linux] Perusteellinen ymmärrys siitä, mitä selinux on Linuxissa

[Kopioi linkki]
Julkaistu 5.7.2019 11.25.50 | | | |
1. Johdanto

Security-Enhanced Linux (SELinux) on Linux-ydinmoduuli ja Linuxin tietoturva-alijärjestelmä.

SELinuxin kehitti pääasiassa NSA. Linux-ytimet 2.6 ja uudemmat sisältävät jo SELinux-moduuleja.

SELinux on hyvin monimutkainen ja sisältää paljon käsitteellistä materiaalia, joka on vaikea oppia. Monet Linux-järjestelmänvalvojat ovat poistaneet SELinuxin käytöstä, koska se on heidän mielestään hankalaa.

Jos pystyt hallitsemaan SELinuxin ja käyttämään sitä oikein, uskon, että koko järjestelmä voi käytännössä saavuttaa "tuhoutumattomuuden" (muista aina, ettei ole olemassa ehdotonta turvallisuutta).

SELinuxin peruskäsitteiden sekä yksinkertaisten konfigurointimenetelmien hallitseminen on pakollinen kurssi jokaiselle Linux-järjestelmänvalvojalle.

Tämä artikkeli perustuu CentOS 7.4.1708:aan.

Tämä artikkeli on puhtaasti henkilökohtainen oppimiskokemusten jakaminen ja vaihtaminen, virheet ovat väistämättömiä, vain viitteeksi! Jos löydät virheen, ilmoita siitä, kiitos paljon!

2. SELinuxin rooli ja käyttöoikeuksien hallintamekanismi

2.1 SELinuxin rooli

SELinuxin päätehtävä on minimoida palveluprosessien käyttämät resurssit järjestelmässä (pienimmän oikeuden periaate).

Kuvittele, että jos root-järjestelmällä toimiva verkkopalvelu sisältää 0day-haavoittuvuuden, hakkerit voivat hyödyntää tätä haavoittuvuutta tehdäkseen palvelimellasi mitä haluavat rootina. Eikö olekin pelottavaa?

SELinux on täällä ratkaisemassa tätä ongelmaa.

2.2 DAC

Käyttöjärjestelmässä, joka ei käytä SELinuxia, tekijä, joka määrittää, voiko resurssiin pääseä käsiksi, on se, onko resurssilla vastaavan käyttäjän oikeudet (luku, kirjoitus, suoritus).

Kunhan prosessi, joka käyttää tätä resurssia, täyttää yllä mainitut ehdot, siihen pääsee käsiksi.

Kohtalokkain ongelma on, että juurikäyttäjät eivät ole minkään sääntelyn alaisia, ja kaikki järjestelmän resurssit ovat saatavilla ilman rajoituksia.

Tämän käyttöoikeuksien hallintamekanismin pääosa on käyttäjä, joka tunnetaan myös nimellä autonominen käyttöoikeuksien hallinta (DAC).

2.3 MAC

SELinuxia käyttävässä käyttöjärjestelmässä tekijät, jotka määrittävät, voiko resurssiin päästä käsiksi, eivät ole pelkästään edellä mainitut tekijät, vaan myös se, onko jokaisella prosessityypillä pääsy tiettyyn resurssityyppiin.

Näin ollen, vaikka prosessi toimisi rootina, on tarpeen määrittää prosessityyppi ja resurssityypit, joihin pääsy on sallittua, ennen kuin päätetään, sallitaanko pääsy resurssiin. Prosessin aktiivinen tila voidaan myös tiivistää minimiin.

Jopa palveluprosessi, joka toimii rootina, pääsee yleensä käsiksi vain tarvitsemiinsa resursseihin. Vaikka ohjelma olisi haavoittuvainen, vaikutuksen laajuus rajoittuu niihin resursseihin, joihin sillä on pääsy. Turvallisuutta on huomattavasti lisätty.

Tämän lupien hallintamekanismin pääosa on prosessi, joka tunnetaan myös nimellä pakollinen pääsynhallinta (MAC).

MAC jakautuu kahteen osaan: toinen on Category Security (MCS) -tila ja toinen Multi-Level Security (MLS) -tila.

Seuraavat toiminnot ovat MCS-tilassa.

2.4 DAC:n ja MAC:n vertailu

Tässä on kuva havainnollistamaan.



Kuten näet, DAC-tilassa, kunhan vastaavalla hakemistolla on käyttäjän oikeudet, siihen pääsee käsiksi. MAC-tilassa sitä rajoittaa myös se, kuinka paljon hakemistoja prosessit saavat käyttää.

3. SELinuxin peruskäsitteet

3.1 Aihe

Se voidaan täysin rinnastaa prosessiin.

Huomautus: Ymmärryksen helpottamiseksi, ellei toisin mainita, prosessia pidetään alla olevana pääasiana.

3.2 Kohde

Rehtorin käyttämät resurssit. Se voi olla tiedostoja, hakemistoja, portteja, laitteita jne.

Huomautus: Ymmärryksen helpottamiseksi, ellei toisin mainita, seuraavat asiakirjat tai hakemistot katsotaan objekteiksi.

3.3 Politiikka ja sääntö

Järjestelmässä on yleensä suuri määrä tiedostoja ja prosesseja, ja säästääksemme aikaa ja ylimääräistä säätelemme yleensä vain tiettyjä prosesseja valikoivasti.

Ja mitä prosesseja tulee säädellä ja miten niitä hallitaan, määräytyy politiikan mukaan.

Vakuutuksessa on useita sääntöjä. Joitakin sääntöjä voidaan ottaa käyttöön tai poistaa käytöstä tarpeen mukaan (tästä eteenpäin Boolen säännöt).

Säännöt ovat modulaarisia ja laajennettavissa. Kun asennetaan uusi sovellus, sovellus voi lisätä sääntöjä lisäämällä uusia moduuleja. Käyttäjät voivat myös lisätä tai poistaa sääntöjä manuaalisesti.

CentOS 7 -järjestelmässä on kolme politiikkakokonaisuutta, nimittäin:

1. kohdennettu: Ohjaa suurinta osaa verkon palveluprosesseista. Tämä on järjestelmän oletuksena käyttämä käytäntö (kaikki alla olevat ovat käytössä).

2. Minimi: Kohdennettujen tietojen perusteella säädellään vain valittuja verkkopalveluprosesseja. Yleensä ei.

3. MLS: Monitasoinen suojaus. Säätele kaikkia prosesseja. Tämä on tiukin käytäntö, ja kokoonpano on hyvin vaikea. Yleisesti ottaen sitä ei käytetä, ellei ole erittäin korkeita turvallisuusvaatimuksia.

Käytännöt voidaan asettaa muodossa /etc/selinux/config.

3.4 Turvallisuuskonteksti

Turvallisuuskonteksti on SELinuxin ytimessä.

Turvallisuuskonteksti jaon sen "prosessiturvallisuuskontekstiin" ja "dokumenttien turvallisuuskontekstiin".

Prosessiturvallisuuskonteksti vastaa tyypillisesti useita asiakirjojen turvallisuuskonteksteja.

Vain silloin, kun näiden kahden turvallisuustilanne vastaa, prosessi voi päästä tiedostoon käsiksi. Heidän kirjeenvaihtonsa määräytyy vakuutuksen sääntöjen mukaan.

Tiedoston turvallisuuskonteksti määräytyy sen mukaan, missä tiedosto on luotu ja mikä prosessi sen loi. Järjestelmällä on joukko oletusarvoja, ja käyttäjät voivat myös asettaa oletusarvot.

On tärkeää huomata, että pelkkä tiedostojen siirtäminen ei muuta tiedostojesi tietoturvakontekstia.

Turvallisuuskontekstin rakenne ja merkitys

Turvallisuuskontekstissa on neljä kenttää, jotka erotetaan kaksoispisteillä. Muoto kuten: system_u:object_r:admin_home_t:s0.


3.5 SELinux-työtila

SELinuxilla on kolme toimintatilaa, nimittäin:

1. valvonta: Pakotettu tila. SELinux-sääntöjen rikkomukset estetään ja kirjataan lokeihin.

2. Salliva: Sietokykytila. SELinux-sääntöjen rikkomukset kirjataan vain lokeihin. Yleensä virheenkorjaukseen.

3. pois päältä: Sammuta SELinux.

SELinux-työtilan voi asettaa /etc/selinux/config -muodossa.

Jos haluat vaihtaa pois päältä valvovaan tai sallivaan tilaan, sinun täytyy käynnistää järjestelmä uudelleen. Ja päinvastoin.

Enforcing- ja Permissive -tilat voidaan nopeasti vaihtaa Setenforce 1|0 -komennolla.

On tärkeää huomata, että jos järjestelmä on ollut käynnissä SELinuxin ollessa pois päältä jonkin aikaa, ensimmäinen uudelleenkäynnistys SELinuxin käynnistämisen jälkeen voi olla hitaampi. Koska järjestelmän täytyy luoda turvallinen konteksti levyllä oleville tiedostoille (sanoin, että käynnistin uudelleen noin 10 minuutiksi ja luulin sen olevan rikki...... )。

SELinux-lokit täytyy kirjata auditd.servicen avulla, älä poista sitä käytöstä.

3.6 SELinux-työnkulku

Tässä on lainaus kuvasta, ilman suurempaa selitystä.



Huomautus: Yllä oleva turvallisuusteksti viittaa turvallisuuskontekstiin.

4. Perus SELinux-toiminnot

4.1 Kysely tiedoston tai hakemiston tietoturvakontekstista

Komento peruskäyttö

ls -z

Käyttöesimerkkejä

Kysy /etc/hostien tietoturvakontekstista.

ls -Z /etc/isännät

Toteutustulokset

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

4.2 Kysely prosessin turvallisuuskontekstista

Komento peruskäyttö

ps auxZ | grep -v grep | grep

Käyttöesimerkkejä

Kysy Nginxiin liittyvien prosessien tietoturvakontekstista.

ps auxZ | grep -v grep | Grep Nginx

Toteutustulokset

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

system_u:system_r:httpd_t:s0 nginx 7998 0.0 0.0 125332 7560 ? S 14:31 0:00 nginx: työntekijäprosessi

4.3 Muokkaa tiedoston tai hakemiston tietoturvakontekstia manuaalisesti

Komento peruskäyttö

CHCON [...]

Vaihtoehtofunktio -u Muokkaa turvakontekstin käyttäjäkenttää -r Muokkaa turvakontekstin roolikenttää -t Muokkaa turvallisuuskontekstin tyyppikenttää -l Muokkaa turvallisuuskontekstin tasokenttää --viittaus Muokkaa tietoturvakontekstia määritellyn tiedoston tai hakemiston mukaisesti -R Rekursiivinen operaatio -h Muokkaa pehmeän linkin tietoturvakontekstia (muokkaa vastaavaa tiedostoa ilman tätä vaihtoehtoa)

Käyttöesimerkkejä

Muokkaa testin tietoturvakontekstia muotoon aaa_u:bbb_r:ccc_t:s0.

chcon -u aaa_u -r bbb_r -t ccc_t testi

4.4 Palauta tiedoston tai hakemiston tietoturvakonteksti oletusarvoon

Komento peruskäyttö

RestoreCon [Vaihtoehdot] [...]

Option funktio - V-tulostustoiminto - R rekursiivinen operaatio

Käyttöesimerkkejä

Kun olet lisännyt joitakin verkkotiedostoja Nginx-palvelimesi hakemistoon, aseta oikea tietoturvakonteksti näille uusille tiedostoille.

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

4.5 Kysely Boolen säännöistä ja niiden asemasta järjestelmässä

Komento peruskäyttö

getsebool -a

Koska komento kysyy joko kaikkia sääntöjä tai vain yhtä sääntöä, se yleensä kysyy ensin kaikki säännöt ja suodattaa sitten grepillä.

Käyttöesimerkkejä

Kysy Boolen sääntöjä, jotka liittyvät httpd:hen.

getsebool -a | grep httpd

Toteutustulokset

httpd_anon_write --> pois

httpd_builtin_scripting -->

httpd_can_check_spam --> pois

httpd_can_connect_ftp --> pois

#以下省略

4.6 Boolen säännön vaihtaminen

Komento peruskäyttö

Setsebool [vaihtoehto]

Vaihtoehtotoiminto -P restart on edelleen voimassa

Käyttöesimerkkejä

Laita httpd_anon_write päälle.

setsebool -P httpd_anon_write päälle

4.7 Lisää oletusturvakonteksti hakemistolle

Komento peruskäyttö

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

Huomautus: Hakemiston tai tiedoston oletusturvakontekstia voi tarkastella käyttämällä semanage fcontext -l -komentoa yhdessä grep-suodatuksen kanssa.

Käyttöesimerkkejä

Kun lisäät uuden sivustohakemiston /usr/share/nginx/html2 Nginxiin, sinun täytyy asettaa sille sama oletusturvakontekstin kuin alkuperäisessä hakemistossa.

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

4.8 Lisää portteja, jotka tietyntyyppiset prosessit sallivat

Komento peruskäyttö

semanage portti -a -t -p

Huomautus: Eri palvelutyypeille sallitut porttinumerot voidaan tarkastella käyttämällä semanage port -l -komentoa grep-suodatuksella.

Käyttöesimerkkejä

Nginxissä HTTP-palveluihin täytyy käyttää porttia 10080.

Semanage port -a -t http_port_t -p TCP 10080

5. SELinux-virheanalyysi ja ratkaisu

5.1 SELinux-lokien ymmärtäminen

Kun SELinux on käytössä, monien palveluiden normaali toiminta katsotaan rikkomukseksi (sekä otsikossa että alla olevissa virheissä).

Tällä hetkellä meidän täytyy käyttää SELinux-rikkomuslokeja niiden analysointiin ja ratkaisemiseen.

SELinux-rikkomuslokit tallennetaan osoitteeseen /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" hostname=? addr=? terminaali=cron res=onnistuminen'

...

Tiedosto on paljon sisältöä, ja se on sekoitettu moniin järjestelmän auditointilokeihin, joilla ei ole mitään tekemistä SELinux-virheiden kanssa. Käytämme sealert-apuohjelmaa analyysin tukena (jos kehote ei löydä komentoa, asenna se-vianmäärityspaketti).

5.2 Analysoi virheitä sealertilla

Komento peruskäyttö

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

Käskyn suorittamisen jälkeen järjestelmän täytyy käyttää aikaa lokirikkomusten analysointiin ja analyysiraportin toimittamiseen.




Edellinen:CentOS7-näkymä ja palomuurin sammuttaminen
Seuraava:Hallitse HDFS:n Java API -rajapinnan käyttö
 Vuokraisäntä| Julkaistu 22.7.2021 17.17.58 |
Sammuta SELinux

Getenforce #查看是否是 pois päältä, jos ei, suorita alla oleva komento
vim /etc/selinux/config
Muuta SELINUX=enforcing muotoon SELINUX=disabled, tallenna ja poistu
 Vuokraisäntä| Julkaistu 15.10.2021 13.21.42 |
 Vuokraisäntä| Julkaistu 15.10.2021 14.22.40 |
Poista swap osion vaihto käytöstä

 Vuokraisäntä| Julkaistu 3.9.2024 14.16.43 |
Sulje SELINUX





Vastuuvapauslauseke:
Kaikki Code Farmer Networkin julkaisemat ohjelmistot, ohjelmamateriaalit tai artikkelit ovat tarkoitettu vain oppimis- ja tutkimustarkoituksiin; Yllä mainittua sisältöä ei saa käyttää kaupallisiin tai laittomiin tarkoituksiin, muuten käyttäjät joutuvat kantamaan kaikki seuraukset. Tämän sivuston tiedot ovat peräisin internetistä, eikä tekijänoikeuskiistat liity tähän sivustoon. Sinun tulee poistaa yllä oleva sisältö kokonaan tietokoneeltasi 24 tunnin kuluessa lataamisesta. Jos pidät ohjelmasta, tue aitoa ohjelmistoa, osta rekisteröityminen ja hanki parempia aitoja palveluita. Jos rikkomuksia ilmenee, ota meihin yhteyttä sähköpostitse.

Mail To:help@itsvse.com