Artikel ini adalah artikel cermin dari terjemahan mesin, silakan klik di sini untuk melompat ke artikel aslinya.

Melihat: 28349|Jawab: 4

[linux] Pemahaman menyeluruh tentang apa itu selinux di linux

[Salin tautan]
Diposting pada 05/07/2019 11.25.50 | | | |
1. Pembukaan

Security-Enhanced Linux (SELinux) adalah modul kernel Linux dan subsistem keamanan Linux.

SELinux terutama dikembangkan oleh NSA. Kernel Linux 2.6 dan di atasnya sudah mengintegrasikan modul SELinux.

SELinux sangat kompleks dan memiliki banyak hal konseptual yang sulit dipelajari. Banyak administrator sistem Linux telah mematikan SELinux karena mereka menganggapnya merepotkan.

Jika Anda dapat menguasai SELinux dan menggunakannya dengan benar, saya pikir seluruh sistem pada dasarnya dapat mencapai titik "tidak dapat dihancurkan" (selalu ingat bahwa tidak ada keamanan mutlak).

Menguasai konsep dasar SELinux serta metode konfigurasi sederhana adalah kursus wajib bagi setiap administrator sistem Linux.

Artikel ini didasarkan pada CentOS 7.4.1708.

Artikel ini murni berbagi dan bertukar pengalaman belajar pribadi, kesalahan tidak dapat dihindari, hanya untuk referensi! Jika Anda menemukan kesalahan, harap tunjukkan, terima kasih banyak!

2. Peran SELinux dan mekanisme manajemen izin

2.1 Peran SELinux

Fungsi utama SELinux adalah untuk meminimalkan sumber daya yang dapat diakses oleh proses layanan dalam sistem (prinsip hak istimewa paling rendah).

Bayangkan jika layanan jaringan yang berjalan sebagai root memiliki kerentanan 0day, peretas dapat mengeksploitasi kerentanan ini untuk melakukan apa pun yang mereka inginkan di server Anda sebagai root. Bukankah itu menakutkan?

SELinux hadir untuk memecahkan masalah ini.

2.2 DAC

Dalam sistem operasi yang tidak menggunakan SELinux, faktor yang menentukan apakah sumber daya dapat diakses adalah apakah sumber daya memiliki izin dari pengguna yang sesuai (baca, tulis, jalankan).

Selama proses mengakses sumber daya ini memenuhi persyaratan di atas, maka dapat diakses.

Masalah yang paling fatal adalah bahwa pengguna root tidak tunduk pada peraturan apa pun, dan sumber daya apa pun pada sistem dapat diakses tanpa batasan.

Badan utama dari mekanisme manajemen izin ini adalah pengguna, juga dikenal sebagai kontrol akses otonom (DAC).

2.3 MAC

Dalam sistem operasi yang menggunakan SELinux, faktor-faktor yang menentukan apakah sumber daya dapat diakses tidak hanya faktor-faktor di atas, tetapi juga apakah setiap jenis proses memiliki akses ke jenis sumber daya tertentu.

Dengan cara ini, meskipun proses berjalan sebagai root, perlu untuk menentukan jenis proses dan jenis sumber daya yang diizinkan untuk diakses sebelum memutuskan apakah akan mengizinkan akses ke sumber daya. Ruang aktif proses juga dapat dikompresi seminimal mungkin.

Bahkan proses layanan yang berjalan sebagai root umumnya hanya memiliki akses ke sumber daya yang dibutuhkannya. Bahkan jika suatu program rentan, ruang lingkup dampaknya terbatas pada sumber daya yang diizinkan untuk diakses. Keamanan sangat meningkat.

Tubuh utama dari mekanisme manajemen izin ini adalah proses, juga dikenal sebagai kontrol akses wajib (MAC).

MAC dibagi lagi menjadi dua cara, satu disebut mode Keamanan Kategori (MCS), dan yang lainnya disebut mode Keamanan Multi-Level (MLS).

Tindakan berikut dalam mode MCS.

2.4 Perbandingan DAC dan MAC

Berikut adalah gambar untuk diilustrasikan.



