Panduan Pemula untuk SELinux

Panduan Pemula untuk SELinux

Terjemahan artikel disiapkan untuk mahasiswa kursus "Keamanan Linux"

SELinux atau Security Enhanced Linux adalah mekanisme kontrol akses yang ditingkatkan yang dikembangkan oleh Badan Keamanan Nasional AS (NSA) untuk mencegah intrusi berbahaya. Ini menerapkan model kontrol akses yang dipaksakan (atau wajib) (Kontrol Akses Wajib Bahasa Inggris, MAC) di atas model kebijaksanaan (atau selektif) yang ada (Kontrol Akses Diskresioner Bahasa Inggris, DAC), yaitu izin untuk membaca, menulis, mengeksekusi.

SELinux memiliki tiga mode:

  1. Penegakan — penolakan akses berdasarkan aturan kebijakan.
  2. Permisif — menyimpan catatan tindakan yang melanggar kebijakan, yang akan dilarang dalam mode penegakan.
  3. Disabled — penonaktifan total SELinux.

Secara default pengaturannya sudah masuk /etc/selinux/config

Mengubah mode SELinux

Untuk mengetahui mode saat ini, jalankan

$ getenforce

Untuk mengubah mode menjadi permisif jalankan perintah berikut

$ setenforce 0

atau, untuk mengubah mode dari permisif pada Menegakkan, jalankan

$ setenforce 1

Jika Anda perlu menonaktifkan SELinux sepenuhnya, ini hanya dapat dilakukan melalui file konfigurasi

$ vi /etc/selinux/config

Untuk menonaktifkan, ubah parameter SELINUX sebagai berikut:

SELINUX=disabled

Menyiapkan SELinux

Setiap file dan proses ditandai dengan konteks SELinux, yang berisi informasi tambahan seperti pengguna, peran, jenis, dll. Jika ini pertama kalinya Anda mengaktifkan SELinux, Anda harus mengonfigurasi konteks dan labelnya terlebih dahulu. Proses pemberian label dan konteks dikenal sebagai penandaan. Untuk mulai menandai, di file konfigurasi kita ubah modenya menjadi permisif.

$ vi /etc/selinux/config
SELINUX=permissive

Setelah mengatur mode permisif, buat file tersembunyi kosong di root dengan nama autorelabel

$ touch /.autorelabel

dan restart komputer

$ init 6

Catatan: Kami menggunakan mode permisif untuk menandai, sejak penggunaan mode Menegakkan dapat menyebabkan sistem crash saat reboot.

Jangan khawatir jika unduhan terhenti pada beberapa file, penandaannya memerlukan waktu cukup lama. Setelah penandaan selesai dan sistem Anda di-boot, Anda dapat membuka file konfigurasi dan mengatur modenya Menegakkandan juga menjalankan:

$ setenforce 1

Anda sekarang telah berhasil mengaktifkan SELinux di komputer Anda.

Memantau log

Anda mungkin mengalami beberapa kesalahan saat menandai atau saat sistem sedang berjalan. Untuk memeriksa apakah SELinux Anda berfungsi dengan benar dan apakah tidak memblokir akses ke port, aplikasi, dll., Anda perlu melihat lognya. Log SELinux terletak di /var/log/audit/audit.log, tetapi Anda tidak perlu membaca keseluruhannya untuk menemukan kesalahan. Anda dapat menggunakan utilitas audit2why untuk menemukan kesalahan. Jalankan perintah berikut:

$ audit2why < /var/log/audit/audit.log

Akibatnya, Anda akan menerima daftar kesalahan. Jika tidak ada kesalahan dalam log, maka tidak ada pesan yang akan ditampilkan.

Mengonfigurasi Kebijakan SELinux

Kebijakan SELinux adalah seperangkat aturan yang mengatur mekanisme keamanan SELinux. Kebijakan mendefinisikan serangkaian aturan untuk lingkungan tertentu. Sekarang kita akan mempelajari cara mengonfigurasi kebijakan untuk mengizinkan akses ke layanan terlarang.

1. Nilai logika (saklar)

Sakelar (boolean) memungkinkan Anda mengubah bagian kebijakan saat runtime, tanpa harus membuat kebijakan baru. Mereka memungkinkan Anda membuat perubahan tanpa me-reboot atau mengkompilasi ulang kebijakan SELinux.

Contoh
Katakanlah kita ingin berbagi direktori home pengguna melalui baca/tulis FTP, dan kita telah membagikannya, namun ketika kita mencoba mengaksesnya, kita tidak melihat apa pun. Hal ini karena kebijakan SELinux mencegah server FTP membaca dan menulis ke direktori home pengguna. Kita perlu mengubah kebijakan agar server FTP dapat mengakses direktori home. Mari kita lihat apakah ada saklar untuk ini dengan melakukan

