Standaed ACL

توفر قوائم التحكم في الوصول (ACL) لمهندسي الشبكات طريقة مفيدة لتحديد أنواع مختلفة من الحزم. وللقيام بذلك يوجد ضمن إعدادات قائمة التحكم بالوصول (ACL) مجموعة من القيم التي يمكن لجهاز التوجيه معاينتها ضمن عناوين IP وضمن حقول الـHeader لكل من TCP وUDP. فعلى سبيل المثال يمكن لقائمة التحكم بالوصول (ACL) مطابقة الحزم التي مصدرها من عنوان الـ IP 1.1.1.1 أو الحزم التي وجهتها الى عنوان IP موجود ضمن الشبكة الفرعية 10.1.1.0/24  أو الحزم التي تستخدم TCP عن طريق منفذ رقم 23مثلاً وهو منفذ Telnet.

تؤدي قوائم التحكم في الوصول (ACL) العديد من الوظائف في أجهزة توجيه  Ciscoإضافة إلى الاستخدام الأكثر شيوعًا لها كنظام للفلترة والترشيح للحزم. يمكن للمهندسين إعداد وتمكين قوائم التحكم في الوصول (ACL) على جهاز التوجيه بحيث تفعّل في مسار إعادة توجيه الحزمة أثناء مرورها عبر جهاز التوجيه. وبعد تفعيلها يأخذ جهاز التوجيه القرار فيما إذا كان سيتم تجاهل الحزمة أو السماح لها بالمرور.

إضافةً إلى ذلك يمكن استخدام قوائم التحكم في الوصول (ACL) لتحقيق العديد من المميزات الأخرى أيضًا مثل مميزات جودة الخدمة (QoS) والتي تسمح بتقديم خدمة أفضل لبعض الحزم وتقديمها على حزم أخرى. فعلى سبيل المثال تحتاج الحزم التي تحتوي على صوت رقمي إلى سرعة أكبر أثناء النقل فيعمل منطق جودة الخدمة على إعادة توجيه حزم الصوت بسرعة أكبر من حزم البيانات الأخرى.

سنناقش في البداية قوائم التحكم في الوصول (ACL)  والمستخدمة لتصفية الحزم مع التركيز على موضوع المواقع التي يجب تفعيلها فيها وكذلك الاتجاه الذي يتم من خلاله تمكين قوائم التحكم في الوصول (ACL) ومطابقة الحزم عن طريق الفحص واتخاذ الإجراء بعد مطابقة الحزمة.

 

موقع الـ ACL واتجاهها

يمكن لأجهزة توجيه Cisco تطبيق منطق ACL على الحزم عند النقطة التي تدخل فيها الحزم إلى المنفذ أو النقطة التي تخرج عندها من المنفذ. بمعنى آخر ترتبط قائمة التحكم بالوصول (ACL) بمنفذ وباتجاه تدفق الحزمة إما للداخل أو للخارج. أي أنه يمكن تطبيق قائمة التحكم بالوصول (ACL) للحزم الداخلة إلى جهاز التوجيه أو للحزم الخارجة من جهاز التوجيه.

تُظهر الأسهم الموجودة في الشكل أدناه المواقع التي يمكن تصفية الحزم فيها وهي في تدفقها من اليسار إلى اليمين في الشكل. فعلى سبيل المثال اذا اردنا السماح للحزم المرسلة بواسطة الجهاز A إلى الخادم S1 ولكننا أردنا تجاهل الحزم المرسلة من الجهاز B إلى الخادم S1. فهنا يمثل كل سهم في الشكل موقع واتجاه يمكن لجهاز التوجيه أن يطبق فيه قائمة ACL بهدف تصفية الحزم المرسلة بواسطة الجهاز B.

تشير الأسهم الأربعة في الشكل إلى موقع واتجاه منافذ أجهزة التوجيه المستخدمة لإعادة توجيه الحزمة من الجهاز B إلى الخادم S1. ففي هذا المثال تكون هذه المنافذ والاتجاهات واردة على منفذ F0/0 في جهاز التوجيه R1 R وصادرة من المنفذ S0/0/0 الخاص بـ R1 ومن ثم متجة إلى المنفذ S0/0/1 الخاص بـ R2 وصادرة من المنفذ F0/0 الخاص بـ R2.

فعلى سبيل المثال إذا تم تمكين قائمة التحكم بالوصول (ACL) على المنفذ F0/1 الخاص بـ R2 في أي من الاتجاهين فمن المحتمل ألا تتمكن قائمة التحكم بالوصول (ACL) هذه من تصفية الحزمة المرسلة من المضيف B إلى الخادم S1، لأن واجهة F0/1 الخاصة بـ R2 ليست جزءًا من المسار من B إلى S1.

وباختصار فلتصفية حزمة ما يجب تمكين قائمة التحكم بالوصول (ACL) على المنفذ الذي يعالج هذه الحزمة وفي نفس الاتجاه الذي تتدفق فيه الحزمة عبر ذلك المنفذ.

وبعد تمكينه يقوم جهاز التوجيه بمعالجة كل حزمة واردة أو صادرة باستخدام قائمة التحكم بالوصول (ACL). فمثلاً إذا تم تمكينه على R1 للحزم الواردة على المنفذ F0/0 فسيقوم R1 بمقارنة كل حزمة واردة على F0/0 بقائمة التحكم بالوصول (ACL) لتحديد مصير تلك الحزمة فإما الاستمرار في طريقها ودون تغيير وإما ايقافها والتخلص منها.

 

الحزم المطابقة للقوائم ACL