Seperti yang Anda lihat, dalam mode DAC, selama direktori yang sesuai memiliki izin dari pengguna yang sesuai, direktori tersebut dapat diakses. Dalam mode MAC, itu juga dibatasi oleh rentang direktori yang diizinkan untuk diakses oleh proses.

3. Konsep dasar SELinux

3.1 Subjek

Ini dapat sepenuhnya disamakan dengan sebuah proses.

Catatan: Untuk kemudahan pemahaman, kecuali ditentukan lain, proses ini dianggap sebagai badan utama di bawah ini.

3.2 Objek

Sumber daya yang diakses oleh kepala sekolah. Ini bisa berupa file, direktori, port, perangkat, dll.

Catatan: Untuk memudahkan pemahaman, kecuali ditentukan lain, dokumen atau direktori berikut dianggap sebagai objek.

3.3 Kebijakan & Aturan

Biasanya ada sejumlah besar file dan proses dalam sistem, dan untuk menghemat waktu dan overhead, kami biasanya hanya mengatur proses tertentu secara selektif.

Dan proses mana yang perlu diatur dan bagaimana mengendalikannya ditentukan oleh kebijakan.

Ada beberapa aturan dalam kebijakan. Beberapa aturan dapat diaktifkan atau dinonaktifkan sesuai kebutuhan (selanjutnya disebut sebagai aturan Boolean).

Aturannya modular dan dapat diperluas. Saat menginstal aplikasi baru, aplikasi dapat menambahkan aturan dengan menambahkan modul baru. Pengguna juga dapat menambahkan atau mengurangi aturan secara manual.

Dalam sistem CentOS 7, ada tiga set kebijakan, yaitu:

1. ditargetkan: Mengontrol sebagian besar proses layanan jaringan. Ini adalah kebijakan yang digunakan oleh sistem secara default (semua di bawah ini digunakan).

2. Minimum: Berdasarkan target, hanya proses layanan jaringan yang dipilih yang diatur. Umumnya tidak.

3. MLS: Perlindungan keamanan multi-level. Atur semua proses. Ini adalah kebijakan yang paling ketat, dan konfigurasinya sangat sulit. Umumnya, tidak digunakan kecuali ada persyaratan keamanan yang sangat tinggi.

Kebijakan dapat diatur di /etc/selinux/config.

3.4 Konteks Keamanan

Konteks keamanan adalah inti dari SELinux.

Konteks keamanan Saya membaginya menjadi "konteks keamanan proses" dan "konteks keamanan dokumen".

Konteks Keamanan Proses biasanya sesuai dengan beberapa Konteks Keamanan Dokumen.

Hanya ketika konteks keamanan keduanya sesuai, proses dapat mengakses file. Korespondensi mereka ditentukan oleh aturan dalam polis.

Konteks keamanan file ditentukan oleh tempat file dibuat dan proses yang membuatnya. Dan sistem memiliki serangkaian nilai default, dan pengguna juga dapat mengatur nilai default.

Penting untuk dicatat bahwa hanya memindahkan file tidak mengubah konteks keamanan file Anda.

Struktur dan makna konteks keamanan

Konteks keamanan memiliki empat bidang, dipisahkan oleh titik dua. Bentuk seperti: system_u:object_r:admin_home_t:s0.


3.5 Mode Kerja SELinux

SELinux memiliki tiga mode operasi, yaitu:

1. menegakkan: Mode yang diberlakukan. Pelanggaran aturan SELinux akan diblokir dan dicatat ke log.

2. Permisif: Mode toleransi. Pelanggaran aturan SELinux hanya dicatat dalam log. Umumnya untuk debugging.

3. dinonaktifkan: Matikan SELinux.

Mode kerja SELinux dapat diatur di /etc/selinux/config.

Jika Anda ingin beralih dari dinonaktifkan ke menegakkan atau permisif, Anda harus memulai ulang sistem. Dan sebaliknya.

Mode Penegakan dan Permisif dapat dengan cepat dialihkan dengan perintah Setenforce 1|0.

