GNU/Linux >> Belajar Linux >  >> Linux

Empat perintah semanage untuk menjaga SELinux dalam mode penegakan

Selama bertahun-tahun, SELinux telah membantu mencegah kerusakan sistem dari eksploitasi zero-day. Alat ini juga berguna untuk isolasi mesin virtual dan diperlukan untuk isolasi kontainer. Namun SELinux masih sering dinonaktifkan atau ditempatkan dalam mode permisif.

targeted SELinux kebijakan dirancang untuk mengisolasi berbagai domain proses sambil tetap memungkinkan interaksi antar layanan sesuai kebutuhan. Hanya beberapa perintah yang diperlukan bagi administrator untuk mengonfigurasi sistem untuk menggunakan kebijakan ini dengan aplikasi khusus mereka, menjaga SELinux dalam mode penegakan.

[Pelajari lebih lanjut tentang menggunakan dokumentasi kebijakan SELinux di sini.]

semanage perintah digunakan untuk menyesuaikan konteks file, konteks port, dan boolean. Jika masih ada konflik dengan proses tertentu, domain tersebut dapat ditempatkan ke mode permisif hingga penyelidikan lebih lanjut dapat diselesaikan. Ini membuat sistem lainnya terlindungi dalam mode penegakan.

Hanya dengan empat semanage perintah di bawah ini, sebagian besar sistem dapat dikonfigurasi sehingga aplikasi khusus Anda berjalan dengan SELinux dalam mode penerapan.

The semanage boolean perintah

targeted kebijakan mencakup banyak boolean untuk mengaktifkan dan menonaktifkan kumpulan allow aturan, membuat asumsi bahwa layanan memiliki beberapa kasus penggunaan dan dijalankan secara berbeda di setiap lingkungan. Penggunaan boolean memungkinkan kumpulan aturan yang berbeda untuk kasus penggunaan yang berbeda:Server web di lingkungan akademik mungkin perlu mengizinkan siswa untuk memublikasikan konten dari direktori rumah mereka, sementara situs perusahaan yang menghadap publik mungkin perlu menolak akses ke rumah pengguna mana pun direktori, membatasi executable SSI, dan menampilkan data yang disimpan pada share NFS.

httpd_selinux halaman manual menjelaskan penggunaan semua boolean yang disediakan untuk httpd domain serta contoh setsebool perintah untuk secara terus-menerus mengaktifkan setiap boolean. Cara alternatif (dan yang lebih baru) untuk melihat dan mengubah boolean ini adalah dengan semanage boolean perintah.

-l opsi mencantumkan semua boolean dalam kebijakan yang dimuat. Anda kemudian dapat memfilter kata kunci:

$ sudo semanage boolean -l | grep httpd
httpd_anon_write               (off  ,  off)  Allow httpd to anon write
httpd_builtin_scripting        (on   ,   on)  Allow httpd to builtin scripting
httpd_can_check_spam           (off  ,  off)  Allow httpd to can check spam
httpd_can_connect_ftp          (off  ,  off)  Allow httpd to can connect ftp
httpd_can_connect_ldap         (off  ,  off)  Allow httpd to can connect ldap

Output ini mencakup nama boolean, status boolean saat ini dan persisten, dan deskripsi singkat tentang bagaimana boolean digunakan.

Untuk mengubah boolean dengan semanage gunakan:

$ sudo semanage boolean -m --off httpd_ssi_exec 

Anda juga dapat membuat daftar boolean yang disesuaikan secara lokal dengan menambahkan -C pilihan:

$ sudo semanage boolean -l -C
SELinux boolean                State  Default Description

httpd_ssi_exec                 (off  ,  off)  Allow httpd to ssi exec
virt_sandbox_use_all_caps      (on   ,   on)  Allow virt to sandbox use all caps
virt_use_nfs                   (on   ,   on)  Allow virt to use nfs

Halaman manual untuk setiap domain SELinux memiliki deskripsi semua boolean yang disediakan untuk domain tersebut. Untuk opsi lainnya saat memodifikasi boolean SELinux dengan semanage , lihat semanage-boolean halaman manual.

Anda dapat mengotomatiskan semanage ini perintah dengan modul dan peran Ansible terkait. Modul Ansible untuk semanage boolean adalah seboolean . Ini, dan modul terkait yang dijelaskan di bawah, digunakan oleh peran yang disediakan oleh linux-system-roles paket di Fedora atau rhel-system-roles paket di Red Hat Enterprise Linux. Paket Red Hat tersedia mulai dari Red Hat Enterprise Linux 7.4 dan dapat ditemukan di repositori "Ekstra".

The semanage fcontext perintah

targeted policy menyediakan informasi konteks file untuk file aplikasi—termasuk data, log, dan file runtime—lokasi alternatif default dan umum. Definisi konteks ini adalah pemetaan bahwa restorecon perintah yang digunakan untuk memverifikasi atau mengubah konteks file.

semanage fcontext perintah dapat digunakan untuk membuat daftar definisi konteks file, dan menambahkan lebih banyak. -l opsi menunjukkan semua konteks dalam kebijakan yang dimuat. Anda kemudian dapat memfilter kata kunci:

$ sudo semanage fcontext -l | grep sshd
/etc/rc\.d/init\.d/sshd                            regular file       system_u:object_r:sshd_initrc_exec_t:s0 
/etc/ssh/primes                                    regular file       system_u:object_r:sshd_key_t:s0 
/etc/ssh/ssh_host.*_key                            regular file       system_u:object_r:sshd_key_t:s0 
/etc/ssh/ssh_host.*_key\.pub                       regular file       system_u:object_r:sshd_key_t:s0 
/usr/lib/systemd/system/sshd-keygen.*              regular file       system_u:object_r:sshd_keygen_unit_file_t:s0 

