Secure Configuration
Secure configuration adalah pondasi utama dalam server hardening. Tujuannya meminimalkan permukaan serangan (attack surface) dengan menerapkan prinsip least functionality, secure defaults, serta kontrol ketat terhadap file permission, ownership, dan pengelolaan secrets.
Least Functionality
Setiap server hanya boleh menjalankan service yang benar-benar
dibutuhkan. Service yang tidak digunakan harus dihentikan dan
di-disable agar tidak menjadi celah keamanan. Pada sistem
Debian/Ubuntu, gunakan
systemctl list-units --type=service --state=running
untuk mengaudit service aktif. Nonaktifkan service yang tidak
diperlukan dengan
systemctl disable --now <service>. Pada Red
Hat/CentOS, perintah serupa berlaku ditambah dengan
firewall-cmd untuk membatasi akses jaringan.
Secure Defaults
Jangan pernah menggunakan konfigurasi bawaan (default) untuk produksi. Hal-hal yang wajib diubah meliputi:
- Port default - misalnya SSH dari port 22 ke port non-standar.
- Kredensial default - ganti semua password bawaan database, aplikasi, dan admin.
- Banner & fingerprint - sembunyikan versi OS dan service pada banner SSH, HTTP, dan FTP.
File Permission & Ownership
Setiap file konfigurasi server harus memiliki permission minimal.
Gunakan chmod 600 untuk file yang mengandung rahasia
seperti private key atau kredensial database, dan
chmod 644 untuk file konfigurasi umum yang perlu dibaca
service. Pastikan ownership benar - file konfigurasi nginx milik
root:root atau root:www-data, file SSL
private key milik root:ssl-cert dengan mode
640. Audit berkala dengan
find /etc -perm /o+w -type f untuk mendeteksi file yang
writable oleh others.
Secrets in Configuration
Jangan pernah melakukan hardcode secrets seperti password API, token, atau kunci enkripsi langsung di file konfigurasi. Praktik yang aman:
- Gunakan environment variables - baca secret dari variabel lingkungan, bukan dari file statis.
- Manfaatkan Vault (HashiCorp Vault, AWS Secrets Manager, atau Bitwarden) untuk penyimpanan dan rotasi secret.
- File
.envhanya digunakan di development dan tidak boleh masuk ke repository Git (tambahkan ke.gitignore).
AppArmor / SELinux
Gunakan mandatory access control untuk membatasi kemampuan service
meskipun service tersebut berhasil dieksploitasi. Di Debian/Ubuntu,
aktifkan AppArmor dengan
aa-enforce /etc/apparmor.d/<profile>. Di Red
Hat/CentOS, gunakan SELinux dalam mode enforcing
(setenforce 1, edit /etc/selinux/config).
Pastikan profile yang digunakan sesuai - jangan operasikan service
tanpa profile atau dalam mode complain/disabled.
Read-Only Filesystem & Immutable Infrastructure
Untuk tingkat keamanan maksimal, mount direktori yang tidak perlu
di-write sebagai read-only. Gunakan opsi ro di
/etc/fstab untuk partisi /usr,
/opt, dan direktori konfigurasi. Pada container,
gunakan read-only root filesystem
(readOnlyRootFilesystem: true di Kubernetes security
context). Pendekatan immutable infrastructure - di mana
server di-deploy ulang dari image daripada di-update langsung - menghilangkan risiko konfigurasi yang menyimpang (configuration
drift).
Dengan menerapkan seluruh prinsip di atas, server memiliki pertahanan berlapis yang menyulitkan attacker untuk melakukan privilege escalation maupun eksfiltrasi data.