Praktik End-to-End Incident Handling pada Aplikasi Web
Artikel ini akan membahas simulasi incident handling end-to-end terhadap Brute Force Login Attack pada aplikasi web sederhana. Mulai dari…
Praktik End-to-End Incident Handling pada Aplikasi Web

Artikel ini akan membahas simulasi incident handling end-to-end terhadap Brute Force Login Attack pada aplikasi web sederhana. Mulai dari deteksi insiden melalui log dan metrics, isolasi serangan, pembersihan dan pemulihan sistem, hingga evaluasi dan lessons learned. Tujuannya adalah memberikan gambaran nyata tentang bagaimana tim keamanan merespons serangan dan memastikan sistem tetap aman dan stabil.
Struktur Folder Project
incident-handling-lab/
├── app/
│ ├── app.py
│ ├── requirements.txt
│ └── Dockerfile
├── elk/
│ └── docker-compose.yml
├── prometheus/
│ ├── prometheus.yml
│ └── docker-compose.yml
├── incident-report/
│ └── incident-report.md
└── README.md
A. Aplikasi Flask Sederhana (Login Endpoint)
- Buat app.py yang berisi
from flask import Flask, request, jsonify
import logging
app = Flask(__name__)
# Aktifkan logging
logging.basicConfig(
level=logging.INFO,
format="%(asctime)s %(levelname)s %(message)s"
)
@app.route("/login", methods=["POST"])
def login():
ip = request.remote_addr
data = request.get_json()
username = data.get("username")
password = data.get("password")
# Login gagal (dummy)
if username != "admin" or password != "admin123":
app.logger.warning(
"Failed login attempt from IP %s",
ip
)
return jsonify({"error": "Invalid credentials"}), 401
return jsonify({"message": "Login success"}), 200
if __name__ == "__main__":
app.run(host="0.0.0.0", port=5000)
- Buat Dockerfile
메타데이터
- post_id
- f1314cb3b9ff
- slug
- praktik-end-to-end-incident-handling-pada-aplikasi-web-f1314cb3b9ff
- url
- https://medium.com/@ottapien/praktik-end-to-end-incident-handling-pada-aplikasi-web-f1314cb3b9ff
- canonical_url
- https://medium.com/@ottapien/praktik-end-to-end-incident-handling-pada-aplikasi-web-f1314cb3b9ff
- author_url
- https://medium.com/@ottapien
- status
- ok
- fetched_at
- 2026-06-24 16:30:55