ProHoster > blog > administrasi > Lembar contekan SELinux untuk administrator sistem: 42 jawaban atas pertanyaan penting
Lembar contekan SELinux untuk administrator sistem: 42 jawaban atas pertanyaan penting
Terjemahan artikel disiapkan khusus untuk mahasiswa kursus tersebut "Pengelola Linux".
Di sini Anda akan mendapatkan jawaban atas pertanyaan penting tentang kehidupan, alam semesta, dan segala sesuatu di Linux dengan keamanan yang ditingkatkan.
“Kebenaran penting bahwa segala sesuatu tidak selalu seperti yang terlihat adalah pengetahuan umum…”
-Douglas Adams, Panduan Hitchhiker ke Galaxy
Keamanan. Peningkatan keandalan. Korespondensi. Kebijakan. Sysadmin Empat Penunggang Kuda Kiamat. Selain tugas sehari-hari kami - pemantauan, pencadangan, implementasi, konfigurasi, pembaruan, dll. - kami juga bertanggung jawab atas keamanan sistem kami. Bahkan sistem yang penyedia pihak ketiganya menyarankan agar kami menonaktifkan peningkatan keamanan. Rasanya seperti bekerja Perburuan Etan dari “Misi: Mustahil.”
Menghadapi dilema ini, beberapa administrator sistem memutuskan untuk mengambil tindakan pil biru, karena mereka mengira tidak akan pernah tahu jawaban dari pertanyaan besar tentang kehidupan, alam semesta dan sebagainya. Dan seperti yang kita tahu, jawabannya adalah 42.
Sesuai semangat The Hitchhiker's Guide to the Galaxy, berikut adalah 42 jawaban atas pertanyaan penting tentang kontrol dan penggunaan. SELinux pada sistem Anda.
1. SELinux adalah sistem kontrol akses paksa, yang berarti setiap proses memiliki label. Setiap file, direktori dan objek sistem juga memiliki label. Aturan kebijakan mengontrol akses antara proses dan objek yang diberi tag. Kernel menerapkan aturan-aturan ini.
2. Dua konsep terpenting adalah: Pelabelan — penandaan (file, proses, port, dll.) dan Ketik penegakan (yang mengisolasi proses satu sama lain berdasarkan tipe).
3. Format label yang benar user:role:type:level (opsional).
4. Tujuan menyediakan keamanan multi-level (Keamanan Bertingkat - MLS) adalah mengelola proses (domain) berdasarkan tingkat keamanan data yang akan digunakannya. Misalnya, proses rahasia tidak dapat membaca data rahasia.
5. Memastikan keamanan multi-kategori (Keamanan Multi-Kategori - MCS) melindungi proses serupa satu sama lain (misalnya, mesin virtual, mesin OpenShift, kotak pasir SELinux, container, dll.).
6. Opsi kernel untuk mengubah mode SELinux saat boot:
autorelabel=1 → menyebabkan sistem menjalankan pelabelan ulang
selinux=0 → kernel tidak memuat infrastruktur SELinux
enforcing=0 → memuat dalam mode permisif
7. Jika Anda perlu memberi label ulang pada keseluruhan sistem:
# touch /.autorelabel
#reboot
Jika penandaan sistem mengandung banyak kesalahan, Anda mungkin perlu melakukan booting dalam mode permisif agar komentar berhasil.
8. Untuk memeriksa apakah SELinux diaktifkan: # getenforce
9. Untuk mengaktifkan/menonaktifkan SELinux untuk sementara: # setenforce [1|0]
10. Memeriksa status SELinux: # sestatus
11. Berkas konfigurasi: /etc/selinux/config
12. Bagaimana cara kerja SELinux? Berikut adalah contoh penandaan untuk server web Apache:
Representasi biner: /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 berjalan dalam konteks httpd_t, dapat berinteraksi dengan objek berlabel httpd_something_t.
13. Banyak perintah menerima argumen -Z untuk melihat, membuat dan mengubah konteks:
ls -Z
id -Z
ps -Z
netstat -Z
cp -Z
mkdir -Z
Konteks dibuat ketika file dibuat berdasarkan konteks direktori induknya (dengan beberapa pengecualian). RPM dapat menetapkan konteks seperti saat instalasi.
14. Ada empat penyebab utama kesalahan SELinux, yang dijelaskan lebih rinci pada poin 15-21 di bawah ini:
Masalah pelabelan
Karena sesuatu yang perlu diketahui SELinux
Kesalahan dalam kebijakan/aplikasi SELinux
Informasi Anda mungkin dikompromikan
15.Masalah pelabelan: jika file Anda ada di /srv/myweb ditandai dengan salah, akses mungkin ditolak. Berikut beberapa cara untuk memperbaikinya:
Jika Anda mengetahui labelnya: # semanage fcontext -a -t httpd_sys_content_t '/srv/myweb(/.*)?'
Jika Anda mengetahui file dengan tanda yang setara: # semanage fcontext -a -e /srv/myweb /var/www
Memulihkan konteks (untuk kedua kasus): # restorecon -vR /srv/myweb
16.Masalah pelabelan: jika Anda memindahkan file alih-alih menyalinnya, file tersebut akan mempertahankan konteks aslinya. Untuk memperbaiki masalah ini:
Ubah perintah konteks dengan label: # chcon -t httpd_system_content_t /var/www/html/index.html
Pulihkan konteksnya (untuk kedua kasus): # restorecon -vR /var/www/html/
17. Jika SELinux yang perlu Anda ketahuibahwa HTTPD mendengarkan pada port 8585, beri tahu SELinux:
# semanage port -a -t http_port_t -p tcp 8585
18.SELinux yang perlu Anda ketahui Nilai Boolean yang memungkinkan bagian dari kebijakan SELinux diubah pada saat runtime tanpa mengetahui kebijakan SELinux ditimpa. Misalnya, jika Anda ingin httpd mengirim email, masukkan: # setsebool -P httpd_can_sendmail 1
19.SELinux yang perlu Anda ketahui nilai logika untuk mengaktifkan/menonaktifkan pengaturan SELinux:
Untuk melihat semua nilai boolean: # getsebool -a
Untuk melihat deskripsi masing-masing: # semanage boolean -l
Untuk menetapkan nilai boolean: # setsebool [_boolean_] [1|0]
Untuk instalasi permanen, tambahkan -P. Sebagai contoh: # setsebool httpd_enable_ftp_server 1 -P
20. Kebijakan/aplikasi SELinux mungkin mengandung kesalahan, termasuk:
Jalur kode yang tidak biasa
Konfigurasi
Mengarahkan stdout
Kebocoran deskriptor file
Memori yang dapat dieksekusi
Perpustakaan yang dibangun dengan buruk
Tiket terbuka (jangan kirimkan laporan ke Bugzilla; Bugzilla tidak memiliki SLA).
21.Informasi Anda mungkin dikompromikanjika Anda memiliki domain terbatas, cobalah:
Muat modul kernel
Nonaktifkan mode SELinux yang diterapkan
Menulis ke etc_t/shadow_t
Ubah aturan iptables
22. Alat SELinux untuk mengembangkan modul kebijakan:
25. Jika terjadi kesalahan SELinux, gunakan log setroubleshoot menawarkan beberapa kemungkinan solusi.
Misalnya dari 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 mencatat informasi di banyak tempat:
27. Logging: mencari kesalahan SELinux di log audit:
# ausearch -m AVC,USER_AVC,SELINUX_ERR -ts today
28. Untuk menemukan pesan SELinux Access Vector Cache (AVC) untuk layanan tertentu:
# ausearch -m avc -c httpd
29. а audit2allow mengumpulkan informasi dari log operasi terlarang dan kemudian menghasilkan aturan kebijakan izin SELinux. Misalnya:
Untuk membuat deskripsi yang dapat dibaca manusia tentang alasan akses ditolak: # audit2allow -w -a
Untuk melihat aturan penegakan jenis yang mengizinkan akses ditolak: # audit2allow -a
Untuk membuat modul khusus: # audit2allow -a -M mypolicy
Pilihan -M membuat file penegakan tipe (.te) dengan nama yang ditentukan dan mengkompilasi aturan ke dalam paket kebijakan (.pp): mypolicy.pp mypolicy.te
Untuk memasang modul khusus: # semodule -i mypolicy.pp
30. Untuk mengonfigurasi proses terpisah (domain) agar berfungsi dalam mode permisif: # semanage permissive -a httpd_t
31. Jika Anda tidak lagi ingin domain tersebut bersifat permisif: # semanage permissive -d httpd_t
32. Untuk menonaktifkan semua domain permisif: # semodule -d permissivedomains
Pastikan SELinux berjalan dalam mode permisif: # setenforce 0
Gunakan skrip fixfilesuntuk memastikan bahwa file diberi label ulang pada reboot berikutnya:
# fixfiles -F onboot # reboot
34. Buat pengguna dengan rentang MLS tertentu: # useradd -Z staff_u john
Menggunakan perintah useradd, petakan pengguna baru ke pengguna SELinux yang sudah ada (dalam hal ini, staff_u).
35. Untuk melihat pemetaan antara pengguna SELinux dan Linux: # semanage login -l
36. Tentukan rentang spesifik untuk pengguna: # semanage login --modify --range s2:c100 john
37. Untuk memperbaiki label direktori home pengguna (jika perlu): # chcon -R -l s2:c100 /home/john
38. Untuk melihat kategori saat ini: # chcat -L
39. Untuk mengubah kategori atau mulai membuat kategori Anda sendiri, edit file sebagai berikut:
/etc/selinux/_<selinuxtype>_/setrans.conf
40. Untuk menjalankan perintah atau skrip dalam file, peran, dan konteks pengguna tertentu: