SELinux curang lambar pikeun administrator sistem: 42 waleran kana patarosan penting

Tarjamahan artikel ieu disiapkeun husus pikeun siswa tangtu "Linux Administrator".

SELinux curang lambar pikeun administrator sistem: 42 waleran kana patarosan penting

Di dieu anjeun bakal nampi jawaban kana patarosan penting ngeunaan kahirupan, jagat raya sareng sadayana dina Linux kalayan kaamanan anu langkung saé.

"Kabeneran anu penting yén hal-hal henteu salawasna katingalina nyaéta pangaweruh umum ..."

- Douglas Adams, The Hitchhiker urang Guide ka Galaxy

Kasalametan. Ngaronjat reliabilitas. Korespondensi. Kawijakan. Opat Horsemen tina Apocalypse sysadmin. Salian tugas harian urang - ngawaskeun, cadangan, palaksanaan, konfigurasi, ngamutahirkeun, jsb - urang oge jawab kaamanan sistem urang. Malahan sistem anu panyadia pihak katilu nyarankeun urang nganonaktipkeun kaamanan anu ditingkatkeun. Asa kawas gawé Ethan Hunt ti "Misi: Mustahil."

Nyanghareupan kantun ieu, sababaraha pangurus sistem mutuskeun nyandak pil biru, sabab pikir maranéhna moal pernah nyaho jawaban kana patarosan badag kahirupan, alam semesta jeung sagala rupa nu. Sareng sakumaha anu urang terang, jawaban éta 42.

Dina sumanget The Hitchhiker's Guide to the Galaxy, ieu 42 waleran kana patarosan penting ngeunaan kontrol sareng panggunaan. SELinux dina sistem Anjeun.

1. SELinux mangrupikeun sistem kontrol aksés paksa, anu hartosna unggal prosés ngagaduhan labél. Unggal file, diréktori sareng obyék sistem ogé gaduh labél. Aturan kawijakan ngadalikeun aksés antara prosés jeung objék tagged. Kernel ngalaksanakeun aturan ieu.

2. Dua konsép anu paling penting nyaéta: Labeling - markings (file, prosés, palabuhan, jsb) jeung Jenis panerapan (anu ngasingkeun prosés tina silih dumasar kana jinis).

3. Format labél anu leres user:role:type:level (opsional).

4. Tujuan nyadiakeun kaamanan multi-tingkat (Kaamanan Multi-Level - MLS) nyaéta pikeun ngatur prosés (domain) dumasar kana tingkat kaamanan data anu bakal dianggo. Contona, prosés rusiah teu bisa maca data rusiah luhur.

5. Mastikeun kaamanan multi-kategori (Kaamanan Multi-Kategori - MCS) ngajaga prosés sarupa ti silih (contona, mesin virtual, mesin OpenShift, sandboxes SELinux, wadahna, jsb).

6. Pilihan kernel pikeun ngarobih modeu SELinux nalika boot:

  • autorelabel=1 → ngabalukarkeun sistem ngajalankeun relabeling
  • selinux=0 → kernel henteu ngamuat infrastruktur SELinux
  • enforcing=0 → dimuat dina mode permisif

7. Lamun perlu relabel sakabéh sistem:

# touch /.autorelabel
#reboot

Lamun sistem nyirian ngandung angka nu gede ngarupakeun kasalahan, Anjeun bisa jadi kudu boot dina mode permisif pikeun remarking sukses.

8. Pikeun pariksa naha SELinux diaktipkeun: # getenforce

9. Pikeun samentawis ngaktipkeun / nganonaktipkeun SELinux: # setenforce [1|0]

10. Mariksa status SELinux: # sestatus

11. File konfigurasi: /etc/selinux/config

