SELinux cheat sheet kanggo administrator sistem: 42 jawaban kanggo pitakonan penting

Terjemahan artikel disiapake khusus kanggo siswa kursus kasebut "Linux Administrator".

SELinux cheat sheet kanggo administrator sistem: 42 jawaban kanggo pitakonan penting

Ing kene sampeyan bakal entuk jawaban kanggo pitakonan penting babagan urip, alam semesta lan kabeh sing ana ing Linux kanthi keamanan sing luwih apik.

"Bebener sing penting manawa samubarang ora mesthi kaya sing dingerteni yaiku kawruh umum ..."

-Douglas Adams, The Hitchhiker's Guide to the Galaxy

Safety. Tambah linuwih. Korespondensi. Kawicaksanan. Papat Horsemen saka Apocalypse sysadmin. Saliyane tugas saben dina - ngawasi, serep, implementasine, konfigurasi, nganyari, lan sapiturute - kita uga tanggung jawab kanggo keamanan sistem kita. Malah sistem kasebut ing ngendi panyedhiya pihak katelu nyaranake supaya kita mateni keamanan sing ditingkatake. Rasane kaya kerja Ethan Hunt saka "Misi: Impossible."

Ngadhepi dilema iki, sawetara administrator sistem mutusake kanggo njupuk pil biru, amarga padha mikir ora bakal ngerti jawaban kanggo pitakonan gedhe babagan urip, alam semesta lan kabeh. Lan kaya sing kita ngerti, jawaban kasebut yaiku 42.

Ing semangat The Hitchhiker's Guide to the Galaxy, ana 42 jawaban kanggo pitakonan penting babagan kontrol lan panggunaan. SELinux ing sistem sampeyan.

1. SELinux minangka sistem kontrol akses paksa, tegese saben proses duwe label. Saben file, direktori lan obyek sistem uga duwe label. Aturan kabijakan ngontrol akses antarane proses lan obyek sing diwenehi tag. Kernel ngetrapake aturan kasebut.

2. Rong konsep sing paling penting yaiku: Labeling - tandha (file, pangolahan, bandar, etc.) lan Ketik penegakan (sing ngisolasi proses saka saben liyane adhedhasar jinis).

3. Format label sing bener user:role:type:level (opsional).

4. Tujuan nyedhiyakake keamanan multi-level (Keamanan Multi-Level - MLS) yaiku ngatur proses (domain) adhedhasar tingkat keamanan data sing bakal digunakake. Contone, proses rahasia ora bisa maca data rahasia ndhuwur.

5. Njamin keamanan multi-kategori (Keamanan Multi-Kategori - MCS) nglindhungi proses sing padha saka saben liyane (contone, mesin virtual, mesin OpenShift, kothak wedhi SELinux, wadhah, lsp).

6. Opsi kernel kanggo ngganti mode SELinux nalika boot:

  • autorelabel=1 → nimbulaké sistem kanggo mbukak relabeling
  • selinux=0 → kernel ora mbukak infrastruktur SELinux
  • enforcing=0 → dimuat ing mode permisif

7. Yen sampeyan kudu relabel kabeh sistem:

# touch /.autorelabel
#reboot

Yen tandha sistem ngemot akeh kasalahan, sampeyan bisa uga kudu boot ing mode permisif kanggo remarking sukses.

8. Kanggo mriksa yen SELinux diaktifake: # getenforce

9. Kanggo ngaktifake / mateni SELinux kanggo sementara: # setenforce [1|0]

10. Priksa status SELinux: # sestatus

11. File konfigurasi: /etc/selinux/config

12. Kepiye cara kerja SELinux? Iki minangka conto tandha kanggo server web Apache:

  • Representasi binar: /usr/sbin/httpd→httpd_exec_t
  • Direktori konfigurasi: /etc/httpd→httpd_config_t
  • Direktori file log: /var/log/httpd → httpd_log_t
  • Direktori konten: /var/www/html → httpd_sys_content_t
  • Skrip peluncuran: /usr/lib/systemd/system/httpd.service → httpd_unit_file_d
  • Proses: /usr/sbin/httpd -DFOREGROUND → httpd_t
  • Pelabuhan: 80/tcp, 443/tcp → httpd_t, http_port_t

Proses mlaku ing konteks httpd_t, bisa sesambungan karo obyek sing diwenehi label httpd_something_t.

13. Akeh prentah nampa argumentasi -Z kanggo ndeleng, nggawe lan ngganti konteks:

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

Konteks ditetepake nalika file digawe adhedhasar konteks direktori induke (kanthi sawetara pangecualian). RPM bisa nggawe konteks kaya nalika instalasi.

14. Ana papat panyebab utama kesalahan SELinux, sing diterangake kanthi luwih rinci ing poin 15-21 ing ngisor iki:

  • Masalah Labeling
  • Amarga soko sing SELinux kudu ngerti
  • Kesalahan ing kabijakan / aplikasi SELinux
  • Informasi sampeyan bisa dikompromi

15. Masalah labeling: yen file sampeyan ana ing /srv/myweb ditandhani ora bener, akses bisa ditolak. Ing ngisor iki sawetara cara kanggo ndandani iki:

  • Yen sampeyan ngerti label kasebut:
    # semanage fcontext -a -t httpd_sys_content_t '/srv/myweb(/.*)?'
  • Yen sampeyan ngerti file kanthi tandha sing padha:
    # semanage fcontext -a -e /srv/myweb /var/www
  • Mulihake konteks (kanggo loro kasus):
    # restorecon -vR /srv/myweb

