المقدمة
يصف هذا المستند نموذجا لتكوينات قوائم التحكم في الوصول (ACLs) إلى IP المستخدمة بشكل شائع، والتي تقوم بتصفية حزم IP.
المتطلبات الأساسية
المتطلبات
تأكد من تلبية هذه المتطلبات قبل تجربة هذا التكوين:
ارجع إلى عنونة IP والتقسيم إلى شبكات فرعية للمستخدمين الجدد للحصول على معلومات إضافية.
المكونات المستخدمة
لا يقتصر هذا المستند على إصدارات برامج ومكونات مادية معينة.
تم إنشاء المعلومات الواردة في هذا المستند من الأجهزة الموجودة في بيئة معملية خاصة. بدأت جميع الأجهزة المُستخدمة في هذا المستند بتكوين ممسوح (افتراضي). إذا كانت شبكتك قيد التشغيل، فتأكد من فهمك للتأثير المحتمل لأي أمر.
معلومات أساسية
قوائم التحكم في الوصول إلى IP تستند إلى:
- عنوان المصدر
- عنوان الوجهة
- نوع الحزمة
- أي مجموعة من هذه العناصر
لتصفية حركة مرور الشبكة، تتحكم قوائم التحكم في الشبكة (ACLs) فيما إذا كان سيتم إعادة توجيه للحِزم الموجَّهة أو حظرها في واجهة الموجّه. يفحص الموجّه لديك كل حزمة لتحديد ما إذا كان سيتم إعادة توجيه الحزمة أو إسقاطها بناءً على المعايير التي تحددها ضمن قائمة التحكم بالوصول (ACL). وتشتمل معايير التحكم في الوصول (ACL) على:
- عنوان حركة المرور للمصدر
- عنوان حركة المرور للوجهة
- بروتوكول الطبقة العليا
أكمل الخطوات التالية لإنشاء قائمة تحكم في الوصول (ACL) كما توضّح الأمثلة الواردة في هذا المستند:
- إنشاء قائمة تحكم في الوصول (ACL).
- تطبيق قائمة التحكم في الوصول (ACL) على واجهة.
قائمة التحكم في الوصول (ACL) لبروتوكول الإنترنت (IP) عبارة عن مجموعة تسلسلية من شروط السماح والرفض التي يتم تطبيقها على حزمة IP. يقوم الموجّه باختبار الحِزم للتحقُّق من توفر الشروط الواردة في قائمة التحكم في الوصول (ACL) حزمة واحدة في كل مرة.
تحدّد المطابقة الأولى ما إذا كان برنامج Cisco IOS® Software يقبل الحِزمة أو يرفضها. نظرا لأن برنامج Cisco IOS software يتوقف عن إختبار الشروط بعد المطابقة الأولى، فإن ترتيب الشروط يعد أمرا بالغ الأهمية. في حالة عدم تطابق أي من الشروط، يرفض الموجّه الحِزمة بسبب جملة ضمنية برفض الكل.
هذه أمثلة على قوائم التحكم في الوصول (ACLs) لبروتوكول الإنترنت (IP) التي يمكن تكوينها في برنامج Cisco IOS Software:
- قوائم التحكم في الوصول القياسية
- قوائم التحكم في الوصول الموسعة
- قوائم التحكم في الوصول (ACLs) الديناميكية (القفل والمفتاح)
- قوائم التحكم في الوصول (ACLs) المُسماة وفق IP
- قوائم التحكم في الوصول (ACL) العكسية
- قوائم التحكم في الوصول (ACLs) المستندة إلى الوقت التي تستخدم نطاقات الوقت
- إدخالات قوائم التحكم في الوصول (ACL) إلى IP التي تم التعليق عليها
- قوائم التحكم في الوصول (ACLs) المستندة إلى السياق
- وكيل المصادقة
- قوائم التحكم في الوصول (ACL) من Turbo
- قوائم التحكم في الوصول (ACL) الموزعة المستندة إلى الوقت
يناقش هذا المستند بعض قوائم التحكم في الوصول (ACLs) شائعة الاستخدام القياسية والموسَّعة. ارجع إلى تكوين قوائم الوصول إلى IP للحصول على مزيد من المعلومات حول الأنواع المختلفة من قوائم التحكم في الوصول (ACLs) المدعومة في برنامج Cisco IOS Software وكيفية تكوين قوائم التحكم في الوصول (ACLs) وتحريرها.
تنسيق صياغة الأمر لقائمة تحكم في الوصول (ACL) قياسية هو access-list access-list-number {permit|deny} {host|source source-wildcard|any}.
تقارن قوائم التحكم في الوصول (ACLs) القياسية عنوان حِزم IP للمصدر بالعناوين التي تم تكوينها في قائمة التحكم في الوصول (ACL) لكي يتم التحكم في حركة المرور.
تقارن قوائم التحكم في الوصول (ACL) الموسَّعة عناوين حِزم IP للمصدر والوجهة بالعناوين التي تم تكوينها في قائمة التحكم في الوصول (ACL) لكي يتم التحكم في حركة المرور. كما يمكنك جعل قوائم التحكم في الوصول (ACLs) الموسَّعة أكثر دقة وأن يتم تكوينها بدرجة أفضل لتصفية حركة المرور حسب معايير مثل:
- البروتوكول
- أرقام المنافذ
- قيمة نقطة كود الخدمات المتمايزة (DSCP)
- قيمة الأسبقية
- حالة وحدة بت لتزامن الرقم التسلسلي (SYN)
تنسيقات صيغة الأمر لقوائم التحكم في الوصول (ACLs) الموسَّعة هي:
IP
access-list access-list-number [dynamic dynamic-name [timeout minutes]]
{deny | permit} protocol source source-wildcard destination destination-wildcard
[precedence precedence] [tos tos] [log | log-input]
[time-range time-range-name][fragments]
بروتوكول رسائل التحكم في الإنترنت (ICMP)
access-list access-list-number [dynamic dynamic-name [timeout minutes]]
{deny | permit} icmp source source-wildcard destination destination-wildcard
[[icmp-type] [icmp-code] | [icmp-message]] [precedence precedence] [tos tos] [log | log-input]
[time-range time-range-name][fragments]
بروتوكول التحكم في النقل (TCP)
access-list access-list-number [dynamic dynamic-name [timeout minutes]]
{deny | permit} tcp source source-wildcard [operator [port]] destination destination-wildcard [operator [port]]
[established] [precedence precedence] [tos tos] [log | log-input]
[time-range time-range-name][fragments]
بروتوكول مخطط بيانات المستخدم (UDP)
access-list access-list-number [dynamic dynamic-name [timeout minutes]]
{deny | permit} udp source source-wildcard [operator [port]] destination destination-wildcard [operator [port]]
[precedence precedence] [tos tos] [log | log-input]
[time-range time-range-name][fragments]
التكوين
تستخدم أمثلة التكوين هذه قوائم التحكم في الوصول (ACLs) لبروتوكول الإنترنت (IP) الأكثر شيوعًا.
السماح لأداة Select Host بالوصول إلى الشبكة
توضح هذه الصورة أن مضيف محدد تم منحه الإذن للوصول إلى الشبكة. يتم السماح بجميع حركات المرور الصادرة من المضيف B والمتجهة إلى NetA، ويتم رفض جميع حركات المرور الأخرى الصادرة من NetB والمتجهة إلى NetA.
يُوضّح المُخرَج في جدول R1 كيف تمنح الشبكة إمكانية الوصول إلى المضيف. يوضّح هذا المُخرَج أن:
-
التكوين يسمح فقط للمضيف بعنوان IP 192.168.10.1 من خلال واجهة Ethernet 0 على R1.
-
يمتلك هذا المضيف حق الوصول إلى خدمات IP الخاصة بـ NetA.
-
لا يمتلك مضيف آخر في NetB حق الوصول إلى NetA.
-
لم يتم تكوين أي عبارة رفض في قائمة التحكم في الوصول (ACL).
بشكل افتراضي، توجد جملة ضمنية برفض الكل في نهاية كل قائمة تحكم في الوصول (ACL). يتم رفض أي شيء لم يتم السماح بمروره بشكل صريح.
R1
hostname R1
!
interface ethernet0
ip access-group 1 in
!
access-list 1 permit host 192.168.10.1
ملاحظة: تقوم قائمة التحكم في الوصول بتصفية حزم IP من NetB إلى NetA، باستثناء الحزم المستمدة من المضيف B. لا يزال يسمح بالحزم المستمدة من المضيف B إلى NetA.
ملاحظة: تصريح قائمة الوصول (ACL) لقائمة الوصول 1 192.168.10.1 0.0.0.0 هو طريقة أخرى لتكوين القاعدة نفسها.
رفض وصول أداة Select Host إلى الشبكة
توضح هذه الصورة أنه يتم رفض حركة المرور المستمدة من المضيف B الموجهة إلى NetA، بينما يتم السماح بجميع حركات المرور الأخرى من NetB للوصول إلى NetA.
يرفض هذا التكوين جميع الحِزم من المضيف 192.168.10.1/32 من خلال Ethernet 0 على R1 ويسمح بكل شيء آخر. يجب عليك استخدام الأمر access list 1 permit any للسماح بشكل صريح بكل شيء آخر بسبب وجود جملة ضمنية برفض الكل مع كل قائمة تحكم في الوصول (ACL).
R1
hostname R1
!
interface ethernet0
ip access-group 1 in
!
access-list 1 deny host 192.168.10.1
access-list 1 permit any
ملاحظة: يعد ترتيب البيانات أمرا بالغ الأهمية لتشغيل قائمة التحكم في الوصول (ACL). إذا تم عكس ترتيب الإدخالات، كما يُظهر هذا الأمر، فإن السطر الأول يطابق كل عنوان مصدر للحِزمة. لذلك، تفشل قائمة التحكم في الوصول (ACL) في حظر المضيف 192.168.10.1/32 من الوصول إلى NetA.
access-list 1 permit any
access-list 1 deny host 192.168.10.1
السماح بالوصول إلى نطاق من عناوين IP المتجاورة
توضح هذه الصورة أن جميع الأجهزة المضيفة في NetB ذات عنوان الشبكة 192.168.10.0/24 يمكن أن تصل إلى الشبكة 192.168.200.0/24 في NetA.
يتيح هذا التكوين لحِزم IP التي تحتوي على عنوان IP الذي يتضمن عنوان مصدر في الشبكة 192.168.10.0/24 وعنوان وجهة في الشبكة 192.168.200.0/24 إمكانية الوصول إلى NetA. هناك جملة ضمنية برفض الكل في نهاية قائمة التحكم في الوصول (ACL) والتي ترفض كل حركة مرور أخرى عبر Ethernet 0 واردة على R1.
R1
hostname R1
!
interface ethernet0
ip access-group 101 in
!
access-list 101 permit ip 192.168.10.0 0.0.0.255 192.168.200.0 0.0.0.255
ملاحظة: في الأمر access-list 101 يسمح ب IP 192.168.10.0.0.255 192.168.200.0.0.255، يكون 0.0.0.255 هو القناع المعكوس للشبكة 192.168.10.0 مع القناع 255.255.0. تستخدم قوائم التحكم في الوصول (ACL) القناع المعكوس لمعرفة عدد وحدات بت في عنوان الشبكة التي تحتاج إلى المطابقة. في الجدول، تسمح قائمة التحكم في الوصول ACL لجميع الأجهزة المضيفة بعناوين المصدر في شبكة 192.168.10.0/24 وعناوين الوجهة في شبكة 192.168.200.0/24.
ارجع إلى قسم الأقنعة في تكوين قوائم الوصول إلى IP للحصول على مزيد من المعلومات حول القناع من عنوان الشبكة وكيفية حساب القناع العكسي المطلوب لقوائم التحكم في الوصول (ACLs).
رفض مرور Telnet (TCP، المنفذ 23)
من أجل تلبية المخاوف الأمنية الأعلى، يمكنك تعطيل وصول Telnet إلى شبكتك الخاصة من الشبكة العامة. تظهر هذه الصورة كيفية رفض حركة مرور Telnet من NetB (عام) الموجهة إلى NetA (خاص)، والتي تسمح ل NetA ببدء جلسة عمل ل Telnet وإنشائها مع NetB بينما يتم السماح بجميع حركة مرور IP الأخرى.
يستخدم Telnet بروتوكول TCP، المنفذ 23. يوضح هذا التكوين أنه تم حظر جميع حركة مرور TCP الموجهة إلى NetA للمنفذ 23، ويتم السماح بجميع حركات مرور IP الأخرى.
R1
hostname R1
!
interface ethernet0
ip access-group 102 in
!
access-list 102 deny tcp any any eq 23
access-list 102 permit ip any any
السماح فقط للشبكات الداخلية بالبدء في جلسة TCP
يوضّح هذا الشكل أن حركة مرور TCP الصادرة من NetA والمتجهة إلى NetB مسموح بها، بينما يتم رفض حركة مرور TCP من NetB والمتجهة إلى NetA.
إن الغرض من قائمة التحكم في الوصول (ACL) في هذا المثال هو:
يسمح هذا التكوين بمرور مخطط البيانات خلال واجهة Ethernet 0 الواردة على الموجّه R1 عندما يملك مخطط البيانات:
R1
hostname R1
!
interface ethernet0
ip access-group 102 in
!
access-list 102 permit tcp any any gt 1023 established
ونظرا لأن معظم المنافذ المعروفة لخدمات IP تستخدم قيم أقل من 1023، فإن أي مخطط بيانات بمنفذ وجهة أقل من 1023 أو وحدة بت ACK/RST غير معينة يتم رفضه بواسطة قائمة التحكم في الوصول (ACL) 102. لذلك، عندما يقوم مضيف من NetB بتهيئة اتصال TCP ويرسل أول حزمة TCP (بدون مزامنة/بدء ربط (SYN/RST) بت set) لمنفذ رقم أقل من 1023، يتم رفضه ويفشل جلسة TCP. يتم السماح بجلسات TCP التي تم بدؤها من NetA والمتجهة إلى NetB لأنها تحتوي على مجموعة وحدات بت ACK/RST لإرجاع الحِزم وتستخدم قيم منفذ أكبر من 1023.
ارجع إلى RFC 1700 للحصول على قائمة كاملة بالمنافذ.
رفض مرور FTP (TCP، المنفذ 21)
توضح هذه الصورة أنه يتم رفض بيانات FTP (TCP، port 21) و FTP (المنفذ 20) حركة المرور المصعدة من NetB الموجهة إلى NetA، بينما يتم السماح بجميع حركة مرور IP الأخرى.
يستخدم FTP المنفذ 21 والمنفذ 20. يتم رفض حركة مرور TCP الموجهة إلى المنفذ 21 والمنفذ 20 ويتم السماح بكل شيء آخر بشكل صريح.
R1
hostname R1
!
interface ethernet0
ip access-group 102 in
!
access-list 102 deny tcp any any eq ftp
access-list 102 deny tcp any any eq ftp-data
access-list 102 permit ip any any
السماح بمرور FTP) FTP النشطة)
يمكن أن يعمل FTP في وضعين مختلفين تحت مسمى نشط وخامل.
عندما يعمل FTP في الوضع النشط، يستخدم خادم FTP المنفذ 21 للتحكم، والمنفذ 20 للبيانات. يقع خادم FTP (192.168.1.100) في NetA. توضح هذه الصورة أنه مسموح بحركة مرور بيانات FTP (TCP، port 21) و FTP (المنفذ 20) التي يتم توجيهها من NetB إلى خادم FTP (192.168.1.100)، بينما يتم رفض جميع حركة مرور IP الأخرى.
R1
hostname R1
!
interface ethernet0
ip access-group 102 in
!
access-list 102 permit tcp any host 192.168.1.100 eq ftp
access-list 102 permit tcp any host 192.168.1.100 eq ftp-data established
!
interface ethernet1
ip access-group 110 in
!
access-list 110 permit host 192.168.1.100 eq ftp any established
access-list 110 permit host 192.168.1.100 eq ftp-data any
السماح بمرور FTP) FTP غير النشِطة)
يمكن أن يعمل FTP في وضعين مختلفين تحت مسمى نشط وخامل.
عندما يعمل FTP في الوضع الخامل، يستخدم خادم FTP المنفذ 21 للتحكم والمنافذ الديناميكية الأكبر من أو التي تساوي 1024 للبيانات. يقع خادم FTP (192.168.1.100) في NetA. توضح هذه الصورة أنه مسموح بحركة مرور FTP (TCP، port 21) وبيانات FTP (المنافذ الأكبر من أو تساوي 1024) التي يتم توجيهها من NetB إلى خادم FTP (192.168.1.100)، بينما يتم رفض جميع حركة مرور IP الأخرى.
R1
hostname R1
!
interface ethernet0
ip access-group 102 in
!
access-list 102 permit tcp any host 192.168.1.100 eq ftp
access-list 102 permit tcp any host 192.168.1.100 gt 1023
!
interface ethernet1
ip access-group 110 in
!
access-list 110 permit host 192.168.1.100 eq ftp any established
access-list 110 permit host 192.168.1.100 gt 1023 any established
السماح بأوامر اختبار الاتصال (ICMP)
توضح هذه الصورة أنه يتم السماح ب ICMP المصدري من NetA الموجه إلى NetB، ويتم رفض إختبارات الاتصال المصدرية من NetB الموجهة إلى NetA.
يسمح هذا التكوين فقط لحِزم استجابة الارتداد (استجابة أمر اختبار الاتصال) بالدخول على واجهة Ethernet 0 من NetB باتجاه NetA. ومع ذلك، فإن التكوين يحظر جميع حِزم ICMP الخاصة بطلب الارتداد عندما يتم إصدار أوامر اختبار الاتصال في NetB وتوجيهها إلى NetA. لذلك، يمكن للأجهزة المضيفة في NetA إصدار أمر اختبار الاتصال للأجهزة المضيفة في NetB، ولكن لا يمكن للأجهزة المضيفة في NetB إصدار أمر اختبار الاتصال للأجهزة المضيفة في NetA.
R1
hostname R1
!
interface ethernet0
ip access-group 102 in
!
access-list 102 permit icmp any any echo-reply
السماح بـ HTTP وTelnet وMail وPOP3 وFTP
توضح هذه الصورة أنه مسموح فقط بحركة مرور HTTP و telnet و Simple Mail Transfer Protocol (SMTP) و POP3 و FTP، ويتم رفض بقية حركة المرور المستمدة من NetB الموجهة إلى NetA.
يسمح هذا التكوين بحركة مرور TCP ذات قيم منفذ الوجهة التي تطابق بيانات WWW (المنفذ 80) أو Telnet (المنفذ 23) أو SMTP (المنفذ 25) أو POP3 (المنفذ 110) أو FTP (المنفذ 21) أو FTP (المنفذ 20). لاحظ أن جملة رفض ضمني في نهاية قائمة التحكم في الوصول ACL ترفض جميع حركات المرور الأخرى، التي لا تتوافق مع عبارات السماح.
R1
hostname R1
!
interface ethernet0
ip access-group 102 in
!
access-list 102 permit tcp any any eq www
access-list 102 permit tcp any any eq telnet
access-list 102 permit tcp any any eq smtp
access-list 102 permit tcp any any eq pop3
access-list 102 permit tcp any any eq 21
access-list 102 permit tcp any any eq 20
السماح بـ DNS
توضح هذه الصورة أنه يتم السماح بحركة مرور نظام اسم المجال (DNS) فقط، ويتم رفض بقية حركة المرور التي تم الحصول عليها من NetB الموجهة إلى NetA.
يسمح هذا التكوين بحركة مرور TCP مع قيمة منفذ الوجهة 53. يرفض شرط الرفض الضمني الكل في نهاية قائمة التحكم في الوصول (ACL) جميع حركات المرور الأخرى، والتي لا تطابق شروط الترخيص.
R1
hostname R1
!
interface ethernet0
ip access-group 102 in
!
access-list 102 permit udp any any eq domain
access-list 102 permit udp any eq domain any
access-list 102 permit tcp any any eq domain
access-list 102 permit tcp any eq domain any
السماح بتحديثات التوجيه
عند تطبيق قائمة التحكم في الوصول (ACL) المضمّنة على واجهة، تأكد من عدم تصفية تحديثات التوجيه. استخدم قائمة التحكم في الوصول (ACL) ذات الصلة من هذه القائمة للسماح بحِزم بروتوكول التوجيه:
أدخِل هذا الأمر لأجل السماح ببروتوكول معلومات التوجيه (RIP):
access-list 102 permit udp any any eq rip
أدخِل هذا الأمر لأجل السماح ببروتوكول توجيه العبَّارة الداخلية (IGRP):
access-list 102 permit igrp any any
أدخِل هذا الأمرلأجل السماح ببروتوكول IGRP المُحسن (EIGRP):
access-list 102 permit eigrp any any
أدخِل هذا الأمر لأجل السماح ببروتوكول فتح أقصر مسار أولاً (OSPF):
access-list 102 permit ospf any any
أدخِل هذا الأمر لأجل السماح ببروتوكول عبَّارة الحدود (BGP):
access-list 102 permit tcp any any eq 179
access-list 102 permit tcp any eq 179 any
تصحيح أخطاء المرور استنادًا إلى قائمة التحكم بالوصول (ACL)
يتطلب استخدام أوامر debug تخصيص موارد النظام مثل الذاكرة وطاقة المعالجة وقد يتسبب في الحالات القصوى في حدوث توقف لنظام ثقيل الحِمل. استخدم أوامر debug بعناية. أستخدم قائمة تحكم في الوصول (ACL) من أجل تحديد حركة المرور التي تحتاج إلى الفحص بشكل انتقائي لتقليل تأثير الأمر debug. مثل هذا التكوين لا يقوم بتصفية أي حِزم.
يشغّل هذا التكوين الأمر debug ip packet فقط للحِزم بين المضيفين 10.1.1.1 و172.16.1.1.
R1(config)#access-list 199 permit tcp host 10.1.1.1 host 172.16.1.1
R1(config)#access-list 199 permit tcp host 172.16.1.1 host 10.1.1.1
R1(config)#end
R1#debug ip packet 199 detail
IP packet debugging is on (detailed) for access list 199
ارجع إلى معلومات هامة حول أوامر تصحيح الأخطاء للحصول على معلومات إضافية حول تأثير أوامر تصحيح الأخطاء.
ارجع إلى استخدام أمر تصحيح الأخطاء قسم فهم أوامر Ping وأوامر Traceroute للحصول على معلومات إضافية حول استخدام قوائم التحكم في الوصول (ACL) مع أوامر debug.
تصفية عنوان MAC
يمكنك تصفية الإطارات باستخدام مصدر محطة طبقة MAC معين أو عنوان وجهة. يمكن تكوين أي عدد من العناوين في النظام بدون عقوبة على الأداء. من أجل التصفية حسب عنوان طبقة MAC، استخدم هذا الأمر في وضع التكوين العام:
Router#config terminal
Router(config)#bridge irb
Router(config)#
bridge 1 protocol ieee
Router(config)#
bridge 1 route ip
تطبيق بروتوكول الجسر على واجهة تحتاج إلى تصفية حركة المرور باستخدام قائمة الوصول التي تم إنشاؤها باستخدام الأمر bridge-group <group number> {input-address-list <ACL number> | output-address-list <ACL Number>}:
Router#config terminal
Router(config-if)#
interface fastEthernet0/0
Router(config-if)#
no ip address
Router(config-if)#
bridge-group 1 input-address-list 700
Router(config-if)#
exit
قم بإنشاء واجهة افتراضية جسر وطبق عنوان IP الذي تم تعيينه لواجهة إيثرنت المادية:
Router#config terminal
Router(config-if)#
int bvi1
Router(config-if)#
ip address 192.168.1.1 255.255.255.0
Router(config-if)#
exit
Router(config)#
access-list 700 deny aaaa.bbbb.cccc 0000.0000.0000
Router(config)#
access-list 700 permit 0000.0000.0000 ffff.ffff.ffff
باستخدام هذا التكوين، يسمح الموجه فقط بعناوين MAC التي تم تكوينها على قائمة الوصول 700. مع أمر قائمة الوصول access-list <ACL Number> رفض <mac address> 0000.000.000، قم برفض عنوان MAC الذي لا يمكن أن يكون له وصول ثم قم بالسماح بالباقي (على سبيل المثال، aaa.bbbb.cccc).
ملاحظة: إنشاء كل سطر من قائمة الوصول لكل عنوان MAC.
التحقق من الصحة
لا يوجد حاليًا إجراء للتحقق من صحة هذا التكوين.
استكشاف الأخطاء وإصلاحها
لا تتوفر حاليًا معلومات محددة لاستكشاف الأخطاء وإصلاحها لهذا التكوين.
معلومات ذات صلة