Incident Response untuk Developer
Meskipun kita berusaha mencegah, insiden keamanan tetap bisa terjadi. Yang membedakan tim yang profesional adalah seberapa cepat dan efektif mereka merespons insiden tersebut.
Tahapan Incident Response
- 1. Preparation — Persiapkan playbook dan tools sebelum insiden terjadi
- 2. Identification — Deteksi dan konfirmasi bahwa insiden terjadi
- 3. Containment — Batasi dampak, cegah penyebaran
- 4. Eradication — Hapus penyebab insiden
- 5. Recovery — Kembalikan sistem ke kondisi normal
- 6. Lessons Learned — Dokumentasikan dan perbaiki untuk mencegah terulang
Skenario: Kredensial Database Bocor
// Langkah-langkah response:
// 1. CONTAINMENT — segera batasi dampak
// - Rotate database credentials
DB_PASSWORD=new_strong_password_here
// - Restart aplikasi dengan credentials baru
php artisan config:clear && php artisan queue:restart
// 2. ASSESSMENT — evaluasi dampak
// - Cek access logs: siapa yang mengakses database?
// - Cek query logs: ada query mencurigakan?
// - Tentukan data apa yang mungkin terekspos
// 3. ERADICATION — hapus root cause
// - Hapus credentials dari git history
git filter-branch --force --index-filter \
"git rm --cached --ignore-unmatch .env" HEAD
// - Revoke semua API keys dan tokens yang terkait
// 4. RECOVERY
// - Deploy ulang dengan credentials baru
// - Aktifkan monitoring tambahan
// - Force password reset untuk affected users jika perlu
Skenario: Terdeteksi SQL Injection Attack
// 1. CONTAINMENT
// - Aktifkan WAF rule untuk memblokir payload yang terdeteksi
// - Rate limit IP penyerang
iptables -A INPUT -s ATTACKER_IP -j DROP
// 2. ASSESSMENT
// - Review access logs untuk scope serangan
grep "UNION SELECT\|OR 1=1\|--" /var/log/nginx/access.log
// - Cek apakah data berhasil diexfiltrate
// 3. FIX
// - Patch vulnerability dengan parameterized queries
// - Deploy fix ke production segera
// - Test bahwa fix efektif
// 4. POST-INCIDENT
// - Audit semua query patterns di codebase
// - Tambahkan automated SQL injection testing di CI/CD
Incident Response Checklist
- Jangan panik — Ikuti prosedur yang sudah disiapkan
- Dokumentasikan semuanya — Waktu, tindakan, temuan
- Komunikasikan — Beritahu tim dan stakeholder yang relevan
- Preserve evidence — Jangan hapus logs atau data sebelum di-backup
- Containment first — Hentikan bleeding sebelum cari root cause
- Post-mortem — Tulis laporan tanpa blaming, fokus pada improvement
Forensic Evidence Preservation
Sebelum memperbaiki sistem, pastikan bukti forensik sudah diamankan: buat snapshot/image dari server yang terdampak, backup semua log file, dan catat state sistem saat ini. Bukti ini penting untuk analisis root cause dan mungkin diperlukan untuk proses hukum.
Preparation Tips
- Siapkan runbook untuk skenario umum (credential leak, data breach, DDoS)
- Pastikan ada backup yang bisa di-restore
- Tentukan contact list — siapa yang harus dihubungi
- Lakukan tabletop exercises — simulasi insiden secara berkala
- Siapkan communication templates untuk notifikasi pengguna