عند التفكير في تحديد موقع واتجاه قائمة ACL يجب النظر في الحزم التي يراد تصفيتها والتخلص منها والحزم الأخرى التي يراد السماح لها بالمرور وذلك لأجل إخبار جهاز التوجيه بهذه الأفكار لأنه يجب إعداد جهاز التوجيه باستخدام ACL التي تطابق الحزم. يشير مفهوم (تطابق الحزم) إلى كيفية إعداد أوامر ACL ليتم النظر في جميع الحزم ومقارنتها ببعض الأمور المتضمنة في إعدادات ACL والتي توضح آلية تحديد الحزم التي يجب التخلص منها ومنعها والحزم التي يجب السماح لها بالمرور.

تتكون كل قائمة ACL من أمر إعداد واحد أو أكثر بحيث يدرج في كل أمر تفاصيل محددة حول القيم التي يجب البحث عنها داخل الحزمة. بشكل عام يستخدم أمر ACL منطق مثل “ابحث عن هذه القيم في رأس الحزمة وإذا وجدتها فتجاهل الحزمة ولا تمررها” وقد يكون الإجراء على العكس من ذلك أي السماح للحزمة بدلاً من تجاهلها.

تبحث قائمة التحكم بالوصول (ACL) عن حقول الرأس (Header) التي يجب أن تعرفها بما في ذلك عناوين الـ IP المصدر والوجهة وكذلك أرقام منافذ الـ TCP والـUDP.

مثلاً الشكل أدناه حيث أردنا السماح للحزم من الجهاز A إلى الخادم S1  بينما أردنا تجاهل الحزم من الجهاز B المتوجهة إلى نفس الخادم. جميع الأجهزة لديها الآن عناوين IP ويظهر الشكل فكرة توضيحية لقائمة التحكم بالوصول (ACL) على R2. ويبين كذلك الموقع المختار لتمكين قائمة التحكم بالوصول (ACL): وهي الحزم الواردة (inbound) على المنفذ S0/0/1 الخاص بـ R2.

يوضح الشكل السابق قائمة ACL مكونة من سطرين في المستطيل بالأسفل مع منطق المطلوب للمطابقة: كلا العبارتين تبحث عنما يطابقهما مع عنوان الـ IP المصدر في الحزمة. فعند إعداده يبحث R2 في كل حزمة واردة على ذلك المنفذ ويقارن كل حزمة بهذين السطرين من الـ ACL. وعليه سيُسمح بالحزم المرسلة من الجهاز A عنوان IP المصدر 10.1.1.1 وسيتم تجاهل الحزم المرسلة من الجهاز B عنوان IP المصدر 10.1.1.2

 

اتخاذ الإجراءات عند تطابق الحزمة مع ACL

عند استخدام قوائم ACL لتصفية الحزم يمكن اختيار إجراء واحد فقط من الإجراءين  التاليين : الرفض (deny) أو السماح (permit) وهما يعنيان تجاهل الحزمة أو السماح لها بالمرور كما لو أن قائمة التحكم بالوصول (ACL) غير موجودة.

سنركز هنا على استخدام قوائم ACL لغرض تصفية الحزم فقط في حين أن نظام تشغيل أجهزة سيسكو IOS يستخدم قوائم ACL للعديد من الميزات الأخرى.

 

أنواع قوائم التحكم في الوصول (ACL)

يدعم Cisco IOS قوائم ACL منذ الأيام الأولى لأجهزة التوجيه حيث كانت قوائم ACL تعتمد الترقيم القياسي (Standard numbered) في نظام IOS ثم أضافت Cisco العديد من ميزات ACL حتى شملت ما يلي:

قوائم ACL الرقمية القياسية (Standard numbered) من1 إلى 99.

قوائم ACL الرقمية الممتدة (Extended numbered) من100 إلى 199.

أرقام ACL إضافية (قياسية 13001999، ممتدة 20002699).

قوائم ACL المسماة.

إمكانية التعديل والتحرير باستخدام أرقام التسلسل للقوائم.

 

سنبدأ الحديث عن قوائم ACL الرقمية القياسية بينما نناقش لاحقاً الفئات الأساسية الثلاثة الأخرى لقوائم ACL. باختصار نستطيع إما ترقيم قوائم ACL أو تسميتها بحيث يحدد الإعداد قائمة ACL إما باستخدام رقم خاص بها أو اسم خاص بها وكذلك نستطيع جعل قوائم ACL إما قياسية أو ممتدة حيث تتمتع قوائم ACL الممتدة بقدرات أكثر وعناصر مطابقة أكثر في الحزم. يلخص الشكل أدناه النظرة العامة بفئات قوائم ACL.

قوائم ACL الرقمية القياسية

يتناول هذا القسم نوع قوائم ACL التي تبحث عن التطابق فقط مع عنوان IP المصدر للحزمة وهو النوع القياسي (Standard) وهو معد لتحديد قائمة التحكم بالوصول (ACL) عن طريق الترقيم بدلاً من التسمية ولذلك سميت بالرقمية (Numbered).

أولاً سنوضح فكرة أن أحد الـ (ACL) تعتبر قائمة وسنوضح ما هو المنطق الذي تستخدمه تلك القائمة. بعد ذلك سنتعرف على كيفية مطابقة حقل عنوان IP المصدر في رأس الحزمة بما في ذلك التعرف على بنية وتركيب الأوامر الخاصة بذلك.

 

قائمة المنطق مع قوائم IP ACL

تعتبر قائمة التحكم بالوصول (ACL) كيان واحد وفي نفس الوقت تمثل قائمة مكونة من أمر واحد أو أكثر من أوامر الإعداد. وككيان واحد يمكن الإعداد قائمة التحكم بالوصول (ACL) بالكامل على منفذ محدد وفي اتجاه أيضاً محدد كما هو موضح في الشكل السابق.

كقائمة من الأوامر من المنطقي أن يكون لكل أمر جزء مطابقة مختلف عن الآخر بحيث يجب أن يطبقه جهاز التوجيه على كل حزمة عند التصفية باستخدام قائمة التحكم بالوصول (ACL).

