أمن الويب، جدار حماية التطبيقات وهندسة إدارة الروبوتات
السعر ابتداءً من $5,500
(9 تقييم) 1241 مشاهدة
أفصل الحركة الواردة إلى بشر وروبوتات مُصرَّح بها وأتمتة مخفية، وأربط كل قرار حظر بعتبة وبسبب اختيارها. تُدار قواعد جدار الحماية على الحافة من الشيفرة، ويصطدم الطلب الذي يتجاوزها بمرشّح ثانٍ عند الخادم الأصلي، ويُحصى كل حظر مع فئته. ويُتحقَّق من إعلان الروبوت بمقارنته بنطاقات العناوين التي ينشرها المزوّد.
الخدمة 4: أمن الويب، جدار حماية التطبيقات وهندسة إدارة الروبوتات
اتخاذ قرار أمني دون معرفة نسبة الزيارات البشرية الحقيقية أشبه بإطلاق النار في العتمة. جزء من الطلبات الواردة اليوم أتمتة تتنكر في هيئة متصفّح، وجزء آخر زواحف بحث وذكاء اصطناعي تُصرّح بهويتها بصدق، وجزء ثالث ماسحات تبحث مباشرةً عن ثغرة. الثلاثة تتشابه في سطر السجل نفسه. أنا أبني طبقة دفاع تفصل بين هذه الأنواع الثلاثة، وتُسند كل قرار إلى قياس، وتُسجّل سبب كل حظر.
العمل هنا ليس "فلنُفعّل جدار الحماية ونشغّل الحماية من الروبوتات". العمل هو أن نجعل قابلاً للقياس: ما الذي التقطته الحافة، وبماذا اصطدم الطلب الذي تجاوزها عند الخادم الأصلي، ومن حُظر عند أي عتبة ولأي مدة، وهل كل ذلك يؤدي وظيفته فعلاً. ولا رقم من الأرقام أدناه سيناريو توضيحي؛ جميعها مقيسة من شيفرة تعمل في الإنتاج على هذا الموقع نفسه.
الدفاع متعدد الطبقات – التدفق العام
| الحافة (CDN/WAF) قواعد مخصّصة، حدود معدّل، حركة معروفة الخبث |
مرشّح الخادم الأصلي مطابقة أنماط المسارات وصيغ الترميز |
التصنيف بشر / روبوت مُصرَّح به / أتمتة مخفية |
التحقّق نطاقات المزوّد، رقم النظام الذاتي، بصمة الترويسة |
القرار والتسجيل درجة، حظر تصاعدي، مقياس |
لماذا هذه الخدمة؟
في معظم عمليات الإعداد يُعامَل الأمن كمفتاح تشغيل وإيقاف. والنتيجة تنقسم إلى حالتين: إمّا أن تكون القواعد فضفاضة فيتسلّل المهاجم، أو مُحكمة أكثر من اللازم فيبقى الزائر الحقيقي عند الباب. وكلتاهما تحدثان للسبب نفسه: لا يوجد قياس خلف القرار.
| النهج التقليدي | نهجي |
|---|---|
| تُفعَّل مجموعة قواعد جاهزة ولا يُعاد النظر فيها | تُربَط كل قاعدة بعتبة وبسبب اختيار تلك العتبة |
| يُفترَض أن الروبوتات سيّئة وتُوضع كلها في سلّة واحدة | زواحف البحث وزواحف الذكاء الاصطناعي والأتمتة المخفية تُدار كلٌّ على حدة |
| يُصدَّق ما يعلنه حقل وكيل المستخدم | يُقارَن الإعلان بنطاقات العناوين التي ينشرها المزوّد نفسه |
| مدة الحظر واحدة وثابتة | تتصاعد المدة مع التكرار؛ الخطأ الأول والإصرار لا ينالان العقوبة ذاتها |
| الحافة هي خط الدفاع الوحيد | الطلب الذي يتجاوز الحافة يصطدم بمرشّح ثانٍ عند الخادم الأصلي |
| يُفترَض أن الحماية تعمل | يُحصى كل حظر مع فئته؛ ويُقاس ما إذا كان يعمل فعلاً |
منهجي المعماري
1) مطابقة التواقيع وكشف التحايل
الطبقة الأولى في كشف الهجمات هي مطابقة الأنماط، غير أن التقاط نمط مكتوب حرفياً في قائمة لا يكفي. فالمهاجم يُرمّز المسار ليفلت من القائمة. لذلك يطبّق تطبيعُ المسار جولتَي فكّ ترميز؛ فإن اختلف ناتج الجولة الثانية عن الأولى عُدَّ ذلك وحده إشارة هجوم، لأن المتصفّح المشروع لا يرسل مساراً مزدوج الترميز.
وكل توقيع مطابق ليس ثنائية "طابَق / لم يطابق"؛ بل يحمل خطورة من 1 إلى 5 وثقة من 0 إلى 100. وقرار الحظر يأتي من الدرجة الناتجة عنهما، فلا تُبقي إشارةٌ ضعيفة أحداً عند الباب بمفردها.
2) تحقّق لا إعلان
حقل وكيل المستخدم في الطلب إعلانٌ لا دليل؛ فبإمكان أي جهة أن تُعلن نفسها محرّك بحث. لذلك تُجلَب نطاقات العناوين التي ينشرها المزوّدون بأنفسهم وتُقارَن بالإعلان. وإن لم يكن عنوان الطلب ضمن النطاق سقطت عنه صفة "روبوت موثّق".
وهنا تمييز مهم: إذا لم يكن للرمز تطابق معروف تُترَك النتيجة فارغة. فـلم أستطع التحقّق ومزوَّر لا يوضعان في الخانة نفسها. ومن دون هذا التمييز تُصنَّف روبوتات مشروعة لا تملك بنية تحقّق تصنيفاً خاطئاً بصمت.
3) الحظر التصاعدي وحصّة الحافة
مدة الحظر ليست ثابتاً واحداً. الحظر الأول 24 ساعة، وإن عاد العنوان نفسه فسبعة أيام، وفي المرة الثالثة ثلاثون يوماً. فالماسح العابر لا يُعامَل معاملة المهاجم الذي يعاود المحاولة بإصرار.
أما قائمة الحافة فلا يُدفَع إليها إلا الحظر الذي مدته سبعة أيام فأكثر. والسبب عملي: قوائم الحافة محدودة بحصّة، وملؤها بماسحات عابرة لا يترك مكاناً لمن يعاودون فعلاً.
4) حدود المعدّل حسب نقطة النهاية
حدٌّ عام واحد للطلبات فجٌّ وخاطئ في آن؛ فصفحة قراءة ونموذج تواصل لا يتشاركان النمط ذاته. لذلك يُقسَّم الحدّ إلى تسع سلال منفصلة، وتُختار كل عتبة وفق النمط المشروع لتلك النقطة. والطلب المرفوض يعود برمز 429 وترويسة Retry-After التي تُخبر العميل متى يمكنه المحاولة مجدداً.
ما الذي أقدّمه
| المجال | ما أوفّره |
|---|---|
| إدارة قواعد جدار الحماية | إدارة قواعد الحافة من الشيفرة، وتتبّع الإصدارات، وإمكانية التراجع |
| تصنيف الروبوتات | فصل روبوتات البحث والذكاء الاصطناعي والتواصل والسيو والمراقبة، ولكلٍّ سياسته |
| كشف الهجمات | مكتبة تواقيع، وكشف التحايل بالترميز، وقرار حظر قائم على الدرجة |
| حماية تسجيل الدخول | حدّ معدّل على نقطة الدخول، وكشف تعداد أسماء المستخدمين، وحماية من دون قفل الحساب |
| القياس ولوحة المتابعة | إحصاء الحظر حسب الفئة، ومطابقة الحافة بالخادم الأصلي، وتوزيع الحركة |
| الامتثال للخصوصية | تجزئة معرّف الزائر، وتثبيت مدة الاحتفاظ داخل الشيفرة |
الأرقام التي تعمل على موقعي
ما يلي ليس سيناريوهات توضيحية بل قيم مقيسة من الشيفرة العاملة في إنتاج هذا الموقع. وأصدق طريقة لوصف خدمة هي أن تشغّلها على نفسك ثم تعرض الرقم. ولا أزعم أن هذه العتبات صالحة لكل نظام؛ فهي أرقام اخترتها لحركة هذا الموقع تحديداً، وعادةً ما تُعاد معايرتها عند كل تركيب جديد.
| المكوّن | القياس | ماذا يعني |
|---|---|---|
| مكتبة تواقيع الهجمات | 129 توقيعاً / 30 فئة | 95 نمط مسار، و18 وكيل مستخدم لماسحات، و16 حمولة استعلام؛ لكلٍّ خطورته وثقته |
| كشف التحايل بالترميز | جولتا فكّ ترميز | اختلاف الجولة الثانية عن الأولى يُعدّ وحده إشارة هجوم |
| تصنيف وكلاء الروبوتات | 143 رمزاً / 8 أنواع | 62 رمزاً ضمن عائلة الذكاء الاصطناعي؛ الزحف للتدريب وفهرسة البحث والجلب بطلب المستخدم تُعلَّم كلٌّ على حدة |
| التحقّق من المزوّد | 7 مزوّدين / 14 قائمة عناوين | 32 تطابقاً بين رمز ومزوّد، وإضافةً إلى ذلك 55 رقم نظام ذاتي لمزوّدي الاستضافة |
| عتبات الحظر التلقائي | 3 محاولات خلال 15 دقيقة | درجة تهديد 11؛ ومدة الحظر تتصاعد: 24 ساعة، ثم 7 أيام، ثم 30 يوماً |
| الطبقة الثانية (الخادم الأصلي) | 47 نمط مسار + 7 صيغ | الطلب الذي يتجاوز الحافة يتلقّى 404 دون ضجيج في السجل؛ وكل حظر يُحصى ضمن المقاييس |
| سياسات حدّ المعدّل | 9 سلال منفصلة | من 200 طلب في الدقيقة للقراءة إلى 5 في الساعة لنموذج التواصل |
| كشف إساءة تسجيل الدخول | نمطان منفصلان | المحاولات الموزّعة على حساب واحد وتعداد أسماء المستخدمين من عنوان واحد يُعالَجان منفصلين |
التقنيات التي أستخدمها
جدار حماية Cloudflare وواجهة Rulesets، وخط الوسائط البرمجية في ASP.NET Core، وتحديد المعدّل بنافذة منزلقة، ومقاييس Prometheus، ولوحات Grafana، وتجزئة الزائر بخوارزمية HMAC-SHA256، وقياسات الهجمات والحظر على MSSQL، وقيود إضافية على مستوى مدخل Kubernetes.
ما أتركه عن قصد
في أي تصميم أمني، ما لا يُفعَل لا يقلّ أهمية عمّا يُفعَل. وما يلي ليس نقصاً بل قرارات مقصودة:
| القرار | المسوّغ |
|---|---|
| لا يُستخدم قفل الحساب | القفل يمنح المهاجم أداة مجانية لتعطيل الحسابات؛ والحماية تُطبَّق على جهة العنوان |
| لا تُدرَج أرقام أنظمة مزوّدي الخدمة والعبور | خطر الإيجابيات الكاذبة يقطع الطريق على زوار حقيقيين؛ فتُحفَظ أرقام الاستضافة وحدها |
| الروبوت غير القابل للتحقّق لا يُعدّ مزوَّراً | عدم اليقين حالة قائمة بذاتها؛ تُترَك فارغة بدل إنتاج تصنيف خاطئ |
| لا يُدفَع الحظر القصير إلى الحافة | قائمة الحافة محدودة بحصّة؛ ولا ينبغي أن يستهلكها ماسح عابر |
مخرجات المشروع
| المخرَج | الوصف |
|---|---|
| تفكيك سطح التهديد | فصل الحركة القائمة إلى بشر وروبوتات مُصرَّح بها وأتمتة مخفية |
| مجموعة قواعد الحافة | قواعد جدار حماية وحدّ معدّل تُدار من الشيفرة وقابلة للإصدار |
| طبقة دفاع الخادم الأصلي | مطابقة تواقيع داخل التطبيق، وتصنيف، وآلية حظر تصاعدي |
| لوحة القياس | فئات الحظر، ومطابقة الحافة بالخادم الأصلي، وتتبّع الإيجابيات الكاذبة |
| توثيق العتبات | كل عتبة ورقمها وسبب اختياره، كي لا يغيّرها الفريق الذي يتسلّم العمل على عمياء |
لمن تناسب؟
تناسب الفرق التي لا تعرف نسبة الحقيقي من حركتها؛ والتي فعّلت الحماية من الروبوتات ومع ذلك تتلقّى شكاوى من زوار حقيقيين؛ والتي ترى محاولات متواصلة على نقطة تسجيل الدخول؛ والتي تريد ضبط كيفية استخدام زواحف الذكاء الاصطناعي لمحتواها؛ أو التي تبحث بعد حادث أمني عن جواب لسؤال "لماذا لم يُلتقط هذا؟".
لماذا أنا؟
بنيت هذه الطبقة على موقعي أولاً وأشغّلها في الإنتاج. وكل رقم أعلاه مقيس من تلك الشيفرة: عدد التواقيع، وقيم العتبات، وعدد السلال. ولكل آلية أصفها مقابلٌ يعمل فعلاً؛ فهي تأتي من ملف لا من شريحة عرض.
ونقطة ثانية: بناء هذه الطبقة أراني أخطائي أنا أيضاً. فقاعدة حافة مكتوبة على نحو خاطئ كسرت جزءاً من الموقع لدى الزوار من خارج تركيا؛ التقطتُ ذلك على لوحة المتابعة وأصلحته. والقدرة على قياس ما تكسره حمايتك جزء من العمل بقدر بنائها.
الخلاصة
طبقة الأمن الجيدة تعمل بهدوء، لكنها لا تعمل على عمياء. ينبغي أن يستند كل حظر إلى سبب، وكل عتبة إلى رقم، وكل رقم إلى قرار قابل للتغيير. الغاية أن نوقف المهاجم دون أن نُبقي الزائر الحقيقي عند الباب، وأن نتمكّن من إثبات أن هذا ما يحدث فعلاً.