Penting untuk dicatat bahwa jika sistem telah berjalan dengan SELinux dimatikan untuk sementara waktu, restart pertama setelah SELinux dihidupkan mungkin lebih lambat. Karena sistem harus membuat konteks yang aman untuk file di disk (saya bilang saya memulai ulang selama sekitar 10 menit dan mengira itu mati...... )。

Log SELinux perlu dicatat dengan bantuan auditd.service, harap jangan nonaktifkan.

3.6 Alur Kerja SELinux

Berikut adalah kutipan dari sebuah gambar, tanpa banyak penjelasan.



Catatan: Teks keamanan di atas mengacu pada konteks keamanan.

4. Operasi SELinux dasar

4.1 Mengkueri konteks keamanan file atau direktori

Penggunaan dasar perintah

ls -Z

Contoh penggunaan

Mengkueri konteks keamanan /etc/hosts.

ls -Z /etc/host

Hasil eksekusi

-rw-r--r--. root root system_u:object_r:net_conf_t:s0 /etc/hosts

4.2 Kueri konteks keamanan proses

Penggunaan dasar perintah

ps auxZ | grep -v grep | grep

Contoh penggunaan

Tanyakan konteks keamanan proses terkait Nginx.

ps auxZ | grep -v grep | grep nginx

Hasil eksekusi

system_u:system_r:httpd_t:s0 root 7997 0.0 0.0 122784 2156 ? Ss 14:31 0:00 nginx: proses master /usr/sbin/nginx

system_u:system_r:httpd_t:s0 nginx 7998 0,0 0,0 125332 7560 ? S 14:31 0:00 nginx: proses pekerja

4.3 Ubah konteks keamanan file atau direktori secara manual

Penggunaan dasar perintah

chcon [...]

Fungsi opsi -u Ubah bidang pengguna konteks keamanan -r Ubah bidang peran konteks keamanan -t Ubah bidang jenis konteks keamanan -l Ubah bidang tingkat konteks keamanan --referensi Ubah konteks keamanan yang konsisten dengan file atau direktori yang ditentukan -R Operasi rekursif -h Ubah konteks keamanan tautan lunak (ubah file tautan lunak yang sesuai tanpa opsi ini)

Contoh penggunaan

Ubah konteks keamanan pengujian ke aaa_u:bbb_r:ccc_t:s0.

Uji ccc_t CHCON -U aaa_u -R bbb_r -T

4.4 Mengembalikan konteks keamanan file atau direktori ke nilai defaultnya

Penggunaan dasar perintah

Restorecon [opsi] [...]

Fungsi Opsi - Prosedur Operasi Cetak V - Operasi Rekursif R

Contoh penggunaan

Setelah Anda menambahkan beberapa file web ke direktori server Nginx Anda, atur konteks keamanan yang benar untuk file baru ini.

restorecon -R /usr/share/nginx/html/

4.5 Kueri aturan Boolean dan statusnya dalam sistem

Penggunaan dasar perintah

getsebool -a

Karena perintah mengkueri semua aturan atau hanya satu aturan, biasanya perintah mengkueri semua aturan terlebih dahulu dan kemudian memfilter dengan grep.

Contoh penggunaan

Meminta aturan Boolean yang terkait dengan httpd.

getsebool -a | grep httpd

Hasil eksekusi

httpd_anon_write --> mati

httpd_builtin_scripting --> aktif

httpd_can_check_spam --> mati

httpd_can_connect_ftp --> mati

#以下省略

4.6 Mengganti aturan Boolean

Penggunaan dasar perintah

setsebool [opsi]

Fungsi opsi -P restart masih berlaku

Contoh penggunaan

Aktifkan aturan httpd_anon_write.

setsebool -P httpd_anon_write aktif

4.7 Menambahkan Konteks Keamanan Default untuk Direktori

Penggunaan dasar perintah

semanage fcontext -a -t "(/.*)?"

Catatan: Konteks keamanan default direktori atau file dapat dilihat dengan menggunakan perintah semanage fcontext -l bersama dengan pemfilteran grep.

Contoh penggunaan

