Ez a cikk egy tükör gépi fordítás, kérjük, kattintson ide, hogy ugorjon az eredeti cikkre.

Nézet: 28349|Válasz: 4

[linux] Alapos megértés arról, mi az a selinux a Linuxban

[Linket másol]
Közzétéve 2019. 07. 05. 11:25:50 | | | |
1. Előszó

A Security-Enhanced Linux (SELinux) egy Linux kernel modul és a Linux biztonsági alrendszere.

A SELinuxot elsősorban az NSA fejlesztette. A Linux kernelek 2.6 és annál magasabb verziók már integrálják a SELinux modulokat.

A SELinux nagyon összetett, és sok olyan fogalmi dolgot tartalmaz, amit nehéz megtanulni. Sok Linux rendszergazdája kikapcsolta a SELinuxot, mert problémásnak találják.

Ha el tudod sajátítani a SELinuxot és helyesen használni, szerintem az egész rendszer gyakorlatilag eljut a "elpusztíthatatlan" szintre (mindig ne feledd, hogy nincs abszolút biztonság).

A SELinux alapfogalmainak és az egyszerű konfigurációs módszerek elsajátítása kötelező tanfolyam minden Linux rendszergazdálkodó számára.

Ez a cikk a CentOS 7.4.1708-on alapul.

Ez a cikk kizárólag személyes tanulási élmény megosztása és cseréje, a hibák elkerülhetetlenek, csak referenciaként! Ha hibát találsz, kérlek, jelezd, nagyon köszönöm!

2. A SELinux szerepe és az engedélykezelési mechanizmus

2.1 A SELinux szerepe

A SELinux fő feladata, hogy minimalizálja azokat az erőforrásokat, amelyeket a szolgáltatási folyamatok a rendszerben elérhetnek (a legkisebb jogosultság elve).

Képzeld el, hogy ha egy rootként futó hálózati szolgáltatásban 0day sebezhetőség van, a hackerek ezt a sebezhetőséget kihasználhatják, hogy a szerveredön root módjára azt csinálják, amit akarnak. Nem ijesztő?

A SELinux azért van itt, hogy megoldja ezt a problémát.

2.2 DAC

Egy olyan operációs rendszerben, amely nem használja a SELinuxot, az határozza meg, hogy elérhető-e egy erőforrás, az, hogy az erőforrás rendelkezik-e a megfelelő felhasználó joggalmaival (olvasás, írás, végrehajtás).

Amennyiben a hozzáférési folyamat megfelel a fent említett feltételeknek, hozzáférhet.

A legvégzetesebb probléma, hogy a root felhasználók nem állnak semmilyen szabályozás alá, és a rendszeren lévő erőforrások korlátozás nélkül elérhetők.

Ennek a jogosultságkezelő mechanizmusnak a fő teste a felhasználó, más néven autonóm hozzáférés-vezérlés (DAC).

2.3 MAC

Egy SELinuxot használó operációs rendszerben nemcsak a fent említett tényezők határozzák meg, hogy hozzáférhet-e egy erőforráshoz.

Így, még ha egy folyamat root formátumban is fut, elengedhetetlen meghatározni, hogy milyen típusú folyamat és milyen erőforrások engedélyezett elérhetők, mielőtt eldöntenénk, engedélyezik-e hozzáférést egy erőforráshoz. A folyamat aktív tere is minimálisra tömöríthető.

Még egy root alapú szolgáltatási folyamat is általában csak a szükséges erőforrásokhoz fér hozzá. Még ha egy program sebezhető is, a hatás mértéke korlátozódik az általa elérhető erőforrásokra. A biztonság jelentősen megnőtt.

Ennek a jogosultságkezelési mechanizmusnak a fő eleme a folyamat, más néven kötelező hozzáférés-ellenőrzés (MAC).

A MAC két módra oszlik: az egyik Kategória-biztonsági (MCS) mód, a másikat pedig Többszintű Biztonsági (MLS) mód.