وعند إجراء معالجة ACL يقوم جهاز التوجيه بمعالجة الحزمة ومقارنتها بالـ ACL، كما يلي:

تستخدم قوائم ACL منطق (أول مطابقة) فبمجرد أن تتطابق الحزمة مع سطر واحد في قائمة ACL يتخذ جهاز التوجيه الإجراء المدرج في هذا السطر من قائمة ACL ويتوقف عن الاستمرار في البحث في بقية قائمة ACL.

لتوضيح ذلك أنظر في المثال في الشكل أدناه بحيث يوضح الشكل مثالاً لـ ACL 1 تحوي ثلاثة أسطر بحيث تطبق قائمة ACL 1 على المنفذ  S0/0/1في الجهاز .R2

خذ بعين الاعتبار منطق ACL (أول مطابقة) للحزمة المرسلة بواسطة الجهاز A إلى الخادم S1. سيكون عنوان IP المصدر هو 10.1.1.1 ، وسيتم توجيهه بحيث يدخل إلى واجهة S0/0/1  في R2 والذي سيؤدي إلى تشغيل منطق ACL 1 الخاص بـ R2. حينها يقارن R2 هذه الحزمة بقائمة التحكم بالوصول ويقوم بالنظر في مدى مطابقة العنصر الأول في القائمة ليقوم بإجراء الـ (permit) لها ويقوم بالسماح لهذه الحزمة بالمرور كما هو موضح في الشكل أدناه على اليسار.

بعد ذلك أنظر في الحزمة المرسلة من قبل الجهاز B صاحب عنوان الـ IP التالي 10.1.1.2 عندما تدخل الحزمة إلى واجهة  S0/0/1في R2 والذي يقوم بمقارنة الحزمة بالعنصر الأول لـ ACL 1 وحيث لا تطابق أي أن 10.1.1.1  لا يساوي 10.1.1.2 ثم ينتقل R2 إلى المقارنة بالعنصر الثاني والذي يتطلب بعض التوضيح. يُظهر العنصر الثاني لـ ACL عنوان الـ IP التالي 10.1.1.x  والذي يقصد منه أن يكون اختصارًا لفكرة إمكانية وجود أي قيمة في الثمانية (Octet) الأخيرة. وبالتالي عند مقارنة الثمانيات الثلاث الأولى فقط يقرر R2 أن هذه الحزمة الأخيرة تحتوي على عنوان IP مصدر يبدأ بالثمانيات الثلاثة الأولى 10.1.1 لذلك يعتبر R2 أن الحزمة مطابقة للعنصر الثاني فيأخذ R2 الإجراء المدرج أمامه وهي الرفض (deny) والتجاهل لهذه الحزمة ويقوم R2 أيضاً بإيقاف الاستمرار في معالجة الحزمة ومقارنتها ببقية عناصر قائمة التحكم بالوصول (ACL) أي آنها تتجاهل السطر الثالث في قائمة عناصر التحكم بالوصول (ACL).

 

وأخيرًا لننظر في الحزمة المرسلة من الجهاز C أيضاً إلى الخادم S1 حيث تحتوي الحزمة على عنوان IP  التالي 10.3.3.3 لذلك عندما تدخل إلى واجهة S0/0/1 في R2 ويبدأ تشغيل معالجة الـ ACL على R2 والذي ينظر إلى العنصر الأول في ACL 1 . R2 لا يرى تطابق مع عنصر ACL الأول لأن (10.1.1.1 في العنصر لا يساوي 10.3.3.3 الحزمة). حينها ينظر R2 إلى العنصر الثاني ويقارن الثمانيات الثلاثة الأولى (10.1.1) بعنوان IP لمصدر الحزمة (10.3.3) ولا يجد أيضاً أي تطابق ثم ينتقل لينظر إلى العنصر الثالث وفي هذه الحالة يتم تجاهل الثمانيات الثلاث الأخيرة ومقارنة الثمانية الأولى فقط وهي (10) ولأنها تتطابق مع الحزمة يتخذ R2 الإجراء المدرج أمامها وهو السماح (permit) والذي يسمح للحزمة بالاستمرار.

 

يحدث هذا التسلسل لمعالجة قائمة ACL كقائمة لأي نوع من أنواع لوائح التحكم بالوصول سواءً القياسية أو الموسعة وسواءً المسماة أو المرقمة.

وأخيرًا، إذا لم تتطابق الحزمة مع أي من العناصر الموجودة في قائمة التحكم بالوصول (ACL) فسيتم تجاهل الحزمة والسبب هو أن كل قائمة تحكم في الوصول تحتوي على (deny all) والمضمن في نهاية كل قائمة من قوائم التحكم في الوصول (ACL) بشكل افتراضي منطقي بمعنى أنها غير موجودة في فعلياً في الإعداد ولكن إذا استمر جهاز التوجيه في البحث في قائمة العناصر ولم يجد أي تطابق وصولاً إلى نهاية القائمة فإن IOS سيعتبر أن الحزمة قد تطابقت مع عنصر يحتوي على إجراء الرفض.

 

منطق المطابقة وبنية جملة   الـ ACL

تستخدم قوائم ACL المرقمة القياسية الأمر العام التالي:

تحتوي كل قائمة ACL مرقمة قياسية على عنصر واحد أو أكثر من أوامر قائمة الوصول تحمل نفس الرقم ويمكن أن يكون أي رقم ضمن النطاقات الموضحة في السطر أعلاه والخاص ببنية الجملة مع الأخذ في الاعتبار أنه لا يوجد أي أفضلية لرقم على رقم آخر.

