Membedah Pengertian Apa Itu SELinux Dan FirewallD

SELinux – Konseptual bagaimana utilitas tersebut bekerja

Apa itu SELinux dan FirewallD? Lalu bagaimana pengertian SELinux dan FirewallD? Lalu apakah teman-teman pernah menggunakan salah satu distro linux turunan Red Hat seperti CentOS, Fedora, dll?

Sebelum teman-teman membaca artikel ini, ada baiknya teman-teman juga membaca artikel berikut Pojok Security SOC, DevSecOps, Incident Response.

Ok kedua hal ini berkaitan dengan ranah security dari sisi infrastruktur teknologi. Berhubung artikel ini sejalur dengan pengetahuan kita terhadap teknologi, maka pembahasan ini akan sedikit mengarah sedikit ke sisi hardening. Seperti yang kita tau banyak sekali jenis hardening yang dilakukan dari ranah host based/infrastructure based/OS based. Salah satunya dengan hadirnya Security Enhanced Linux (SELinux) dan Firewalld (Firewall Daemon). Kedua utilitas ini identik dengan seluruh distro turunan Red Hat, dan diperkenalkan bahkan dipopulerkan oleh Red Hat Enterprise Linux. Hadirnya utilitas ini menjadi penguat dari sisi hardening, seperti yang kita tau, hardening sendiri biasanya terdiri dari ACL (Access Controll List), file dan direktori permission, penggunaan hak akses sudo, PAM, dan masih banyak lagi.

SELinux

Sekarang waktunya kita memperkenalkan pembahasan terkait SELinux. Dari pengertiannya kita dapat mendefinisikan bahwa Security Enchanced Linux merupakan Mandatory Access Control dengan pendekatan LSM (Linux Security Modules). Dimana utilitas ini menjadi pusat kontrol dan filter terkait hak akses dan ototisasi antara file, koneksi, dan proses. Dimana kita bisa mengatur secara spesifik bagaimana suatu file dan direktori digunakan untuk suatu proses, pengaturan open port yang akan digunakan oleh proses tersebut, sampai pengaturan dengan menggunakan boolean untuk mengatur module securitynya. Beberapa utilitas yang dapat digunakan untuk mengatur SELinux antara lain semanage, setenforce, getenforce, setsebool, getsebool, chcon, dll.

Pertama kita akan membahas 3 tipe SELinux, enforcing, permissive, dan disabled. Berikut penjelasannya:

  • Enforcing, artinya segala sesuatu penggunaan akses file, port, dan direktori diatur sepenuhnya oleh SELinux (dalam artian aktif)
  • Permissive, artinya segala sesuatu penggunaan akses file, port, dan direktori tidak diatur oleh SELinux. Namun dalam penggunaannya, utilitas tersebut tetap mencatat lognya. (dalam artian mati, namun masih melakukan pencatatan log)
  • Disabled, artinya segala sesuatu penggunaan akses file, port, dan direktori tidak diatur SELinux, juga utilitas ini dalam keadaan mati sepenuhnya. Maka tidak ada pencatatan log dari utilitas ini (dalam keadaan mati sepenuhnya dan tidak ada pencatatan log)

Sekarang kita bahas penggunaan dari modul yang ada pada utilitas ini. Ada 3 jenis modul dalam utilitas tersebut, yaitu context, port, dan boolean.

1. Selinux Context

Pertama, context dapat dimanage oleh semanage fcontext atau chcon yang dimana kedua utilitas ini mengatur context dari suatu SELinux terhadap suatu file atau direktori. Kehadiran semange fcontext dan chcon menjadi suatu perlindungan yang cukup kompleks dan dapat berdiri berdampingan bersama ACL dan file permission. Sehingga hardening dengan utilitas ini bukan lagi jadi pilihan, namun sebuah kewajiban.

2. Selinux Port

Lalu selanjutnya kita akan bahas juga terkait pengaturan akses proses terhadap suatu port, yang biasa kita atur dengan semanage port. Dimana kita mengatur port mana saja yang bisa di allow oleh process tersebut, dan bagaimana metode koneksi yang dapat dijalankan hingga mengatur segala sesuatu proses komunikasi apa saja juga protokol apa saja yang dapat digunakan oleh suatu proses.

3. Selinux Boolean