$ semanage boolean -l

Perintah ini akan mencantumkan sakelar yang tersedia dengan statusnya saat ini (hidup atau mati) dan deskripsinya. Anda dapat menyaring pencarian Anda dengan menambahkan grep untuk menemukan hasil hanya ftp:

$ semanage boolean -l | grep ftp

dan Anda akan menemukan yang berikut ini

ftp_home_dir        -> off       Allow ftp to read & write file in user home directory

Sakelar ini dinonaktifkan, jadi kami akan mengaktifkannya setsebool $ setsebool ftp_home_dir on

Sekarang daemon ftp kita akan dapat mengakses direktori home pengguna.
Catatan: Anda juga bisa mendapatkan daftar sakelar yang tersedia tanpa deskripsi dengan melakukan getsebool -a

2. Label dan konteks

Ini adalah cara paling umum untuk menerapkan kebijakan SELinux. Setiap file, folder, proses dan port ditandai dengan konteks SELinux:

  • Untuk file dan folder, label disimpan sebagai atribut yang diperluas pada sistem file dan dapat dilihat dengan perintah berikut:
    $ ls -Z /etc/httpd
  • Untuk proses dan port, pelabelan dikelola oleh kernel, dan Anda dapat melihat label ini sebagai berikut:

proses

$ ps –auxZ | grep httpd

Pelabuhan

$ netstat -anpZ | grep httpd

Contoh
Sekarang mari kita lihat contoh untuk lebih memahami label dan konteks. Katakanlah kita memiliki server web yang bukan direktori /var/www/html/ использует /home/dan/html/. SELinux akan menganggap ini sebagai pelanggaran kebijakan dan Anda tidak akan dapat melihat halaman web Anda. Ini karena kami belum menyetel konteks keamanan yang terkait dengan file HTML. Untuk melihat konteks keamanan default, gunakan perintah berikut:

$ ls –lz /var/www/html
 -rw-r—r—. root root unconfined_u:object_r:httpd_sys_content_t:s0 /var/www/html/

Ini dia httpd_sys_content_t sebagai konteks untuk file html. Kita perlu mengatur konteks keamanan ini untuk direktori kita saat ini, yang saat ini memiliki konteks berikut:

-rw-r—r—. dan dan system_u:object_r:user_home_t:s0 /home/dan/html/

Perintah alternatif untuk memeriksa konteks keamanan file atau direktori:

$ semanage fcontext -l | grep '/var/www'

Kami juga akan menggunakan semanage untuk mengubah konteks setelah kami menemukan konteks keamanan yang benar. Untuk mengubah konteks /home/dan/html, jalankan perintah berikut:

$ semanage fcontext -a -t httpd_sys_content_t ‘/home/dan/html(/.*)?’
$ semanage fcontext -l | grep ‘/home/dan/html’
/home/dan/html(/.*)? all files system_u:object_r:httpd_sys_content_t:s0
$ restorecon -Rv /home/dan/html

Setelah konteks diubah menggunakan semanage, perintah restorasicon akan memuat konteks default untuk file dan direktori. Server web kami sekarang dapat membaca file dari folder tersebut /home/dan/htmlkarena konteks keamanan untuk folder ini telah diubah menjadi httpd_sys_content_t.

3. Membuat kebijakan lokal

Mungkin ada situasi di mana metode di atas tidak berguna bagi Anda dan Anda mendapatkan kesalahan (avc/denial) di audit.log. Jika ini terjadi, Anda perlu membuat kebijakan lokal. Anda dapat menemukan semua kesalahan menggunakan audit2why, seperti dijelaskan di atas.

Anda dapat membuat kebijakan lokal untuk mengatasi kesalahan. Misalnya, kami mendapatkan kesalahan terkait dengan httpd (Apache) atau smbd (samba), kami menerima kesalahan tersebut dan membuat kebijakan untuk kesalahan tersebut:

apache
$ grep httpd_t /var/log/audit/audit.log | audit2allow -M http_policy
samba
$ grep smbd_t /var/log/audit/audit.log | audit2allow -M smb_policy

Di sini http_policy и smb_policy adalah nama kebijakan lokal yang kami buat. Sekarang kita perlu memuat kebijakan lokal yang dibuat ini ke dalam kebijakan SELinux saat ini. Hal ini dapat dilakukan sebagai berikut:

$ semodule –I http_policy.pp
$ semodule –I smb_policy.pp

Kebijakan lokal kami telah diunduh dan kami tidak lagi menerima avc atau denail apa pun di audit.log.

Ini adalah upaya saya untuk membantu Anda memahami SELinux. Saya harap setelah membaca artikel ini Anda akan merasa lebih nyaman dengan SELinux.

Sumber: www.habr.com

Tambah komentar