Output ini mencakup pola ekspresi reguler untuk nama file target, jenis file, dan konteks file untuk ditetapkan ke nama file yang cocok.

Halaman manual terkait, dalam hal ini man sshd_selinux , menyertakan daftar file terkelola dan deskripsi setiap konteks file yang tersedia untuk domain. Ada juga contoh perintah untuk menentukan dan menerapkan pelabelan alternatif.

Misalnya, jika Anda ingin menyimpan sshd kunci host di subdirektori terpisah, Anda dapat menjalankan dua perintah berikut:

$ sudo semanage fcontext -a -t sshd_key_t '/etc/ssh/keys(/.*)?'
$ sudo restorecon -r /etc/ssh/keys

Dalam contoh ini, ekspresi reguler akan cocok dengan direktori /etc/ssh/keys serta semua subdirektori dan file yang ditemukan di /etc/ssh/keys direktori.

Sama seperti boolean, Anda dapat melihat konteks file yang disesuaikan secara lokal dengan menambahkan -C pilihan:

$ sudo semanage fcontext -l -C
SELinux fcontext                                   type               Context

/usr/share/dnfdaemon/dnfdaemon-system              all files          system_u:object_r:rpm_exec_t:s0 

Untuk opsi lainnya saat memodifikasi konteks file SELinux, lihat semanage-fcontext halaman manual.

Anda dapat mengotomatiskan semanage fcontext perintah dengan Ansible sefcontext modul. restorecon perintah masih perlu dijalankan dengan modul perintah terpisah. Lihat ansible-doc sefcontext untuk contoh. selinux  peran sistem mencakup kedua tugas.

semanage port perintah

Selain konteks file, targeted kebijakan juga mendefinisikan konteks pelabuhan. Sama seperti boolean dan konteks file, halaman manual khusus domain mencantumkan jenis yang ditentukan, dan mungkin juga menampilkan contoh perintah yang diperlukan untuk menjalankan layanan pada port yang berbeda.

Lihat konteks port dengan:

$ sudo semanage port -l | grep http
http_cache_port_t              tcp      8080, 8118, 8123, 10001-10010
http_cache_port_t              udp      3130
http_port_t                    tcp      80, 81, 443, 488, 8008, 8009, 8443, 9000
pegasus_http_port_t            tcp      5988
pegasus_https_port_t           tcp      5989

Saat menjalankan layanan pada port kustom, Anda harus mengubah file konfigurasi untuk layanan dan juga menambahkan definisi port SELinux. Tanpa definisi port, layanan akan gagal untuk memulai dan mencatat error yang mirip dengan "tidak dapat mengikat ke port".

Tambahkan definisi port dengan:

$ sudo semanage port -a -t http_cache_port_t -p tcp 8010

Saat menentukan port, Anda harus menyertakan protokol dan nomor port. Selain itu, hanya satu jenis yang dapat ditentukan untuk setiap protokol dan nomor port. Untuk opsi lainnya saat memodifikasi konteks port SELinux, lihat semanage-port halaman manual.

Anda dapat mengotomatiskan semanage-port perintah dengan seport Modul yang memungkinkan.

semanage permissive perintah

Alih-alih memindahkan seluruh sistem ke mode permisif—atau lebih buruk lagi, menonaktifkan SELinux sepenuhnya—Anda dapat menempatkan satu domain ke mode permisif. Domain dalam mode permisif memungkinkan semua tindakan saat masih mencatat apa pun akan menjadi penolakan. Domain lain pada sistem tetap dalam mode penegakan, yang mencatat dan menolak tindakan yang tidak diizinkan secara khusus.

Halaman manual untuk domain umum mencantumkan jenis SELinux yang dapat ditempatkan ke mode permisif.

Untuk membuat daftar domain apa pun yang saat ini dalam mode permisif, gunakan:

$ sudo semanage permissive -l 

Pada penginstalan awal, kecil kemungkinannya akan ada domain dalam mode permisif.

Untuk menempatkan domain ke mode permisif, gunakan:

$ sudo semanage permissive -a squid_t

-d option menghapus domain permisif, sehingga mengaktifkan kembali mode penegakan untuk domain tersebut.

Untuk opsi lainnya saat menempatkan domain ke mode permisif, lihat semanage-permissive halaman manual.

selinux_permissive yang Memungkinkan modul dapat digunakan untuk menempatkan domain ke mode permisif. Lihat ansible-doc selinux_permissive sebagai contoh.

File

Semua semanage perintah yang menambahkan atau mengubah konfigurasi kebijakan yang ditargetkan menyimpan informasi di *local file di bawah /etc/selinux/targeted pohon direktori. Semua file ini memiliki peringatan bahwa mereka tidak boleh diedit secara langsung tetapi digunakan untuk mempertahankan penyesuaian. Saat SELinux dan paket kebijakan diperbarui, file penyesuaian lokal ini akan tetap ada dan diterapkan ke kebijakan yang diperbarui.


Linux
  1. Setel mode penegakan SELinux dengan Ansible

  2. Terminal Mac vi[m] Perintah Editor

  3. SElinux:Bagaimana cara mengubah ke mode permisif tanpa reboot?

  1. 10+ perintah Linux VI dengan contoh

  2. 25 perintah Vim penting untuk navigasi dan pengeditan

  3. Cara Menonaktifkan atau mengatur SELinux ke mode Permisif

  1. Cara Mengaktifkan SELinux Di CentOS/RHEL 7

  2. Cara menonaktifkan SELinux di AlmaLinux

  3. Cara menonaktifkan SELinux di CentOS 8