Mengamankan server secara sistematis: CIS benchmarks, firewall UFW/ firewalld, SSH hardening, dan SELinux/AppArmor, lalu praktik hardening server baru dari nol.

Di episode-episode sebelumnya kalian membangun server yang berfungsi. Episode 18 memulai fase penting berikutnya: membuat server yang aman. Security hardening adalah proses mengurangi permukaan serangan — menghilangkan layanan yang tidak perlu, menutup pintu yang tidak dipakai, dan mempersempit hak akses.
Mengapa hardening penting? Karena internet penuh dengan pemindai otomatis yang terus mencoba SSH, port web, dan layanan umum. Server yang dipasang tanpa hardening bukan "aman sampai ada yang menyerang" — ia sudah sedang diserang sejak menit pertama online.
Empat prinsip yang mendasari hampir semua langkah hardening:
CIS (Center for Internet Security) Benchmarks adalah standar de facto checklist hardening — dokumen yang merinci ratusan rekomendasi per-OS dengan level severity. Contoh yang selalu ada:
| Area | Rekomendasi CIS Klasik |
|---|---|
| Update | Patch OS terkini (episode 10) |
| Service | Matikan layanan & paket yang tidak digunakan |
| SSH | Nonaktifkan root login, key-only |
| Permission | File konfigurasi sensitif 600/640 |
| Audit | Aktifkan logging (rsyslog/auditd) |
Di lingkungan besar, ada tool yang mengaudit otomatis terhadap CIS — misal Lynis (open source) atau OpenSCAP. Di lab:
sudo apt install -y lynis
sudo lynis audit system
sudo lynis audit system | grep -E "Warning|Suggestion"Lynis memberi skor dan daftar rekomendasi — peta jalan hardening yang bisa kalian kerjakan satu per satu.
Dari episode 6 kalian sudah mengenal firewall. Sekarang kita menegakkannya sebagai kebijakan hardening — default deny:
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow OpenSSH
sudo ufw allow 443/tcp
sudo ufw --force enable
sudo ufw status verbosesudo systemctl enable --now firewalld
sudo firewall-cmd --set-default-zone=drop
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
sudo firewall-cmd --list-allImportant
Urutan paling penting saat mengaktifkan firewall di server remote: buka dulu SSH sebelum enable (UFW: allow OpenSSH; firewalld: --add-service=ssh). Kalau tidak, kalian mengunci diri sendiri keluar dari server — kesalahan klasik yang bisa mengubah sore yang tenang menjadi sesi konsol darurat.
SSH adalah pintu paling sering diserang di server Linux. Hardening yang wajib:
sudo nano /etc/ssh/sshd_configPort 22
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
MaxAuthTries 3
LoginGraceTime 30sudo sshd -t
sudo systemctl restart sshLangkah berurutan yang aman:
ssh-keygen -t ed25519), salin ke server (ssh-copy-id).PasswordAuthentication no dan PermitRootLogin no.sudo sshd -t lalu restart — dari sesi yang sudah login, agar tidak terkunci.Warning
Jangan menonaktifkan password login sebelum memastikan key SSH berfungsi — dari sesi login yang masih terbuka. Urutan yang terbalik adalah salah satu penyebab terkunci keluar yang paling umum dan paling memalukan.
Mandatory Access Control (MAC) membatasi apa yang bisa dilakukan proses, bahkan oleh root — lapisan di atas permission tradisional (DAC).
| Sistem | Distro | Model |
|---|---|---|
| AppArmor | Debian/Ubuntu | Profile per-aplikasi, lebih mudah |
| SELinux | RHEL/Rocky/Alma | Policy global berlabel, lebih kuat |
Keduanya bekerja dengan prinsip: bahkan jika proses dikompromi, ia tidak bisa keluar dari profilnya.
sudo aa-status
sudo aa-enforce /usr/sbin/nginx
sudo aa-complain /usr/sbin/nginx # mode "watch" untuk debugginggetenforce
sudo setenforce 1 # enforcing
sestatus
sudo audit2allow -a # analisis penolakanTip
Jangan menonaktifkan SELinux/AppArmor saat aplikasi bermasalah — itu membuang lapisan keamanan. Pelajari mode permissive/complain untuk melihat apa yang diblokir, sesuaikan policy, lalu kembali ke enforcing. Mode ini ada justru untuk membantu debugging tanpa harus menyerah pada keamanan.
Berikut urutan hardening yang bisa dijadikan checklist untuk setiap server baru:
# 1. Patch penuh
sudo apt update && sudo apt full-upgrade -y
# 2. Hapus/matikan layanan tak terpakai
sudo systemctl list-units --type=service --state=running | grep -v systemd
# 3. Firewall default deny, buka yang dibutuhkan
# 4. SSH hardening (key-only, no root, no password)
# 5. Audit dengan Lynis
sudo lynis audit system
# 6. Aktifkan/mantapkan AppArmor
# 7. Backup konfigurasi penting (episode 9 & 20)Setiap baris adalah satu lapisan pertahanan. Semakin lengkap, semakin mahal biaya menyerang server kalian — dan itu justru yang kita inginkan.
Inti yang harus dibawa pulang dari episode 18:
Di episode 19 selanjutnya kita akan membahas Antivirus, EDR & Log Security — deteksi ancaman di endpoint/server, audit log, SIEM dasar, dan penanganan insiden, dengan praktik setup logging & monitoring keamanan. Server yang harden adalah server yang diawasi!