Setelah Anda menambahkan direktori situs baru /usr/share/nginx/html2 ke Nginx, Anda perlu mengatur konteks keamanan default yang sama untuk direktori aslinya.

semanage fcontext -a -t httpd_sys_content_t "/usr/share/nginx/html2(/.*)?"

4.8 Tambahkan port yang diizinkan oleh jenis proses tertentu

Penggunaan dasar perintah

semanage port -a -t -p

Catatan: Nomor port yang diizinkan untuk berbagai jenis layanan dapat dilihat dengan menggunakan perintah semanage port -l dengan pemfilteran grep.

Contoh penggunaan

Untuk Nginx, Anda perlu menggunakan port 10080 untuk layanan HTTP.

Semanage Port -a -t http_port_t -p tcp 10080

5. Analisis dan resolusi kesalahan SELinux

5.1 Memahami Log SELinux

Ketika SELinux diaktifkan, beberapa perilaku normal dari banyak layanan dianggap sebagai pelanggaran (baik dalam judul maupun dalam kesalahan di bawah ini).

Saat ini, kita perlu menggunakan log pelanggaran SELinux untuk menganalisis dan menyelesaikannya.

Log pelanggaran SELinux disimpan di /var/log/audit/audit.log.

/var/log/audit/audit.log 的内容大概是这样的。

type=LOGIN msg=audit(1507898701.391:515): pid=8523 uid=0 subj=system_u:system_r:crond_t:s0-s0:c0.c1023 old-auid=4294967295 auid=0 tty=(none) old-ses=4294967295 ses=25 res=1

type=USER_START msg=audit(1507898701.421:516): pid=8523 uid=0 auid=0 ses=25 subj=system_u:system_r:crond_t:s0-s0:c0.c1023 msg='op=PAM:session_open grantors=pam_loginuid,pam_ keyinit,pam_limits,pam_systemd acct="root" exe="/usr/sbin/crond" hostname=? addr=? terminal=cron res=success'

...

File ini banyak konten, dan dicampur dengan banyak log audit sistem yang tidak ada hubungannya dengan kesalahan SELinux. Kita akan menggunakan utilitas sealert untuk membantu analisis (jika prompt tidak dapat menemukan perintah, instal paket setroubleshoot).

5.2 Analisis kesalahan dengan sealert

Penggunaan dasar perintah

sealert -a /var/log/audit/audit.log

Setelah menjalankan perintah, sistem perlu meluangkan waktu untuk menganalisis pelanggaran dalam log dan memberikan laporan analisis.




Mantan:CentOS7 View dan matikan firewall
Depan:Kuasai akses antarmuka Java API HDFS
 Tuan tanah| Diposting pada 22/07/2021 17.17.58 |
Matikan SELinux

getenforce #查看是否是 dinonaktifkan, jika tidak, jalankan perintah di bawah ini
vim /etc/selinux/config
Ubah SELINUX=enforcing menjadi SELINUX=disabled, simpan dan keluar
 Tuan tanah| Diposting pada 15/10/2021 13.21.42 |
 Tuan tanah| Diposting pada 15/10/2021 14.22.40 |
Nonaktifkan swap partisi swap

 Tuan tanah| Diposting pada 03/09/2024 14.16.43 |
Tutup SELINUX





Sanggahan:
Semua perangkat lunak, materi pemrograman, atau artikel yang diterbitkan oleh Code Farmer Network hanya untuk tujuan pembelajaran dan penelitian; Konten di atas tidak boleh digunakan untuk tujuan komersial atau ilegal, jika tidak, pengguna akan menanggung semua konsekuensi. Informasi di situs ini berasal dari Internet, dan sengketa hak cipta tidak ada hubungannya dengan situs ini. Anda harus sepenuhnya menghapus konten di atas dari komputer Anda dalam waktu 24 jam setelah pengunduhan. Jika Anda menyukai program ini, harap dukung perangkat lunak asli, pembelian pendaftaran, dan dapatkan layanan asli yang lebih baik. Jika ada pelanggaran, silakan hubungi kami melalui email.

Mail To:help@itsvse.com