مفاهیم ACL – پیکربندی و بررسی Access Control List – روز 10
Access Control List Concepts
یکی از مهارتهای مهمی که یک مدیر شبکه باید به آن مسلط باشد، مدیریت لیستهای کنترل دسترسی (ACL) است. مدیران شبکه از ACLها برای مسدود کردن یا اجازه دادن به ترافیک مشخصی در شبکههای خود استفاده میکنند. ACLهای استاندارد و گسترده میتوانند تعدادی ویژگی امنیتی از جمله مسیریابی مبتنی بر سیاست (Policy-Based Routing)، کیفیت خدمات (Quality of Service – QoS)، ترجمه آدرس شبکه (Network Address Translation – NAT) و ترجمه آدرس پورت (Port Address Translation – PAT) را اعمال کنند.
همچنین میتوان ACLهای استاندارد و گسترده را روی رابطهای روتر پیکربندی کرد تا نوع ترافیکی که از یک روتر عبور میکند کنترل شود. در اینجا، مفاهیم Access Control List را بررسی خواهیم کرد، از جمله اینکه ACL چیست، روترها چگونه از آنها برای فیلتر کردن ترافیک استفاده میکنند و چه انواعی از ACLها در دسترس هستند.
عملکرد ACL
بهطور پیشفرض، یک روتر تمام بستههای داده (Packets) را در صورتی که مسیری برای آنها وجود داشته باشد و لینک برقرار باشد، ارسال میکند. ACLها میتوانند یک سطح پایه از امنیت را فراهم کنند، اما تنها راهکار امنیتی که یک سازمان بزرگ باید پیادهسازی کند، نیستند. در واقع، ACLها باعث افزایش تأخیر در پردازش روترها میشوند.
در شبکههایی با مقیاس بزرگ، که روترها ترافیک صدها یا هزاران کاربر را مدیریت میکنند، مدیر شبکه احتمالاً ترکیبی از راهکارهای امنیتی دیگر را نیز بهکار خواهد گرفت که خارج از دامنه CCNA است.
تعریف یک Access Control List
یک Access Control List یک اسکریپت پیکربندی روتر است (شامل مجموعهای از دستورات) که تعیین میکند آیا یک روتر اجازه عبور به بستههای داده را میدهد یا آنها را مسدود میکند، بر اساس معیارهایی که در هدر بسته (Packet Header) مشخص شده است.
برای تعیین اینکه یک بسته مجاز (Permitted) یا رد (Denied) میشود، آن را بهصورت ترتیبی با قوانین ACL مقایسه میکنند. به محض اینکه یک شرط مطابقت پیدا کند، دیگر شرایط ارزیابی نمیشوند و بسته یا پذیرفته میشود یا رد میشود.
در انتهای هر Access Control List، یک قانون “Implicit Deny Any” بهطور پیشفرض وجود دارد. بنابراین، اگر یک بسته با هیچیک از دستورات ACL مطابقت نداشته باشد، رد میشود (Dropped).
پردازش ACLهای مربوط به رابطهای شبکه
ACLها را میتوان روی یک رابط شبکه (Interface) برای ترافیک ورودی (Inbound) و خروجی (Outbound) اعمال کرد. با این حال، برای هر جهت باید یک ACL جداگانه تعریف شود.
شکل زیر فرآیندی را که یک روتر هنگام ارزیابی Access Control List در رابطهای ورودی و خروجی طی میکند، نشان میدهد.
برای ترافیک ورودی (Inbound Traffic):
- ابتدا، روتر بررسی میکند که آیا یک Access Control List ورودی روی رابط اعمال شده است یا خیر، قبل از اینکه جدول مسیریابی را بررسی کند.
برای ترافیک خروجی (Outbound Traffic):
- روتر ابتدا بررسی میکند که آیا مسیری به مقصد وجود دارد و سپس ACLهای خروجی را بررسی میکند.
در صورتی که یک دستور Access Control List منجر به رد بسته شود، روتر یک پیام ICMP “مقصد در دسترس نیست” (ICMP Destination Unreachable) ارسال میکند.
انتخاب ACL ورودی یا خروجی
انتخاب بین یک ACL ورودی یا خروجی ساده است، اگر ابتدا خود را درون روتر تصور کنید، یعنی از دیدگاه روتر به جریان ترافیک نگاه کنید.
- میتوانید پردازش یک بسته ورودی به یک رابط روتر (Inbound Interface) را تصور کنید:
- بررسی کنید آیا یک Access Control List ورودی وجود دارد؟
- آیا مسیری به مقصد بسته موجود است؟
- و سپس، ارسال بسته به رابط خروجی (Outbound Interface) و بررسی اینکه آیا ACL روی آن وجود دارد یا خیر.
منطق لیست در ACLهای مبتنی بر IP
یک Access Control List مجموعهای از دستورات است که به ترتیب از اولین دستور تا آخرین دستور در لیست پردازش میشوند. هر دستور دارای منطق تطبیق متفاوتی است که روتر باید هنگام فعال بودن فیلترینگ، آن را روی هر بسته داده (Packet) اعمال کند.
ACLها از منطق “اولین تطابق” (First-Match Logic) پیروی میکنند. اگر یک بسته با یکی از خطوط موجود در ACL مطابقت داشته باشد، روتر عملیاتی را که در همان خط تعریف شده است اجرا میکند و سایر دستورات ACL را نادیده میگیرد.
به عنوان مثال، در شکل زیر ACL 1 را نشان میدهد که شامل سه خط شبهکد (Pseudocode) است. این Access Control List روی رابط S0/0/1 روتر R2 اعمال شده است، همانطور که فلش نشان میدهد. ترافیک ورودی از R1 با استفاده از ACL 1 فیلتر خواهد شد.
در بالا توپولوژی نشاندهندهی منطق پردازش بستههای داده (Packets) برای هر آدرس مبدأ میزبان است (که در شکل با S_IP مشخص شده است).
دقت کنید که زمانی که یک تطابق برای Host A و Host B پیدا شود، شرط اعمال میشود (Host A مجاز است و Host B رد میشود) و دیگر دستورات بررسی نخواهند شد.
Host C با آخرین دستور موجود در لیست تطابق دارد و مجاز شناخته میشود.
Host D با هیچکدام از آیتمهای موجود در Access Control List تطابق ندارد، بنابراین بستهی داده رد (Discarded) خواهد شد. دلیل این امر این است که هر ACL مبتنی بر IP در انتهای خود یک “Implied Deny Any” دارد.
برنامهریزی برای استفاده از ACLها
از آنجا که یک ACL میتواند برای فیلتر کردن ترافیک استفاده شود، بسیار مهم است که قبل از پیکربندی آن، بهطور کامل برنامهریزی دقیقی برای پیادهسازی Access Control List انجام دهید.
انواع ACLها
ACLها را میتوان برای فیلتر کردن هر نوع ترافیک پروتکلی، از جمله سایر پروتکلهای لایه شبکه مانند AppleTalk و IPX پیکربندی کرد. در آزمون CCNA، تمرکز ما بر روی ACLهای IPv4 و IPv6 است که شامل انواع زیر میشوند:
- Standard IPv4 ACLs: فقط بر اساس آدرس مبدأ، ترافیک را فیلتر میکنند.
- Extended IPv4 and IPv6 ACLs: میتوانند ترافیک را بر اساس آدرس مبدأ و مقصد، پروتکلهای خاص، و همچنین پورتهای TCP و UDP فیلتر کنند.
برای شناسایی ACLهای استاندارد و گسترده میتوان از دو روش استفاده کرد:
- Numbered IPv4 ACLs: از یک شماره برای شناسایی استفاده میکنند.
- Named IPv4 and IPv6 ACLs: از یک نام توصیفی یا شماره برای شناسایی استفاده میکنند.
ACLهای نامگذاریشده باید در برخی از پیکربندیهای Cisco IOS، از جمله IPv6 ACLها مورد استفاده قرار گیرند. با این حال، این نوع ACLها دو مزیت اصلی برای ACLهای استاندارد و گسترده دارند:
- استفاده از یک نام توصیفی (مانند BLOCK-HTTP) به مدیر شبکه کمک میکند تا سریعتر هدف یک Access Control List را تعیین کند. این امر در شبکههای بزرگ که یک روتر ممکن است صدها Access Control List داشته باشد، بسیار مفید است.
- این نوع ACL نیاز به وارد کردن دستورات طولانی را کاهش میدهد، زیرا بهجای وارد کردن هر دستور بهصورت جداگانه، میتوان از یک نام مشخص برای Access Control List استفاده کرد.
ACLهای شمارهگذاریشده و نامگذاریشده را میتوان برای پیادهسازی هر دو نوع ACLهای استاندارد و گسترده پیکربندی کرد. در شکل زیر دستهبندی ACLهای IPv4 را خلاصه میکند.
مقایسه انواع ACLهای IPv4
شناسایی Access Control List
جدول زیر محدودههای عددی مختلف Access Control List را برای پروتکل IPv4 فهرست میکند. این جدول جامع نیست. شمارههای دیگری برای ACLها در سایر پروتکلها نیز وجود دارد که یا بهندرت استفاده میشوند یا خارج از محدوده CCNA هستند. IPv6 فقط از ACLهای نامگذاریشده استفاده میکند.
محدوده شمارههای ACL در IPv4
پروتکل | محدوده |
---|---|
IP | 1-99 |
Extended IP | 100-199 |
Standard IP (expanded) | 1300-1999 |
Extended IP (expanded) | 2000-2699 |
ACLهای نامگذاریشده انعطاف بیشتری در کار با ورودیهای Access Control List فراهم میکنند. علاوه بر داشتن نامهای توصیفی، استفاده از ACLهای نامگذاریشده به جای ACLهای شمارهگذاریشده امکان حذف دستورات فردی را در یک لیست کنترل دسترسی فراهم میکند.
نسخه 12.3 Cisco IOS قابلیت شمارهگذاری توالی ورودی در لیستهای کنترل دسترسی را برای ACLهای شمارهگذاریشده و نامگذاریشده معرفی کرد. این ویژگی چندین مزیت را ارائه میدهد:
- امکان ویرایش ترتیب دستورات Access Control List
- امکان حذف دستورات فردی از Access Control List
- امکان استفاده از شماره توالی برای درج دستورات جدید در میانه Access Control List
شمارههای توالی بهطور خودکار به ACL اضافه میشوند، مگر اینکه در هنگام ایجاد بهصورت صریح وارد شوند.
راهنمای طراحی Access Control List
ACLهای طراحی و پیادهسازیشده بهصورت اصولی، یک جزء امنیتی مهم در شبکه ایجاد میکنند. دستورالعملهای کلی زیر را دنبال کنید تا اطمینان حاصل شود که ACLهایی که ایجاد میکنید، نتایج مورد نظر را ارائه میدهند:
- بر اساس شرایط آزمایش، یک ACL استاندارد، گسترده، شمارهگذاریشده یا نامگذاریشده را انتخاب کنید.
- فقط یک ACL در هر پروتکل، در هر جهت و بر روی هر interface مجاز است.
- ACL را بهگونهای سازماندهی کنید که پردازش از بالا به پایین انجام شود. ACL را بهصورتی مرتب کنید که قوانین خاصتر برای یک شبکه، زیرشبکه یا میزبان قبل از قوانین عمومیتر قرار گیرند. دستورات با تکرار بیشتر باید قبل از دستورات کمتکرارتر قرار داده شوند.
- تمام ACLها یک دستور deny all ضمنی در انتهای خود دارند.
- ACL را در یک interface مناسب اعمال کنید.
- بسته به نحوه اعمال ACL، فیلتر کردن ترافیک قبل از عبور از روتر یا هنگام خروج از آن انجام میشود، مانند فیلتر کردن ترافیک در خطوط vty.
- معمولاً ACLهای گسترده را تا حد امکان نزدیک به مبدأ ترافیکی که میخواهید مسدود کنید، اعمال میکنید. از آنجایی که ACLهای استاندارد مقصد را مشخص نمیکنند، باید آنها را تا حد امکان نزدیک به مقصد ترافیکی که میخواهید مسدود شود اعمال کنید تا منبع نتواند از طریق مسیرهای واسط به مقصد برسد.