
Hari 51: Fix 132 Temuan jadi 106 dengan 2 Perintah Saja
Kemarin Prowler nemu 132 masalah di akun AWS saya. Hari ini cuma butuh 2 perintah untuk fix 26 temuan. Rahasianya: S3 Block Public Access di level akun — 1 setting, 15 masalah hilang.
Kemarin saya scan akun AWS dengan Prowler. Hasilnya: 132 masalah keamanan. Hari ini saya duduk, pilih yang paling berdampak, dan jalankan 2 perintah.
Hasilnya? 26 masalah hilang. Dari 132 jadi 106.
Strategi: Pilih yang Domino Effect
132 masalah itu banyak. Nggak mungkin fix semua sehari. Jadi saya pikir: mana 1 perintah yang bisa fix paling banyak masalah?
Jawabannya: S3 Block Public Access.
Fix 1: S3 Block Public Access (1 perintah, 15 masalah hilang)
Prowler nemu 15 masalah terkait S3 — bucket public, no encryption, no versioning, ACL enabled, dll. Ternyata semua itu bisa di-fix dengan 1 setting di level akun:
aws s3control put-public-access-block \
--account-id <REDACTED> \
--public-access-block-configuration \
BlockPublicAcls=true,IgnorePublicAcls=true,BlockPublicPolicy=true,RestrictPublicBuckets=true
Apa ini lakukan? Bayangkan kamu punya pagar rumah. S3 Block Public Access di level akun = kamu pasang gerbang di kompleks. Nggak peduli pintu rumah mana yang terbuka, gerbang kompleks tetap nutup akses dari luar.
Hasil: 15 S3 findings dari FAIL → PASS. Semua. Sekaligus.
Ini yang saya sebut cascade effect — 1 setting di level yang lebih tinggi, fix banyak masalah di level yang lebih rendah.
Fix 2: Default Security Group (1 perintah, 1 masalah hilang)
Security Group default di VPC saya ternyata buka semua port ke seluruh internet (0.0.0.0/0). Itu artinya siapa saja di internet bisa coba konek ke EC2 manapun yang pakai SG ini.
aws ec2 revoke-security-group-ingress \
--group-id <REDACTED> \
--ip-permissions 'IpProtocol=-1,IpRanges=[{CidrIp=0.0.0.0/0}],Ipv6Ranges=[{CidrIpv6=::/0}]'
Apa ini lakukan? Hapus aturan "biarkan semua masuk dari internet". Default SG sekarang jadi default-deny — nggak ada yang bisa masuk kecuali di-allow explicitly.
Hasil: 1 HIGH finding dari FAIL → PASS.
Before vs After
| Sebelum | Sesudah | |
|---|---|---|
| Total FAIL | 132 | 106 |
| S3 findings | 15 | 0 |
| Default SG | Open | Closed |
Yang Saya Skip (dan Kenapa)
CloudTrail — audit log untuk semua API calls di AWS. Penting untuk production, tapi di lab challenge cukup didokumentasikan sebagai rekomendasi. Butuh create S3 bucket + bucket policy + trail + start logging — 4 steps. Cost ~$0.05/bulan.
IAM Password Policy — aturan password untuk console users. 1 perintah, tapi mayoritas user di akun sandbox saya API-only (nggak login console). Impact minimal di lab.
Keduanya saya tulis sebagai rekomendasi best practice di dokumentasi, bukan dieksekusi. Production? Wajib. Lab? Opsional.
Pelajaran Hari Ini
Cari domino effect. Sebelum fix masalah satu-satu, tanya: "Ada nggak 1 setting di level lebih tinggi yang bisa fix banyak masalah sekaligus?" S3 Block Public Access = 1 perintah, 15 masalah. ROI tertinggi.
Lab vs production. Nggak semua rekomendasi perlu dieksekusi di lab. CloudTrail dan password policy penting untuk production, tapi di lab cukup paham konsepnya. Yang penting: tahu KENAPA dan BAGAIMANA.
CSPM = siklus. Scan (Day 50) → Fix (Day 51) → Re-scan → Verify. Bukan sekali jalan. Cloud terus berubah, posture keamanan perlu di-cek berkala.
Repo
Semua code dan dokumentasi: https://github.com/stayrelevantid/chalange-devsecops
Diskusi & Komentar
Artikel Terkait
Hari 20: Terraform + Checkov, 15 Celah IaC Ketahuan
Bikin infrastructure as code pakai Terraform, lalu scan dengan Checkov. Hasilnya 15 celah keamanan ketahuan — S3 tanpa enkripsi, security group terbuka ke dunia.
Hari 22: Pipeline IaC, Dua Scanner Barengan Gagal
Bikin workflow GitHub Actions khusus infrastructure security. Checkov dan Trivy IaC scan Terraform barengan. Hasilnya pipeline MERAH — security gate bekerja!
Hari 22 Bonus: Perbaikan Pipeline Gitleaks yang Merah Diam-diam
Pipeline Gitleaks merah sejak Day 14 karena flag --no-gitignore tidak pernah ada. Gitleaks detect scan git history, bukan working directory. Fix: hapus flag.