بررسی روشهای تشخیص و مقابله با حملات DoS در MikroTik (آموزش عملی)
حملات DoS در MikroTik
مقدمه
حملات Denial of Service (DoS) یا نقض سرویسدهی یکی از رایجترین حملات به زیرساخت شبکه هستند که با هدف از کار انداختن سرویسها یا مصرف منابع شبکه انجام میگیرند.
دستگاههای MikroTik نیز به دلیل استفاده گسترده در سازمانها، کسبوکارها و ISPها، هدف خوبی برای این نوع حملات هستند.
در این مقاله، به صورت کامل و عملی به آموزش روشهای شناسایی و مقابله با حملات DoS در روترهای MikroTik خواهیم پرداخت.
همچنین، با استفاده از ابزارهای موجود در RouterOS و تکنیکهای فایروال پیشرفته، پیکربندیهایی را ارائه میکنیم که باعث افزایش امنیت شبکه میشوند.
حملات DoS در MikroTik
بخش اول: شناسایی حملات DoS در MikroTik
۱. علائم رایج حملات DoS
- افزایش غیرعادی مصرف CPU در Router
- کاهش شدید سرعت شبکه
- کند شدن دسترسی به WebFig یا Winbox
- افزایش ترافیک ورودی به یک پورت خاص
- مشاهده اتصالهای زیاد و مکرر به یک سرویس خاص مانند DNS یا HTTP
۲. استفاده از ابزار Torch
🔧 مسیر دسترسی:
Tools > Torch
- ابزار Torch به شما اجازه میدهد ترافیک لحظهای را روی یک Interface مشاهده کنید.
- فیلتر بر اساس پروتکل، IP، پورت و غیره
- بررسی ارسالهای مکرر از یک IP خاص یا ارسال پکتهای زیاد UDP/TCP
۳. مانیتور کردن کانکشنها
🔧 مسیر:
IP > Firewall > Connections
- مرتبسازی بر اساس ستونهای Src. Address، Dst. Port و State
- مشاهده اتصالهای SYN یا UDP به صورت مکرر
حملات DoS در MikroTik
بخش دوم: مقابله با حملات DoS (راهکارهای عملی)
۱. بلاک کردن IPهای مشکوک با فایروال
/ip firewall address-list
add list=blacklist address=192.168.1.100 timeout=1h comment=”DoS attacker”# Rule to drop connections from blacklist
/ip firewall filter
add action=drop chain=input src-address-list=blacklist comment=”Drop DoS source”
این روش بهصورت دستی و خودکار با اسکریپت قابل پیادهسازی است.
حملات DoS در MikroTik
۲. استفاده از Connection Limit
/ip firewall filter
add chain=input protocol=tcp dst-port=80 connection-limit=10,32 action=drop comment=”Limit HTTP Connections”
این دستور بیش از ۱۰ اتصال از یک IP را به پورت ۸۰ در Subnet 2^32 مسدود میکند.
حملات DoS در MikroTik
۳. فعالسازی FastTrack فقط برای کاربران امن
/ip firewall filter
add chain=forward connection-state=established,related action=fasttrack-connection
در زمان حملات بهتر است FastTrack را غیرفعال یا محدود کنید، چون از برخی فیلترینگها عبور میکند.
حملات DoS در MikroTik
۴. فیلتر SYN Flood
/ip firewall filter
add chain=input protocol=tcp tcp-flags=syn connection-limit=5,32 action=add-src-to-address-list \
address-list=syn-flooders address-list-timeout=1h comment=”Detect SYN Flood”
/ip firewall filter
add chain=input src-address-list=syn-flooders action=drop comment=”Drop SYN Flooders”
حملات DoS در MikroTik
۵. جلوگیری از حملات UDP Flood
/ip firewall filter
add chain=input protocol=udp packet-size=32-512 src-address-list=udp-flooders action=drop comment=”UDP Flood”
/ip firewall filter
add chain=input protocol=udp connection-limit=20,32 action=add-src-to-address-list address-list=udp-flooders address-list-timeout=1h
حملات DoS در MikroTik
۶. محدود کردن ICMP (Ping Flood)
/ip firewall filter
add chain=input protocol=icmp limit=1,10 action=accept comment=”Allow limited ICMP”
/ip firewall filter
add chain=input protocol=icmp action=drop comment=”Drop excess ICMP”
حملات DoS در MikroTik
۷. استفاده از RAW Table (کارآمدتر از Filter)
/ip firewall raw
add chain=prerouting src-address-list=blacklist action=drop comment=”Drop early”
/ip firewall raw
add chain=prerouting protocol=tcp tcp-flags=syn connection-limit=5,32 action=add-src-to-address-list \
address-list=raw-syn-flooders address-list-timeout=1h
بخش سوم: نکات امنیتی تکمیلی
۱. محدود کردن دسترسی به Winbox و WebFig
/ip service
set winbox address=192.168.88.0/24
set www disabled=yes
۲. استفاده از NTP و هماهنگسازی ساعت
داشتن ساعت صحیح به بررسی دقیقتر لاگها و حملات کمک میکند. از NTP Server معتبر استفاده کنید.
۳. فعالسازی Logging برای تحلیل حملات
/system logging
add topics=firewall action=memory
جمعبندی
حملات DoS اگرچه متوقفناپذیر نیستند، اما با استفاده از قابلیتهای حرفهای MikroTik میتوان تا حد زیادی آنها را شناسایی و مهار کرد.
ابزارهایی مانند Torch، Connection Tracking، Firewall، RAW Table و Address-List در کنار سیاستهای صحیح مدیریتی میتوانند امنیت شبکه شما را در برابر این تهدیدات بالا ببرند.
حملات DoS در MikroTik
پیشنهاد ویژه برای مدیران شبکه
اگر قصد دارید امنیت شبکه MikroTik خود را به سطح حرفهای برسانید، پیشنهاد میکنیم از اسکریپتهای آماده مقابله با DoS در کنار مانیتورینگ دقیق استفاده کنید.
همچنین همیشه RouterOS خود را به آخرین نسخه آپدیت نگه دارید.
.
اسکریپت اتوماتیک شناسایی و بلاک کردن DoS
اهداف اسکریپت
- شناسایی SYN Flood
- شناسایی UDP Flood
- شناسایی ICMP Flood (Ping Flood)
- بلاک کردن IPهای مهاجم بهصورت خودکار با استفاده از Address List
- پاکسازی دورهای Address List
حملات DoS در MikroTik
پیشنیاز: ساخت Address List
ابتدا این Address List ها را در ترمینال بسازید:
/ip firewall address-list
add list=dos-attackers address=0.0.0.0 comment=”Blocked DoS IPs Placeholder”
اسکریپت مقابله با حملات DoS
۱. فایروال تشخیص حملات + بلاک
# بلاک SYN Flood
/ip firewall filter
add chain=input protocol=tcp tcp-flags=syn connection-limit=5,32 \
action=add-src-to-address-list address-list=dos-attackers address-list-timeout=1h \
comment=”Detect SYN Flood”# بلاک UDP Flood
/ip firewall filter
add chain=input protocol=udp connection-limit=30,32 \
action=add-src-to-address-list address-list=dos-attackers address-list-timeout=1h \
comment=”Detect UDP Flood”# بلاک ICMP Flood
/ip firewall filter
add chain=input protocol=icmp limit=5,10 action=accept comment=”Allow ICMP limited”
add chain=input protocol=icmp src-address-list=dos-attackers action=drop comment=”Drop ICMP Flooders”
# بلاک تمام حملات شناسایی شده
/ip firewall filter
add chain=input src-address-list=dos-attackers action=drop comment=”Drop DoS Attackers”
۲. اسکریپت پاکسازی IPهای منقضیشده (اختیاری برای اجرای دستی/زمانبندیشده)
/system script add name=clean_dos_blocked_ips source=
:log info “Cleaning expired DoS attacker IPs…”
:foreach i in=[/ip firewall address-list find list=dos-attackers] do={
:local expireTime [/ip firewall address-list get $i timeout]
:if ($expireTime = 0s) do={
/ip firewall address-list remove $i
}
}
.
۳. زمانبندی اجرای پاکسازی (هر ۱ ساعت)
/system scheduler add name=clean_dos_ips_schedule interval=1h on-event=clean_dos_blocked_ips comment=”Scheduled cleanup of DoS IPs”
نکات پایانی و امنیتی
- IPهای مشکوک به مدت یک ساعت بلاک میشوند؛ میتوانید مقدار address-list-timeout=1h را به دلخواه تغییر دهید.
- این اسکریپت بر روی ترافیک ورودی به روتر اعمال میشود (chain=input). در صورتی که نیاز دارید از شبکه داخلی محافظت کنید، از chain=forward هم استفاده کنید.
- اگر سرویس حساسی دارید، میتوانید Rule خاص برای آن تعریف کنید (مثلاً DNS یا Web).
حملات DoS در MikroTik
اسکریپت با قابلیت ارسال اعلان (مثلاً از طریق Telegram Bot) هنگام شناسایی حمله
پیشنیازها
برای دریافت اعلان تلگرام از MikroTik، ابتدا باید یک ربات تلگرام بسازید و یک توکن Bot API و Chat ID داشته باشید.
مراحل ساخت ربات تلگرام
- به ربات @BotFather پیام دهید.
- دستور /newbot را وارد کرده و نام و یوزرنیم ربات را بدهید.
- پس از ساخت، توکنی به صورت زیر دریافت میکنید:
123456789:AAExAmPlE_T0kEN123456789ABC
- برای دریافت chat_id:
- به ربات ساختهشده پیام دهید.
- سپس از مرورگر باز کنید:
https://api.telegram.org/bot<YOUR_TOKEN>/getUpdates
-
- در خروجی JSON، مقدار chat.id را پیدا کنید.
.
پارامترها برای اسکریپت اعلان
# ⚠️ مقداردهی اولیه – با اطلاعات واقعی خود جایگزین کنید
:local token “123456789:AAExAmPlE_T0kEN123456789ABC”
:local chatid “123456789”
.
جهت مطالعه آموزش های مشابه اینجا کلیک کن
حملات DoS در MikroTik