بالإضافة إلى رقم ACL تحوي بنية الجملة أيضًا الإجراء السماح أو الرفض (permit or deny) بالإضافة إلى ما سبق يتناول الجزء المتبقي من بنية الجملة كيفية تكوين معلمات المطابقة والتي تعني بالنسبة لقوائم ACL القياسية مطابقة عنوان IP المصدر أو أجزاء محددة من عنوان IP المصدر وذلك باستخدام ما يسمى بالـ (wildcard mask).

 

مطابقة عنوان IP محدد

لمطابقة عنوان IP مصدر محدد نقوم بكتابة عنوان الـ IP هذا في نهاية جملة الأمر. فعلى سبيل المثال يستخدم المثال السابق المنطق “السماح إذا كان عنوان المصدر هو 10.1.1.1” وهنا يقوم الأمر التالي بإعداد هذا المنطق باستخدام بناء الجملة الصحيح باستخدام رقم ACL 1:

بهذه البساطة تكون مطابقة عنوان IP المحدد.

في إصدارات IOS السابقة كان بناء الجملة يتضمن وضع كلمة رئيسية في الجملة السابقة وهي (host). فبدلاً من مجرد كتابة عنوان IP المحدد نقوم أولاً بكتابة (host) ثم عنوان IP فكانت تكتب بهذا الشكل :

تحديد مجموعة فرعية من عنوان الـ IP باستخدام الـ (wildcard mask)

في كثير من الأحيان لا تتطابق الأهداف التي نريد تنفيذها باستخدام قائمة التحكم بالوصول (ACL) مع عنوان IP محدد وواحد بل تتطابق مع نطاق من عناوين IP. فربما مثلاً أردنا تحديد كافة عناوين IP الموجودة في شبكة فرعية وربما أردنا تحديد جميع عناوين IP في نطاق محدد من الشبكات الفرعية وبغض النظر عن التفاصيل فنحن نريد في بعض الحالات التحقق من وجود أكثر من عنوان IP واحد في نطاق من العناوين.

 

يسمح نظام التشغيل IOS لقوائم ACL القياسية بمطابقة نطاق من العناوين باستخدام أداة تسمى (wildcard mask) ولاحظ أن هذا ليس هو قناع الشبكة فرعية. يمنح wildcard mask والذي سنختصره لاحقاً بـ WC للمهندس طريقة لإخبار نظام التشغيل أن يقوم بتجاهل أجزاء من العنوان عند إجراء المطابقة والتعامل بشكل أساسي مع تلك الأجزاء كما لو كانت متطابقة بالفعل.

يمكن النظر في الـ WC من خلال النظام العشري والنظام الثنائي ولكل منهما استخداماته. وفي البداية للنظر لـ WC من خلال النظام العشري فباستخدام القواعد التالية:

الرقم 0: تعني أنه يجب على جهاز التوجيه مقارنة هذه الثمانية (Octet) كالمعتاد.

الرقم 255: تعني تجاهل جهاز التوجيه لهذه الثمانية (Octet) معتبراً أنها متطابقة بالفعل.

فمع وضع هاتين القاعدتين في الاعتبار انظر للشكل أدناه والذي يوضح هذا المنطق باستخدام ثلاثة أقنعة WC مختلفة ولكنها شائعة الاستخدام أحدهم يخبر جهاز التوجيه بتجاهل الثمانية الأخيرة والآخر يخبر جهاز التوجيه بتجاهل الثمانيتين الأخيرتين والأخير الذي يخبر جهاز التوجيه بتجاهل الثماني الثلاث الأخيرة.

تُظهر الأمثلة الثلاثة في المربعات الموجودة أعلاه رقمين مختلفين بشكل واضح يهدف قناع WC إلى جعل نظام التشغيل يقوم بمقارنة بعض الثمانيات ويتجاهل الثمانيات الأخرى. فيوضح المثال الموجود على اليسار قناع WC 0.0.0.255 والذي يجعل جهاز التوجيه يقوم بمعاملة الثمانية الأخيرة كمتغير ويتجاهل تلك الثمانية تماماً عند إجراء المقارنات. بينما يوضح المثال الأوسط قناع الـ WC 0.0.255.255 والذي يجعل جهاز التوجيه بتجاهل الثمانيتين الموجودتين على اليمين ولا يلتفت لهما أثناء المقارنات بينما تُظهر الحالة الثالثة في أقصى اليمين قناع الـ WC 0.255.255.255 مما يجعل جهاز التوجيه يتجاهل الثمانيات الثلاث الأخيرة عند المقارنة.

 

لرؤية كيفية عمل قناع WC تأمل مرة أخرى في المثال السابق والمتعلق بالشكل أدناه لاحظ أن المنطق المستخدم في قائمة التحكم بالوصول (ACL) تتضمن ما يلي:

 

السطر 1: مطابقة جميع الحزم والسماح لها بشرط أن يكون عنوان الـ IP للمصدر هو 10.1.1.1 بالتحديد.

السطر 2: مطابقة ورفض كافة الحزم ذات عناوين الـ IP للمصدر ذات الثمانيات الثلاثة الأولى التالية 10.1.1

السطر 3: مطابقة جميع العناوين والسماح لها بشرط أن تكون أول ثمانية هي 10

يوضح الشكل أدناه الإصدار المحدث من الشكل السابق والذي يحوي بناء الجملة بشكلها الصحيح والمكتمل بما في ذلك أقنعة WC. لاحظ استخدام قناع الـ WC 0.0.0.255 في الأمر الثاني وجعل R2 يتجاهل الثمانية الأخيرة من العنوان 10.1.1.0 وقناع الـ WC 0.255.255.255 في الأمر الثالث وجعل R2 يتجاهل الثلاثة الأخيرة الثمانيات في القيمة 10.0.0.0

من المهم ملاحظة أنه عند استخدام قناع WC يجب أن تكون الثمانية الخاصة بعنوان المصدر والمحددة بشكل ثابت لأمر لائحة التحكم بالوصول تساوي الرقم 0 بينما أي ثمانية في قناع WC تحوي الرقم 255 سيفهم IOS أن عنوان المصدر للأجزاء المقابلة لها سيتم تجاهلها ولن يهتم بمطابقتها.

 

