SELinux rokasgrāmata iesācējiem

SELinux rokasgrāmata iesācējiem

Kursa studentiem sagatavots raksta tulkojums "Linux drošība"

SELinux jeb Security Enhanced Linux ir uzlabots piekļuves kontroles mehānisms, ko izstrādājusi ASV Nacionālā drošības aģentūra (NSA), lai novērstu ļaunprātīgu ielaušanos. Tas ievieš piespiedu (vai obligātu) piekļuves kontroles modeli (angļu valodā Mandatory Access Control, MAC) papildus esošajam diskrecionārajam (vai selektīvajam) modelim (angļu diskrecionārā piekļuves kontrole, DAC), tas ir, lasīšanas, rakstīšanas, izpildes atļaujas.

SELinux ir trīs režīmi:

  1. Piespiedu izpilde — piekļuves liegšana, pamatojoties uz politikas noteikumiem.
  2. Atļauts — politiku pārkāpjošo darbību žurnāla kārtošana, kas būtu aizliegta izpildes režīmā.
  3. invalīdiem — pilnīga SELinux atspējošana.

Pēc noklusējuma iestatījumi ir ievadīti /etc/selinux/config

SELinux režīmu maiņa

Lai uzzinātu pašreizējo režīmu, palaidiet

$ getenforce

Lai mainītu režīmu uz atļaujošu, izpildiet šo komandu

$ setenforce 0

vai, lai mainītu režīmu no atļaujams par īstenošana, izpildīt

$ setenforce 1

Ja jums ir pilnībā jāatspējo SELinux, to var izdarīt, tikai izmantojot konfigurācijas failu

$ vi /etc/selinux/config

Lai atspējotu, mainiet SELINUX parametru šādi:

SELINUX=disabled

SELinux iestatīšana

Katrs fails un process ir atzīmēts ar SELinux kontekstu, kas satur papildu informāciju, piemēram, lietotāju, lomu, veidu utt. Ja šī ir pirmā reize, kad iespējojat SELinux, vispirms būs jākonfigurē konteksts un etiķetes. Iezīmju un konteksta piešķiršanas process ir pazīstams kā tagu pievienošana. Lai sāktu atzīmēšanu, konfigurācijas failā mainām režīmu uz atļaujams.

$ vi /etc/selinux/config
SELINUX=permissive

Pēc režīma iestatīšanas atļaujams, saknē izveidojiet tukšu slēptu failu ar nosaukumu autorelabel

$ touch /.autorelabel

un restartējiet datoru

$ init 6

Piezīme: mēs izmantojam režīmu atļaujams marķēšanai, kopš režīma izmantošanas īstenošana var izraisīt sistēmas avāriju atsāknēšanas laikā.

Neuztraucieties, ja kāda faila lejupielāde iestrēgst, atzīmēšana aizņem kādu laiku. Kad atzīmēšana ir pabeigta un sistēma ir sāknēta, varat doties uz konfigurācijas failu un iestatīt režīmu īstenošanaun arī palaist:

$ setenforce 1

Tagad esat veiksmīgi iespējojis SELinux savā datorā.

Žurnālu uzraudzība

Atzīmēšanas laikā vai sistēmas darbības laikā, iespējams, ir radušās dažas kļūdas. Lai pārbaudītu, vai jūsu SELinux darbojas pareizi un vai tas nebloķē piekļuvi nevienam portam, lietojumprogrammai utt., Apskatiet žurnālus. SELinux žurnāls atrodas /var/log/audit/audit.log, taču jums nav jāizlasa viss, lai atrastu kļūdas. Lai atrastu kļūdas, varat izmantot utilītu audit2why. Palaidiet šādu komandu:

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

Tā rezultātā jūs saņemsit kļūdu sarakstu. Ja žurnālā nav kļūdu, ziņojumi netiks parādīti.

SELinux politikas konfigurēšana

SELinux politika ir noteikumu kopums, kas regulē SELinux drošības mehānismu. Politika definē noteikumu kopumu konkrētai videi. Tagad mēs uzzināsim, kā konfigurēt politikas, lai atļautu piekļuvi aizliegtiem pakalpojumiem.

1. Loģiskās vērtības (slēdži)

Slēdži (būla vērtības) ļauj mainīt politikas daļas izpildlaikā, neizveidojot jaunas politikas. Tie ļauj veikt izmaiņas, nepārstartējot vai atkārtoti kompilējot SELinux politikas.