Nah, kalo tadi kita membahas bedasarkan spesifik port dan context, sekarang kita membahas dari sisi bolean, apa itu SELinux boolean? Boolean sendiri merupakan aturan, dimana policy dapat diubah pada runtime. Jadi simplenya dengan kita mengatur boolean, module yang sudah kita set di boolean akan fleksibel mengikuti hak akses file, direktori, dan port yang diubah jika proses tersebut menggunakan file, port, dan direktori yang telah berubah. Bagaimana maksudnya? Oke. contohnya modul boolean haproxy_connect_any yang dapat secara otomatis memberikan otorisasi/akses terhadap port apa saja yang proses HAProxy buka. Untuk mengatur booleannya sendiri kita dapat menggunakan semanage boolean atau setsebool. Contoh: semanage boolean -m –on haproxy_connect_any atau setsebool -P haproxy_connect_any=1 .

Handbook terkait konsep, penggunaan dan tata cara bisa dilihat melalui Handbook Debian Bahasa Indonesia dan Dokumentasi Resmi Red Hat Enterprise Linux.

FirewallD

Lalu sekarang kita bahas Firewalld, utilitas apalagi itu? Bukankah biasanya Firewall adanya di network device seperti router, switch, dll? Oke, kita sedikit bahas saja terkait utilitas ini, dimana FirewallD atau yang kita kenal sebagai Firewall Daemon adalah salah satu utilitas firewall yang umumnya bermain di layer 4 OSI dan bekerja sebagai firewall pada host based (firewall yang tertanam disetiap endpoint). Padahal SELinux sudah mengatur penggunaan port untuk setiap proses, kok kita tetap butuh Firewalld? Ingatlah satu hal ini, rata-rata firewall berperan pada layer 4, maka kita butuh utilitas ini untuk memperkuat perlindungan terhadap traffic keluar dan masuk, baik dari protokol yang dapat digunakan hingga mengatur service mana saja yang bisa mengirim dan menerima packet internet. Bahkan utilitas ini mendukung penuh penggunaan IPv4, IPv6, bridge dan IPset.

Pertama kita dapat membedakan sebuah aturan firewall dengan menentukan zone. Berikut beberapa zone yang sering digunakan:

  • block
  • dmz
  • drop
  • external
  • home
  • internal
  • libvirt
  • public
  • trusted
  • work

Zone sendiri berguna sebagai pengelompokan terhadap aturan apa saja yang diterapkan oleh utilitas FirewallD, atau bisa kita sebut sebagai groupingnya utilitas ini.

Lalu selanjutnya kita diberikan dua buah opsi, kita dapat setting utlititas ini dengan menggunakan service atau dengan pemilihan port+protokol. Contoh: kita bisa menggunakan firewall-cmd –zone=public –add-port={80,443}/tcp –permanent atau dapat juga menggunakan service seperti firewall-cmd –zone=public –add-service={http,https} –permanent . Do with your own style 🙂

Terkait pengetahuan lebih lanjut tentang konseptual, penggunaan, dan cara pakai bisa mengambil referensi dari Dokumentasi Red Hat Tentang FirewallD atau Halaman Resmi Manual.

Untuk artikel lain dari saya (NBA.stl), teman-teman bisa mampir juga ke artikel saya yang lain yang berada di Kamar Kamsib. Semoga artikel ini dapat menambah wawasan dan menjadi bahan bacaan yang baik 🙂

Find Out More

BlackBerry. Riwayatmu dulu, Nasibmu Kini.

BlackBerry. Riwayatmu dulu, Nasibmu Kini.

SEJARAH AWAL BlackBerry Dimulai pada tahun 1984 dari perusahaan induknya, Research in Motion (RIM). Perusahaan ini didirikan oleh investor teknologi…

APA ITU MAN-IN-THE-MIDDLE (MITM) ATTACK?

APA ITU MAN-IN-THE-MIDDLE (MITM) ATTACK?

Dilansir dari datareportal.com data pengguna internet di indonesia mencapai 212,9 juta jiwa pada Januari 2023. Sekitar 77% dari total populasi…

Cara Menyimpan Thread Twitter Di Notion

Cara Menyimpan Thread Twitter Di Notion

Baiklah, tulisan ini mungkin akan sedikit keluar dari bahasan persiberan, tetapi tulisan ini tentu dapat bermanfaat dikehidupan kita. Karena pada…