Canllaw i Ddechreuwyr i SELinux

Canllaw i Ddechreuwyr i SELinux

Cyfieithiad o'r erthygl a baratowyd ar gyfer myfyrwyr cwrs "Diogelwch Linux"

Mae SELinux neu Security Enhanced Linux yn fecanwaith rheoli mynediad gwell a ddatblygwyd gan Asiantaeth Diogelwch Cenedlaethol yr UD (NSA) i atal ymwthiadau maleisus. Mae'n gweithredu model rheoli mynediad gorfodol (neu orfodol) (Rheoli Mynediad Gorfodol Saesneg, MAC) ar ben y model dewisol presennol (neu ddetholus) (Rheoli Mynediad Dewisol Saesneg, DAC), hynny yw, caniatâd i ddarllen, ysgrifennu, gweithredu.

Mae gan SELinux dri modd:

  1. Gorfodi — gwrthod mynediad yn seiliedig ar reolau polisi.
  2. Caniataol — cadw cofnod o gamau gweithredu sy'n torri'r polisi, a fyddai'n cael eu gwahardd yn y modd gorfodi.
  3. Anabl — analluogi SELinux yn llwyr.

Yn ddiofyn mae'r gosodiadau i mewn /etc/selinux/config

Newid moddau SELinux

I ddarganfod y modd presennol, rhedeg

$ getenforce

I newid y modd i ganiataol rhedwch y gorchymyn canlynol

$ setenforce 0

neu, i newid modd o caniataol ar gorfodi, gweithredu

$ setenforce 1

Os oes angen i chi analluogi SELinux yn llwyr, dim ond trwy'r ffeil ffurfweddu y gellir gwneud hyn

$ vi /etc/selinux/config

I analluogi, newidiwch y paramedr SELINUX fel a ganlyn:

SELINUX=disabled

Sefydlu SELinux

Mae pob ffeil a phroses wedi'i marcio â chyd-destun SELinux, sy'n cynnwys gwybodaeth ychwanegol fel defnyddiwr, rôl, math, ac ati. Os mai dyma'r tro cyntaf i chi alluogi SELinux, yn gyntaf bydd angen i chi ffurfweddu'r cyd-destun a'r labeli. Gelwir y broses o aseinio labeli a chyd-destun yn dagio. I ddechrau marcio, yn y ffeil ffurfweddu rydym yn newid y modd i caniataol.

$ vi /etc/selinux/config
SELINUX=permissive

Ar ôl gosod y modd caniataol, creu ffeil gudd wag yn y gwraidd gyda'r enw autorelabel

$ touch /.autorelabel

ac ailgychwyn y cyfrifiadur

$ init 6

Nodyn: Rydyn ni'n defnyddio'r modd caniataol ar gyfer marcio, ers defnyddio'r modd gorfodi gall achosi i'r system chwalu yn ystod ailgychwyn.

Peidiwch â phoeni os yw'r lawrlwythiad yn mynd yn sownd ar ryw ffeil, mae'n cymryd amser i farcio. Unwaith y bydd y marcio wedi'i gwblhau a bod eich system wedi'i chychwyn, gallwch fynd i'r ffeil ffurfweddu a gosod y modd gorfodia hefyd yn rhedeg:

$ setenforce 1

Rydych bellach wedi galluogi SELinux yn llwyddiannus ar eich cyfrifiadur.

Monitro'r logiau

Efallai eich bod wedi dod ar draws rhai gwallau wrth farcio neu tra bod y system yn rhedeg. I wirio a yw'ch SELinux yn gweithio'n iawn ac os nad yw'n rhwystro mynediad i unrhyw borthladd, cymhwysiad, ac ati, mae angen i chi edrych ar y logiau. Mae log SELinux wedi'i leoli yn /var/log/audit/audit.log, ond nid oes angen i chi ddarllen yr holl beth i ddod o hyd i wallau. Gallwch ddefnyddio'r cyfleustodau audit2why i ddod o hyd i wallau. Rhedeg y gorchymyn canlynol:

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

O ganlyniad, byddwch yn derbyn rhestr o wallau. Os nad oedd unrhyw wallau yn y log, yna ni fydd unrhyw negeseuon yn cael eu harddangos.

Ffurfweddu Polisi SELinux

Mae polisi SELinux yn set o reolau sy'n llywodraethu mecanwaith diogelwch SELinux. Mae polisi yn diffinio set o reolau ar gyfer amgylchedd penodol. Nawr byddwn yn dysgu sut i ffurfweddu polisïau i ganiatáu mynediad i wasanaethau gwaharddedig.

1. Gwerthoedd rhesymegol (switsys)

Mae switshis (booleans) yn caniatáu ichi newid rhannau o bolisi ar amser rhedeg, heb orfod creu polisïau newydd. Maent yn caniatáu ichi wneud newidiadau heb ailgychwyn nac ail-grynhoi polisïau SELinux.

