Yon gid pou debutan nan SELinux

Yon gid pou debutan nan SELinux

Tradiksyon atik la prepare pou elèv kou yo "Sekirite Linux"

SELinux oswa Security Enhanced Linux se yon mekanis kontwòl aksè amelyore pa Ajans Sekirite Nasyonal Ameriken an (NSA) devlope pou anpeche entrizyon move. Li aplike yon modèl kontwòl aksè fòse (oswa obligatwa) (English Mandatory Access Control, MAC) sou tèt modèl diskresyonè (oswa selektif) ki egziste deja (English Disretionary Access Control, DAC), sa vle di otorizasyon pou li, ekri, egzekite.

SELinux gen twa mòd:

  1. Ranfòsman — refi aksè ki baze sou règleman politik yo.
  2. Permisif — kenbe yon jounal sou aksyon ki vyole politik la, ki ta entèdi nan mòd ki fè respekte la.
  3. Andikape — nèt sou tout pwen désactivation de SELinux.

Pa default paramèt yo nan /etc/selinux/config

Chanje mòd SELinux

Pou chèche konnen mòd aktyèl la, kouri

$ getenforce

Pou chanje mòd nan toleran kouri lòd sa a

$ setenforce 0

oswa, chanje mòd soti nan toleran sou ranfòse, egzekite

$ setenforce 1

Si ou bezwen konplètman enfim SELinux, Lè sa a, sa a ka sèlman fè nan dosye a konfigirasyon

$ vi /etc/selinux/config

Pou enfim, chanje paramèt SELINUX la jan sa a:

SELINUX=disabled

Mete kanpe SELinux

Chak fichye ak pwosesis make ak yon kontèks SELinux, ki gen plis enfòmasyon tankou itilizatè, wòl, kalite, elatriye. Si sa a se premye fwa ou pèmèt SELinux, w ap bezwen premye konfigirasyon kontèks la ak etikèt. Pwosesis la nan plase etikèt ak kontèks ke yo rekonèt kòm tag. Pou kòmanse make, nan fichye a konfigirasyon nou chanje mòd nan toleran.

$ vi /etc/selinux/config
SELINUX=permissive

Apre mete mòd nan toleran, kreye yon dosye vid kache nan rasin lan ak non an autorelabel

$ touch /.autorelabel

epi rekòmanse òdinatè a

$ init 6

Remak: Nou itilize mòd la toleran pou make, depi itilizasyon mòd la ranfòse ka lakòz sistèm nan aksidan pandan rdemare.

Pa enkyete w si telechajman an bloke sou kèk dosye, make pran yon ti tan. Yon fwa ke make fini ak sistèm ou a demare, ou ka ale nan fichye a konfigirasyon epi mete mòd nan ranfòseepi tou kouri:

$ setenforce 1

Koulye a, ou te aktive avèk siksè SELinux sou òdinatè w lan.

Siveyans mòso bwa yo

Ou ka te rankontre kèk erè pandan make oswa pandan sistèm nan ap kouri. Pou tcheke si SELinux ou a ap travay kòrèkteman epi si li pa bloke aksè nan nenpòt pò, aplikasyon, elatriye, ou bezwen gade nan mòso bwa yo. Jounal SELinux la sitiye nan /var/log/audit/audit.log, men ou pa bezwen li tout bagay pou jwenn erè. Ou ka itilize sèvis piblik audit2why pou jwenn erè. Kouri lòd sa a:

$ audit2why < /var/log/audit/audit.log

Kòm yon rezilta, ou pral resevwa yon lis erè. Si pa te gen okenn erè nan boutèy la, Lè sa a, pa gen okenn mesaj yo pral parèt.

Konfigirasyon Règleman SELinux

Yon politik SELinux se yon seri règ ki gouvène mekanis sekirite SELinux la. Yon politik defini yon seri règ pou yon anviwonman espesifik. Koulye a, nou pral aprann ki jan yo konfigirasyon règleman yo pèmèt aksè nan sèvis entèdi.

1. Valè lojik (chanjman)

Bouton (booleans) pèmèt ou chanje pati nan yon politik nan ègzekutabl, san yo pa bezwen kreye nouvo politik. Yo pèmèt ou fè chanjman san yo pa rekòmanse oswa rekonpile règleman SELinux.

Egzanp
Ann di nou vle pataje anyè lakay yon itilizatè atravè FTP lekti/ekri, epi nou te deja pataje li, men lè nou eseye jwenn aksè nan li, nou pa wè anyen. Sa a se paske politik SELinux anpeche sèvè a FTP soti nan li ak ekri nan anyè lakay itilizatè a. Nou bezwen chanje politik la pou sèvè ftp la ka jwenn aksè nan repèrtwar lakay yo. Ann wè si gen nenpòt switch pou sa a pa fè

