TDCTF Academy Logo TDCTF ACADEMY

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 .env hanya 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.

PADA HALAMAN INI