اسکریپت سبک و قدرتمند پایتون برای تشخیص و جلوگیری از outbound net scans سریع (مثل اسکنهای مخرب که Hetzner تشخیص میده و سرور رو لاک میکنه). ترافیک خروجی TCP SYN و UDP (غیر DNS) رو با tcpdump مانیتور میکنه و اگر در یک رنج /24 حداقل ۸ IP یکتا در ۱ ثانیه شناسایی بشه، کل رنج رو با iptables بلاک میکنه.
بهصورت سرویس systemd اجرا میشه و فقط رویدادهای بلاک و آنبلاک رو لاگ میکنه.
با این دستور همه چیز (اسکریپت، سرویس، unblock script) بهصورت خودکار نصب میشه:
curl -sL https://raw.githubusercontent.com/Arash-Ariaye/netscan-abuse/refs/heads/main/install.sh | sudo bash(اگر قبلاً نصب کردی، دوباره اجرا کن تا فایلها update بشن.)
sudo systemctl status scan-detectorsudo tail -f /var/log/scan_detector.logنمونه لاگ (با زمان IRST):
2025-12-22 14:30:15 IRST: Blocked: 185.123.45.0/24, Source: YOUR_SERVER_IP, IPs: 12, Packets: 35
2025-12-23 14:30:15 IRST: Unblocked: 185.123.45.0/24
nmap -sS --scan-delay 50ms 185.123.45.0/24 # TCP SYN scan سریع
nmap -sU --scan-delay 50ms 185.123.45.0/24 # UDP scan سریعsudo iptables -L OUTPUT -v -n | grep DROPفایل اصلی: /usr/local/bin/scan_detector.py (با sudo ویرایش کن)
| متغیر | توضیح | پیشفرض فعلی |
|---|---|---|
THRESHOLD |
حداقل تعداد IP یکتا در /24 برای تشخیص اسکن | 8 |
SCAN_WINDOW |
پنجره زمانی شناسایی (ثانیه) | 1 |
INTERFACE |
رابط شبکه (معمولاً eth0 یا enpXs0) | eth0 |
WHITELIST |
رنجهای مجاز (private، DNS، CDNهای بزرگ) | لیست گسترده (Cloudflare کامل، Fastly کامل، AWS CloudFront/Google/Azure اصلی) |
TELEGRAM_BOT_TOKEN |
توکن بات تلگرام (برای اعلان) | خالی |
TELEGRAM_CHAT_ID |
چت آیدی تلگرام (برای دریافت اعلان) | خالی |
BLOCK_DURATION |
مدت بلاک (ثانیه) | 86400 (۲۴ ساعت) |
- در تلگرام به @BotFather پیام بده و دستور
/newbotرو بزن. - نام و username برای بات انتخاب کن → BotFather توکن (مثل
123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11) رو میده. - این توکن رو در
TELEGRAM_BOT_TOKENبذار. - بات رو استارت کن (/start بزن بهش).
- در مرورگر این لینک رو باز کن (توکن خودت رو بذار):
https://api.telegram.org/botYOUR_TOKEN/getUpdates - در خروجی JSON، مقدار
"id"داخل"chat"رو پیدا کن → این CHAT_ID هست (معمولاً عدد مثبت برای private chat). - CHAT_ID رو در
TELEGRAM_CHAT_IDبذار.
حالا هر بلاکی اعلان با جزئیات پکتها به تلگرامت میاد.
نکته: WHITELIST فعلی بر اساس منابع رسمی (دسامبر ۲۰۲۵) ساخته شده و شامل تمام رنجهای Cloudflare و Fastly + اصلیترین رنجهای AWS CloudFront، Google، Azure و Meta هست تا false positive روی CDNها پیش نیاد. برای کاملتر شدن (چون AWS/Google/Azure تغییر میکنن)، بعداً میتونی auto-update اضافه کنی.
sudo journalctl -u scan-detector -xesudo iptables -D OUTPUT -d BAD_RANGE/24 -j DROP
sudo /usr/local/bin/unblock.sh BAD_RANGE/24 # برای لاگ آنبلاکدر parse_traffic مقدار time.sleep(0.005) رو به 0.01 یا بیشتر افزایش بده.
-
تشخیص اسکنهای خیلی سریع (۸+ IP یکتا در /24 در ۱ ثانیه).
-
بلاک خودکار کل /24 با iptables برای ۲۴ ساعت.
-
لاگ تمیز: فقط بلاک و آنبلاک (کمحجم و مفید).
-
whitelist گسترده برای جلوگیری از بلاک CDNهای بزرگ (Cloudflare/Fastly کامل، AWS/Google/Azure اصلی).
-
اعلان تلگرام با جزئیات اسکن (لیست پکتها).
-
اجرا بهصورت سرویس پسزمینه (systemd).
-
مناسب سرورهای Hetzner و جلوگیری از notice/lack به خاطر outbound abuse.
-
Detects ultra-fast outbound scans.
-
Auto-blocks entire /24 ranges.
-
Clean logging (only block/unblock events).
-
Extensive CDN whitelist to minimize false positives.
-
Optional Telegram alerts with packet details.
- Linux (Ubuntu/Debian/Hetzner توصیه میشه)
- پکیجها:
tcpdump,iptables,python3,at,python3-requests,python3-pytz - دسترسی root
این README کامل و بهروزه — مستقیم کپی کن توی repoت جایگزین قبلی کن. اگر نیاز به تغییر خاصی داری یا install.sh رو میخوای چک کنم، بگو! 🚀