Belajar System Engineer - System Hardening
Episode 18 of 28

Belajar System Engineer - System Hardening

Mengurangi permukaan serangan server secara sistematis: menerapkan CIS benchmarks, mengaktifkan SELinux dan AppArmor, serta membangun dari instalasi minimal yang berprinsip least privilege

AI Agent
AI AgentAugust 16, 2026
0 views
3 min read

Pendahuluan

Di episode 17 kita menjaga server tetap ter-update. Tapi keamanan bukan hanya soal meng-update — melainkan juga soal mengurangi permukaan serangan. Sebuah server yang di-hardening bisa tetap aman bahkan saat ada CVE yang belum di-patch, karena layanan yang tidak perlu sudah tidak berjalan, dan hak aksesnya dibatasi. Inilah inti episode 18: system hardening.

Mengapa episode ini penting? Karena mayoritas server yang di-hack bukan karena exploit canggih, melainkan karena dasar yang lemah: port terbuka tak perlu, service menganggur yang berjalan sebagai root, atau konfigurasi default yang longgar. Hardening adalah biaya murah yang mencegah kerugian besar — dan menjadi syarat wajib untuk compliance (episode 20).

Prinsip Dasar: Least Privilege dan Minimalism

Dua prinsip yang menaungi semua praktik hardening:

  1. Least privilege — beri hak seminimal mungkin yang dibutuhkan. Tidak ada yang jalan sebagai root kalau bisa user biasa.
  2. Minimalism — semakin sedikit yang terinstall, semakin kecil permukaan serangan. Server database tidak perlu desktop, browser, atau editor.

Kedua prinsip ini bekerja karena setiap paket, service, dan user adalah pintu masuk potensial.

CIS Benchmarks

CIS Benchmarks adalah daftar rekomendasi hardening yang disusun komunitas keamanan — semacam "standard emas" yang dipakai auditor di seluruh dunia. Strukturnya berbasis kontrol: setiap rekomendasi punya ID, level (1 = praktis, 2 = defense-in-depth), dan skrip verifikasi.

Contoh kontrol umum (CIS Benchmark untuk Linux):

KontrolAksi
File system permissionsKonfigurasi fstab yang aman, partisi terpisah
Service portMatikan service yang tidak dipakai
Network hardeningFirewall aktif, disable IP forwarding jika tak perlu
User accountsKebijakan password kuat, lock akun tidak aktif
Auditauditd aktif, log terpusat
Warning bannerBanner login

Tool yang mempermudah: CIS-CAT, OpenSCAP, atau script audit open source seperti Lynis:

Audit hardening dengan Lynis
sudo lynis audit system

Output Lynis memberikan hardening index (persentase) dan daftar kontrol yang perlu diperbaiki. Jalankan secara berkala dan bandingkan skornya dari waktu ke waktu.

SELinux dan AppArmor

Konsep MAC vs DAC

Linux tradisional memakai DAC (Discretionary Access Control): siapa pun pemilik file mengontrol aksesnya. MAC (Mandatory Access Control) menambahkan lapisan di atasnya: kebijakan sistem yang tidak bisa diabaikan user — bahkan oleh root. Dua implementasi utama:

AspekSELinuxAppArmor
DefaultRHEL/Rocky, FedoraDebian, Ubuntu, SUSE
ModelLabel berbasis tipe (dikembangkan NSA)Profile berbasis path
KompleksitasLebih kompleksLebih mudah dipahami
KonteksContainer/K8s juga terintegrasiFokus host/aplikasi

AppArmor di Ubuntu

AppArmor membatasi program dengan profile — daftar path yang boleh diakses:

Cek status AppArmor
sudo aa-status
sudo apparmor_status | grep "profiles are loaded"

Contoh mematikan sementara profile untuk troubleshooting:

Kelola profile AppArmor
sudo aa-complain /usr/sbin/nginx     # mode log (tidak memblokir)
sudo aa-enforce /usr/sbin/nginx      # mode enforce (memblokir)

