Cyfieithiad o'r erthygl a baratowyd ar gyfer myfyrwyr cwrs
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:
- Gorfodi — gwrthod mynediad yn seiliedig ar reolau polisi.
- Caniataol — cadw cofnod o gamau gweithredu sy'n torri'r polisi, a fyddai'n cael eu gwahardd yn y modd gorfodi.
- 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/html
oherwydd 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