Enghraifft
Gadewch i ni ddweud ein bod am rannu cyfeiriadur cartref defnyddiwr trwy ddarllen / ysgrifennu FTP, ac rydym eisoes wedi'i rannu, ond pan geisiwn gael mynediad, nid ydym yn gweld unrhyw beth. Mae hyn oherwydd bod polisi SELinux yn atal y gweinydd FTP rhag darllen ac ysgrifennu i gyfeiriadur cartref y defnyddiwr. Mae angen i ni newid y polisi fel bod y gweinydd FTP yn gallu cyrchu cyfeiriaduron cartref. Gadewch i ni weld a oes unrhyw switshis ar gyfer hyn trwy wneud

$ semanage boolean -l

Bydd y gorchymyn hwn yn rhestru'r switshis sydd ar gael gyda'u cyflwr cyfredol (ymlaen neu i ffwrdd) a disgrifiad. Gallwch fireinio'ch chwiliad trwy ychwanegu grep i ddod o hyd i ganlyniadau ftp yn unig:

$ semanage boolean -l | grep ftp

a chewch y canlyn

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

Mae'r switsh hwn wedi'i analluogi, felly byddwn yn ei alluogi setsebool $ setsebool ftp_home_dir on

Nawr bydd ein daemon ftp yn gallu cyrchu cyfeiriadur cartref y defnyddiwr.
Nodyn: Gallwch hefyd gael rhestr o switshis sydd ar gael heb ddisgrifiad trwy wneud getsebool -a

2. Labeli a chyd-destun

Dyma'r ffordd fwyaf cyffredin o weithredu polisi SELinux. Mae pob ffeil, ffolder, proses a phorth wedi'u marcio â chyd-destun SELinux:

  • Ar gyfer ffeiliau a ffolderi, mae labeli'n cael eu storio fel priodoleddau estynedig ar y system ffeiliau a gellir eu gweld gyda'r gorchymyn canlynol:
    $ ls -Z /etc/httpd
  • Ar gyfer prosesau a phorthladdoedd, rheolir y labelu gan y cnewyllyn, a gallwch weld y labeli hyn fel a ganlyn:

proses

$ ps –auxZ | grep httpd

porthladd

$ netstat -anpZ | grep httpd

Enghraifft
Nawr, gadewch i ni edrych ar enghraifft i ddeall labeli a chyd-destun yn well. Gadewch i ni ddweud bod gennym weinydd gwe sydd, yn lle cyfeiriadur /var/www/html/ использует /home/dan/html/. Bydd SELinux yn ystyried hyn yn groes i bolisi ac ni fyddwch yn gallu gweld eich tudalennau gwe. Mae hyn oherwydd nad ydym wedi gosod y cyd-destun diogelwch sy'n gysylltiedig â'r ffeiliau HTML. I weld y cyd-destun diogelwch rhagosodedig, defnyddiwch y gorchymyn canlynol:

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

Yma cawsom httpd_sys_content_t fel cyd-destun ar gyfer ffeiliau html. Mae angen i ni osod y cyd-destun diogelwch hwn ar gyfer ein cyfeiriadur presennol, sydd â'r cyd-destun canlynol ar hyn o bryd:

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

Gorchymyn amgen i wirio cyd-destun diogelwch ffeil neu gyfeiriadur:

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

Byddwn hefyd yn defnyddio semanage i newid y cyd-destun unwaith y byddwn wedi dod o hyd i'r cyd-destun diogelwch cywir. I newid cyd-destun /home/dan/html, rhedwch y gorchmynion canlynol:

$ 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

Ar ôl i'r cyd-destun gael ei newid gan ddefnyddio semanage, bydd y gorchymyn adfer yn llwytho'r cyd-destun rhagosodedig ar gyfer ffeiliau a chyfeiriaduron. Bydd ein gweinydd gwe nawr yn gallu darllen ffeiliau o'r ffolder /home/dan/htmloherwydd bod y cyd-destun diogelwch ar gyfer y ffolder hon wedi'i newid i httpd_sys_content_t.

3. Creu polisïau lleol

Efallai y bydd sefyllfaoedd lle nad yw'r dulliau uchod o unrhyw ddefnydd i chi a'ch bod yn cael gwallau (avc/denial) yn audit.log. Pan fydd hyn yn digwydd, mae angen ichi greu polisi lleol. Gallwch ddod o hyd i bob gwall gan ddefnyddio audit2why, fel y disgrifir uchod.

Gallwch greu polisi lleol i ddatrys gwallau. Er enghraifft, rydym yn cael gwall yn ymwneud â httpd (apache) neu smbd (samba), rydym yn grep y gwallau ac yn creu polisi ar eu cyfer:

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

Yma http_policy и smb_policy yw enwau’r polisïau lleol a grëwyd gennym. Nawr mae angen i ni lwytho'r polisïau lleol hyn sydd wedi'u creu i mewn i bolisi presennol SELinux. Gellir gwneud hyn fel a ganlyn:

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

Mae ein polisïau lleol wedi'u llwytho i lawr ac ni ddylem bellach dderbyn unrhyw avc neu denail yn audit.log.

Dyma oedd fy ymgais i'ch helpu chi i ddeall SELinux. Rwy'n gobeithio ar ôl darllen yr erthygl hon y byddwch chi'n teimlo'n fwy cyfforddus gyda SELinux.

Ffynhonnell: hab.com

Ychwanegu sylw