شرح خاصية uRPF


تعتبر خاصية uRPF أو unicast Reverse Path Forwarding من الخواص الأمنية المتاحة على الكثير من أجهزة سيسكو , فتعالوا نتتعرف فى هذه التدوينة على تلك الخاصية وأهميتها و كيفية تطبيقها على روترات سيسكو .
ما هى خاصية uRPF :
الهدف الرئيسى من تفعيل هذه الخاصية هو عملية التحقق Verifying لأى حزمة (packet) تصل إلى انترفيس معين ,وأقصد هنا بعملية التحقق هو معرفة مصدر الحزمة و التأكد من صحتها وأنها ليست عبارة عن حزمة مزورة Spoofed packet .
ولكن كيف يتم ذلك ؟ يتم ذلك عن طريق عملية تتبعها هذه الخاصية مع أى حزمة تصل إلى انترفيس تم تفعيل هذه الخاصية عليه , فعندما تصل الحزمة إلى الانترفيس يتم عمل ما يسمى “reverse path look-up” أى يتم التأكد من المسار التى وصلت منه الحزمة ولكن بصورة عكسية,فتخيل معى الحزمة و هى تمر الى الانترفيس ,فأول شىء سيحدث هو التأكد من المسار بصورة عكسية كما قلنا و يحدث هذا عن طريق النظر الى شيئين هما ال Source IP الموجود بداخل الحزمة و الشىء الثانى هو ال Routing Table ,وبعد أن يتم التعرف ال Source IP تقوم تلك الخاصية بالبحث عن مسار له بداخل جدول التوجيه Routing table فإذا وجدنا مسار ففى هذه الحالة يتم السماح للحزمة بالمرور بصورة عادية و ذلك لأننا نعرف طريق ال Source إذن فهو حقيقى و غير مزور , أما فى حاله لم نجد أى مسار لل Source IP ففى هذا الحاله يتم منع الحزمة من المرور السبب اننا لم نستطع التحقق من المصدر الذى هو حالتنا هذه ال Source IP . الخلاصة ان هذه الخاصية عبارة عن الية تستخدم لمنع عملية التزوير من النوع IP Spoofing .

uRPF Modes – Strict VS Loose :
هناك وضعان لتلك الخاصية و هما : (Strict Mode OR Loose Mode)
Strict Mode
هو كما يدل اسمه تماما الذى يعطى طابع الصرامة هو ايضا متشدد بشأن عمليه التأكد او الـ Verifying فهو لا يكتفى فقط بالتاكد من وجود مسار فى ال Routing Table لل Source IP لكل حزمة فقط , بل يشترط أن يكون هذا المسار عن طريق نفس الانترفيس الذى وصلت عليه الحزمة لنأخذ مثال للتوضيح , مثلا اذا وصلت حزمة على f0/0 و قامت الخاصية بالنظر الى ال Routing Table و البحث عن مسار للSource IP الموجود بالحزمة ووجدت ومسار لهذا العنوان ولكن عن طريق f0/1 ففى هذه الحالة لا يتم السماح بمرور الحزمة .
Loose mode
بينما هذا الوضع رخو ومتساهل ,فهو بمجرد ان يجد مسار لل source IP عن طريق أى انترفيس يسمح فورا بمرور الحزمة عكس ال Strict Mode الذى يشترط أن يجد مسار لل Source عن طريق نفس الانترفيس الذى وصلت الحزمة من خلاله .
وهناك نقطة مهمة يجب أن نذكرها وهى وجود Default Route فى هذا الوضع ,ففى هذه الحالة لا يعتبر هذا المسار صالحا لأنه سيناسب أىSource IP ,ولكن يمكن تغير ذلك عن طريق أمر معين سنعرفه لاحقا فأتمنى ان تكون هذه النقطة مفهومة جيدا.
نقطة اخيرة احب ان انبه عليها قبل ان نبدأ فى الاعدادات وهى فى حالة قمنا بتفعيل ال strict mode و كان لدينا فى الشبكة أى سبب يمكن أن يودى إلى ما يسمى “Asymmetric Traffic flow” سيسبب هذا بعض المشاكل و سيتم منع العديد من الحزم الأمنة عن طريق الخطأ لان هذا الترافيك لا يأتى من الانترفيس المتوقع أن يأتى منه .
الصورة التاليه تبين شبكة قد يحدث بها Asymmetric Traffic flow أما إذا أردت معرفة المزيد حول هذا الموضوع يمكنك البحث وستجد العديد من المقالات تشرح هذا الامر .



uRPF Configuration Example :

المطلوب منا فى هذا المثال هو تفعيل ال uRPFعلى كل من S0/0و S0/1و ان يتم استخدام Strict ModeعلىR1.
ال configurationسيكون كالتالى :

نبدأ بهذا الامر فى ال Interface كتالى R1(config-if)# ip verify unicast source reachable-via
و لكن يجب ان نختار إما ANY و هى تساوى Loose أو نختار rx و هى تساوى strict هذا فى نهاية الأمر السابق بالطبع ,ويوجد عدد من الخيارات بعد تحديد ال Mode منها Allow-default و هى تسمح لنا بالاعتماد على ال Default route فى عمليه التحقق من ال source ,هناك أيضاAllow-self-ping و تسمح للروتر أن يقوم بعمل Ping على نفسه لأنه فى الحالة الطبيعية لن يسمح ال uRPF بعمل ذلك .
هناك أمر مهم سنحتاج إليه لكنه غير موضح بالصورة وهو ip cefوأهميه هذا الأمر ان ال uRPF يعتمد أحيانا على ال MIB وهو جدول شبيه بجدول التوجيه .
ويمكن إستخدام هذا الأمر لنعرف أى وضع تم تفعيله على انترفيس معين
R1# sh run int S0/0!
interface serial0/0
ip address 80.1.1.1 255.255.255.0
ip verify unicast source reachable-via rx allow-self-ping


بهذا نكون قد انتهينا من هذه الخاصيه و الى اللقاء فى موضوع اخر .وبالتوفيق للجميع ,,
منقول شرح الاستاذ شريف مجدى