Managing SELinux Security
Published: 2024-04-02 02:18:54

Bagaimana SELinux Melindungi Sumber Daya

SELinux adalah fitur keamanan penting dari Linux. Akses ke file dan sumber daya lainnya dikontrol pada tingkat yang sangat detail. Proses hanya diizinkan mengakses sumber daya yang ditentukan oleh kebijakan mereka, atau pengaturan boolean SELinux.

Izin file mengontrol pengguna atau grup pengguna mana yang dapat mengakses file spesifik tertentu. Namun, seorang pengguna yang diberikan akses baca atau tulis ke file tertentu dapat menggunakan file tersebut dengan cara apa pun yang dipilih pengguna tersebut, bahkan jika penggunaan tersebut tidak sesuai dengan cara file seharusnya digunakan.

Sebagai contoh, dengan akses tulis ke file, apakah file data terstruktur yang dirancang untuk ditulis hanya menggunakan program tertentu, boleh dibuka dan dimodifikasi oleh editor lain yang dapat mengakibatkan kerusakan?

Izin file tidak dapat menghentikan akses yang tidak diinginkan seperti itu. Mereka tidak pernah dirancang untuk mengontrol bagaimana suatu file digunakan, tetapi hanya siapa yang diizinkan untuk membaca, menulis, atau menjalankan file.

SELinux terdiri dari serangkaian kebijakan, yang ditentukan oleh pengembang aplikasi, yang menentukan dengan tepat tindakan dan akses apa yang sesuai dan diizinkan untuk setiap eksekutor biner, file konfigurasi, dan file data yang digunakan oleh suatu aplikasi. Ini dikenal sebagai kebijakan yang ditargetkan karena satu kebijakan ditulis untuk menutupi aktivitas dari satu aplikasi tunggal. Kebijakan menyatakan label yang telah ditentukan sebelumnya yang ditempatkan pada program individu, file, dan port jaringan.

Mengapa menggunakan Security Enhanced Linux?
Tidak semua masalah keamanan dapat diprediksi sebelumnya. SELinux menegakkan seperangkat aturan akses yang mencegah kelemahan dalam satu aplikasi memengaruhi aplikasi lain atau sistem yang mendasarinya. SELinux menyediakan lapisan keamanan tambahan; itu juga menambahkan lapisan kompleksitas yang mungkin membuat orang yang baru mengenal subsistem ini merasa terhalang. Belajar untuk bekerja dengan SELinux mungkin memerlukan waktu tetapi kebijakan penegakan berarti bahwa kelemahan dalam satu bagian sistem tidak menyebar ke bagian lain. Jika SELinux bekerja buruk dengan subsistem tertentu, Anda dapat mematikan penegakan untuk layanan tertentu tersebut sampai Anda menemukan solusi untuk masalah yang mendasarinya.

SELinux memiliki tiga mode:

Penegakan: SELinux menegakkan aturan kontrol akses. Komputer umumnya berjalan dalam mode ini.

Permissive: SELinux aktif tetapi bukan menegakkan aturan kontrol akses, melainkan mencatat peringatan aturan yang dilanggar. Mode ini digunakan terutama untuk pengujian dan pemecahan masalah.

Nonaktif: SELinux dimatikan sepenuhnya: tidak ada pelanggaran SELinux yang ditolak, bahkan tidak dicatat. Tidak dianjurkan!

Konsep keamanan dasar SELinux
Security Enhanced Linux (SELinux) adalah lapisan keamanan tambahan dari sistem. Tujuan utama dari SELinux adalah melindungi data pengguna dari layanan sistem yang telah dikompromi. Sebagian besar administrator Linux mengenal model keamanan izin pengguna/grup/lainnya standar. Ini adalah model berbasis pengguna dan grup yang dikenal sebagai kontrol akses diskresioner. SELinux menyediakan lapisan keamanan tambahan yang berbasis objek dan dikontrol oleh aturan yang lebih canggih, yang dikenal sebagai kontrol akses wajib.

Untuk memungkinkan akses anonim jarak jauh ke server web, port firewall harus dibuka. Namun, ini memberikan kesempatan bagi orang jahat untuk mengompromi sistem melalui kerentanan. Jika mereka berhasil mengompromi proses server web, mereka mendapatkan izin tersebut. Secara khusus, izin dari pengguna apache dan grup apache. Pengguna dan grup tersebut memiliki akses baca ke root dokumen, /var/www/html. Mereka juga memiliki akses ke /tmp, dan /var/tmp, dan file dan direktori lain yang dapat ditulis oleh dunia.

SELinux adalah seperangkat aturan keamanan yang menentukan proses mana yang dapat mengakses file, direktori, dan port mana. Setiap file, proses, direktori, dan port memiliki label keamanan khusus yang disebut konteks SELinux. Konteks adalah nama yang digunakan oleh kebijakan SELinux untuk menentukan apakah suatu proses dapat mengakses file, direktori, atau port. Secara default, kebijakan tidak mengizinkan interaksi apa pun kecuali aturan eksplisit memberikan akses. Jika tidak ada aturan izin, tidak ada akses yang diizinkan.

Label SELinux memiliki beberapa konteks: pengguna, peran, tipe, dan sensitivitas. Kebijakan yang ditargetkan, yang merupakan kebijakan default yang diaktifkan dalam Red Hat Enterprise Linux, berbasis pada konteks ketiga: konteks tipe. Nama konteks tipe biasanya diakhiri dengan _t.

Konteks tipe untuk server web adalah httpd_t. Konteks tipe untuk file dan direktori yang biasanya ditemukan di /var/www/html adalah httpd_sys_content_t. Konteks untuk file dan direktori yang biasanya ditemukan di /tmp dan /var/tmp adalah tmp_t. Konteks tipe untuk port server web adalah http_port_t.

Apache memiliki konteks tipe httpd_t. Ada aturan kebijakan yang mengizinkan akses Apache ke file dan direktori dengan konteks tipe httpd_sys_content_t. Secara default, file yang ditemukan di /var/www/html dan direktori server web lainnya memiliki konteks tipe httpd_sys_content_t. Tidak ada aturan izin dalam kebijakan untuk file yang biasanya ditemukan di /tmp dan /var/tmp, sehingga akses tidak diizinkan. Dengan SELinux diaktifkan, seorang pengguna jahat yang telah mengompromi proses server web tidak dapat mengakses direktori /tmp.

Server MariaDB memiliki konteks tipe mysqld_t. Secara default, file yang ditemukan di /data/mysql memiliki konteks tipe mysqld_db_t. Konteks tipe ini mengizinkan akses MariaDB ke file-file tersebut tetapi men