یک لیست کنترل دسترسی واقعاً چه کاری انجام میدهد
یک Access Control List (ACL) یک لیست مرتب از قوانین است که یک روتر یا سوئیچ در برابر ترافیکی که از میان آن عبور میکند ارزیابی میکند، و ترافیک را بر اساس معیارهایی مانند آدرس منبع، آدرس مقصد، پروتکل، یا شماره پورت مجاز یا رد میکند. ACL ها دو هدف اصلی خدمت میکنند: امنیت پایه ترافیک (مسدودکردن ترافیک ناخواسته) و شناسایی ترافیک برای سایر ویژگیها، مانند شناسایی اینکه کدام ترافیک باید مدیریت خاصی در سیاستهای QoS یا NAT که بعداً در این مجموعه پوشش داده میشوند دریافت کند.
ACL ها چگونه ترافیک را پردازش میکنند: بالا-به-پایین، اولین تطبیق برنده است
هر ACL قوانینش، به نام Access Control Entries (ACEs)، را دقیقاً به ترتیبی که پیکربندی شدهاند، از بالا به پایین، ارزیابی میکند، و بهمحض یافتن اولین ورودی منطبق متوقف میشود — باقی لیست هرگز برای آن بسته خاص مشورت نمیشود.
مثال ترتیب پردازش ACL:
access-list 10 permit 192.168.1.10
access-list 10 deny 192.168.1.0 0.0.0.255
access-list 10 permit any
یک بسته از 192.168.1.10 با خط ۱ تطبیق دارد و
مجاز است — خطوط ۲ و ۳ حتی برای این بسته خاص
هرگز بررسی نمیشوند
یک بسته از 192.168.1.50 با خط ۱ تطبیق ندارد،
با خط ۲ تطبیق دارد (deny)، و دور ریخته میشود —
خط ۳ برای این بسته هرگز بررسی نمیشوداین رفتار بالا-به-پایین و اولین-تطبیق توضیح میدهد چرا ترتیب ACE حیاتی است: قراردادن یک عبارت deny گسترده پیش از یک عبارت permit خاصتر که باید ابتدا تطبیق پیدا میکرد، بیسروصدا ترافیکی که واقعاً قصد اجازهدادنش وجود داشت را مسدود میکند.
Deny ضمنی: یک قانون مخفی حیاتی
هر ACL با یک Implicit Deny (deny ضمنی) نامرئی و غیرقابلپیکربندی پایان مییابد — اگر یک بسته با هیچ خط صراحتاً پیکربندیشدهای تطبیق نداشته باشد، بهطور پیشفرض دور ریخته میشود.
access-list 10 permit 192.168.1.0 0.0.0.255
-- (deny any ضمنی، در پیکربندی دیده نمیشود،
-- اما همیشه حاضر است)
یک بسته از 10.0.0.5 با تنها خط پیکربندیشده
تطبیق ندارد و بیسروصدا دور ریخته میشود، بهدلیل
deny ضمنی در انتهای هر ACLاین deny ضمنی یکی از رایجترین منابع ازدستدادن اتصال غیرمنتظره پس از اعمال یک ACL جدید است — یک مدیر که قصد دارد فقط یک نوع ترافیک خاص را مسدود کند باید صراحتاً هر چیز دیگری را مجاز کند، چون هر چیزی که صراحتاً مجاز نشده بهطور پیشفرض دور ریخته میشود.
ACL های استاندارد: فیلتر فقط بر اساس آدرس منبع
یک Standard ACL (ACL استاندارد) فقط میتواند بر اساس آدرس IP منبع فیلتر کند، که آن را ساده اما محدود در دقت میکند.
Router(config)# access-list 10 permit 192.168.1.0 0.0.0.255
Router(config)# access-list 10 deny any
Router(config)# interface gigabitethernet 0/1
Router(config-if)# ip access-group 10 outACL های استاندارد از 1 تا 99 شمارهگذاری میشوند (و 1300-1999 برای یک بازه گسترشیافته) و، چون فقط میتوانند روی آدرس منبع تطبیق داشته باشند، باید تا حد ممکن نزدیک به مقصد اعمال شوند — اعمال یکی خیلی نزدیک به منبع ریسک مسدودکردن ناخواسته ترافیکی که واقعاً مقصدش جای دیگری بود را دارد.
درک ماسک Wildcard
ACL ها از یک Wildcard Mask (ماسک wildcard) بهجای یک ماسک زیرشبکه استاندارد استفاده میکنند تا مشخص کنند کدام بیتهای آدرس باید دقیقاً تطبیق داشته باشند و کدام میتوانند هر چیزی باشند — از نظر مفهومی عکس یک ماسک زیرشبکه.
ماسک زیرشبکه 255.255.255.0 یعنی: دقیقاً تطبیق کن
ماسک wildcard 0.0.0.255 یعنی: بازه معادل،
اما بهصورت بیتهای "اهمیتنداشتن" بیانشده
تبدیل یک ماسک زیرشبکه به ماسک wildcard:
255.255.255.0 → هر octet را از 255 کم کن
0.0.0.255 → ماسک wildcard
wildcard برای تطبیق یک هاست تکی:
0.0.0.0 (هر بیت باید دقیقاً تطبیق داشته باشد)
wildcard برای تطبیق با هر آدرسی بهطور مطلق:
255.255.255.255 (هر بیت "اهمیتندارد")
-- معمولاً با کلیدواژه "any" کوتاه میشودیک بیت 0 در ماسک wildcard یعنی آن موقعیت بیت باید دقیقاً تطبیق داشته باشد، در حالی که یک بیت 1 یعنی آن موقعیت میتواند هر چیزی باشد — این منطق معکوس در مقایسه با یک ماسک زیرشبکه منبع رایجی از سردرگمی برای کسانی است که اولینبار ACL ها را یاد میگیرند.
ACL های توسعهیافته: فیلتر بر اساس منبع، مقصد، پروتکل، و پورت
یک Extended ACL (ACL توسعهیافته) میتواند روی آدرس منبع، آدرس مقصد، پروتکل (TCP، UDP، ICMP)، و شماره پورت تطبیق داشته باشد، که فیلترینگ بسیار دقیقتری را امکانپذیر میکند.
Router(config)# access-list 100 permit tcp 192.168.1.0 0.0.0.255 any eq 80
Router(config)# access-list 100 permit tcp 192.168.1.0 0.0.0.255 any eq 443
Router(config)# access-list 100 deny ip any any
Router(config)# interface gigabitethernet 0/0
Router(config-if)# ip access-group 100 inاین ACL توسعهیافته فقط ترافیک HTTP (پورت 80) و HTTPS (پورت 443) از شبکه 192.168.1.0/24 به هر مقصدی را مجاز میکند، و هر چیز دیگری را رد میکند — نوعی کنترل دقیق که با یک ACL استاندارد غیرممکن است. ACL های توسعهیافته، شمارهگذاریشده از 100 تا 199 (و 2000-2699 برای بازه گسترشیافته)، باید تا حد ممکن نزدیک به منبع اعمال شوند، چون از قبل میتوانند روی مقصد خاص تطبیق داشته باشند و ریسک فیلترکردن ناخواسته ترافیک نامرتبط را که یک ACL استاندارد اعمالشده زودهنگام میتواند داشته باشد ندارند.
ACL های نامدار: یک جایگزین قابلمدیریتتر
Router(config)# ip access-list extended WEB-TRAFFIC
Router(config-ext-nacl)# permit tcp 192.168.1.0 0.0.0.255 any eq 80
Router(config-ext-nacl)# permit tcp 192.168.1.0 0.0.0.255 any eq 443
Router(config-ext-nacl)# deny ip any any
-- ACL های نامدار همچنین اجازه میدهند ورودیهای
-- منفرد بدون بازساخت کل لیست حذف یا در یک شماره
-- توالی خاص درج شوندACL های نامدار معمولاً در پیکربندیهای مدرن نسبت به ACL های شمارهدار ترجیح داده میشوند، چون نام توصیفی هدف ACL را بلافاصله روشن میکند، و ورودیهای منفرد میتوانند بدون حذف و بازسازی کل لیست ویرایش شوند — یک مزیت عملی قابلتوجه نسبت به نحو ACL شمارهدار، که نیازمند حذف و افزودن دوباره کل لیست برای حتی یک تغییر کوچک است.
تأیید پیکربندی ACL و برخوردها
Router# show access-lists
Extended IP access list WEB-TRAFFIC
10 permit tcp 192.168.1.0 0.0.0.255 any eq 80 (245 matches)
20 permit tcp 192.168.1.0 0.0.0.255 any eq 443 (1502 matches)
30 deny ip any any (18 matches)شمارندههای تطبیق نشاندادهشده در show access-lists برای عیبیابی ارزشمند هستند — تأیید اینکه یک قانون خاص واقعاً برخورد میشود (یا بهطور غیرمنتظره برخورد نمیشود) اغلب سریعترین راه برای تعیین اینکه آیا یک ACL همانطور که مورد نظر بود رفتار میکند، بهویژه وقتی ترافیک بهطور غیرمنتظره مسدود یا بهطور غیرمنتظره اجازهدادهشده باشد.
چرا تسلط بر ACL یک مهارت امنیتی اصلی است
لیستهای کنترل دسترسی در سراسر تقریباً هر وظیفه شبکهای مرتبط-با-امنیت ظاهر میشوند — محدودکردن دسترسی مدیریتی به دستگاههای شبکه، کنترل اینکه کدام ترافیک میتواند بین سگمنتهای شبکه عبور کند، و شناسایی ترافیک برای سیاستهای QoS یا NAT که بعداً در این مجموعه پوشش داده میشوند. درک ترتیب ارزیابی سختگیرانه بالا-به-پایین، deny ضمنی، محاسبه درست ماسک wildcard، و مکانگذاری درست ACL نسبت به منبع و مقصد ترافیک برای پیادهسازی فیلترینگ مؤثر بدون مسدودکردن غیرعمدی ترافیک مشروع ضروری است.