A következő műveletek MCS módban vannak.

2.4 A DAC és a MAC összehasonlítása

Itt egy kép, amit illusztrálok.



Ahogy láthatod, DAC módban, amíg a megfelelő könyvtár rendelkezik a megfelelő felhasználó jogosultságaival, elérhető. MAC módban ez a folyamatok által elérhető könyvtárak száma is korlátozott.

3. A SELinux alapfogalmai

3.1 Alany

Ez teljesen egy folyamattal azonosítható.

Megjegyzés: A könnyebb megértés érdekében, hacsak nem másként jelölik, a folyamatot tekintjük az alábbi fő testnek.

3.2 Cél

Az alapító által elérhető források. Lehetnek fájlok, könyvtárak, portok, eszközök stb.

Megjegyzés: A könnyebb megértés érdekében, hacsak nem másként jelölik, a következő dokumentumokat vagy könyvtárakat tárgyként tekintik.

3.3 Szabályzat és szabály

Általában sok fájl és folyamat van a rendszerben, és az idő- és költségmegtakarítás érdekében általában csak bizonyos folyamatokat szelektíven szabályozunk.

És az, hogy mely folyamatokat kell szabályozni, és hogyan kell azokat irányítani, az a politika határozza meg.

Egy kötvényben több szabály is van. Egyes szabályok szükség szerint engedélyezhetők vagy kikapcsolhatók (ezelőtti Boole-szabályok).

A szabályok modulárisak és bővíthetők. Új alkalmazás telepítésekor az alkalmazás új modulok hozzáadásával is hozzáadhat szabályokat. A felhasználók manuálisan is hozzáadhatnak vagy eltávolíthatnak szabályokat.

A CentOS 7 rendszerben három szabályzat áll rendelkezésre, nevezetesen:

1. célzott: A legtöbb hálózati szolgáltatási folyamatot irányítja. Ez a rendszer alapértelmezett szabályzata (az alábbi szabályokat alkalmazzuk).

2. Minimum: Célzott adatok alapján csak kiválasztott hálózati szolgáltatási folyamatokat szabályoznak. Általában nem.

3. MLS: Többszintű biztonsági védelem. Szabályozd az összes folyamatot. Ez a legszigorúbb szabály, és a konfiguráció nagyon nehéz. Általában csak akkor használják, ha rendkívül magas biztonsági követelmények vannak.

A szabályzatok beállíthatók az /etc/selinux/config formátumban.

3.4 Biztonsági kontextus

A biztonsági kontextus a SELinux középpontjában áll.

Biztonsági kontextusként "folyamatbiztonsági kontextusra" és "dokumentumbiztonsági kontextusra" osztom be.

Egy folyamatbiztonsági kontextus általában több dokumentumbiztonsági kontextusnak felel meg.

Csak akkor férhet hozzá a két folyamat biztonsági kontextusa, ha a két eszköz biztonsági kontextusa megfelel. A levelezésüket a kötvény szabályai határozzák meg.

A fájlbiztonsági kontextust az határozza meg, hol hozták létre a fájlt, és melyik folyamat hozta létre. A rendszernek van egy alapértelmezett értékkészlete, és a felhasználók beállíthatják az alapértelmezett értékeket is.

Fontos megjegyezni, hogy a fájlok áthelyezése nem változtatja meg a fájlok biztonsági kontextusát.

A biztonsági kontextus szerkezete és jelentése

A biztonsági kontextusban négy mező van, amelyeket oszlopok választanak el. Olyan alak, mint: system_u:object_r:admin_home_t:s0.


3.5 SELinux Working Mode

A SELinux három működési móddal rendelkezik, nevezetesen:

1. végrehajtás: Kényszerített mód. A SELinux szabályainak megsértéseit blokkolják és naplózzák a naplókba.

2. Engedékeny: Tolerancia mód. A SELinux szabálysértések csak a naplókba kerülnek. Általában hibakereséshez.