Piemērs
Pieņemsim, ka mēs vēlamies koplietot lietotāja mājas direktoriju, izmantojot FTP lasīšanas/rakstīšanas funkciju, un mēs jau esam to kopīgojuši, taču, mēģinot tai piekļūt, mēs neko neredzam. Tas ir tāpēc, ka SELinux politika neļauj FTP serverim lasīt un rakstīt lietotāja mājas direktorijā. Mums ir jāmaina politika, lai FTP serveris varētu piekļūt mājas direktorijiem. Apskatīsim, vai šim nolūkam ir kādi slēdži

$ semanage boolean -l

Šī komanda uzskaitīs pieejamos slēdžus ar to pašreizējo stāvokli (ieslēgts vai izslēgts) un aprakstu. Varat precizēt meklēšanu, pievienojot grep, lai atrastu tikai ftp rezultātus:

$ semanage boolean -l | grep ftp

un jūs atradīsiet tālāk norādīto

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

Šis slēdzis ir atspējots, tāpēc mēs to iespējosim ar setsebool $ setsebool ftp_home_dir on

Tagad mūsu ftp dēmons varēs piekļūt lietotāja mājas direktorijai.
Piezīme. Varat arī iegūt pieejamo slēdžu sarakstu bez apraksta, to darot getsebool -a

2. Etiķetes un konteksts

Šis ir visizplatītākais SELinux politikas ieviešanas veids. Katrs fails, mape, process un ports ir atzīmēts ar SELinux kontekstu:

  • Failiem un mapēm etiķetes tiek saglabātas kā paplašināti atribūti failu sistēmā, un tās var skatīt ar šādu komandu:
    $ ls -Z /etc/httpd
  • Procesiem un portiem marķējumu pārvalda kodols, un jūs varat skatīt šīs etiķetes šādi:

process

$ ps –auxZ | grep httpd

osta

$ netstat -anpZ | grep httpd

Piemērs
Tagad apskatīsim piemēru, lai labāk izprastu iezīmes un kontekstu. Pieņemsim, ka mums ir tīmekļa serveris, nevis direktorijs /var/www/html/ использует /home/dan/html/. SELinux uzskatīs to par politikas pārkāpumu, un jūs nevarēsit skatīt savas tīmekļa lapas. Tas ir tāpēc, ka mēs neesam iestatījuši drošības kontekstu, kas saistīts ar HTML failiem. Lai skatītu noklusējuma drošības kontekstu, izmantojiet šo komandu:

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

Šeit mēs saņēmām httpd_sys_content_t kā konteksts html failiem. Mums ir jāiestata šis drošības konteksts mūsu pašreizējam direktorijam, kuram pašlaik ir šāds konteksts:

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

Alternatīva komanda faila vai direktorija drošības konteksta pārbaudei:

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

Mēs arī izmantosim semanage, lai mainītu kontekstu, kad būsim atraduši pareizo drošības kontekstu. Lai mainītu /home/dan/html kontekstu, palaidiet šādas komandas:

$ 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

Pēc tam, kad konteksts ir mainīts, izmantojot semanage, komanda restorecon ielādēs failu un direktoriju noklusējuma kontekstu. Mūsu tīmekļa serveris tagad varēs nolasīt failus no mapes /home/dan/htmljo šīs mapes drošības konteksts ir mainīts uz httpd_sys_content_t.

3. Izveidojiet vietējās politikas

Var būt situācijas, kad iepriekš minētās metodes jums nav noderīgas un jūs saņemat kļūdas (avc/denial) audit.log. Kad tas notiek, jums ir jāizveido vietējā politika. Visas kļūdas varat atrast, izmantojot audit2why, kā aprakstīts iepriekš.

Varat izveidot vietējo politiku, lai novērstu kļūdas. Piemēram, mēs saņemam kļūdu saistībā ar httpd (apache) vai smbd (samba), mēs grep kļūdas un izveidojam tām 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_policy

Šeit http_policy и smb_policy ir mūsu izveidoto vietējo politiku nosaukumi. Tagad mums ir jāielādē šīs izveidotās vietējās politikas pašreizējā SELinux politikā. To var izdarīt šādi:

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

Mūsu vietējās politikas ir lejupielādētas, un mums vairs nevajadzētu saņemt avc vai denail vietnē audit.log.

Šis bija mans mēģinājums palīdzēt jums saprast SELinux. Es ceru, ka pēc šī raksta izlasīšanas jūs jutīsities ērtāk ar SELinux.

Avots: www.habr.com

Pievieno komentāru