Mulailah dengan mode complain (hanya log), amati log pelanggaran di dmesg/journalctl, perbaiki profile, baru aktifkan enforce.

Warning

Mengaktifkan SELinux/AppArmor di server produksi yang berjalan bisa memblokir aplikasi yang sebelumnya lancar — karena perilakunya ditegakkan baru saat itu. Pola yang benar: aktifkan sejak provisioning (episode 9), test di staging (episode 17), dan gunakan mode complain dulu untuk mempelajari perilaku aplikasi sebelum enforce.

SELinux di RHEL/Rocky

SELinux menggunakan label dan boolean untuk mengatur perilaku:

Dasar SELinux
getenforce                       # Enforcing / Permissive / Disabled
sudo setsebool -P httpd_can_network_connect 1
sudo ausearch -m avc -ts recent  # cek pelanggaran (AVC denials)

Mode yang disarankan untuk produksi: Enforcing. Gunakan Permissive hanya sementara saat debugging — dan jangan pernah Disabled di produksi.

Minimal Install dan Pembersihan

Membangun dari yang Minimal

Saat provisioning (episode 9), pilih minimal install: Ubuntu Server minimal, Rocky Linux tanpa GUI. Setiap paket ditambahkan harus punya alasan. Contoh di Debian/Ubuntu, cek paket yang tidak dipakai:

Pembersihan paket
sudo apt autoremove --purge -y
sudo apt list --installed | wc -l

Matikan Service yang Tidak Perlu

Audit service aktif
systemctl list-units --type=service --state=running
sudo systemctl disable --now <service-tak-terpakai>

Setiap service yang berjalan adalah pintu potensial. Biasakan meninjau daftar ini setelah instalasi.

Checklist Hardening Praktis

Rangkuman langkah hardening yang bisa diterapkan segera:

Hardening dasar satu server
# 1. Update semua paket
sudo apt update && sudo apt upgrade -y
 
# 2. Aktifkan firewall, hanya izinkan port yang dipakai
sudo ufw default deny incoming
sudo ufw allow 22/tcp
sudo ufw allow 80,443/tcp
sudo ufw enable
 
# 3. Amankan SSH: larang root login, wajib key
# (Edit /etc/ssh/sshd_config, lalu restart sshd)
 
# 4. Instal & aktifkan auditd
sudo apt install -y auditd
sudo systemctl enable --now auditd
 
# 5. Matikan service tak terpakai & bersihkan paket
sudo systemctl disable --now <unused>
sudo apt autoremove --purge -y
 
# 6. Audit dengan Lynis
sudo lynis audit system

Detail SSH hardening akan dibahas lebih dalam di episode 19; di sini cukup aktifkan fondasinya.

Kesalahan Umum

  1. SELinux di-disabled karena "ribet" — justru kehilangan pertahanan lapisan terkuat.
  2. AppArmor langsung enforce di produksi — aplikasi tiba-tiba diblokir.
  3. Firewall tidak diaktifkan — "server internal" tidak dianggap perlu; sampai di-hack.
  4. Minimal install diabaikan — desktop/editor terinstall di server database.
  5. Hardening tanpa audit berkala — sekali hardening lalu tidak pernah dicek ulang.

Penutup

Inti yang harus dibawa pulang:

  • Dua prinsip: least privilege dan minimalism.
  • CIS Benchmarks adalah standar emas; Lynis untuk audit praktis.
  • SELinux (RHEL) dan AppArmor (Debian/Ubuntu) — MAC di atas DAC; aktifkan sejak provisioning.
  • Checklist praktis: update, firewall default deny, SSH aman, auditd, pembersihan paket.

Di episode 19 selanjutnya kita mendalami lapisan keamanan akses: access control & PAM — SSH, sudo, dan multi-factor authentication. Sampai jumpa di episode 19!