12. Kumaha SELinux jalanna? Ieu conto nyirian pikeun pangladén wéb Apache:

  • Répréséntasi binér: /usr/sbin/httpd→httpd_exec_t
  • Diréktori konfigurasi: /etc/httpd→httpd_config_t
  • Diréktori file log: /var/log/httpd → httpd_log_t
  • Diréktori eusi: /var/www/html → httpd_sys_content_t
  • Skrip peluncuran: /usr/lib/systemd/system/httpd.service → httpd_unit_file_d
  • prosés: /usr/sbin/httpd -DFOREGROUND → httpd_t
  • Palabuhan: 80/tcp, 443/tcp → httpd_t, http_port_t

Prosés ngajalankeun dina konteks httpd_t, tiasa berinteraksi sareng objék anu dilabélan httpd_something_t.

13. Loba paréntah narima argumen -Z pikeun nempo, nyieun jeung ngarobah konteks:

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

Konteks ditetepkeun nalika file dijieun dumasar kana kontéks diréktori indungna (kalawan sababaraha pengecualian). RPM tiasa ngadamel kontéks sapertos nalika instalasi.

14. Aya opat panyabab utama kasalahan SELinux, anu dijelaskeun langkung rinci dina poin 15-21 di handap ieu:

  • Masalah panyiri
  • Kusabab hiji hal anu SELinux kedah terang
  • Kasalahan dina kawijakan / aplikasi SELinux
  • Inpormasi anjeun tiasa dikompromi

15. Masalah panyiri: lamun file anjeun dina /srv/myweb ditandaan teu bener, aksés bisa ditolak. Ieu sababaraha cara pikeun ngalereskeun ieu:

  • Upami anjeun terang labelna:
    # semanage fcontext -a -t httpd_sys_content_t '/srv/myweb(/.*)?'
  • Upami anjeun terang file anu gaduh tanda anu sami:
    # semanage fcontext -a -e /srv/myweb /var/www
  • Malikkeun konteks (pikeun duanana kasus):
    # restorecon -vR /srv/myweb

16. Masalah Labeling: lamun mindahkeun file tinimbang nyalin, file bakal nahan konteks aslina. Pikeun ngalereskeun masalah ieu:

  • Robah paréntah kontéks nganggo labél:
    # chcon -t httpd_system_content_t /var/www/html/index.html
  • Robah paréntah kontéks nganggo labél tautan:
    # chcon --reference /var/www/html/ /var/www/html/index.html
  • Mulangkeun kontéks (pikeun dua kasus): # restorecon -vR /var/www/html/

17. upami SELinux anjeun kedah terangyén HTTPD ngadangukeun dina port 8585, wartosan SELinux:

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

18. SELinux anjeun kedah terang Nilai-nilai Boolean anu ngamungkinkeun bagéan kawijakan SELinux dirobih nalika runtime tanpa pangaweruh ngeunaan kawijakan SELinux anu ditimpa. Contona, upami anjeun hoyong httpd ngirim email, lebetkeun: # setsebool -P httpd_can_sendmail 1

19. SELinux anjeun kedah terang nilai logis pikeun ngaktipkeun / nganonaktipkeun setélan SELinux:

  • Pikeun ningali sadaya nilai boolean: # getsebool -a
  • Pikeun ningali déskripsi unggal: # semanage boolean -l
  • Pikeun nyetel nilai boolean: # setsebool [_boolean_] [1|0]
  • Pikeun instalasi permanén, tambahkeun -P. Contona: # setsebool httpd_enable_ftp_server 1 -P

20. Kabijakan/aplikasi SELinux tiasa ngandung kasalahan, kalebet:

  • Jalur kode anu teu biasa
  • Konfigurasi
  • Mindahkeun stdout
  • Deskriptor file bocor
  • Mémori anu tiasa dieksekusi
  • Perpustakaan anu kirang diwangun

Buka tiket (ulah ngirimkeun laporan ka Bugzilla; Bugzilla teu boga SLA).

