ProHoster > Блог > Administrasi > SELinux cheat sheet kanggo administrator sistem: 42 jawaban kanggo pitakonan penting
SELinux cheat sheet kanggo administrator sistem: 42 jawaban kanggo pitakonan penting
Terjemahan artikel disiapake khusus kanggo siswa kursus kasebut "Linux Administrator".
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
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
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]
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:
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
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: