Terjemahan artikel disiapkan khusus untuk mahasiswa kursus tersebut .

Di sini Anda akan mendapatkan jawaban atas pertanyaan-pertanyaan penting tentang kehidupan, alam semesta, dan segala sesuatu di dalamnya. Linux dengan peningkatan keamanan.
“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 dari “Misi: Mustahil.”
Menghadapi dilema ini, beberapa administrator sistem memutuskan untuk mengambil tindakan , 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. pada sistem Anda.
1. SELinux — adalah sistem kontrol akses wajib, yang berarti setiap proses memiliki label. Setiap file, direktori, dan objek sistem juga memiliki label. Aturan kebijakan mengatur akses antara proses dan objek yang diberi label. Kernel menegakkan 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, sandbox SE)Linux, kontainer, dll.).
6. Parameter kernel untuk mengubah mode SE.Linux saat memuat:
autorelabel=1→ menyebabkan sistem menjalankan pelabelan ulangselinux=0→ kernel tidak memuat infrastruktur SELinuxenforcing=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 SE diaktifkanLinux: # getenforce
9. Untuk mengaktifkan/menonaktifkan SE sementaraLinux: # setenforce [1|0]
10. Memeriksa Status SELinux: # sestatus
11. Berkas konfigurasi: /etc/selinux/config
12. Bagaimana cara kerja SE (Structured Engineering)LinuxBerikut contoh pemberian markup 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 - 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 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 -Zid -Zps -Znetstat -Zcp -Zmkdir -Z
Konteks dibuat ketika file dibuat berdasarkan konteks direktori induknya (dengan beberapa pengecualian). RPM dapat menetapkan konteks seperti saat instalasi.
14. Ada empat alasan utama terjadinya kesalahan SE.Linuxyang dijelaskan lebih rinci pada paragraf 15-21 di bawah ini:
- Masalah pelabelan
- Karena sesuatu yang SELinux harus tahu
- 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 - Ubah perintah konteks dengan label tautan:
# chcon --reference /var/www/html/ /var/www/html/index.html - Pulihkan konteksnya (untuk kedua kasus):
# restorecon -vR /var/www/html/
17. Jika SELinux perlu diketahui, bahwa HTTPD sedang mendengarkan di port 8585, beri tahu SELinux:
# semanage port -a -t http_port_t -p tcp 8585
18. SELinux perlu diketahui Nilai Boolean yang memungkinkan Anda mengubah bagian-bagian dari kebijakan SE.Linux pada saat runtime tanpa mengetahui perubahan kebijakan SE.LinuxMisalnya, jika Anda ingin httpd mengirim email, masukkan: # setsebool -P httpd_can_sendmail 1
19. SELinux perlu diketahui nilai logis 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 wajib SELinux
- Menulis ke
etc_t/shadow_t - Ubah aturan iptables
22. SE ToolsLinux untuk mengembangkan modul kebijakan:
# yum -y install setroubleshoot setroubleshoot-server
Nyalakan ulang atau mulai ulang auditd setelah instalasi.
23. Gunakan
journalctl untuk menampilkan daftar semua log yang terkait dengan setroubleshoot:
# journalctl -t setroubleshoot --since=14:20
24. Gunakan journalctl untuk menampilkan semua log yang terkait dengan tag SE tertentuLinux. Sebagai contoh:
# journalctl _SELINUX_CONTEXT=system_u:system_r:policykit_t:s0
25. Ketika 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.html26. Pencatatan: SELinux mencatat informasi di banyak tempat:
- / var / log / messages
- /var/log/audit/audit.log
- /var/lib/setroubleshoot/setroubleshoot_database.xml
27. Pencatatan Log: Menemukan Kesalahan SELinux dalam 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 SE.Linux. Sebagai contoh:
- 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
-Mmembuat 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
33. Mengaktifkan kebijakan MLS SELinux: # yum install selinux-policy-mls
в /etc/selinux/config:
SELINUX=permisif
JENIS SELINUX=ml
Pastikan SELinux berfungsi 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 SE yang sudah adaLinux (pada kasus ini, staff_u).
35. Untuk melihat korespondensi antar pengguna SELinux и 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:
# runcon -t initrc_t -r system_r -u user_u yourcommandhere
-tkonteks file-rkonteks peran-ukonteks pengguna
41. Kontainer berjalan dengan SE dinonaktifkanLinux:
- tukang pod:
# podman run --security-opt label=disable … - Buruh pelabuhan:
# docker run --security-opt label=disable …
42. Jika Anda perlu memberi container akses penuh ke sistem:
- tukang pod:
# podman run --privileged … - Buruh pelabuhan:
# docker run --privileged …
Dan sekarang Anda sudah tahu jawabannya. Jadi, jangan panik dan aktifkan SE.Linux.
Ссылки:
- by
- oleh Dan Walsh
- by
- by
Sumber: www.habr.com