3. kikapcsolva: Kapcsold ki a SELinuxot.

A SELinux munkamód beállítható, például /etc/selinux/config.

Ha le akarsz kapcsolni a letiltottról a végrehajtásra vagy engedéllyre, újra kell indítanod a rendszert. És fordítva is.

A Enforcing és Permissive módok gyorsan válthatók a Setenforce 1|0 parancsral.

Fontos megjegyezni, hogy ha a rendszer egy ideje kikapcsolva fut a SELinux kikapcsolásával, az első újraindítás a SELinux bekapcsolása után lassabb lehet. Mert a rendszernek biztonságos kontextust kell létrehoznia a lemezen lévő fájlok számára (mondtam, hogy kb. 10 percre újraindítottam, és azt hittem, halott...... )。

A SELinux naplókat az auditd.service segítségével kell rögzíteni, kérjük, ne tiltsd le.

3.6 SELinux munkafolyamat

Itt egy idézet egy képből, sok magyarázat nélkül.



Megjegyzés: A fenti biztonsági szöveg a biztonsági kontextusra utal.

4. Alapvető SELinux műveletek

4.1 Lekérdezés egy fájl vagy könyvtár biztonsági kontextusának lekérdezése

Parancs alapvető használata

ls -z

Használati példák

Kérdezd le az /etc/hostok biztonsági kontextusát.

ls -Z /etc/hosts

Végrehajtási eredmények

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

4.2 Lekérdezés a folyamat biztonsági kontextusára

Parancs alapvető használata

ps auxZ | GREP -V GREP | grep

Használati példák

Kérdezze le a Nginx-hez kapcsolódó folyamatok biztonsági kontextusát.

ps auxZ | GREP -V GREP | Grep Nginx

Végrehajtási eredmények

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: munkavállalói folyamat

4.3 Egy fájl vagy könyvtár biztonsági kontextusának manuális módosítása

Parancs alapvető használata

CHCON [...]

Opciófüggvény -u Módosítsa a biztonsági kontextus felhasználói mezőjét -r Módosítsa a biztonsági kontextus szerepmezőjét -t Módosítsa a biztonsági kontextus típusmezőjét -l Módosítsa a biztonsági kontextus szintmezőjét --hivatkozás Módosítsa a biztonsági kontextust a megadott fájlhoz vagy könyvtárhoz igazítva -R Rekurzív művelet -h Módosítsa a lágy link biztonsági kontextusát (módosítsa a lágy link megfelelő fájlját anélkül, hogy ezt az opciót használná)

Használati példák

Módosítsuk a teszt biztonsági kontextusát aaa_u:bbb_r:ccc_t:s0-ra.

chcon -u aaa_u -r bbb_r -t ccc_t teszt

4.4 Egy fájl vagy könyvtár biztonsági kontextusának visszaállítása az alapértelmezett értékére

Parancs alapvető használata

RestoreCon [opciók] [...]

Opciófüggvény - V nyomtatási műveleti eljárás - R rekurzív művelet

Használati példák

Miután hozzáadtál néhány webfájlt a Nginx szervered könyvtárába, állítsd be a megfelelő biztonsági kontextust ezekhez az új fájlokhoz.

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

4.5 Lekérdezés a Boole-szabályok és azok státusza a rendszerben

Parancs alapvető használata

getsebool -a

Mivel a parancs vagy az összes szabályt, vagy csak egy szabályt kérdez, általában először az összes szabályt lekérdezi, majd a grep segítségével szűri.

Használati példák

Lekérdezés a httpd-hez kapcsolódó Boolean szabályok.

getsebool -a | grep httpd

Végrehajtási eredmények

httpd_anon_write -->

httpd_builtin_scripting -->

httpd_can_check_spam -->

httpd_can_connect_ftp -->

#以下省略

4.6 Boole-szabály váltása

