Beginnersgids vir SELinux

Beginnersgids vir SELinux

Vertaling van die artikel wat voorberei is vir studente van die kursus "Linux-sekuriteit"

SELinux of Security Enhanced Linux is 'n verbeterde toegangsbeheermeganisme wat deur die US National Security Agency (US NSA) ontwikkel is om kwaadwillige indringing te voorkom. Dit implementeer 'n verpligte (of verpligte) toegangsbeheermodel (eng. Mandatory Access Control, MAC) bo-op die bestaande diskresionêre (of selektiewe) model (eng. Discretionary Access Control, DAC), dit wil sê toestemmings om te lees, skryf, uitvoer.

SELinux het drie modusse:

  1. af te dwing — Toegang geweier op grond van beleidsreëls.
  2. Toestemmend - hou 'n logboek van handelinge wat die beleid oortree, wat in die afdwingingsmodus verbied sal word.
  3. Gestremd is - volledige deaktivering van SELinux.

Die verstek instellings is in /etc/selinux/config

Verander SELinux-modusse

Om die huidige modus uit te vind, hardloop

$ getenforce

Om die modus na permissief te verander, voer die volgende opdrag uit

$ setenforce 0

of, om modus mee te verander permissiewe op afdwing, uitvoer

$ setenforce 1

As u SELinux heeltemal moet deaktiveer, kan dit slegs deur die konfigurasielêer gedoen word

$ vi /etc/selinux/config

Om te deaktiveer, verander die SELINUX-parameter soos volg:

SELINUX=disabled

Stel SELinux op

Elke lêer en proses is gemerk met 'n SELinux-konteks wat bykomende inligting bevat soos gebruiker, rol, tipe, ensovoorts. As jy SELinux vir die eerste keer aktiveer, sal jy eers die konteks en etikette moet opstel. Die proses om byskrifte en konteks toe te ken staan ​​bekend as etikettering. Om te begin merk, verander in die konfigurasielêer die modus na permissiewe.

$ vi /etc/selinux/config
SELINUX=permissive

Na die instelling van die modus permissiewe, skep 'n leë versteekte lêer by die wortel met die naam autorelabel

$ touch /.autorelabel

en herbegin die rekenaar

$ init 6

Let wel: ons gebruik die modus permissiewe vir nasien, sedert die gebruik van die modus afdwing kan die stelsel ineenstort tydens 'n herlaai.

Moenie bekommerd wees as die aflaai op een of ander lêer vashaak nie, nasien neem 'n geruime tyd. Nadat u u stelsel gemerk en opgelaai het, kan u na die konfigurasielêer gaan en die modus instel afdwingen hardloop ook:

$ setenforce 1

Jy het SELinux nou suksesvol op jou rekenaar geaktiveer.

Monitor logs

U het dalk 'n paar foute tydens merk of tydens stelselwerking teëgekom. Om te kyk of jou SELinux behoorlik werk en nie toegang tot enige poort, toepassing, ens. blokkeer nie, moet jy na die logs kyk. Die SELinux-logboek is in /var/log/audit/audit.log, maar jy hoef dit nie in sy geheel te lees om foute te vind nie. Jy kan die oudit2why-nutsding gebruik om foute te vind. Voer die volgende opdrag uit:

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

As gevolg hiervan, sal jy 'n lys van foute kry. As daar geen foute in die log was nie, sal geen boodskappe vertoon word nie.

Die opstel van die SELinux-beleid

'n SELinux-beleid is 'n stel reëls wat die SELinux-sekuriteitsmeganisme beheer. 'n Beleid definieer 'n stel reëls vir 'n bepaalde omgewing. Ons sal nou leer hoe om beleide op te stel om toegang tot verbode dienste toe te laat.

1. Boolese waardes (skakelaars)

Skakelaars (booleans) laat jou toe om dele van die beleid tydens looptyd te verander, sonder dat dit nodig is om nuwe beleide te skep. Hulle laat toe dat veranderinge aangebring word sonder om SELinux-beleide te herlaai of te hersaamstel.