الـ (wildcard mask) من منظور الارقام الثنائية

تمثل أقنعة WC والمكتوبة كأرقام عشرية في الواقع أرقاماً ثنائية مكونة من 32 بت. بحيث يقوم قناع WC بتوجيه منطق جهاز التوجيه للعمل على النحو التالي إذا كان البت في قناع WC يساوي 0 فهذا يعني أن المقارنة يجب أن تتم كالمعتاد لكن إذا كان البت يساوي 1 فهذا يعني أن البت عبارة عن wildcard ويمكن تجاهله عند مقارنة الأرقام.

 

وبالنسبة لمعظم تطبيقات العالم الحقيقي والميدان الفعلي يتم تجاهل قناع WC ذي النظام الثنائي لأننا غالباً ما نريد مطابقة نطاق من العناوين والتي يمكن التعرف عليها بسهولة من خلال رقم الشبكة الفرعية والقناع فإذا كان بالإمكان وصف نطاق العناوين باستخدام رقم شبكة فرعية والقناع فيمكن العثور على الأرقام المستخدمة في قائمة التحكم بالوصول (ACL) وذلك من خلال بعض العمليات الحسابية العشرية البسيطة والتي سيتم مناقشتها لاحقاً.

 

العثور على قناع Wildcard المناسب لمطابقة الشبكة الفرعية

في كثير من الحالات تحتاج قائمة التحكم بالوصول (ACL) إلى مطابقة جميع الأجهزة في شبكة فرعية معينة ولفعل ذلك يمكن استخدام الاختصار التالي:

استخدم عنوان الشبكة الفرعية المصدر في أمر قائمة التحكم.

استخدم قناع WC والذي يمكن إيجاده عن طريق طرح قناع الشبكة الفرعية من 255.255.255.255

 فمثلاً بالنسبة للشبكة الفرعية 172.16.8.0 255.255.255.0 استخدم عنوان الشبكة الفرعية (172.16.8.0) كعنوان للمصدر ، ثم قم بإجراء العمليات الحسابية التالية للعثور على قناع WC:

وعليه سيكون الأمر المكتمل لنفس الشبكة الفرعية كما يلي:

‏لقطة الشاشة ١٤٤٥-٠٢-٢٦ في ١٠.٤٥.٠١ ص

مطابقة جميع العناوين

في بعض الحالات نحتاج إلى أمر ACL واحد لمطابقة جميع الحزم التي تصل إلى تلك النقطة في قائمة ACL. فأولاً يجب معرفة الطريقة البسيطة لمطابقة جميع الحزم باستخدام الكلمة الأساسية Any والأهم من ذلك معرفة متى تستخدم هذه الكلمة.

لمطابقة جميع الحزم باستخدام أمر ACL نحتاج فقط استخدام الكلمة (Any) للإشارة إلى أي عنوان فعلى سبيل المثال نستخدم الأمر أدناه للسماح لجميع الحزم:

‏لقطة الشاشة ١٤٤٥-٠٢-٢٦ في ١٠.٥٧.٢٣ ص

والسؤال المهم هو متى وأين يجب استخدام هذا الأمر؟ في البداية تذكر أن جميع قوائم ACL تنتهي برفض ضمني كما ذكرنا مسبقاً. بمعنى أنه إذا قام جهاز التوجيه بمقارنة حزمة ما بقائمة التحكم بالوصول (ACL) ولم تتطابق الحزمة مع أي من العبارات التي تم إعدادها فإن جهاز التوجيه يتجاهل الحزمة وعليه فعند الرغبة في تجاوز هذا السلوك الافتراضي يجب إعداد تصريح للجميع في نهاية ACL.

 

قد نرغب أيضاً في بعض الأحيان أن يكون الأمر يرفض بشكل صريح حركة المرور للكل (على سبيل المثال access-list 1 deny any) وذلك في نهاية قائمة التحكم بالوصول (ACL). والسؤال لماذا نفعل ذلك ونفس هذا المنطق موجود بالفعل في نهاية قائمة التحكم بالوصول (ACL) بشكل تلقائي؟ السبب في ذلك هو أن أوامر show الخاصة بالـ ACL تظهر عدادات تحسب عدد الحزم المطابقة لكل أمر في قائمة ACL ولكنها لا تحسب عدد الرفض الضمني في نهاية قائمة ACL وعليه عند الرغبة في رؤية عدد الحزم المطابقة لمنطق الرفض في نهاية قائمة التحكم بالوصول (ACL) فيجب إعداده بشكل صريح (deny any) بدلاً من الوضع الضمني.

 

تنفيذ قوائم ACL القياسية

يجمع ويلخص هذا القسم ما تم الإشارة إليه سابقاً فيما يخص إعداد لوائح أو قوائم التحكم في الوصول. سنوضح أكثر الأمر (access-list)، والذي تم الاتفاق أن تكون بنيته على الشكل:

الخطوة 1: قم بتحديد الموقع واختيار جهاز التوجيه وأي منفذ على ذلك الجهاز وكذلك الاتجاه بتحديد الحزم الداخلة للمنفذ أو الخارجة منه:

أ. يجب وضع لوائح ACL القياسية بالقرب من وجهة الحزم بحيث لا ترفض عن غير قصد الحزم التي يجب ألا ترفض.

ب. نظراً لأن لوائح ACL القياسية لا تفحص إلا عنوان IP المصدر للحزمة حدد بدقة عناوين IP المصدر للحزم أثناء سيرها في الاتجاه الذي تفحصه قائمة ACL.

الخطوة 2: قم بإعداد واحد أو أكثر من الأوامر لإنشاء قائمة التحكم بالوصول (ACL) مع مراعاة ما يلي:

أ. أنه سيتم البحث في القائمة بشكل تسلسلي باستخدام منطق أول مطابقة.

ب. وجود الإجراء الافتراضي في حال كانت الحزمة لا تتطابق مع أي من الأوامر وهو رفض (deny) الحزمة.

الخطوة 3: قم بتمكين قائمة التحكم بالوصول (ACL) على منفذ جهاز التوجيه المختار وفي الاتجاه الصحيح باستخدام الأمر التالي على المنفذ:

ip access-group number {in | out}

مثال رقم 1: قائمة التحكم بالوصول (ACL) القياسية

 

يوضح المثال الأول الإعداد لنفس المتطلبات الموضحة في المثال السابق وهي كما يلي:

1. قم بتمكين قائمة التحكم بالوصول (ACL) الواردة على المنفذ S0/0/1 الخاص بـ R2.

2. اسمح بالحزم القادمة من الجهاز A

3. ارفض الحزم القادمة من الجهازين الآخرين في الشبكة الفرعية للجهاز A

4. اسمح بالحزم القادمة من أي عنوان آخر في الشبكة من الفئة A 10.0.0.0

5. ولأن المثال لم يقدم أي تعليق حول ما يجب فعله افتراضيًا قم ببساطة برفض كل حركة المرور الأخرى.

يمثل المثال أعلاه طريقة الإعداد الصحيح والمكتمل من البداية متبوعاً بالأمر show Running-config ومخرجات هذا الأمر.

 

لاحظ في المثال أعلاه أن أمر (access-list) لم يغير حالة موجه الأوامر وأبقاه كما هو على وضع الإعداد العام وذلك لأن أمر قائمة الوصول هو أمر تكوين عام. انظر أيضاً في مخرجات الأمر show Running-config ستلاحظ أن التفاصيل متطابقة عند مقارنتها بالأوامر التي تمت إضافتها في وضع الاعداد العام. لاحظ أخيراً الأمر ip access-group 1 in والمطبق على المنفذ S0/0/1 الخاص بـ R2 والذي يوضح منطق ACL فيظهر الموقع والاتجاه.

يوضح المثال أدناه بعض المخرجات من جهاز التوجيه R2 والتي تعرض معلومات حول قائمة التحكم بالوصول (ACL) التي تمت فيظهر الأمر show ip Access-lists تفاصيل حول قوائم ACL فقط بينما يظهر الأمر show Access-lists تفاصيل حول قوائم ACL بالإضافة إلى أي أنواع أخرى من قوائم ACL التي تم تكوينها مثل قوائم IPv6 ACL لو كان هناك منها شيئ.

تُظهر مخرجات هذه الأوامر عنصرين جديرين بالملاحظة فيشير السطر الأول في هذه الحالة إلى النوع القياسي (standard) والرقم ولو كان هناك أكثر من قائمة ACL واحدة فستظهر مقاطع متعددة من المخرجات بحيث سيكون هناك واحدة لكل قائمة ACL ولكل منها سطر مثل هذا. لاحظ أيضاً أن هذه الأوامر تُظهر عدد الحزم التي قام جهاز التوجيه بمطابقتها مع كل أمر. فعلى سبيل المثال تطابقت 107 حزمة حتى الآن مع السطر الأول في قائمة التحكم بالوصول (ACL).

 

وأخيرًا يوجد في نهاية المثال مخرجات الأمر show ip Interface والذي يُظهر من بين العديد من العناصر الأخرى رقم أو اسم قائمة ACL التي تم إعدادها على المنفذ باستخدام الأمر (ip access-group)

 

مثال رقم 2: قائمة التحكم بالوصول (ACL) المرقمة القياسية

انظر للشكل أدناه وتخيل أن رئيسك في العمل أعطاك بعض المتطلبات على عجل وقال إنه يريد تصفية الحزم المنتقلة من الخوادم الموجودة على اليمين نحو العملاء الموجودين على اليسار. ثم يقول إنه يريد منك السماح بالوصول للجهازين A وB والأجهزة الأخرى في نفس الشبكة الفرعية الخاصة بهم إلى الخادم S1 مع رفض الوصول إلى هذا الخادم في الشبكة الفرعية للجهاز C. وبعد ذلك يطلب منك بالإضافة إلى ذلك رفض وصول الأجهزة في الشبكة الفرعية للجهاز A إلى الخادم S2 مع السماح للجهاز C بالوصول إلى الخادم S2 وكل ذلك عن طريق تصفية الحزم التي تنتقل من اليمين إلى اليسار فقط. ثم يطلب بعد ذلك وضع قائمة التحكم بالوصول (ACL) للحزم الداخلة إلى المنفذ F0/0 الخاص بـ R2.

عند تلخيص جميع تلك الطلبات من رئيسك فقد تختصر إلى ما يلي:

1. مكّن قائمة التحكم بالوصول (ACL) للحزم الواردة إلى منفذ F0/0 الخاص بـ R2.

2. اسمح للحزم القادمة من الخادم S1 بالوصول إلى الأجهزة الموجودة في الشبكة الفرعية لـ A.

3. ارفض الحزم القادمة من الخادم S1 والمتوجهة إلى الأجهزة في الشبكة الفرعية لـ C.

4. اسمح للحزم القادمة من الخادم S2 بالوصول إلى الأجهزة في الشبكة الفرعية لـ C.

5. ارفض الحزم القادمة من الخادم S2 والمتوجهة إلى الأجهزة في الشبكة الفرعية لـ A.

6. ولأنه لم يكن هناك أي تعليق حول ما يجب فعله بشكل افتراضي استخدم الرفض الضمني لكل الإعدادات الافتراضية.

