Menerapkan keamanan infrastruktur sejak awal: prinsip defense-in-depth, hardening server dan OS, konfigurasi firewall yang benar, serta identity dan access untuk layanan dan mesin

Setelah di episode 10 kita memastikan data bisa dipulihkan, kini kita mengamankan fondasinya: security infrastructure. Di 2026, security-by-default adalah standar mutlak — bukan fitur opsional yang ditambahkan belakangan. Tim infra adalah lini pertahanan pertama: jika jaringan, server, dan identity tidak dikelola aman, seluruh sistem yang dibangun di atasnya hidup dalam bahaya.
Mengapa topik ini penting? Karena mayoritas serangan tidak menembus ciphertext canggih — mereka menembus konfigurasi yang ceroboh: port terbuka, default password, SSH tanpa key, dan privilege yang terlalu lebar. Episode ini membekali kalian defense-in-depth dan praktik hardening yang paling berdampak.
Prinsip dasarnya: jangan pernah bergantung pada satu lapisan keamanan. Jika firewall ditembus, masih ada segmentasi. Jika segmentasi gagal, masih ada hardening OS. Jika itu pun gagal, masih ada monitoring dan backup.
| Lapisan | Contoh Implementasi |
|---|---|
| Policy & Identity | Least privilege, MFA, review akses berkala |
| Network | Firewall, segmentation, VPN (episode 18) |
| Host | Hardening OS, patching, minimal service |
| Aplikasi & Data | Enkripsi, secret management (episode 19) |
| Monitoring | Detection & response, alerting (episode 9, 20) |
Pola pikir yang benar: setiap lapisan diasumsikan bisa gagal — lapisan berikutnya yang menangkap.
Prinsip pertama hardening: semakin sedikit yang berjalan, semakin sedikit yang bisa diserang. Audit service yang aktif dan nonaktifkan yang tidak perlu:
systemctl list-units --type=service --state=running
systemctl disable --now bluetooth
ss -tulpn | grep LISTENSetiap port yang mendengarkan adalah pintu — tanyakan pada setiap port: "Apakah ini benar-benar perlu?"
SSH adalah pintu utama ke server kalian. Konfigurasi yang benar di /etc/ssh/sshd_config:
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
Protocol 2
MaxAuthTries 3
LoginGraceTime 30Baris paling penting: PermitRootLogin no (jangan izinkan root login langsung) dan PasswordAuthentication no (hanya key). Password bisa ditebak dan dibruteforce; key tidak.
sudo sshd -t # validasi konfigurasi
sudo systemctl reload sshdKombinasi yang benar:
sudo apt install fail2ban
sudo systemctl enable --now fail2ban
fail2ban-client status sshdFirewall menentukan siapa yang boleh masuk ke port mana. Di Linux, standar modern adalah nftables (pengganti iptables) dan frontend-nya UFW atau firewalld.
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 22/tcp # SSH (dibatasi IP jika bisa)
sudo ufw allow 80,443/tcp # web
sudo ufw enable
sudo ufw status verbosePola deny-by-default ini penting: semua masuk diblokir kecuali yang eksplisit diizinkan. Contoh kebijakan yang lebih ketat — batasi SSH hanya dari IP tertentu:
sudo ufw allow from 10.0.0.0/8 to any port 22 proto tcpImportant
Aturan firewall harus selalu dibuat bersama kebijakan dan dokumentasi — bukan sekadar perintah. Setiap aturan harus bisa dijawab: "mengapa port ini terbuka, untuk siapa, siapa yang bertanggung jawab?" Aturan yang tidak bisa dijawab adalah permukaan serangan yang menunggu diperbaiki.
Setiap user dan service mendapat akses seminimal mungkin untuk bekerja. Prinsip ini menyelamatkan dari dua arah: membatasi kerusakan jika akun diretas, dan membatasi kesalahan jika terjadi typo.
sudo useradd -m -s /bin/bash devops
echo "devops ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/devopsPerhatikan NOPASSWD — praktik baik untuk lab, tetapi di produksi sebaiknya wajib password untuk sudo (ALL=(ALL:ALL) ALL tanpa NOPASSWD) agar ada jejak dan verifikasi.
Akses yang diberikan harus ditinjau rutin: siapa yang masih punya akses, siapa yang sudah pindah tim, dan akun mana yang tidak pernah dipakai:
1. Daftar semua user server & hak sudo-nya
2. Tandai akun yang tidak dipakai > 90 hari
3. Nonaktifkan akun orang yang sudah keluar
4. Tinjau key SSH yang terpasang di authorized_keysAkun menganggur adalah waktu yang menunggu disalahgunakan.
Otomasi butuh identitas juga — service account terpisah dari akun manusia. Aturannya: satu service account per tujuan, hak seminimal mungkin, dan kredensial dirotasi (episode 19).
Hardening sekali tidak cukup — keamanan adalah proses berkelanjutan. Patching berkala menutup lubang yang baru ditemukan. Praktik yang benar:
Setiap Minggu: apt upgrade di staging
Akhir bulan : patch produksi (dari staging yang teruji)
Segera : security patch kritikalPada episode 11 ini kalian telah menerapkan keamanan infrastruktur:
Dengan ini fase kedua — basic operational & core concepts — selesai. Di episode 12 selanjutnya kita mulai fase cloud: cloud infrastructure — VPC, compute, dan storage di AWS/GCP/Azure dengan pendekatan IaC. Sampai jumpa di episode 12!