Taflen dwyllo SELinux ar gyfer gweinyddwyr system: 42 ateb i gwestiynau pwysig

Paratowyd y cyfieithiad o'r erthygl yn benodol ar gyfer myfyrwyr y cwrs "Gweinyddwr Linux".

Taflen dwyllo SELinux ar gyfer gweinyddwyr system: 42 ateb i gwestiynau pwysig

Yma fe gewch atebion i gwestiynau pwysig am fywyd, y bydysawd a phopeth yn Linux gyda gwell diogelwch.

“Y gwirionedd pwysig nad yw pethau bob amser yr hyn maen nhw'n ymddangos yw gwybodaeth gyffredin...”

-Douglas Adams, Canllaw'r Hitchhiker i'r Galaxy

Diogelwch. Mwy o ddibynadwyedd. Gohebiaeth. Polisi. Pedwar Marchog yr Apocalypse sysadmin. Yn ogystal â'n tasgau dyddiol - monitro, gwneud copi wrth gefn, gweithredu, ffurfweddu, diweddaru, ac ati - rydym hefyd yn gyfrifol am ddiogelwch ein systemau. Hyd yn oed y systemau hynny lle mae'r darparwr trydydd parti yn argymell ein bod yn analluogi gwell diogelwch. Mae'n teimlo fel gwaith Ethan Hunt o “Mission: Impossible.”

Yn wyneb y cyfyng-gyngor hwn, mae rhai gweinyddwyr system yn penderfynu cymryd bilsen las, oherwydd eu bod yn meddwl na fyddant byth yn gwybod yr ateb i gwestiwn mawr bywyd, y bydysawd a hynny i gyd. Ac fel y gwyddom oll, yr ateb hwnnw yw 42.

Yn ysbryd The Hitchhiker's Guide to the Galaxy, dyma 42 ateb i gwestiynau pwysig am reolaeth a defnydd. SELinux ar eich systemau.

1. Mae SELinux yn system rheoli mynediad gorfodol, sy'n golygu bod gan bob proses label. Mae gan bob ffeil, cyfeiriadur a gwrthrych system labeli hefyd. Mae rheolau polisi yn rheoli mynediad rhwng prosesau wedi'u tagio a gwrthrychau. Mae'r cnewyllyn yn gorfodi'r rheolau hyn.