$ semanage boolean -l

Kòmandman sa a pral lis switch ki disponib yo ak eta aktyèl yo (sou oswa koupe) ak deskripsyon. Ou ka rafine rechèch ou an lè w ajoute grep pou jwenn rezilta ftp sèlman:

$ semanage boolean -l | grep ftp

epi w ap jwenn sa ki annapre yo

ftp_home_dir        -> off       Allow ftp to read & write file in user home directory

Se switch sa a enfim, kidonk nou pral pèmèt li ak setsebool $ setsebool ftp_home_dir on

Koulye a, demon ftp nou an pral kapab jwenn aksè nan anyè lakay itilizatè a.
Remak: Ou ka jwenn tou yon lis switch ki disponib san deskripsyon lè w fè getsebool -a

2. Etikèt ak kontèks

Sa a se fason ki pi komen pou aplike politik SELinux. Chak dosye, katab, pwosesis ak pò make ak kontèks SELinux la:

  • Pou dosye ak dosye, etikèt yo estoke kòm atribi pwolonje sou sistèm dosye a epi yo ka wè ak kòmandman sa a:
    $ ls -Z /etc/httpd
  • Pou pwosesis ak pò, etikèt la jere pa nwayo a, epi ou ka wè etikèt sa yo jan sa a:

pwosesis

$ ps –auxZ | grep httpd

$ netstat -anpZ | grep httpd

Egzanp
Koulye a, ann gade nan yon egzanp pi byen konprann etikèt ak kontèks. Ann di nou gen yon sèvè entènèt ki, olye de yon anyè /var/www/html/ использует /home/dan/html/. SELinux pral konsidere sa kòm yon vyolasyon politik epi ou pa pral kapab wè paj entènèt ou yo. Sa a se paske nou pa te mete kontèks sekirite ki asosye ak dosye HTML yo. Pou wè kontèks sekirite default la, sèvi ak lòd sa a:

$ ls –lz /var/www/html
 -rw-r—r—. root root unconfined_u:object_r:httpd_sys_content_t:s0 /var/www/html/

Isit la nou te resevwa httpd_sys_content_t kòm kontèks pou dosye html. Nou bezwen mete kontèks sekirite sa a pou anyè aktyèl nou an, ki kounye a gen kontèks sa a:

-rw-r—r—. dan dan system_u:object_r:user_home_t:s0 /home/dan/html/

Yon lòd altènatif pou tcheke kontèks sekirite yon dosye oswa anyè:

$ semanage fcontext -l | grep '/var/www'

Nou pral sèvi ak semanage tou pou chanje kontèks la yon fwa nou jwenn kontèks sekirite kòrèk la. Pou chanje kontèks /home/dan/html, kouri kòmandman sa yo:

$ 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/html

Apre yo fin chanje kontèks la lè l sèvi avèk semanage, kòmandman restorecon la pral chaje kontèks default la pou dosye ak repèrtwar. Sèvè entènèt nou an pral kounye a kapab li dosye ki soti nan katab la /home/dan/htmlpaske kontèks sekirite pou katab sa a te chanje an httpd_sys_content_t.

3. Kreye politik lokal yo

Ka gen sitiyasyon kote metòd ki anwo yo pa itil ou epi ou jwenn erè (avc/refi) nan audit.log. Lè sa rive, ou bezwen kreye yon politik lokal. Ou ka jwenn tout erè lè l sèvi avèk audit2why, jan sa dekri pi wo a.

Ou ka kreye yon politik lokal pou rezoud erè. Pou egzanp, nou jwenn yon erè ki gen rapò ak httpd (apache) oswa smbd (samba), nou grep erè yo epi kreye yon politik pou yo:

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_policy

Isit la http_policy и smb_policy se non politik lokal nou te kreye yo. Koulye a, nou bezwen chaje règleman lokal yo kreye nan politik SELinux aktyèl la. Sa a ka fè jan sa a:

$ semodule –I http_policy.pp
$ semodule –I smb_policy.pp

Politik lokal nou yo te telechaje epi nou pa ta dwe resevwa okenn avc oswa denail ankò nan audit.log.

Sa a te tantativ mwen ede w konprann SELinux. Mwen espere ke apre ou fin li atik sa a ou pral santi w pi alèz ak SELinux.

Sous: www.habr.com

Add nouvo kòmantè