Parancs alapvető használata

Setsebool [opció]

Opciós funkció -P újraindítása továbbra is érvényes

Használati példák

Kapcsold be httpd_anon_write szabályokat.

setsebool -P httpd_anon_write on

4.7 Alapértelmezett biztonsági kontextus hozzáadása egy könyvtárhoz

Parancs alapvető használata

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

Megjegyzés: Egy könyvtár vagy fájl alapértelmezett biztonsági kontextusa a semanage fcontext -l parancs használatával és grep szűréssel együtt tekinthető meg.

Használati példák

Miután hozzáadtál egy új oldal könyvtárat /usr/share/nginx/html2 a Nginx-hez, ugyanazt az alapértelmezett biztonsági kontextust kell beállítanod neki, mint az eredeti könyvtárban.

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

4.8 Olyan portok hozzáadása, amelyeket bizonyos típusú folyamatok engedélyeznek

Parancs alapvető használata

Semanage port -a -t -p

Megjegyzés: A különböző szolgáltatástípusok számára engedélyezett portszámok a semanage port -l parancs segítségével tekinthetők meg grep szűréssel.

Használati példák

Nginx esetén HTTP szolgáltatásokhoz a 10080-as portot kell használni.

Semanage port -a -t http_port_t -p TCP 10080

5. SELinux hibaelemzés és megoldás

5.1 A SELinux naplók megértése

Amikor a SELinux engedélyezett, sok szolgáltatás normális viselkedése szabálysértésnek minősül (mind a címben, mind az alábbi hibákban).

Jelenleg SELinux megsértési naplókat kell használnunk az elemzéshez és megoldáshoz.

A SELinux megsértési naplók a /var/log/audit/audit.log formátumban vannak elmentve.

/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=? terminál=cron res=siker'

...

A fájl sok tartalommal van, és rengeteg rendszeraudit naplóval kevered, aminek semmi köze a SELinux hibákhoz. A sealert segédprogramot fogjuk használni az elemzéshez (ha a prompt nem találja meg a parancsot, telepítsd a sehibakereső csomagot).

5.2 Elemzés hibák sealert-rel

Parancs alapvető használata

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

A parancs végrehajtása után a rendszernek időt kell szánnia a naplóban lévő szabálysértések elemzésére és elemzési jelentés benyújtására.




Előző:CentOS7 nézet és a tűzfal kikapcsolása
Következő:A HDFS Java API interfész elérésének mestersége
 Háziúr| Közzétéve 2021. 07. 22. 17:17:58 |
Kapcsold ki a SELinuxot

Getenforce #查看是否是 letiltva, ha nem, hajtsd végre az alábbi parancsot
vim /etc/selinux/config
Változtasd a SELINUX=enforcing-t SELINUX=disabled-re, ments és exit
 Háziúr| Közzétéve 2021. 10. 15. 13:21:42 |
 Háziúr| Közzétéve 2021. 10. 15. 14:22:40 |
Kapcsold ki a swap partíció cserét

 Háziúr| Közzétéve 2024. 09. 03. 14:16:43 |
Zárd be a SELINUX-ot





Lemondás:
A Code Farmer Network által közzétett összes szoftver, programozási anyag vagy cikk kizárólag tanulási és kutatási célokra szolgál; A fenti tartalmat nem szabad kereskedelmi vagy illegális célokra használni, különben a felhasználók viselik az összes következményet. Az oldalon található információk az internetről származnak, és a szerzői jogi vitáknak semmi köze ehhez az oldalhoz. A fenti tartalmat a letöltés után 24 órán belül teljesen törölni kell a számítógépéről. Ha tetszik a program, kérjük, támogassa a valódi szoftvert, vásároljon regisztrációt, és szerezzen jobb hiteles szolgáltatásokat. Ha bármilyen jogsértés történik, kérjük, vegye fel velünk a kapcsolatot e-mailben.

Mail To:help@itsvse.com