شما اینجا هستید
لیستهای کنترل دسترسی یا Access control List (ACL)
Access control و یا Access List بهطورکلی برای کنترل و نظارت شبکه بهمنظور محدود کردن دسترسی یک کلاینت خاص و یا مسدود کردن برنامهای خاص مورد استفاده قرار میگیرد. در حقیقت یک ابزار فیلترینگ میباشد که بر اساس مفاهیم لایه ۳ کار میکند و دید به لایه ۴ نیز دارد.
ACLها با استفاده از آیتمهای مختلف مانند آدرس مبدأ و مقصد ، پورت مبدأ و مقصد ، نوع پروتکل و ... میتواند عمل فیلترینگ را روی بستههای ورودی یا خروجی یک پورت انجام دهند.
بهعنوانمثال لیست دسترسی هنگام فیلترینگ با آدرسهای ورودی و خروجی مقایسه میشود. مقایسه به دو روش صورت میپذیرد. روش اول استفاده از Black List یا همان لیست سیاه است. به این صورت که شما لیست آدرسهای ممنوعه را وارد میکنید و همه افراد بهجز آنهایی که در لیست سیاه هستند به شبکه دسترسی خواهند داشت . این روش معمولاً رایجتر است ولی از یک نظر از امنیت پایینتری برخوردار است زیرا شما به همه بهجز عده خاصی اجازه دسترسی دادهاید و اگر شخصی در لیست سیاه نباشد قادر به دسترسی به شبکه خواهد بود . روش دوم استفاده از White List یا همان لیست سفید است . در این روش شما دسترسی همگان را از شبکه منع میکنید و تنها افرادی که در لیست سفید قرار دارند قادر به دسترسی به شبکه هستند . این روش به دلیل منع دسترسی عمومی از شبکه خیلی مناسب نیست ولی نسبت به روش اول از امنیت بالاتری برخوردار خواهد بود. کنترل دسترسی شبکه برای اشخاص و جایگاههای مختلف و بنا به موقعیتی که وجود دارد، متفاوت خواهد بود.
ACLها در global configuration mode ایجادشده و سپس آنها را باید فعال نمود. برای کنترل ترافیک انتقالی از راه اینترفیسها، ACLها را باید روی اینترفیس موردنظر فعال نماییم. در هنگام فعال نمودن ACLهای ایجادشده باید نوع ترافیکی را که تحت تأثیر قرار خواهد گرفت را مشخص نماییم. ترافیک عبوری را میتوان در دو گروه عمده قرار داد:
• ترافیک ورودی یا Inbound
• ترافیک خروجی یا Outbound
در ترافیک ورودی روتر اطلاعات رسیده را ابتدا با ACLهای تعیینشده درروی اینترفیس مربوطه مقایسه کرده و سپس اقدام به ارسال آنها به مقصد خود میکند. اما در ترافیک خروجی یا outbound، روتر اطلاعات رسیده را ابتدا به مقاصد خود ارسال کرده و سپس اقدام به مقایسه آنها با ACL مربوطه مینماید. یکی از محدودیتهایی که استفاده از ACL داراست این است که نمیتوان ترافیکی که خود روتر آنها را ایجاد کرده بهوسیله ACLها فیلتر نمود. برای مثال اگر از دستورات ping و یا traceroute درروی روتر استفاده کرده و یا اقدام به برقراری ارتباط telnet از روتر خود به سمت دستگاههای دیگر نماییم، نمیتوان این ترافیکها را بهوسیله ACLها فیلترگذاری کرد. اما اگر روتر دیگری اقدام به ping کردن و یا برقراری ارتباط telnet با روتر ما نماید و یا از طریق روتر ما، دستگاه دیگری را هدف قرار دهد، میتوان از ACL بهره برد.
میتوان Access lists را به دو صورت نوشت :
- Standard ACL: فیلترینگ بر اساس مبدأ و شماره Access lists بین ۱ تا ۹۹ میباشد.
- Extended ACL: فیلترینگ هم بر مبنای مبدأ میباشد و هم بر مبنای مقصد و شماره Access list بین ۱۰۰ تا ۱۹۹ میباشد.
این Access List بهصورت عددی و با استفاده از نام قابلتعریف است.
Standard ACL در حالت عددی:
access-list access-list-number {permit|deny} {host|source-wildcard|any}
:access-list-number عدد بین ۱ تا ۹۹ یا ۱۳۰۰ تا ۱۹۹۹
permit|deny : عملی که در هنگام تطبیق بسته با ACL نسبت با آن گرفته میشود (اجازه عبور یا عدم اجازه(.
host-source-wildcard-any : مشخص کردن IP به یکی از سه روش زیر:
- Host : یک آدرس IP مشخص میشود.
- Any : هر IP آدرسی
- •source source-wildcard : تعیین یک IP به همراه Wildcard Mask
Standard ACL با استفاده از نام :
Zharf(config)#IP Access-list {standard|extended} name
Zharf(config)#{permit|deny} {host|source source-wildcard|any}
نحوه تخصیص Standard ACL به اینترفیس:
Zharf(config-if)=Ip access-group {number|name} {in|out}
Extended ACL نوعی دیگری از ACL است که برخلاف Standard ACL میتواند ترافیک را بر اساس فیلدها و پارامترهای مختلف برای ما کنترل کند. وجود پارامترهای فراوان به ما این امکان را میدهد که ترافیکها بهصورت دقیقتر و بهتر کنترل شود. در Standard ACL تنها میشود بر اساس آدرس مبدأ ، بستهها را کنترل کرد ولی Extended ACL میتواند کنترل را بر اساس آدرس مبدأ و مقصد ، شماره پورت مبدأ و مقصد ، نوع پروتکل و ... انجام دهد درنتیجه Extended ACL بهعنوان یک ابزار قدرتمند برای مدیران برای کنترل ترافیک محسوب میشود. این ACLها بسیار قابلانعطاف بوده و دست ما را در فیلتر کردن انواع مختلف ترافیک باز میگذارند.
پارامترهای که میتوان توسط Extended ACL کنترل کرد:
- آدرس IP مبدأ
- آدرس IP مقصد
- شماره پورت مبدأ
- شماره پورت مقصد
- نوع پروتکل
ترکیب دستورات مورداستفاده برای ایجاد این نوع ACL به شکل زیر است:
Zharf (config)#access-list 100-199| 2000-2699 permit|deny IP_Protocol
source_address source_wildcard_mask
[protocol_information]
destination_address destination_wildcard_mask
[protocol_information] [log]
از این دستور نیز میتوان فهمید که دستورات بکار رفته در ایجاد ACLهای extended کمی پیچیدهتر از قبلی است. شمارهای که برای نامگذاری ACLها بکار میرود را میتوان در رنج ۱۰۰ تا ۱۹۹ و نیز ۱۶۹۹ تا ۲۰۰۰ انتخاب نمود. بعد از مشخص نمودن گزینههای permit / deny نوع پروتکل موردنظر را نیز باید مشخص نماییم که این نکته اولین تفاوت اساسی بین ACLهای استاندارد را با ACLهای گسترده نشان میدهد. این پروتکلها شامل موارد زیر میشوند:
IP,TCP,ICMP,GRE,UDP,IGRP,EIGRP,IGMP,IPINIP,NOS,OSPF
دومین تفاوت بین این دو ACL این است که در ACLهای گسترده علاوه بر مشخص نمودن آدرس دستگاه فرستنده، آدرس دستگاه گیرنده هم باید تعیین شود. مشخص کردن Wildcard Mask نیز انتخابی است. بسته به نوع پروتکل موردنظر میتوان اطلاعات بیشتری را در مورد آن پروتکلها مشخص کرد. برای مثال اگر از پروتکل IP استفاده شود، میتوان شمارههای پورت دستگاهها را هم تعیین کرد. برای ICMP نیز میتوان انواع پیامهای ارسالی را مشخص نمود. در آخر نیز با بکار بردن log میتوان نتایج را به پورت کنسول و یا یک سرور حاوی اطلاعات log یا syslog منتقل کرده و آنها را بهصورت متمرکز در آنجا تحت بررسی قرار داد. بکار بردن log در این دستور نیز انتخابی میباشد.
Extended ACL در حالت عددی :
access-list access-list-number {permit|deny} protocol source [Source port]destination [destination port]
access-list-number : عدد بین ۱۰۰ تا ۱۹۹ یا ۲۰۰۰ تا ۲۶۹۹
permit|deny : عملی که در هنگام تطبیق بسته با ACL نسبت با آن گرفته میشود (اجازه عبور یا عدم اجازه(.
Protocol : مشخص کردن نوع پروتکل مثل TCP ، UDP ، IP و ...
Source : مشخص کردن IP مبدأ
Source port : شماره پورت Destination: مشخص کردن IP مقصد
destination port : شماره پورت مبدأ بسته
Extended ACL با استفاده از نام :
IP Access-list {standard|extended} name
{permit|deny} protocol source [Source port] destination [destination port]
نحوی تخصیص Extended ACL به اینترفیس:
Ip access-group {number|name} {in|out}
در برخی از شرایط نیاز است که یک سرویس خاص در برخی از ساعتها یا زمانهای خاص مورداستفاده قرار گیرد این کار بهوسیله ACL معمول امکانپذیر نیست برای این کار از Time Based ACL استفاده میشود.Time based ACL نوع دیگری از Access list است که در نسخه IOS 12.0.1.T سیسکو ارائه شد و به ما این امکان را میدهد که علاوه بر پارامترهای کنترلی ذکرشده برای ACL ، بتوانیم آن را زمانبندی کنیم بهطور مثال کاربران در روز فقط از ساعت ۱۱ تا ۱۲ امکان دسترسی به اینترنت را داشته باشند.
برخی از موارد استفاده Time Based ACL :
- مدیر شبکه کنترل بیشتری روی دسترسی کاربران به منابع شبکه دارد.
- امکان log گیری از ترافیک در زمانهای خاص
- امکان تغییر مسیر ترافیک شبکه در زمان مشخص
- در بحث QoS مفید است مثلاً در یک ساعت خاص Bandwith برای QoS در نظر گرفته شود.
- Policy-Based Routing و Queuing Function را برای ما بهبود میبخشد.
نحوی فعالسازی Time Based ACL
در ابتدا باید یک Time Range مشخص شود:
zharf(config)#time-range TR
زمانبندی به دو صورت امکانپذیر است:
- بازه مشخص که تکرار میشود مثل ساعت کاری سازمانها :
zharf(config-time-range)#periodic daily 07:00 to 14:00
- بازه زمانی خاص یعنی در یکزمان خاص شروع و در یکزمان مشخص خاتمه مییابد:
zharf(config-time-range)# absolute start 10:00 20 may 2015 end 12:00 30 may 2015
بعد از تعریف Time Range باید آن را به ACL موردنظر اختصاص داده میشود:
zharf(config)#ip access-list extended itpro
zharf(config-ext-nacl)#permit ip any any time-range TR
درنهایت ACL ایجادشده را به یک اینترفیس اختصاص داده میشود:
zharf(config)#interface fastethernet 0/0
zharf(config)#ip access-group itpro in
علاوه بر فعالیت اصلی ACLها که فیلتر کردن ترافیکهای انتقالی در شبکه است از آنها در موارد دیگر نیز میتوان استفاده کرد. برای نمونه چند کاربرد عمده آنها عبارتند از:
- محدود کردن دسترسی از طریق VTY TELNET
- فیلتر کردن اطلاعات routing
- اولویتبندی ترافیک مربوط به WAN
- تغییر پارامتر Administrative distance
- برقراری تماسهای تلفنی (DDR )Dial-Demand Routing