الهجوم الذي سوف أتحدث عنه اليوم خطير جدا وذلك بسبب قدرته على تخريب الشبكة بشكل كامل بالأضافة إلى أمكانية المهاجم في التنصت على كل مايجري في الشبكة وأقصد بهذا ليس فقط السويتش الذي ينتمي إليه المهاجم بل كل السويتشات الموجودة على الشبكة ويمكن أن نطلق عليه STP manipulation أو
BPDU attack
مقدمة عن بروتوكول الـ Spanning Tree
كما هو معروف عند الجميع أن بروتوكول الـ STP يلعب دورا كبيرا في الشبكة في منع مايعرف بي الـ loop أو Broadcast Storm ويتم ذلك عن طريق أنتخاب سويتش واحد ليكون Root Bridge ويتم الأختيار حسب أقل Bridge ID موجود على الشبكة وبعدها يتم أختيار البورتات التى يجب أن تعمل أو تتوقف أعتمادا على الـ Cost أو التكلفة للوصول للـ Root Bridge وكل هذه الأمور تتم عن طريق مايعرف بي BPDU وطبعا هذا الكلام معروف عند الجميع
كيف يتم هذا النوع من الهجوم ؟
الهجوم كغيره فكرته بسيطة وتأثيره كبير جدا وهو يتم عن طريق أرسال BPDU مزور يخبر فيه المهاجم السويتش الذي يرتبط معه بأنه يملك أقل Bridge ID على الشبكة وبانه يجب ان يكون هو الـ Root Bridge وبالتالي سوف تتم أعادة توزيع البورت على كل السويتشات وهذه بعض الصور لتبسيط الموضوع
الصورة الاولى نرى فيها التوزيع الطبيعي للشبكة ونرى أيضا أن السويتش A هو الـ Root Bridge على الشبكة والخطوط الحمراء خاصة بي الـ STP ونرى أن المهاجم الموجود على الجهاز رقم 2 يقوم بأرسال BPDU مزور إلى السويتش

في الصورة الثانية سوف نشاهد ماذا سوف يحدث بعد أن يقوم المهاجم بتغيير المخطط
وسوف نلاحظ ان كل شيء قد تغيير وأصبح كل الترافيك الذي يعبر عبر الشبكة يمر عبر الشخص المهاجم وبالتالي أصبح عندنا الهجوم الذي يعرف بي MITM أو Man In The Middle
كيف أحمي شبكتي من هذا النوع من الهجوم ؟
سيسكو تقترح عليك 3 طرق للحماية من هذا الهجوم الأولى
BPDU Guard خاصية تخبر فيها البورت أن لا يستقبل أي نوع من رسائل الـ BPDU وفي حال أستلام البورت لاي BPDU سوف يقوم بتحويل حالة البورت إلى errdisable أي سوف يتم اغلاق البورت بشكل كامل
وطريقة الأعداد تتم على الشكل التالي :
أدخل أولا على البورت الغير أمن وأكتب فيه الأمر التالي
Cisco's IOSSwitch(config)#spanning-tree bpduguard enable
Cisco's IOS
Switch(config)#spanning-tree bpduguard enable
واذا أردت أن تقوم بتفعيل هذه الخاصية على كل البورتات التى تكون في حالة PortFast أكتب الأمر التالي في الـ Config mode
Cisco's IOSSwitch(config)#spanning-tree portfast bpduguard default
Cisco's IOS
Switch(config)#spanning-tree portfast bpduguard default
BPDU Root في هذه الخاصية أخبر السويتش بأن هذه البورت لن يكون أبدا Root Bridge وتتم من خلال هذا الأمر
Cisco's IOSSwitch(config-if)#spanning-tree guard root
Cisco's IOS
Switch(config-if)#spanning-tree guard root
BPDU Filtering هذه الخاصية هي نفس الخاصية الأولى تماما والفرق الوحيد هو أن هذه الخاصية تتيح لك أن تحدد ماذا تريد للبورت أن يفعل في حال أستلم BPDU بعكس الـ BPDU Guard الذي سوف يقوم بأغلاق البورت بشكل مباشر وطريقة الأعداد هي كالتالي:
على البورت
Cisco's IOSSwitch(config-if)#spanning-tree bpdufilter enable
Cisco's IOS
Switch(config-if)#spanning-tree bpdufilter enable
واذا أردت أن تقوم بتفعيل هذه الخاصية على كل البورتات التى تكون في حالة PortFast أكتب الأمر التالي في الـ Config mode
Cisco's IOSSwitch(config)#spanning-tree portfast bpdufilter default
Cisco's IOS
Switch(config)#spanning-tree portfast bpdufilter default
thanks man for this tip 😉
تسلم على التدوينة
🙂 جزاك الله خيرا 🙂
جزاك الله الف خير على هذا الشرح المبسط والجميل
شكرا يا بشمهندس
بس بالنسبه لل
BPDU Filtering
طيب ايه الامر الهنكتبش عشان نحدد
هو هيعمل ايه في حالة استقبل bpdu??
وشكرا لمجهودك 🙂
رائع يا بشمهندس
الف الف شكر ياهندسه