حماية البورت 80 وحل مشكلة استنزاف الرصيد في شبكات MikroTik HotSpot
حماية البورت 80 في شبكات MikroTik HotSpot
يعاني بعض أصحاب شبكات MikroTik HotSpot من وجود طلبات واتصالات متكررة على البورت رقم 80 صادرة من أجهزة لم تسجل الدخول إلى صفحة الشبكة، وقد تتسبب هذه الطلبات في زيادة الاتصالات أو الضغط على الراوتر، كما قد ترتبط في بعض الإعدادات بمشكلة احتساب أو استنزاف الرصيد.
يعتمد هذا الحل على مراقبة طلبات HTTP الصادرة من عملاء HotSpot غير المسجلين، والسماح بطلبات محددة تحتاج إليها الأجهزة وصفحة تسجيل الدخول، ثم تعليم بقية الحزم المستهدفة وإسقاطها داخل Firewall Filter.
تنبيه فني: هذا السكربت لا يغلق البورت 80 بالكامل، ولا يمنع استخدام HTTP للمستخدمين الذين سجلوا الدخول. الحماية تستهدف بصورة أساسية عملاء HotSpot غير المصرح لهم قبل تسجيل الدخول.
متى يمكن استخدام هذه الحماية؟
يمكن تجربة الحماية عند ملاحظة واحد أو أكثر من الأعراض التالية:
- وجود عدد كبير من الاتصالات على البورت 80 من أجهزة غير مسجلة.
- استمرار بعض الأجهزة في إرسال طلبات HTTP قبل تسجيل الدخول.
- زيادة غير طبيعية في الاتصالات الخاصة بصفحة HotSpot.
- وجود استهلاك أو احتساب غير مفهوم قبل تسجيل المستخدم.
- عودة المشكلة بعد توصيل عدد كبير من الهواتف بالشبكة.
- الحاجة إلى تقييد طلبات HTTP غير الضرورية قبل المصادقة.
كيف يعمل السكربت؟
يتكون السكربت من قسمين رئيسيين:
- Mangle: لاستثناء الطلبات الضرورية وتعليم بقية حزم البورت 80 المستهدفة.
- Firewall Filter: لإسقاط الحزم التي حصلت على العلامة
80port.
تعمل القواعد فقط على حزم HotSpot القادمة من العملاء الذين لم تتم مصادقتهم، باستخدام:
hotspot=from-client,!authمتطلبات التنفيذ
قبل تركيب السكربت، يجب معرفة البيانات التالية:
- عنوان IP الخاص بصفحة تسجيل الدخول.
- رنج عناوين IP المستخدم في شبكتك.
- مكان قواعد HotSpot داخل Mangle وFirewall Filter.
- وجود نسخة احتياطية حديثة من إعدادات الراوتر.
- إمكانية الدخول إلى MikroTik عبر Winbox باستخدام MAC Address.
أخذ نسخة احتياطية قبل التنفيذ
يفضل أخذ نسخة احتياطية وملف تصدير قبل تعديل الجدار الناري.
/system backup save name=before-port80-protection
/export file=before-port80-protectionسيظهر الملفان داخل قائمة:
Filesالخطوة الأولى: معرفة IP صفحة تسجيل الدخول
انتقل من Winbox إلى:
IP → DNS → Staticابحث عن اسم نطاق صفحة الدخول، ثم تحقق من عنوان IP المرتبط به.
يمكن عرض سجلات DNS Static من Terminal باستخدام:
/ip dns static print detailفي مثالنا سنفترض أن عنوان صفحة الدخول هو:
172.20.25.1مهم: لا تستخدم هذا العنوان كما هو إلا إذا كان هو فعلًا عنوان صفحة الدخول في شبكتك. استبدله بعنوان صفحتك الحقيقي.
الخطوة الثانية: معرفة رنج الشبكة
انتقل إلى:
IP → Addressesأو استخدم الأمر التالي:
/ip address print detailفي مثالنا سنستخدم الرنج:
172.16.0.0/12يجب استبدال هذا الرنج برنج شبكتك الحقيقي قبل تنفيذ السكربت.
أمثلة على رنجات الشبكات
10.0.0.0/8
172.16.0.0/12
192.168.0.0/16
192.168.88.0/24لا تختر رنجًا أوسع من شبكتك دون حاجة، حتى لا يتم استثناء عناوين غير مطلوبة.
القيم التي يجب تعديلها
قبل النسخ، عدّل القيمتين التاليتين:
عنوان صفحة HotSpot
172.20.25.1رنج الشبكة المحلية
172.16.0.0/12سكربت حماية البورت 80
بعد تعديل عنوان الصفحة ورنج الشبكة، انسخ السكربت التالي إلى Terminal:
/ip firewall mangle
add action=accept chain=prerouting content=samsun dst-port=80 hotspot=from-client,!auth protocol=tcp comment="PORT80-ALLOW-SAMSUNG"
add action=accept chain=prerouting content=apple dst-port=80 hotspot=from-client,!auth protocol=tcp comment="PORT80-ALLOW-APPLE"
add action=accept chain=prerouting content=204 dst-port=80 hotspot=from-client,!auth protocol=tcp comment="PORT80-ALLOW-204"
add action=accept chain=prerouting content=htm dst-port=80 hotspot=from-client,!auth protocol=tcp comment="PORT80-ALLOW-HTML"
add action=accept chain=prerouting content=rom dst-port=80 hotspot=from-client,!auth protocol=tcp comment="PORT80-ALLOW-ROM"
add action=accept chain=prerouting content=txt dst-port=80 hotspot=from-client,!auth protocol=tcp comment="PORT80-ALLOW-TXT"
add action=accept chain=prerouting content=gener dst-port=80 hotspot=from-client,!auth protocol=tcp comment="PORT80-ALLOW-GENERATE"
add action=accept chain=prerouting dst-address=172.20.25.1 dst-port=80 hotspot=from-client,!auth protocol=tcp comment="PORT80-ALLOW-LOGIN-PAGE"
add action=accept chain=prerouting dst-address=172.16.0.0/12 dst-port=80 hotspot=from-client,!auth protocol=tcp comment="PORT80-ALLOW-LOCAL-RANGE"
add action=mark-packet chain=prerouting connection-state=invalid,established,related,untracked dst-port=80 hotspot=from-client,!auth new-packet-mark=80port passthrough=no protocol=tcp comment="PORT80-MARK-UNAUTH"
/ip firewall filter
add action=drop chain=input packet-mark=80port place-before=0 comment="salmandahmash"شرح قواعد الاستثناء
تحتوي بداية السكربت على عدة قواعد تستخدم:
action=acceptوظيفة هذه القواعد هي استثناء الطلبات المطابقة من الوصول إلى قاعدة تعليم الحزم الموجودة أسفلها داخل Mangle.
تشمل الاستثناءات بعض طلبات اكتشاف الاتصال المستخدمة بواسطة الهواتف والأنظمة، بالإضافة إلى ملفات وطلبات HTTP معينة.
استثناء صفحة تسجيل الدخول
تقوم القاعدة التالية بالسماح بالوصول إلى عنوان صفحة تسجيل الدخول:
add action=accept chain=prerouting dst-address=172.20.25.1 dst-port=80 hotspot=from-client,!auth protocol=tcp comment="PORT80-ALLOW-LOGIN-PAGE"يجب استبدال:
172.20.25.1بعنوان IP الحقيقي الخاص بصفحة تسجيل الدخول لديك.
إذا تمت كتابة عنوان خاطئ، فقد تتوقف صفحة الدخول أو لا تظهر لبعض المستخدمين.
استثناء رنج الشبكة المحلية
تقوم القاعدة التالية باستثناء الاتصالات المتجهة إلى رنج الشبكة:
add action=accept chain=prerouting dst-address=172.16.0.0/12 dst-port=80 hotspot=from-client,!auth protocol=tcp comment="PORT80-ALLOW-LOCAL-RANGE"استبدل:
172.16.0.0/12برنج شبكتك الحقيقي.
تعليم حزم البورت 80
تقوم القاعدة التالية بمنح الحزم المستهدفة علامة باسم:
80portالقاعدة:
add action=mark-packet chain=prerouting connection-state=invalid,established,related,untracked dst-port=80 hotspot=from-client,!auth new-packet-mark=80port passthrough=no protocol=tcp comment="PORT80-MARK-UNAUTH"تستهدف القاعدة اتصالات TCP على البورت 80، الصادرة من عملاء HotSpot غير المسجلين، بعد استثناء الطلبات السابقة.
إسقاط الحزم داخل Firewall Filter
تقوم القاعدة التالية بإسقاط الحزم التي تحمل العلامة 80port:
add action=drop chain=input packet-mark=80port place-before=0 comment="salmandahmash"تم استخدام:
place-before=0حتى تتم إضافة قاعدة الحماية في أعلى قائمة Firewall Filter.
التأكد من مكان قاعدة Filter
انتقل إلى:
IP → Firewall → Filter Rulesوتأكد من وجود القاعدة التي تحمل التعليق:
salmandahmashفي أعلى قائمة Filter Rules.
يمكن التأكد من Terminal باستخدام:
/ip firewall filter print detail where comment="salmandahmash"ويمكن نقلها إلى أعلى القائمة بالأمر التالي:
/ip firewall filter move [find where comment="salmandahmash"] 0ترتيب قواعد Mangle
يجب أن تكون قواعد الاستثناء أولًا، ثم قاعدة تعليم الحزم في آخر مجموعة الحماية.
الترتيب الصحيح هو:
- استثناء طلبات الأجهزة والملفات الضرورية.
- استثناء عنوان صفحة HotSpot.
- استثناء رنج الشبكة المحلية.
- قاعدة تعليم الحزم باسم 80port.
- قاعدة الإسقاط داخل Firewall Filter.
انتقل إلى:
IP → Firewall → Mangleوتأكد من أن قواعد الحماية موجودة قبل أي قواعد أخرى قد تقبل الحزم أو تغير مسار معالجتها.
فحص عدادات الحماية
بعد تشغيل الحماية، يمكن مراقبة عدادات القواعد للتأكد من مرور الحزم عليها.
فحص قواعد Mangle
/ip firewall mangle print stats where comment~"PORT80-"فحص قاعدة الإسقاط
/ip firewall filter print stats where comment="salmandahmash"إذا بدأت أعداد Packets وBytes في الارتفاع، فهذا يعني أن القواعد تستقبل حزمًا مطابقة.
اختبار صفحة HotSpot بعد التركيب
بعد تركيب الحماية، نفّذ الاختبارات التالية:
- افصل هاتفًا تجريبيًا من HotSpot.
- احذف Cookie أو تسجيل الدخول السابق.
- أعد الاتصال بالشبكة.
- افتح موقعًا يعمل عبر HTTP أو افتح صفحة الشبكة مباشرة.
- تأكد من ظهور صفحة تسجيل الدخول.
- سجل الدخول باستخدام كرت تجريبي.
- تأكد من عمل التصفح بعد المصادقة.
- راقب عدادات Mangle وFilter.
إذا توقفت صفحة الدخول
إذا لم تظهر صفحة HotSpot بعد تركيب السكربت، تحقق من الآتي:
- صحة عنوان IP الخاص بصفحة الدخول.
- صحة رنج الشبكة المحلية.
- ترتيب قواعد Mangle.
- عدم وجود قاعدة Drop أخرى أعلى الاستثناءات.
- عمل DNS الخاص بالشبكة.
- إعداد DNS Name داخل HotSpot Profile.
- وجود قواعد HotSpot الديناميكية وعدم تعطيلها.
يمكن تعطيل قاعدة Filter مؤقتًا للاختبار:
/ip firewall filter disable [find where comment="salmandahmash"]ولإعادة تشغيلها:
/ip firewall filter enable [find where comment="salmandahmash"]إزالة الحماية بالكامل
لإزالة القواعد التي أضيفت بواسطة هذا الشرح:
/ip firewall mangle remove [find where comment~"PORT80-"]
/ip firewall filter remove [find where comment="salmandahmash"]تنبيهات مهمة
- لا تنفذ السكربت قبل تعديل عنوان صفحة الدخول ورنج الشبكة.
- احتفظ بنسخة احتياطية قبل تعديل Firewall.
- اختبر الحماية على جهاز واحد قبل اعتمادها على جميع المستخدمين.
- قد تختلف النتيجة حسب إصدار RouterOS وطريقة إعداد HotSpot.
- لا تعتبر الحماية بديلًا عن فحص نظام المحاسبة وإعدادات User Manager أو RADIUS.
- لا تثبت أن كل مشكلة استنزاف رصيد سببها البورت 80.
- افحص الجلسات والـ Accounting والـ Shared Users والـ Keepalive Timeout إذا استمرت المشكلة.
- استخدام كلمات عامة داخل Content Matcher قد يطابق طلبات غير متوقعة، لذلك يجب مراقبة العدادات والنتائج.
في حال استمرار استنزاف الرصيد
إذا استمرت المشكلة بعد تركيب الحماية، افحص العناصر التالية:
- إعدادات HotSpot User Profiles.
- طريقة احتساب الوقت والحجم.
- RADIUS Accounting وInterim Update.
- إعداد Shared Users.
- بقاء جلسات المستخدمين القديمة.
- Cookies وMAC Cookies.
- قواعد NAT وFirewall الديناميكية.
- وجود أجهزة تستخدم نفس اسم المستخدم.
- التحميلات والتحديثات التلقائية بعد تسجيل الدخول.
- تزامن الوقت والتاريخ في الراوتر ونظام المحاسبة.
الخلاصة
يساعد هذا السكربت في تنظيم طلبات HTTP على البورت 80 الصادرة من عملاء MikroTik HotSpot غير المسجلين، من خلال استثناء صفحة الدخول والطلبات الضرورية، ثم تعليم بقية الحزم المستهدفة وإسقاطها عبر Firewall Filter.
نجاح الحماية يعتمد على إدخال عنوان صفحة HotSpot ورنج الشبكة بصورة صحيحة، ووضع القواعد في الترتيب المناسب، ثم اختبار صفحة الدخول والتصفح ومراقبة عدادات الجدار الناري.

التعليقات
0 تعليق منشور. التعليقات الجديدة تمر بالمراجعة للحماية من السبام.