عند التأمل في ما طلبه رئيسك ستجد أنه لا يمكنك تحقيق كل ما يطلبه من خلال قائمة ACL القياسية. فعلى سبيل المثال الأمر المتعلق بالمتطلب رقم 2: access-list 2 permit 10.2.2.1 سيسمح لجميع حركة المرور التي يكون مصدر IP الخاص بها هو 10.2.2.1 وهو الخادم S1  بينما يطلب منك المتطلب التالي أي الثالث رفض (deny) الحزم القادمة من نفس عنوان IP وحتى لو قمت بإضافة أمر آخر للتحقق من عنوان IP المصدر 10.2.2.1 فلن يتمكن جهاز التوجيه من الوصول إليه أبدًا لأن أجهزة التوجيه تستخدم منطق أول مطابقة عند البحث في قائمة التحكم بالوصول (ACL). والمشكلة هنا أنه لا يمكننا التحقق من عنوان IP الوجهة والمصدر لأننا نستخدم لوائح التحكم في الوصول ACL القياسية (standard) والتي لا يمكنها التحقق من عنوان IP الوجهة وإنما فقط المصدر.

 

لحل هذه المشكلة يجب إعادة التفكير في المشكلة وتغيير القواعد وفي الحياة الواقعية ربما نستخدم لوائح التحكم في الوصول ACL الموسعة (extended) مما يتيح التحقق من عنوان IP المصدر والوجهة.

 

ومن أجل تطبيق ACL قياسي آخر لنفترض أن رئيسك سمح لك بتغيير تلك المتطلبات. فأولاً ستستخدم اثنين من قوائم ACL الصادرة وكلاهما على جهاز التوجيه R1 بحيث ستسمح كل قائمة بإعادة توجيه حركة المرور من خادم واحد إلى شبكة LAN المتصلة مع هذه المتطلبات المعدلة التالية:

1. اسمح للحزم الخارجة من المنفذ F0/0 والخاصة بـ R1 بالمرور إذا كانت من الخادم S1 وارفض ما عدا ذلك.

2. اسمح للحزم الخارجة من المنفذ F0/1 والخاصة بـ R1 بالمرور إذا كانت من الخادم S2 وارفض ما عدا ذلك.

كما هو موضح في المثال السابق سيسمح الـ ACL 2 لجميع حركة المرور من الخادم S1 على أن يكون هذا المنطق للحزم الخارجة من المنفذ F0/0 الخاص بـ R1 وسيتم تجاهل كافة الحزم الأخرى بسبب الرفض الضمني للكل في نهاية قائمة التحكم بالوصول (ACL) بالإضافة إلى ذلك ستسمح الـ ACL 3 بحركة الحزم من الخادم S2 على أن يُسمح لهم بالخروج من منفذ F0/1 الخاص بـ R1 ولاحظ أيضاً وجود المعلمة access-list remark والتي تمكنا من ترك معلومات نصية مرتبطة مع قائمة التحكم بالوصول (ACL) وتكون بمثابة مرجع لنا لمعرفة دور وعمل اللائحة.

 

استكشاف الأخطاء وإصلاحها والتحقق من الأداء

يتطلب استكشاف أخطاء قوائم ACL الخاصة بـ IPv4 وإصلاحها بعض الدخول في التفاصيل. وتحديداً عنوان IP وقناع WC والتأكد من العناوين المطابقة لهاتين المعلمتين المدمجتين. يمكن أن تساعد الأمثلة التدريبية القادمة في توضيح هذا الأمر. لكن يوجد هناك بعض النصائح والتوجيهات الأخرى التي يمكن أن تساعد في التحقق من مشكلات ACL واستكشاف أخطائها وإصلاحها أيضاً.

 

في البداية نستطيع معرفة ما إذا كان جهاز التوجيه طابق الحزم أم لا باستخدام بعض الأدوات ففي مثال سابق رأينا أن نظام IOS يحتفظ بإحصائيات حول الحزم المطابقة (matching) لكل سطر من قائمة ACL. بالإضافة إلى ذلك لو قمنا بإضافة الكلمة (log) في نهاية أمر قائمة الوصول فسيقوم IOS حينها بإصدار رسائل السجلات مصحوبة بإحصائيات حول مطابقات هذا السطر المحدد من قائمة التحكم بالوصول (ACL). يمكن أن تكون كل من الإحصائيات ورسائل السجل مفيدة في تحديد السطر الموجود في قائمة التحكم بالوصول (ACL) الذي سيتم مطابقته بواسطة الحزمة.

 

على سبيل المثال يعرض المثال أدناه نسخة محدثة من قائمة التحكم بالوصول ACL 2 من المثال السابق وهذه المرة مع إضافة الكلمة (log). ويُظهر الجزء السفلي من المثال بعد ذلك رسالة سجل نموذجية فيها المطابقة الناتجة بناءً على حزمة بعنوان IP المصدر 10.2.2.1 كما هو مطابق لـ ACL إلى عنوان الوجهة 10.1.1.1

في أي وقت تقوم فيه باستكشاف أخطاء قائمة التحكم بالوصول (ACL) وإصلاحها للمرة الأولى وقبل الدخول في تفاصيل منطق المطابقة خذ الوقت الكافي للتفكير في كل من المنفذ التي تم تمكين قائمة التحكم بالوصول (ACL) عليها واتجاه تدفق الحزمة كذلك. ففي بعض الأحيان يكون منطق المطابقة مثالياً ولكن تم تمكين قائمة التحكم بالوصول (ACL) على منفذ غير مناسب أو في الاتجاه الخاطئ.

 

