تحتوي قوائم التحكم بالوصول الممتدة أو الموسعة العديد من أوجه التشابه مقارنة بالمرقمة القياسية التي تمت مناقشتها في موضوع سابق. فهي تماماً مثلها في تمكين قوائم التحكم بالوصول على المنافذ وللحزم الداخلة للمنافذ أو الخارجة منها وتستخدم قوائم ACL الموسعة أيضاً منطق أول مطابقة كذلك أي أن جهاز التوجيه يوقف البحث في القائمة بمجرد مطابقة العبارة الأولى ويتخذ الإجراء المحدد في تلك العبارة.
تختلف قوائم ACL الموسعة عن قوائم ACL القياسية في التنوع الكبير في حقول رأس الحزمة التي يمكن استخدامها أثناء فحص ومطابقة الحزمة. فيمكن لعبارة ACL موسعة واحدة فحص أجزاء متعددة من رؤوس الحزمة مما يتطلب مطابقة جميع المعلمات بشكل صحيح لمطابقة العبارة وهذا المنطق القوي للمطابقة يجعل قوائم التحكم الوصول الموسعة أكثر فائدة وأكثر تعقيداً كذلك من قوائم ACL القياسية.
مطابقة البروتوكول وعنوان IP للمصدر وعنوان IP للوجهة
مثل قوائم ACL المرقمة القياسية تستخدم قوائم ACL المرقمة الموسعة أيضاً الأمر العام access-list في بناء الجملة على الأقل إلى حد الكلمة الرئيسية السماح (permit) أو الرفض (deny). إلا أنه يزيد بعد ذلك مقارنةً بقوائم ACL المرقمة القياسية بمعلمتين إضافيتين على عنوان IP المصدر وهما : نوع بروتوكول IP وعنوان IP الوجهة.
يوضح الشكل أدناه موقع حقل بروتوكول IP وبعض تفاصيل رأس IP.
يتطلب نظام IOS القيام بإعداد المعلمات للأجزاء الثلاثة المميزة في الشكل السابق فبالنسبة لنوع البروتوكول يمكن ببساطة استخدام كلمة مثل tcp أو udp أو icmp لمطابقة حزم IP التي تحتوي على رأس TCP أو UDP أو ICMP بعد رأس IP. أو يمكن استخدام الكلمة الأساسية ip والتي تعني “جميع حزم IPv4” ويجب أيضاً إضافة عنوان IP المصدر والوجهة ويبين الشكل أدناه بناء الجملة.
في الجدول أدناه نماذج لأوامر قائمة التحكم بالوصول والتي تستخدم المعلمات المطابقة المطلوبة.
What It Matches | access-list Statement |
أي حزمة IP تحتوي على رأس TCP | access-list 101 deny tcp any any |
أي حزمة IP تحتوي على رأس UDP | access-list 101 deny udp any any |
أي حزمة IP تحتوي على رأس ICMP | access-list 101 deny icmp any any |
جميع حزم IP من الجهاز 1.1.1.1 إلى الجهاز 2.2.2.2 بغض النظر عن البروتوكول الذي يلي رأس IP | access-list 101 deny ip host 1.1.1.1 host 2.2.2.2 |
جميع حزم IP التي تحتوي على رأس UDP يتبع رأس IP، من الشبكة الفرعية 1.1.1.0/24 وتنتقل إلى أي وجهة | access-list 101 deny udp 1.1.1.0 0.0.0.255 any |
يساهم المثال الأخير في الجدول في توضيح نقطة مهمة حول كيفية معالجة IOS لقوائم ACL الموسعة:
في أمر قائمة الوصول الموسعة لـ ACL يجب أن تتطابق كافة المعلمات مع الحزمة حتى تتطابق الحزمة مع الأمر.
على سبيل المثال في المثال الأخير من الجدول يتحقق الأمر من UDP وعنوان IP للمصدر من الشبكة الفرعية 1.1.1.0/24 وأي عنوان IP للوجهة. إذا تم فحص حزمة بعنوان IP للمصدر 1.1.1.1 فإنها ستطابق التحقق من عنوان IP المصدر ولكن إذا كانت تحتوي على رأس TCP بدلاً منUDP فلن تتطابق مع أمر قائمة الوصول هذه بمعنى أنه يجب أن تتطابق جميع المعلمات.
مطابقة أرقام منافذ TCP وUDP
يمكن لقوائم ACL الموسعة أيضاً فحص أجزاء من رؤوس TCP وUDP خاصة حقول رقم منفذ المصدر والوجهة ومن المعروف أن أرقام المنافذ تحدد التطبيق الذي يرسل البيانات أو يستقبلها. فالمنافذ الأكثر استخداماً والتي يجب التحقق منها هي المنافذ المعروفة والتي تستخدمها الخوادم. على سبيل المثال تستخدم خوادم الويب المنفذ 80 المعروف بشكل افتراضي. يوضح الشكل أدناه موقع أرقام المنافذ في رأس TCP بعد رأس IP.
عندما يتضمن أمر ACL الموسع إما tcp أو udp، يمكن أن يشير هذا الأمر بشكل اختياري إلى منفذ المصدر و/أو منفذ الوجهة ولإجراء هذه المطابقة يستخدم بناء الجملة كلمات أساسية لتحديد نطاق أرقام المنافذ وهي يساوي (eq) ولا يساوي (nq) وأقل من (lt) وأكبر من (gt) كما يمكن للأمر استخدام المنافذ بشكل أسمي بدلاً من الرقمي لبعض منافذ التطبيقات المعروفة ويوضح الشكل أدناه مواضع حقول منفذ المصدر والوجهة في أمر access-list والكلمات الأساسية لرقم المنفذ.
مثال: في الشبكة البسيطة الموضحة في الشكل أدناه يوجد خادم FTP على اليمين والعميل على اليسار يوضح الشكل بناء جملة قائمة التحكم بالوصول (ACL) الذي يطابق ما يلي:
■ الحزم التي تتضمن رأس TCP
■ الحزم المرسلة من الشبكة الفرعية للعميل
■ الحزم المرسلة إلى الشبكة الفرعية للخادم
■ الحزم ذات منفذ الوجهة 21 (وهو منفذ التحكم بخادم FTP)
لتحقيق المطابقة مع منفذ الوجهة وباستخدام المعلمة eq 21 ضع في اعتبارك نقل الحزم من اليسار إلى اليمين أي من PC1 إلى الخادم وبافتراض أن الخادم يستخدم المنفذ المعروف 21 (منفذ التحكم FTP) فإن رأس TCP الخاص بالحزمة له قيمة منفذ الوجهة 21. وعليه فيجب أثناء بناء جملة ACL وضع المعلمة eq 21 بعد عنوان IP للوجهة فهذا يحدد موضع مقارنة المعلمة eq 21 بمنفذ وجهة الحزمة. ونتيجة لذلك فإن عبارة ACL الموضحة في الشكل السابق سوف تتطابق مع هذه الحزمة ومنفذ الوجهة 21 إذا تم استخدامها في أي من المواقع الأربعة المشار إليها بالأسهم الأربعة في الشكل.
وعلى خلاف ذلك يوضح الشكل أدناه التدفق العكسي مع حزمة يرسلها الخادم مرة أخرى نحو PC1. ففي هذه الحالة يحتوي رأس TCP الخاص بالحزمة على منفذ مصدر هو 21 لذلك يجب على قائمة التحكم بالوصول (ACL) التحقق من قيمة منفذ المصدر البالغة 21 ويجب وضع قائمة التحكم بالوصول (ACL) على منفذ مختلف بحيث تتبع المعلمة eq 21 حقل عنوان المصدر وليس الوجهة.
عند فحص قوائم ACL التي تطابق أرقام المنافذ يجب أولاً مراعاة الموقع والاتجاه حيث سيتم تطبيق ACL. يحدد هذا الاتجاه ما إذا كان سيتم إرسال الحزمة إلى الخادم أم من الخادم. وحينها يمكن أن نقرر ما إذا كنّا بحاجة إلى التحقق من منفذ المصدر أو الوجهة في الحزمة. كمرجع يوضح الجدول أدناه العديد من أرقام المنافذ الشائعة وبروتوكولات وتطبيقات طبقة النقل الخاصة بها وتذكر أن بناء جملة أوامر قائمة التحكم بالوصول يقبل كلاً من أرقام المنافذ واسم البروتوكول الذي يعمل في ذلك المنفذ.
في الجدول أدناه أمثلة أوامر قائمة التحكم بالوصول التي تتطابق بناءً على أرقام المنافذ.
What It Matches | access-list Statement |
الحزم ذات رأس TCP وأي عنوان IP مصدر ومنفذ مصدر أكبر من 1023 وعنوان IP للوجهة هو 10.1.1.1 ومنفذ وجهة هو 23 | access-list 101 deny tcp any gt 1023 host 10.1.1.1 eq 23 |
نفس المثال السابق ولكن أي مع منفذ مصدر لأنه تم حذف هذه المعلمة في هذه الحالة | access-list 101 deny tcp any host 10.1.1.1 eq 23 |
نفس المثال السابق وقد تم استخدام الكلمة telnet بدلاً من المنفذ 23 | access-list 101 deny tcp any host 10.1.1.1 eq telnet |
أي حزمة تتبع الشبكة 1.0.0.0/8 وتستخدم UDP مع منفذ مصدر أقل من 1023مع أي عنوان IP للوجهة. | access-list 101 deny udp 1.0.0.0 0.255.255.255 lt 1023 any |
إعداد لوائح التحكم بالوصول ACL الموسعة
نظرًا لأن قوائم ACL الموسعة يمكن أن تتطابق مع العديد من الحقول المختلفة في حزمة IP لا يمكن تلخيص بناء جملة الأمر بسهولة في أمر عام واحد. ومع ذلك فإن الأمرين الموجودين في الجدول أدناه يلخصان خيارات بناء الجملة.
Description | Command |
الأمر العام لقوائم الوصول الرقمية الموسعة ونطاق الأرقام 100 -199 أو 2000 -2699 | access-list access-list-number {deny | permit} protocol source source-wildcard destination destination-wildcard [log | log-input] |
إصدار من أمر قائمة الوصول بمعلمات خاصة بـ TCP و UDP | access-list access-list-number {deny | permit} {tcp | udp} source source-wildcard [operator [port]] destination destination-wildcard [operator [port]] [established] [log] |
تتطابق عملية إعداد قوائم ACL الموسعة في الغالب مع تلك المستخدمة لقوائم ACL القياسية فيجب اختيار الموقع والاتجاه لتمكين قائمة التحكم بالوصول (ACL) وخاصة الاتجاه بحيث يمكن تحديد ما إذا كانت عناوين ومنافذ معينة ستكون المصدر أو الوجهة. فهنا نقوم بإعداد قائمة التحكم بالوصول (ACL) باستخدام الأمر access-list ثم نقوم باستخدام نفس أمر ip Access-group المستخدم مع قوائم ACL القياسية على المنفذ ، ومع ذلك فهناك بعض الاختلافات التالية التي يجب وضعها في الاعتبار:
■ ضع قوائم ACL الموسعة في أقرب مكان ممكن من مصدر الحزم التي سيتم تصفيتها سيؤدي ذلك إلى توفير النطاق الترددي.
■ تذكر أن كافة الحقول الموجودة في عبارة قائمة الوصول الواحدة يجب أن تتطابق مع الحزمة حتى يتم اعتبار الحزمة مطابقة للعبارة.
■ استخدم الأرقام 100–199 و2000–2699 في أوامر قائمة الوصول علماً بأنه لا يوجد رقم أفضل من الآخر.
مثال 1
يركز هذا المثال على فهم بناء الجملة الأساسية. في هذه الحالة تمنع قائمة التحكم بالوصول (ACL) وصول Bob إلى جميع خوادم FTP على شبكة Ethernet الخاصة بـ R1 كما ترفض وصول Larry إلى خادم الويب الخاص بالخادم 1. ويبين الشكل أدناه بنية الشبكة.
الإعدادات أدناه تمت على R1
تمنع عبارة ACL الأولى وصول Bob إلى خوادم FTP في الشبكة الفرعية 172.16.1.0 والعبارة الثانية تمنع Larry من الوصول إلى خدمات الويب على الخادم 1. وتسمح العبارة النهائية بكافة حركات المرور الأخرى.
بالتركيز على بناء الجملة ستجد هناك العديد من العناصر التي يجب ملاحظتها فأولاً يقع رقم قائمة الوصول لقوائم التحكم بالوصول الموسعة في النطاق من 100 إلى 199 أو من 2000 إلى 2699 وبعد السماح (permit) أو الرفض (deny) تحدد معلمة البروتوكول ما إذا كنت تريد التحقق من جميع حزم IP أو بروتوكولات محددة مثل TCP أو UDP. وفي مثالنا هذا يستخدم كل من FTP والويب بروتوكول TCP.
يستخدم هذا المثال المعلمة eq التي تعني “يساوي” للتحقق من أرقام منفذ الوجهة للتحكم في FTP (الكلمة المستخدمة ftp) وحركة مرور HTTP (الكلمة المستخدمة www). كما يمكن استخدام القيم الرقمية أيضاً (إذا كنت ستكتب eq 80 فهو مماثل لـ eq www).
يقوم هذا المثال بتمكين قائمة التحكم بالوصول (ACL) في مكانين على R1 هما المنافذ التسلسلية باتجاه الدخول للموجه R1 وكلى المنفذين يحققان هدف ACL. ومع ذلك تم اختيار المنفذ الأقرب للمصدر وفقاً للتوصيات التي تقترحها Cisco. لذلك يحقق الإعداد أدناه نفس هدف الإعداد السابق المتمثل في إيقاف وصول Bob إلى خوادم FTP في الموقع الرئيسي ويفعل ذلك باستخدام قائمة التحكم بالوصول (ACL) على R3.
يلبي الإعداد الجديد على R3 أهداف تصفية حركة مرور Bob ويلبي كذلك هدف التصميم الشامل المتمثل في إبقاء قائمة التحكم بالوصول (ACL) أقرب من مصدر الحزمة. تبدو قائمة ACL 103 على R3 تشبه إلى حد كبير قائمة ACL 101 على R1 من الإعداد الأسبق ولكن هذه المرة لا تهتم قائمة ACL بالتحقق من المعايير التي تتوافق مع حركة مرور Larry لأن حركة مرور Larry لن تدخل أبداً إلى منفذ Ethernet 0 الخاص بـ R3.
تقوم ACL 103 بتصفية حركة مرور FTP الخاصة بـ Bob إلى وجهات في الشبكة الفرعية 172.16.1.0/24 مع السماح بدخول كل حركة المرور الأخرى إلى واجهة E0 الخاصة بـ R3.
مثال 2
توضح الإعدادات أدناه والمستندة إلى الشبكة الموضحة في الشكل أدناه أيضاً مثالاً آخر لكيفية استخدام قوائم التحكم بالوصول الموسعة بحيث يُظهر المثال المعايير التالية:
■ لا يُسمح لـ Sam بالوصول إلى الشبكة الفرعية الخاصة بـ Bugs أو Daffy.
■ لا يُسمح للمضيفين الموجودين على شبكة Seville بالوصول إلى الأجهزة الموجودة على شبكة Yosemite.
■ يُسمح بالجميع فيما عدا ذلك.
يحل هذا الإعداد المشكلة من خلال عدد قليل من العبارات مع الالتزام بإرشادات تصميم Cisco المتمثلة في وضع قوائم ACL الموسعة في أقرب مكان ممكن من مصدر حركة المرور. تقوم قائمة التحكم بالوصول (ACL) بتصفية الحزم التي تدخل إلى المنفذ E0 الخاص بـ Yosemite وهو منفذ جهاز التوجيه الأول الذي تدخله الحزم المرسلة من Sam. فإذا تغير المسار بين Yosemite والشبكات الفرعية الأخرى مع مرور الوقت نتيجة للتوسع أو أي سبب فستظل قائمة ACL فعالة وسارية. كما أن التصفية التي يفرضها المتطلب الثاني (لمنع أجهزة الشبكة المحلية في Seville من الوصول إلى Yosemite) يتم استيفاؤها من خلال عبارة access-list الثانية فسيؤدي ذلك لإيقاف تدفق الحزم من الشبكة الفرعية الخاصة بـ Yosemite إلى الشبكة الفرعية في Seville إلى إيقاف الاتصال الفعال بين الشبكتين الفرعيتين. كما أنه كان من الممكن كذلك تشكيل المنطق المعاكس في Seville
تدرب على بناء أوامر قائمة الوصول
يوفر الجدول أدناه أمثلة تدريبية لفهم آلية صياغة أمر قائمة التحكم بالوصول الموسعة:
من عميل الويب 10.1.1.1 إلى خادم الويب في الشبكة الفرعية 10.1.2.0/24 |
access-list 101 permit tcp host 10.1.1.1 10.1.2.0 0.0.0.255 eq www or access-list 101 permit tcp host 10.1.1.1 gt 1023 10.1.2.0 0.0.0.255 eq www |
من عميل Telnet 172.16.4.3/25 إلى خادم Telnet في الشبكة الفرعية 172.16.3.0/25 قم بمطابقة جميع الأجهزة في الشبكة الفرعية للعميل أيضًا. |
access-list 102 permit tcp 172.16.4.0 0.0.0.127 172.16.3.0 0.0.0.127 eq telnet |
رسائل ICMP من الشبكة الفرعية التي يوجد بها 192.168.7.200/26 إلى كافة الأجهزة في الشبكة الفرعية حيث يوجد 192.168.7.14/29 |
access-list 103 permit icmp 192.168.7.192 0.0.0.63 192.168.7.8 0.0.0.7 |
من الشبكة الفرعية لخادم الويب 10.2.3.4/23 إلى العملاء في نفس الشبكة الفرعية مثل الجهاز 10.4.5.6/22 |
access-list 104 permit tcp 10.2.2.0 0.0.1.255 eq www 10.4.4.0 0.0.3.255 |
من الشبكة الفرعية لخادم Telnet 172.20.1.0/24 إلى أي جهاز في نفس الشبكة الفرعية مثل الجهاز 172.20.44.1/23 |
access-list 105 permit tcp 172.20.1.0 0.0.0.255 eq 23 172.20.44.0 0.0.1.255 |
من عميل الويب 192.168.99.99/28 إلى خادم الويب في الشبكة الفرعية 192.168.176.0/28 قم بمطابقة جميع الأجهزة في الشبكة الفرعية للعميل أيضًا. |
access-list 106 permit tcp 192.168.99.96 0.0.0.15 192.168.176.0 0.0.0.15 eq www |
رسائل ICMP من الشبكة الفرعية التي يوجد بها 10.55.66.77/25 إلى كافة المضيفين في الشبكة الفرعية حيث يوجد 10.66.55.44/26 |
access-list 107 permit icmp 10.55.66.0 0.0.0.127 10.66.55.0 0.0.0.63 |
أي وكل حزمة IPv4 |
access-list 108 permit ip any any |