Voorbeeld
Gestel ons wil 'n gebruiker se tuisgids via FTP deel vir lees en skryf, en ons het dit reeds gedeel, maar wanneer ons probeer toegang kry, sien ons niks. Dit is omdat SELinux-beleid verhoed dat die FTP-bediener na die gebruiker se tuisgids lees en skryf. Ons moet die beleid verander sodat die FTP-bediener toegang tot tuisgidse kan kry. Kom ons kyk of daar enige skakelaars hiervoor is deur te doen

$ semanage boolean -l

Hierdie opdrag sal die beskikbare skakelaars lys met hul huidige toestand (aangeskakel/aan of gedeaktiveer/af) en beskrywing. Jy kan jou soektog verfyn deur grep by te voeg om slegs ftp-resultate te vind:

$ semanage boolean -l | grep ftp

en vind die volgende

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

Hierdie skakelaar is af, so ons sal dit aanskakel met setsebool $ setsebool ftp_home_dir on

Nou sal ons ftp-daemon toegang tot die gebruiker se tuisgids kan kry.
Let wel: Jy kan ook 'n lys van beskikbare radioknoppies kry sonder 'n beskrywing deur te hardloop getsebool -a

2. Byskrifte en konteks

Dit is die mees algemene manier om SELinux-beleid te implementeer. Elke lêer, gids, proses en poort is gemerk met 'n SELinux-konteks:

  • Vir lêers en dopgehou word etikette as uitgebreide eienskappe in die lêerstelsel gestoor en kan met die volgende opdrag bekyk word:
    $ ls -Z /etc/httpd
  • Vir prosesse en poorte word die merk deur die kern beheer, en jy kan hierdie merke soos volg sien:

proses

$ ps –auxZ | grep httpd

hawe

$ netstat -anpZ | grep httpd

Voorbeeld
Kom ons kyk nou na 'n voorbeeld om etikette en konteks beter te verstaan. Kom ons sê ons het 'n webbediener wat in plaas van 'n gids /var/www/html/ использует /home/dan/html/. SELinux sal dit as 'n beleidsoortreding beskou en jy sal nie jou webblaaie kan bekyk nie. Dit is omdat ons nie die sekuriteitskonteks gestel het wat met die HTML-lêers geassosieer word nie. Om die verstek sekuriteit konteks te sien, gebruik die volgende opdrag:

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

Hier het ons httpd_sys_content_t as konteks vir html-lêers. Ons moet hierdie sekuriteitskonteks stel vir ons huidige gids, wat tans die volgende konteks het:

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

'n Alternatiewe opdrag om die sekuriteitskonteks van 'n lêer of gids na te gaan:

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

Ons sal ook semanage gebruik om die konteks te verander nadat ons die korrekte sekuriteitskonteks gevind het. Om die /home/dan/html konteks te verander, voer die volgende opdragte uit:

$ 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

Nadat die konteks met behulp van semanage verander is, sal die restorecon-opdrag die verstekkonteks vir lêers en dopgehou laai. Ons webbediener sal nou lêers vanaf die gids kan lees /home/dan/htmlomdat die sekuriteitskonteks vir hierdie vouer verander is na httpd_sys_content_t.

3. Skep plaaslike beleide

Daar kan situasies wees waar bogenoemde metodes vir jou nutteloos is en jy (avc/ontkenning) foute in die oudit.log kry. Wanneer dit gebeur, moet jy 'n plaaslike beleid (Plaaslike beleid) skep. U kan alle foute vind deur oudit2why te gebruik soos hierbo beskryf.

Om foute op te los, kan jy 'n plaaslike beleid skep. Byvoorbeeld, ons kry 'n fout wat verband hou met httpd (apache) of smbd (samba), ons grep die foute en skep 'n beleid daarvoor:

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

Hier http_policy и smb_policy is die name van die plaaslike beleide wat ons geskep het. Nou moet ons hierdie geskepte plaaslike beleide in die huidige SELinux-beleid laai. Dit kan so gedoen word:

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

Ons plaaslike beleide is gelaai en ons behoort nie meer enige avc of ontkenning in die oudit.log te ontvang nie.

Dit was my poging om jou te help om SELinux te verstaan. Ek hoop dat u na die lees van hierdie artikel meer gemaklik met SELinux sal voel.

Bron: will.com

Voeg 'n opmerking