على سبيل المثال يكرر الشكل أدناه نفس قائمة التحكم بالوصول (ACL) الموضحة في مثال سابق بحيث يتطابق السطر الأول من قائمة التحكم بالوصول (ACL) مع عنوان الجهاز المحدد 10.1.1.1 إذا كانت قائمة التحكم في الوصول (ACL) هذه موجودة على جهاز التوجيه R2 فإن وضع قائمة التحكم في الوصول هذه كقائمة واردة على المنفذ S0/0/1 الخاص بـ R2 يمكن أن يعمل لأن الحزم المرسلة بواسطة الجهاز 10.1.1.1 على الجانب الأيسر من الشكل يمكن أن تدخل المنفذ S0/0/1 الخاص بـ R2. إلا أنه لو تم تمكين هذه الـ (ACL) على المنفذ F0/0 الخاص بـ R2 بالنسبة للحزم الواردة فلن يحدث هنا تتطابق أبداً مع حزمة بعنوان IP للمصدر 10.1.1.1 لأن الحزم المرسلة بواسطة الجهاز 10.1.1.1 لن تدخل هذا المنفذ أبداً لأن الحزم المرسلة بواسطة الجهاز 10.1.1.1  ستخرج من المنفذ F0/0 الخاص بـ R2 لكنها لن تدخل إليه أبداً فقط بسبب بنية وهيكلة الشبكة.

تدرب على تطبيق قوائم IP ACL القياسية

تتطلب قوائم ACL التفكير في عناصر المطابقة لنطاقات من العناوين وهذا بالطبع يتطلب استخدام الرياضيات وبعض العمليات الحسابية.

في هذا القسم نستعرض بعض المشاكل والنصائح التدريبية وذلك من خلال إنشاء قوائم ACL قياسية من سطر واحد لمطابقة بعض الحزم وكذلك تفسير أوامر قائمة التحكم بالوصول (ACL) الموجودة لوصف الحزم التي ستطابقها قائمة التحكم بالوصول (ACL) وكلتا المهارتين مفيدة جداً للامتحانات.

 

تدرب على بناء أوامر قائمة التحكم بالوصول

تدرب على كيفية التعامل بشكل مريح مع بناء جملة أمر قائمة تحكم بالوصول. ستكون هذه المهارات مفيدة عند الوصول لقوائم ACL الموسعة أو الممتدة (extended) والمسماة (named) في المستقبل القريب.

تلخص القائمة التالية بعض النصائح المهمة التي يجب مراعاتها عند اختيار عناصر المطابقة لأي أمر في قائمة الوصول:

لمطابقة عنوان محدد ما عليك سوى إدراج العنوان.

لمطابقة جميع العناوين استخدم الكلمة (any).

للمطابقة بناءً على أول ثمانية أو اثنين أو ثلاث ثمانيات فقط من العنوان استخدم أقنعة WC 0.255.255.255 و0.0.255.255 و0.0.0.255 على التوالي.

لمطابقة شبكة فرعية استخدم عنوان الشبكة الفرعية كمصدر وابحث عن قناع WC عن طريق طرح قناع الشبكة الفرعية من 255.255.255.255

 

أمثلة للتطبيق:

Packets from 172.16.5.4

access-list 1 permit 172.16.5.4

Packets from hosts with 192.168.6 as the first three octets

access-list 2 permit 192.168.6.0  0.0.0.255

Packets from hosts with 192.168 as the first two octets

access-list 3 permit 192.168.0.0  0.0.255.255

Packets from any host

access-list 4 permit any

Packets from subnet 10.1.200.0/21

access-list 5 permit 10.1.200.0  0.0.7.255

Packets from subnet 10.1.200.0/27

access-list 6 permit 10.1.200.0  0.0.0.31

Packets from subnet 172.20.112.0/23

access-list 7 permit 172.20.112.0  0.0.1.255

Packets from subnet 172.20.112.0/26

access-list 8 permit 172.20.112.0  0.0.0.63

Packets from subnet 192.168.9.64/28

access-list 9 permit 192.168.9.64  0.0.0.15

Packets from subnet 192.168.9.64/30

access-list 9 permit 192.168.9.64  0.0.0.3

 

الهندسة العكسية من الـ ACL إلى نطاق العناوين

في بعض الحالات قد لا نقوم بإنشاء قائمة التحكم بالوصول (ACL) الخاصة بل بدلاً من ذلك قد نحتاج إلى تفسير بعض أوامر قائمة الوصول الموجودة. وللإجابة على هذ النوع من الأسئلة في الاختبارات نحتاج إلى تحديد نطاق عناوين IP المطابقة لمجموعة معينة من قناع عنوان IP وقناع WC في كل عبارة من عبارات ACL.

 

على سبيل المثال مع access-list 1 permit 172.16.200.0 0.0.7.255 فإن الحد الأدنى للنطاق هو ببساطة 172.16.200.0  وهو مأخوذ مباشرة من الأمر نفسه وبعد ذلك للعثور على الحد الأقصى للنطاق ما علينا سوى إضافة هذا الرقم إلى قناع WC كما يلي:

أمثلة للتطبيق:

للوائح التحكم بالوصول أدناه حدد العناوين أو نطاقات العناوين التي تغطيها هذه اللوائح

access-list 1 permit 10.7.6.5

One address: 10.7.6.5

access-list 2 permit 192.168.4.0 0.0.0.127

192.168.4.0 – 192.168.4.127

access-list 3 permit 192.168.6.0 0.0.0.31

192.168.6.0 – 192.168.6.31

access-list 4 permit 172.30.96.0 0.0.3.255

172.30.96.0 – 172.30.99.255

access-list 5 permit 172.30.96.0 0.0.0.63

172.30.96.0 – 172.30.96.63

access-list 6 permit 10.1.192.0 0.0.0.31

10.1.192.0 – 10.1.192.31

access-list 7 permit 10.1.192.0 0.0.1.255

10.1.192.0 – 10.1.193.255

access-list 8 permit 10.1.192.0 0.0.63.255

10.1.192.0 – 10.1.255.255

Leave a Comment

Your email address will not be published. Required fields are marked *

Verified by MonsterInsights