21. Inpormasi anjeun tiasa dikompromiupami anjeun parantos ngawatesan domain nyobian:

  • Ngamuat modul kernel
  • Pareuman mode SELinux anu dikuatkeun
  • Tulis ka etc_t/shadow_t
  • Robah aturan iptables

22. Alat SELinux pikeun ngembangkeun modul kawijakan:

# yum -y install setroubleshoot setroubleshoot-server

Reboot atanapi balikan deui auditd sanggeus instalasi.

23. pamakean

journalctl

pikeun mintonkeun daptar sadaya log pakait jeung setroubleshoot:

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

24. pamakean journalctl pikeun daptar sadaya log anu aya hubunganana sareng tag SELinux khusus. Salaku conto:

# journalctl _SELINUX_CONTEXT=system_u:system_r:policykit_t:s0

25. Upami aya kasalahan SELinux, paké log setroubleshoot nawiskeun sababaraha solusi anu mungkin.
Contona, ti 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. Logging: SELinux ngarékam inpormasi di seueur tempat:

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

27. Logging: milarian kasalahan SELinux dina log audit:

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

28. Pikeun milarian seratan SELinux Access Vector Cache (AVC) pikeun layanan khusus:

# ausearch -m avc -c httpd

29. Utiliti audit2allow ngumpulkeun informasi tina log operasi dilarang lajeng ngahasilkeun aturan kawijakan idin SELinux. Salaku conto:

  • Pikeun nyieun déskripsi anu bisa dibaca ku manusa naha aksés ditolak: # audit2allow -w -a
  • Pikeun ningali aturan penegak jinis anu ngamungkinkeun aksés ditolak: # audit2allow -a
  • Pikeun nyieun modul custom: # audit2allow -a -M mypolicy
  • Pilihan -M nyiptakeun tipe file penegak (.te) kalawan ngaran dieusian sarta compiles aturan kana pakét kawijakan (.pp): mypolicy.pp mypolicy.te
  • Pikeun masang modul khusus: # semodule -i mypolicy.pp

30. Pikeun ngonpigurasikeun prosés misah (domain) pikeun dianggo dina mode permisif: # semanage permissive -a httpd_t

31. Upami anjeun henteu deui hoyong domain janten permisif: # semanage permissive -d httpd_t

32. Pikeun nganonaktipkeun sadaya domain permisif: # semodule -d permissivedomains

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

SELINUX=permissive
SELINUXTYPE=mls

Pastikeun SELinux jalan dina mode permisif: # setenforce 0
Paké naskah fixfilespikeun mastikeun yén file anu relabeled dina reboot salajengna:

# fixfiles -F onboot # reboot

34. Jieun pamaké kalawan rentang MLS husus: # useradd -Z staff_u john

Ngagunakeun paréntah useradd, petakeun pamaké anyar ka pamaké SELinux nu geus aya (dina hal ieu, staff_u).

35. Pikeun ningali pemetaan antara pangguna SELinux sareng Linux: # semanage login -l

36. Nangtukeun rentang husus pikeun pamaké: # semanage login --modify --range s2:c100 john

37. Pikeun ngabenerkeun labél diréktori imah pamaké (upami perlu): # chcon -R -l s2:c100 /home/john

38. Pikeun nempo kategori ayeuna: # chcat -L

39. Pikeun ngarobah kategori atawa ngamimitian nyieun sorangan, edit file saperti kieu:

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

40. Pikeun ngajalankeun paréntah atanapi skrip dina file, peran, sareng kontéks pangguna khusus:

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

  • -t kontéks file
  • -r konteks peran
  • -u konteks pamaké

41. Wadah ngajalankeun kalawan SELinux ditumpurkeun:

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

42. Upami anjeun kedah masihan wadahna aksés pinuh ka sistem:

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

Sareng ayeuna anjeun parantos terang jawabanana. Janten punten: entong panik sareng aktipkeun SELinux.

Rujukan:

sumber: www.habr.com

Tambahkeun komentar