
Preklad článku pripraveného pre študentov kurzu
SELinux alebo Zvýšené zabezpečenie Linux MAC je vylepšený mechanizmus riadenia prístupu vyvinutý Národnou bezpečnostnou agentúrou USA (NSA) na predchádzanie škodlivým útokom. Implementuje model povinného riadenia prístupu (MAC) nad rámec existujúceho modelu diskrečného riadenia prístupu (DAC), ktorý zahŕňa oprávnenia na čítanie, zápis a vykonávanie.
Na juhovýchodeLinux Existujú tri režimy:
- presadzovanie — odmietnutie prístupu na základe pravidiel politiky.
- Povoľný — vedenie denníka akcií, ktoré porušujú politiku, čo by bolo v režime presadzovania zakázané.
- invalidný — úplné odstavenie SELinux.
Štandardne sú nastavenia in /etc/selinux/config
Zmena režimov SELinux
Ak chcete zistiť aktuálny režim, spustite
$ getenforceAk chcete zmeniť režim na povolený, spustite nasledujúci príkaz
$ setenforce 0alebo na zmenu režimu liberálne na vymáhanie, vykonať
$ setenforce 1Ak potrebujete úplne vypnúť SELinux, potom sa to dá urobiť iba prostredníctvom konfiguračného súboru
$ vi /etc/selinux/configAk chcete vypnúť, zmeňte parameter SELINUX nasledovne:
SELINUX=disabledNastavenie SELinux
Každý súbor a proces je označený kontextom SE.Linux, ktorý obsahuje ďalšie informácie, ako napríklad používateľ, rola, typ atď. Ak povoľujete SE prvýkrátLinux, potom musíte najprv nakonfigurovať kontext a označenia. Proces priraďovania označení a kontextu sa nazýva označovanie. Ak chcete začať s označovaním, zmeňte režim v konfiguračnom súbore na liberálne.
$ vi /etc/selinux/config
SELINUX=permissivePo nastavení režimu liberálne, vytvorte prázdny skrytý súbor v koreňovom adresári s názvom autorelabel
$ touch /.autorelabela reštartujte počítač
$ init 6Poznámka: Používame režim liberálne na značenie, od používania režimu vymáhanie môže spôsobiť zlyhanie systému počas reštartu.
Nerobte si starosti, ak sa sťahovanie zasekne na nejakom súbore, označovanie chvíľu trvá. Po dokončení označovania a zavedení systému môžete prejsť do konfiguračného súboru a nastaviť režim vymáhaniea tiež spustiť:
$ setenforce 1Teraz ste úspešne povolili SELinux na vašom počítači.
Monitorovanie protokolov
Počas označovania alebo počas behu systému ste mohli naraziť na nejaké chyby. Ak chcete skontrolovať, či váš SE fungujeLinux Musíte skontrolovať protokoly, aby ste zistili, či sú správne a či blokujú prístup k nejakým portom, aplikáciám atď. SE protokolLinux je v /var/log/audit/audit.log, ale na nájdenie chýb nemusíte čítať celé. Na nájdenie chýb môžete použiť pomôcku audit2why. Spustite nasledujúci príkaz:
$ audit2why < /var/log/audit/audit.logV dôsledku toho dostanete zoznam chýb. Ak v protokole neboli žiadne chyby, nezobrazia sa žiadne správy.
Nastavenie politiky SELinux
Politika SELinux — je súbor pravidiel, ktoré riadia bezpečnostný mechanizmus SELinuxPolitika definuje súbor pravidiel pre konkrétne prostredie. Teraz sa naučíme, ako nakonfigurovať politiky, ktoré umožnia prístup k obmedzeným službám.
1. Logické hodnoty (prepínače)
Booleovské hodnoty vám umožňujú meniť časti politiky za behu bez nutnosti vytvárať nové politiky. Umožňujú vám vykonávať zmeny bez reštartu alebo opätovnej kompilácie politík SE.Linux.
Príklad
Povedzme, že chceme zdieľať domovský adresár používateľa cez FTP na čítanie a zápis a už sme ho zdieľali, ale keď sa k nemu pokúsime získať prístup, nič sa nezobrazí. Je to preto, lebo politika SELinux bráni FTP serveru v čítaní a zápise do domovského adresára používateľa. Musíme zmeniť politiku tak, aby FTP server mal prístup k domovským adresárom. Pozrime sa, či na to existujú nejaké prepínače spustením
$ semanage boolean -lTento príkaz zobrazí zoznam dostupných prepínačov s ich aktuálnym stavom (zapnuté alebo vypnuté) a popisom. Svoje vyhľadávanie môžete spresniť pridaním grep, aby ste našli výsledky iba pre ftp:
$ semanage boolean -l | grep ftpa nájdete nasledujúce
ftp_home_dir -> off Allow ftp to read & write file in user home directoryTento prepínač je deaktivovaný, takže ho povolíme pomocou setsebool $ setsebool ftp_home_dir on
Teraz bude mať náš ftp démon prístup k domovskému adresáru používateľa.
Poznámka: Zoznam dostupných prepínačov môžete získať aj bez popisu getsebool -a
2. Označenia a kontext
Toto je najbežnejší spôsob implementácie politiky SE.LinuxKaždý súbor, priečinok, proces a port je označený kontextom SE.Linux:
- Pre súbory a priečinky sú štítky uložené ako rozšírené atribúty v systéme súborov a možno ich zobraziť pomocou nasledujúceho príkazu:
$ ls -Z /etc/httpd - V prípade procesov a portov je označovanie riadené jadrom a tieto označenia môžete zobraziť takto:
proces
$ ps –auxZ | grep httpdprístav
$ netstat -anpZ | grep httpdPríklad
Teraz sa pozrime na príklad, aby sme lepšie pochopili označenia a kontext. Povedzme, že máme webový server, ktorý namiesto katalógu /var/www/html/ использует /home/dan/html/SELinux bude to považovať za porušenie pravidiel a nebudete si môcť zobraziť svoje webové stránky. Je to preto, že sme nenastavili bezpečnostný kontext spojený so súbormi HTML. Ak chcete zobraziť predvolený bezpečnostný kontext, použite nasledujúci príkaz:
$ ls –lz /var/www/html
-rw-r—r—. root root unconfined_u:object_r:httpd_sys_content_t:s0 /var/www/html/Tu to máme httpd_sys_content_t ako kontext pre html súbory. Tento kontext zabezpečenia musíme nastaviť pre náš aktuálny adresár, ktorý má momentálne nasledujúci kontext:
-rw-r—r—. dan dan system_u:object_r:user_home_t:s0 /home/dan/html/Alternatívny príkaz na kontrolu bezpečnostného kontextu súboru alebo adresára:
$ semanage fcontext -l | grep '/var/www'Po nájdení správneho bezpečnostného kontextu tiež použijeme semanage na zmenu kontextu. Ak chcete zmeniť kontext /home/dan/html, spustite nasledujúce príkazy:
$ semanage fcontext -a -t httpd_sys_content_t ‘/home/dan/html(/.*)?’
$ semanage fcontext -l | grep ‘/home/dan/html’
/home/dan/html(/.*)? all files system_u:object_r:httpd_sys_content_t:s0
$ restorecon -Rv /home/dan/htmlPo zmene kontextu pomocou semanage príkaz restorecon načíta predvolený kontext pre súbory a adresáre. Náš webový server bude teraz môcť čítať súbory z priečinka /home/dan/htmlpretože kontext zabezpečenia pre tento priečinok bol zmenený na httpd_sys_content_t.
3. Vytvorte miestne politiky
Môžu nastať situácie, keď vám vyššie uvedené metódy nebudú k ničomu a v audit.log sa vám zobrazia chyby (avc/odmietnutie). Keď sa to stane, musíte vytvoriť lokálnu politiku. Všetky chyby môžete nájsť pomocou audit2why, ako je popísané vyššie.
Môžete vytvoriť lokálnu politiku na riešenie chýb. Napríklad dostaneme chybu súvisiacu s httpd (apache) alebo smbd (samba), chyby grepujeme a vytvoríme pre ne politiku:
apache
$ grep httpd_t /var/log/audit/audit.log | audit2allow -M http_policy
samba
$ grep smbd_t /var/log/audit/audit.log | audit2allow -M smb_policyTu http_policy и smb_policy — toto sú názvy lokálnych politík, ktoré sme vytvorili. Teraz musíme tieto vytvorené lokálne politiky načítať do aktuálnej politiky SE.Linux. Dá sa to urobiť nasledovne:
$ semodule –I http_policy.pp
$ semodule –I smb_policy.ppNaše miestne pravidlá boli stiahnuté a už by sme nemali dostávať žiadne avc ani denail v audit.log.
Toto bol môj pokus pomôcť vám pochopiť SELinuxDúfam, že po prečítaní tohto článku sa budete cítiť pohodlne so SE.Linux pohodlnejšie.
Zdroj: hab.com
