Skip to content

Arash-Ariaye/netscan-abuse

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Network Scan Detector

اسکریپت سبک و قدرتمند پایتون برای تشخیص و جلوگیری از outbound net scans سریع (مثل اسکن‌های مخرب که Hetzner تشخیص می‌ده و سرور رو لاک می‌کنه). ترافیک خروجی TCP SYN و UDP (غیر DNS) رو با tcpdump مانیتور می‌کنه و اگر در یک رنج /24 حداقل ۸ IP یکتا در ۱ ثانیه شناسایی بشه، کل رنج رو با iptables بلاک می‌کنه.

به‌صورت سرویس systemd اجرا می‌شه و فقط رویدادهای بلاک و آنبلاک رو لاگ می‌کنه.


Installation | نصب

با این دستور همه چیز (اسکریپت، سرویس، unblock script) به‌صورت خودکار نصب می‌شه:

curl -sL https://raw.githubusercontent.com/Arash-Ariaye/netscan-abuse/refs/heads/main/install.sh | sudo bash

(اگر قبلاً نصب کردی، دوباره اجرا کن تا فایل‌ها update بشن.)


📦 Usage | استفاده

🔍 وضعیت سرویس:

sudo systemctl status scan-detector

📜 دیدن لاگ‌ها (فقط بلاک و آنبلاک):

sudo 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

⚙️ Configuration | تنظیمات

فایل اصلی: /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 (۲۴ ساعت)

تنظیم اعلان تلگرام (اختیاری اما توصیه می‌شه)

  1. در تلگرام به @BotFather پیام بده و دستور /newbot رو بزن.
  2. نام و username برای بات انتخاب کن → BotFather توکن (مثل 123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11) رو می‌ده.
  3. این توکن رو در TELEGRAM_BOT_TOKEN بذار.
  4. بات رو استارت کن (/start بزن بهش).
  5. در مرورگر این لینک رو باز کن (توکن خودت رو بذار):
    https://api.telegram.org/botYOUR_TOKEN/getUpdates
    
  6. در خروجی JSON، مقدار "id" داخل "chat" رو پیدا کن → این CHAT_ID هست (معمولاً عدد مثبت برای private chat).
  7. CHAT_ID رو در TELEGRAM_CHAT_ID بذار.

حالا هر بلاکی اعلان با جزئیات پکت‌ها به تلگرامت می‌اد.

نکته: WHITELIST فعلی بر اساس منابع رسمی (دسامبر ۲۰۲۵) ساخته شده و شامل تمام رنج‌های Cloudflare و Fastly + اصلی‌ترین رنج‌های AWS CloudFront، Google، Azure و Meta هست تا false positive روی CDNها پیش نیاد. برای کامل‌تر شدن (چون AWS/Google/Azure تغییر می‌کنن)، بعداً می‌تونی auto-update اضافه کنی.


🛠️ Troubleshooting | عیب‌یابی

سرویس اجرا نمی‌شه:

sudo journalctl -u scan-detector -xe

بلاک اشتباهی شد (manual unblock):

sudo iptables -D OUTPUT -d BAD_RANGE/24 -j DROP
sudo /usr/local/bin/unblock.sh BAD_RANGE/24  # برای لاگ آنبلاک

مصرف CPU بالا:

در parse_traffic مقدار time.sleep(0.005) رو به 0.01 یا بیشتر افزایش بده.


Features | ویژگی‌ها

  • تشخیص اسکن‌های خیلی سریع (۸+ 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.


Requirements | پیش‌نیازها

  • Linux (Ubuntu/Debian/Hetzner توصیه می‌شه)
  • پکیج‌ها: tcpdump, iptables, python3, at, python3-requests, python3-pytz
  • دسترسی root

این README کامل و به‌روزه — مستقیم کپی کن توی repoت جایگزین قبلی کن. اگر نیاز به تغییر خاصی داری یا install.sh رو می‌خوای چک کنم، بگو! 🚀

About

Network Scan Detector: A lightweight Python script to detect and block fast network scans. Monitors TCP/UDP traffic, blocks /24 ranges

Topics

Resources

License

Stars

Watchers

Forks

Contributors