16. Masalah Labeling: yen sampeyan mindhah file tinimbang nyalin, file bakal nahan konteks asline. Kanggo ndandani masalah iki:

  • Ngganti printah konteks kanthi label:
    # chcon -t httpd_system_content_t /var/www/html/index.html
  • Ngganti printah konteks kanthi label link:
    # chcon --reference /var/www/html/ /var/www/html/index.html
  • Mulihake konteks (kanggo loro kasus): # restorecon -vR /var/www/html/

17. yen SELinux sampeyan kudu ngertising HTTPD ngrungokake ing port 8585, marang SELinux:

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

18. SELinux sampeyan kudu ngerti Nilai Boolean sing ngidini bagean saka kabijakan SELinux diganti nalika runtime tanpa ngerti kabijakan SELinux sing ditimpa. Contone, yen sampeyan pengin httpd ngirim email, ketik: # setsebool -P httpd_can_sendmail 1

19. SELinux sampeyan kudu ngerti nilai logis kanggo ngaktifake / mateni setelan SELinux:

  • Kanggo ndeleng kabeh nilai boolean: # getsebool -a
  • Kanggo ndeleng katrangan saben: # semanage boolean -l
  • Kanggo nyetel nilai boolean: # setsebool [_boolean_] [1|0]
  • Kanggo instalasi permanen, nambah -P. Contone: # setsebool httpd_enable_ftp_server 1 -P

20. Kabijakan/aplikasi SELinux bisa uga ana kesalahan, kalebu:

  • Jalur kode sing ora biasa
  • Konfigurasi
  • Ngalihake stdout
  • Deskriptor file bocor
  • Memori sing bisa dieksekusi
  • Perpustakaan sing dibangun kanthi apik

Tiket mbukak (aja ngirim laporan menyang Bugzilla; Bugzilla ora duwe SLA).

21. Informasi sampeyan bisa dikompromiyen sampeyan wis mbatesi domain nyoba:

  • Muat modul kernel
  • Pateni mode SELinux sing dileksanakake
  • Tulis menyang etc_t/shadow_t
  • Ngganti aturan iptables

22. Alat SELinux kanggo ngembangake modul kebijakan:

# yum -y install setroubleshoot setroubleshoot-server

Urip maneh utawa miwiti maneh auditd sawise instalasi.

23. Gunakake

journalctl

kanggo nampilake dhaptar kabeh log sing ana gandhengane setroubleshoot:

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

24. Gunakake journalctl kanggo dhaptar kabeh log sing ana gandhengane karo tag SELinux tartamtu. Tuladhane:

# journalctl _SELINUX_CONTEXT=system_u:system_r:policykit_t:s0

25. Yen ana kesalahan SELinux, gunakake log setroubleshoot nawakake sawetara solusi sing bisa ditindakake.
Contone, saka 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 nyathet informasi ing akeh panggonan:

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

27. Logging: nggoleki kesalahan SELinux ing log audit:

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

28. Kanggo nemokake pesen SELinux Access Vector Cache (AVC) kanggo layanan tartamtu:

# ausearch -m avc -c httpd

29. Utilitas audit2allow ngumpulake informasi saka log operasi sing dilarang banjur ngasilake aturan kabijakan ijin SELinux. Tuladhane:

  • Kanggo nggawe katrangan sing bisa diwaca manungsa kenapa akses ditolak: # audit2allow -w -a
  • Kanggo ndeleng aturan penegakan jinis sing ngidini akses ditolak: # audit2allow -a
  • Kanggo nggawe modul khusus: # audit2allow -a -M mypolicy
  • Pilihan -M nggawe file penegakan jinis (.te) kanthi jeneng sing ditemtokake lan nyusun aturan kasebut dadi paket kebijakan (.pp): mypolicy.pp mypolicy.te
  • Kanggo nginstal modul khusus: # semodule -i mypolicy.pp

30. Kanggo ngatur proses kapisah (domain) supaya bisa digunakake ing mode permisif: # semanage permissive -a httpd_t

31. Yen sampeyan ora pengin domain dadi permisif: # semanage permissive -d httpd_t

32. Kanggo mateni kabeh domain permisif: # semodule -d permissivedomains

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

SELINUX=permissive
SELINUXTYPE=mls

Priksa manawa SELinux mlaku ing mode permisif: # setenforce 0
Gunakake skrip fixfileskanggo mesthekake yen file kasebut diwenehi label maneh nalika urip maneh:

# fixfiles -F onboot # reboot

34. Gawe pangguna kanthi sawetara MLS tartamtu: # useradd -Z staff_u john

Nggunakake printah useradd, peta pangguna anyar menyang pangguna SELinux sing wis ana (ing kasus iki, staff_u).

35. Kanggo ndeleng pemetaan antarane pangguna SELinux lan Linux: # semanage login -l

36. Netepake sawetara tartamtu kanggo pangguna: # semanage login --modify --range s2:c100 john

37. Kanggo mbenerake label direktori ngarep pangguna (yen perlu): # chcon -R -l s2:c100 /home/john

38. Kanggo ndeleng kategori saiki: # chcat -L

39. Kanggo ngganti kategori utawa miwiti nggawe dhewe, sunting file kaya ing ngisor iki:

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

40. Kanggo mbukak printah utawa skrip ing file, peran, lan konteks pangguna tartamtu:

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

  • -t konteks file
  • -r konteks peran
  • -u konteks pangguna

41. Wadah sing mlaku nganggo SELinux dipateni:

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

42. Yen sampeyan kudu menehi wadhah akses lengkap menyang sistem:

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

Lan saiki sampeyan wis ngerti jawabane. Dadi mangga: aja gupuh lan aktifake SELinux.

Cathetan:

Source: www.habr.com

Add a comment