2. Y ddau gysyniad pwysicaf yw: Labelu — marciau (ffeiliau, prosesau, porthladdoedd, ac ati) a Gorfodi math (sy'n ynysu prosesau oddi wrth ei gilydd yn seiliedig ar fathau).

3. Fformat label cywir user:role:type:level (dewisol).

4. Pwrpas darparu diogelwch aml-lefel (Diogelwch Aml-Lefel - MLS) yw rheoli prosesau (meysydd) yn seiliedig ar lefel diogelwch y data y byddant yn ei ddefnyddio. Er enghraifft, ni all proses gyfrinachol ddarllen data cyfrinachol iawn.

5. Sicrhau diogelwch aml-gategori (Diogelwch Aml-gategori - MCS) yn amddiffyn prosesau tebyg oddi wrth ei gilydd (er enghraifft, peiriannau rhithwir, peiriannau OpenShift, blychau tywod SELinux, cynwysyddion, ac ati).

6. Opsiynau cnewyllyn ar gyfer newid moddau SELinux wrth gychwyn:

  • autorelabel=1 → yn achosi i'r system redeg ail-labelu
  • selinux=0 → nid yw'r cnewyllyn yn llwytho'r seilwaith SELinux
  • enforcing=0 → llwytho yn y modd caniataol

7. Os oes angen i chi ail-labelu'r system gyfan:

# touch /.autorelabel
#reboot

Os yw marcio'r system yn cynnwys nifer fawr o wallau, efallai y bydd angen i chi gychwyn yn y modd caniataol er mwyn i'r ailfarcio lwyddo.

8. I wirio a yw SELinux wedi'i alluogi: # getenforce

9. I alluogi / analluogi SELinux dros dro: # setenforce [1|0]

10. Wrthi'n gwirio statws SELinux: # sestatus

11. Ffeil ffurfweddu: /etc/selinux/config

12. Sut mae SELinux yn gweithio? Dyma enghraifft o farcio ar gyfer gweinydd gwe Apache:

  • Cynrychiolaeth ddeuaidd: /usr/sbin/httpd→httpd_exec_t
  • Cyfeiriadur ffurfweddu: /etc/httpd→httpd_config_t
  • Cyfeiriadur ffeil log: /var/log/httpd → httpd_log_t
  • Cyfeiriadur cynnwys: /var/www/html → httpd_sys_content_t
  • Sgript lansio: /usr/lib/systemd/system/httpd.service → httpd_unit_file_d
  • Proses: /usr/sbin/httpd -DFOREGROUND → httpd_t
  • Porthladdoedd: 80/tcp, 443/tcp → httpd_t, http_port_t

Proses yn rhedeg yn ei chyd-destun httpd_t, yn gallu rhyngweithio â gwrthrych wedi'i labelu httpd_something_t.

13. Mae llawer o orchmynion yn derbyn dadl -Z i weld, creu a newid cyd-destun:

  • ls -Z
  • id -Z
  • ps -Z
  • netstat -Z
  • cp -Z
  • mkdir -Z

Sefydlir cyd-destunau pan fydd ffeiliau'n cael eu creu yn seiliedig ar gyd-destun eu cyfeiriadur rhiant (gyda rhai eithriadau). Gall RPMs sefydlu cyd-destunau fel yn ystod gosod.

14. Mae pedwar prif achos gwallau SELinux, a ddisgrifir yn fanylach ym mhwyntiau 15-21 isod:

  • Materion labelu
  • Oherwydd rhywbeth y mae angen i SELinux ei wybod
  • Gwall ym mholisi/cymhwysiad SELinux
  • Mae'n bosibl y bydd eich gwybodaeth yn cael ei pheryglu

15. Problem labelu: os yw eich ffeiliau yn /srv/myweb wedi'u marcio'n anghywir, efallai y bydd mynediad yn cael ei wrthod. Dyma rai ffyrdd i drwsio hyn:

  • Os ydych chi'n gwybod y label:
    # semanage fcontext -a -t httpd_sys_content_t '/srv/myweb(/.*)?'
  • Os ydych chi'n gwybod ffeil gyda marciau cyfatebol:
    # semanage fcontext -a -e /srv/myweb /var/www
  • Adfer y cyd-destun (ar gyfer y ddau achos):
    # restorecon -vR /srv/myweb

16. Problem labelu: os byddwch yn symud y ffeil yn lle ei chopïo, bydd y ffeil yn cadw ei chyd-destun gwreiddiol. I ddatrys y broblem hon:

  • Newidiwch y gorchymyn cyd-destun gyda'r label:
    # chcon -t httpd_system_content_t /var/www/html/index.html
  • Newidiwch y gorchymyn cyd-destun gyda'r label cyswllt:
    # chcon --reference /var/www/html/ /var/www/html/index.html
  • Adfer y cyd-destun (ar gyfer y ddau achos): # restorecon -vR /var/www/html/

17. Os SELinux mae angen i chi wybodbod HTTPD yn gwrando ar borthladd 8585, dywedwch wrth SELinux:

# semanage port -a -t http_port_t -p tcp 8585

18. SELinux mae angen i chi wybod Gwerthoedd Boole sy'n caniatáu i rannau o bolisi SELinux gael eu newid yn ystod amser rhedeg heb wybodaeth am bolisi SELinux yn cael ei drosysgrifo. Er enghraifft, os ydych chi am i httpd anfon e-bost, nodwch: # setsebool -P httpd_can_sendmail 1

19. SELinux mae angen i chi wybod gwerthoedd rhesymegol ar gyfer galluogi / analluogi gosodiadau SELinux:

  • I weld yr holl werthoedd boolaidd: # getsebool -a
  • I weld disgrifiad o bob un: # semanage boolean -l
  • I osod gwerth boolaidd: # setsebool [_boolean_] [1|0]
  • Ar gyfer gosodiad parhaol, ychwanegwch -P. Er enghraifft: # setsebool httpd_enable_ftp_server 1 -P

20. Gall polisïau/ceisiadau SELinux gynnwys gwallau, gan gynnwys:

  • Llwybrau cod anarferol
  • Cyfluniadau
  • Ailgyfeirio stdout
  • Disgrifydd ffeil yn gollwng
  • Cof gweithredadwy
  • Llyfrgelloedd wedi'u hadeiladu'n wael

Tocynnau agored (peidiwch â chyflwyno adroddiad i Bugzilla; nid oes gan Bugzilla CLG).

21. Mae'n bosibl y bydd eich gwybodaeth yn cael ei pherygluos oes gennych barthau cyfyngedig yn ceisio:

  • Llwytho modiwlau cnewyllyn
  • Analluogi modd SELinux gorfodol
  • Ysgrifennwch at etc_t/shadow_t
  • Newid rheolau iptables

22. Offer SELinux ar gyfer datblygu modiwlau polisi:

# yum -y install setroubleshoot setroubleshoot-server

Ailgychwyn neu ailgychwyn auditd ar ôl gosod.

23. Defnyddiwch

journalctl

i ddangos rhestr o'r holl logiau sy'n gysylltiedig â setroubleshoot:

# journalctl -t setroubleshoot --since=14:20

24. Defnyddiwch journalctl i restru'r holl logiau sy'n gysylltiedig â thag SELinux penodol. Er enghraifft:

# journalctl _SELINUX_CONTEXT=system_u:system_r:policykit_t:s0

25. Os bydd gwall SELinux yn digwydd, defnyddiwch y log setroubleshoot cynnig nifer o atebion posibl.
Er enghraifft, o journalctl:

Jun 14 19:41:07 web1 setroubleshoot: SELinux is preventing httpd from getattr access on the file /var/www/html/index.html. For complete message run: sealert -l 12fd8b04-0119-4077-a710-2d0e0ee5755e

# sealert -l 12fd8b04-0119-4077-a710-2d0e0ee5755e
SELinux is preventing httpd from getattr access on the file /var/www/html/index.html.

***** Plugin restorecon (99.5 confidence) suggests ************************

If you want to fix the label,
/var/www/html/index.html default label should be httpd_syscontent_t.
Then you can restorecon.
Do
# /sbin/restorecon -v /var/www/html/index.html

26. Logio: Mae SELinux yn cofnodi gwybodaeth mewn sawl man:

  • / var / log / messages
  • /var/log/audit/audit.log
  • /var/lib/setroubleshoot/setroubleshoot_database.xml

27. Logio: chwilio am wallau SELinux yn y log archwilio:

# ausearch -m AVC,USER_AVC,SELINUX_ERR -ts today

28. I ddod o hyd i negeseuon SELinux Access Vector Cache (AVC) ar gyfer gwasanaeth penodol:

# ausearch -m avc -c httpd

29. Cyfleustodau audit2allow yn casglu gwybodaeth o logiau o weithrediadau gwaharddedig ac yna'n cynhyrchu rheolau polisi caniatâd SELinux. Er enghraifft:

  • I greu disgrifiad y gall pobl ei ddarllen o pam y gwrthodir mynediad: # audit2allow -w -a
  • I weld rheol gorfodi math sy'n caniatáu mynediad gwrthodedig: # audit2allow -a
  • I greu modiwl wedi'i deilwra: # audit2allow -a -M mypolicy
  • Opsiwn -M yn creu ffeil gorfodi math (.te) gyda'r enw penodedig ac yn llunio'r rheol mewn pecyn polisi (.pp): mypolicy.pp mypolicy.te
  • I osod modiwl personol: # semodule -i mypolicy.pp

30. I ffurfweddu proses ar wahân (parth) i weithio yn y modd caniataol: # semanage permissive -a httpd_t

31. Os nad ydych am i'r parth fod yn ganiataol mwyach: # semanage permissive -d httpd_t

32. I analluogi pob parth caniataol: # semodule -d permissivedomains

33. Galluogi polisi MLS SELinux: # yum install selinux-policy-mls
в /etc/selinux/config:

SELINUX=permissive
SELINUXTYPE=mls

Sicrhewch fod SELinux yn rhedeg yn y modd caniataol: # setenforce 0
Defnyddiwch sgript fixfilesi sicrhau bod y ffeiliau'n cael eu hail-labelu ar yr ailgychwyn nesaf:

# fixfiles -F onboot # reboot

34. Creu defnyddiwr gydag ystod MLS benodol: # useradd -Z staff_u john

Gan ddefnyddio'r gorchymyn useradd, mapiwch y defnyddiwr newydd i ddefnyddiwr SELinux presennol (yn yr achos hwn, staff_u).

35. I weld y mapio rhwng defnyddwyr SELinux a Linux: # semanage login -l

36. Diffiniwch ystod benodol ar gyfer y defnyddiwr: # semanage login --modify --range s2:c100 john

37. I gywiro label cyfeiriadur cartref y defnyddiwr (os oes angen): # chcon -R -l s2:c100 /home/john

38. I weld categorïau cyfredol: # chcat -L

39. I newid categorïau neu ddechrau creu un eich hun, golygwch y ffeil fel a ganlyn:

/etc/selinux/_<selinuxtype>_/setrans.conf

40. I redeg gorchymyn neu sgript mewn ffeil, rôl, a chyd-destun defnyddiwr penodol:

# runcon -t initrc_t -r system_r -u user_u yourcommandhere

  • -t cyd-destun ffeil
  • -r cyd-destun rôl
  • -u cyd-destun defnyddiwr

41. Cynhwysyddion sy'n rhedeg gyda SELinux wedi'u hanalluogi:

  • Podman: # podman run --security-opt label=disable …
  • Dociwr: # docker run --security-opt label=disable …

42. Os oes angen i chi roi mynediad llawn i'r system i'r cynhwysydd:

  • Podman: # podman run --privileged …
  • Dociwr: # docker run --privileged …

Ac yn awr rydych chi eisoes yn gwybod yr ateb. Felly os gwelwch yn dda: peidiwch â chynhyrfu a galluogi SELinux.

Cyfeiriadau:

Ffynhonnell: hab.com

Ychwanegu sylw