1.9 KiB
1.9 KiB
DDoS Detector (port 80/443 → Telegram alert)
Script Python ringan yang monitor koneksi aktif ke port 80 & 443 tiap 1 menit.
Kalau ada IP yang bomb (> batas) atau total koneksi port melebihi batas, kirim alert ke Telegram.
Pakai ss (bawaan Linux), gak butuh dependency pip.
Cara kerja
- Cron jalanin
ddos_detector.pytiap 1 menit - Hitung koneksi per-IP ke port 80 & 443 (
ss -tn src :80 or src :443) - Kalau
koneksi 1 IP > CONN_PER_IPatautotal port > CONN_TOTAL→ alert Telegram - State file cegah spam: cuma alert pas crossing threshold, + kirim "cleared" kalau balik normal
Config
Semua via env (atau file /root/stock-monitor/.env):
| Var | Default | Keterangan |
|---|---|---|
TELEGRAM_BOT_TOKEN |
(dari .env) | token bot |
TELEGRAM_CHAT_ID |
5722352727 |
chat tujuan |
DDOS_PER_IP |
100 |
batas koneksi per IP per port |
DDOS_TOTAL |
500 |
batas total koneksi per port |
Install
# taruh script
cp ddos_detector.py /root/ddos_detector.py
# pastikan python3 + ss ada
which python3 ss
# crontab tiap 1 menit
(crontab -l 2>/dev/null; echo "* * * * * /usr/bin/python3 /root/ddos_detector.py >> /root/ddos_detector.log 2>&1") | crontab -
Output
- Log:
/root/ddos_detector.log(stats tiap menit, gak ada secret) - State:
/root/ddos_state.json(flag alerting, cegah spam) - Telegram:
🚨 DDoS ALERT @ ...+ top IP kalau anomali✅ DDoS alert cleared @ ...kalau balik normal
Test manual
python3 /root/ddos_detector.py
# lihat log
tail -f /root/ddos_detector.log
Catatan
- Hanya monitor 80/443 (permukaan publik). Kalau mau port lain, edit
PORTSdi script. - Threshold default konservatif — turunin
DDOS_PER_IP(misal 50) kalau mau lebih sensitif. - Gak auto-mitigasi (cuma alert). Buat mitigasi: iptables rate-limit / Cloudflare "Under Attack".