ساخت Access Control List

در حالت Standard:

access-list list# [permit/deny] source-ip wildcard-mask

شکل کلي به صورت :

براي ساخت و اعمال يک Access list ‌ بايد کامندهاي زير را اعمال کنيد .

R1 > Enable Enter
R1# configure terminal Enter
R1(config)# access-list <1-99> <permit/deny> <source IP> Enter

مثال:

 Router (config) # access-list 1 permit 10.10.10.1

با اين Access list اجازه را براي سيستمي با IP:10.10.10.1  صادر ميکنيد .اگر کامند را به صورت زير اعمال کنيد اجاره کار را براي رنج IP (به عبارتي روي شبکه ) اعمال مي کنيد.

Router (config) # access-list 1 permit 10.10.10.1 0.0.0.255

اعطاي مجوزPermit  به ديگر گروهها

از آنجایی که access-list ها دارای یک عبارت deny any بصورت پیشفرض در آخر هر لیست میباشند ، لذا پس از نوشتن سطح دسترسی های مختلف باید متوجه اعطای مجوز permit به گروه های دیگر باشیم …

بعنوان مثال اگر شبکه را از دسترس منع کردیم ، بایستی با نوشتن دستوری دیگر ، سطح دسترسی را برای دیگران باز گذاشت ، چرا که همانطور که گفته شد بصورت پیشفرض، دستور     deny any در آخر لیست موجود است که بعد از چک کردن تمامی قوانین ، دسترسی همه را قطع خواهد نمود . لذا اگر میخواهیم deny any وجود داشته باشد ، پس قبل از آن قوانین اجازه دسترسی کاربران و شبکه ها را در آن لیست تعیین میکنیم تا با دستور پیشفرض مذکور با مشکل مواجه نشویم .

به مثال زیر توجه کنید :

 access-list 1 deny 192.168.10.0  0.0.0.128

 access-list 1 permit any

با استفاده از این دستور ،  deny any خنثی میگردد (البته اگر بصورت دستی deny any را قبل از آن وارد نکرده باشیم ! )

مورد عکس نیز وجود دارد ، بدین معنی که میتوان ابتدا شبکه ها و یا گره هایی از شبکه را به لیست سفید (permit) اختصاص دهیم و در آخر deny any را اضافه کنیم .

ارجعیت access-list ها از بالا به پایین بررسی و خوانده میشود …

برای دیدن محتویات یک access-list میتوانیم دستورزیر استفاده کنیم.

   شماره  ACL      show access-list

برای ست کردن  ACL   روی اینترفیس:

R1> Enable Enter
R1# Configure Terminal Enter
R1(config)# int fa 0/0 Enter
R1(Config-if)# ip access-group 70 out Enter

ip و access-group کلمات کلیدی هستند. 70 شماره access-list ی هست که بالا ساختیم و out مشخص میکنه که میخوایم فقط بسته هایی بررسی بشن که دارن از روتر ما با استفاده از اینترفیس fa0/0 خارج میشن.

در حالت:Extended

شکل کلي به صورت:

access-list list# [permit/deny] protocol src src-wildcard  dst dst-wildcard operator [port]

که بروي بر روی Source-IP و Destination IP  و همچنین Source Port و Destination Port کنترل دسترسی دارد
این ACL هم تنظیماتش مثل Standard هست با این تفاوت که علاوه بر ادرس IP مبدا میشه بسته ها رو براساس پروتکل ارتباطی و ادرس مقصد هم فیلتر کرد.

R1 > Enable Enter
R1# configure terminal Enter
R1(config)# access-list <100-199> <permit/deny> <Protocol ><source IP> <Destination IP> <Destination Port# or Name> Enter

همونطور که میبینید Extended ACL خیلی طولانی تر است و خیلی امکانات بیشتری دارد. با یک مثال توضیح داده می شود.

مثلاً ما میخواهیم کاری کنیم دسترسی یک PC خاص در شبکه ما به یک سایت خاص( از اینترنت ) قطع شود. برای اینکار باید کاری کنیم که آن سیستم نتواند به IP  آن سایت دسترسی داشته باشه و چون بحث ما سر سایت است پس منظور ما TCP 80 یا همان پروتکل http است.

 مراحل:

1)  بدست آوردن آدرس IP سایت که این کار خیلی ساده با یک Ping انجام می شود.
مثلاً میخواهیم دسترسی به سایت Facebook را ببیندیم روی آن سیستم مینویسیم ping facebook , و در جواب ping آدرس آی پی آن که 69.63.181.12 است برای ما ارسال می شود.

2) در نزدیکترین روتر به PC مورد نظر یک ACL به صورت زیر میسازیم.

            نکته: Standard ACL در نزديکترين روتر و اينترفيس به مقصد و  Extended ACL در نزديکترين روتر و اينترفيس به مبداء تنظيم مي شود.

R1(config)# access-list 101 deny tcp host 192.168.3.1 host 69.63.181.12  80
R1(config)# access-list 101 permit ip any any
R1(config)# int fa0/0
R1(config-if)# ip access-group 101 in

این سیستم ما که IP  آن 192.168.3.1 مي باشد براي اينکه به روتري برسد که به اينترنت وصل مي باشد خودش از چند روتر عبور مي کند.

101 شماره ACL ماست. همانطور که گفتيم اگر شماره 199-100 را انتخاب کنيم خود روتر ميفهمد که ACL ما از نوع  Extended مي باشد. TCP پروتکل ماست. یعنی فقط بسته هایی که مبدا و مقصدشان ای پی که ذکر شده هستند و از TCP استفاده میکنند و پورت مقصدشان هم HTTP یا همان پورت80 مي باشد را deny کن. در اين مثال PC ما میتواند مثلاً با پروتکل FTP آن سایت کار کند ولی آن سایت خاص را با اکسپلورر یا فایرفاکس با HTTP نمیتواند باز کند.

حال اگر بخواهيم کلا دسترسي اين سيستم را به يک IP خاص براي همه پروتکل ها محدود کنيم به جاي TCP مي توانيم بنويسيم IP، که IP شامل همه پروتکل هاي مي شود.

همانطور که در  Standard باید یک جمله permit any اضافه میکردیم در Extended هم اين کار انجام مي شود اما کمي تفاوت دارد.

access-list 101 permit ip any any

  permit: دسترسي باز است

Ip: یعنی همه پروتکل ها

 : any اولی یعنی از هر جایی که آمده است

 :any دومی یعنی به هر جایی که ميخواهد برود محدوديت ندارد.

اين ACL را در اولين روتر و اويلن اينترفيس ( قبل از ورود به روتر) ست مي کنيم. چون روي اينترفيس وردي اينکار را انجام ميدهيم پس مي گوييم  inbound یعنی موقع ورود بسته به روتر چک شود.

نکته: برای دیدن تنظیمات ACL و ACL هایی که روی یک روتر ساخته شده است مي توانيد از کامندهاي زير استفاده کنيد.

R1# show access-lists
یا
R1# show access-list <access-list #/Name> k

اعمال Access-list:

Access-List ها بتنهایی قادر به انجام کاری نیستند و تنها بعنوان یک لیست ، گروهی را با سیاستهای دسترسی تعریف شده در خود جای داده است .

با استفاده از قالب دستوری زیر ، بایستی قانون و سیاست نوشته شده خود را در قالب یک گروه ، به درگاه خاصی اختصاص دهیم .

Interface port #

Ip access-group [acl#] [in/out]

حال براي اعمال Access-list بايد کامندهاي زير را اجرا کنيد فقط به اين نکته توجه داشته باشيد که قصد داريد ليست شما روي کدام اينترفيس و در کدام جهت اعمال کنيد .اگر بخواهيد روي بسته هاي در زمان ورود به روتر با ليست چک شود بايد روي اينترفيس مورد نظر در جهت IN‌ اعمال کنيد اما اگر ميخواهيد در زمان خارج شدن از روتر چک شوند بايد در جهت OUT ‌اعمال کنيد .

Router (config ) # interface fastethernet 0/0
Router (config-if)# Ip access-group  110   in

چند مثال

مثال1:

Router (config) # access-list 110 deny   icmp 10.10.10.0 0.0.0.255 20.20.20.1 0.0.0.0 echo-reply

Icmp  :‌ پروتکل مورد نظر در اين فرمان است.

10.10.10.0 : IP ‌ سيستم يا شبکه مبدا

0.0.0.255 : Wildcard bits مربوط به شبکه مبدا

20.20.20.1 : IP سيستم يا شبکه مقصد

0.0.0.0 : Wildcard bits مربوط به شبکه مقصد

echo-reply :‌ پروتکلي که در اين مثال انتخاب شده است Icmp‌ مي باشد. اين پروتکل، پروتکل مربوط به ping  است به همين دليل در انتها اين گزينه را مي اورد که  شما قصد داريد تنظيمات را بر روي درخواستping ‌ يا براي جواب ping ‌ ببنديد . اگر شما Echo را انتخاب کنيد سيستم مورد نظر شما اجازه  ping کردن را ندارد اما اگر echo-reply‌ را انتخاب کنيد سيستم شما توانايي پاسخ دادن به ping ‌ را ندارد (به عبارتي سيستم شما توسط ديگر سيستمها ping ‌ نمي شود) .

 

مثال 2:

Router (config) # access-list 110 permit tcp 192.168.1.1 0.0.0.255 172.16.1.16 0.0.0.255 eq  80

Tcp  : با انتخاب اين پروتکل شما ميتوانيد تمامي پيامهايي را که به وسيله اين پروتکل کار ميکند را در دامنه کاري خود قرار دهيد .البته اگر شما در اين قسمت به جاي نام پروتکل از کلمه IP استفاده کنيد تمامي پروتکلها را شامل مي شود.
IP : ‌اعدادي که به عنوان IP  وارد ميکنيد دقيقا مانند مثال بالا هستند .
eq : در اين قسمت شما ميتوانيد دقيقا پورت مورد نظرتان را انتخاب کنيد .(به عنوان مثال پورت 80 مربوط به HTTP‌ است)

روش ديگري براي ايجاد Access-list وجود دارد که در اين روش شما ميتوانيد براي Access-list‌ نام انتخاب کنيد .شما در روش بالا براي ايجاد يک ليست که شامل چند خط مي شد بايد براي هر نوشتن هر کدام از خطوط فرامين بالا را به صورت کامل مي نوشتيد اما در اين روش شما تنها يک بار وارد Sub interface مي شويد و براي هر خط تنها نوع عمل را مشخص مي کنيد.

Router (config) # ip access-list extended cisco
Router (config-ext-nacl) # deny   icmp 10.10.10.0 0.0.0.255 20.20.20.1 0.0.0.0 echo-reply
Router (config-ext-nacl) # permit tcp 192.168.1.1 0.0.0.255 172.16.1.16 0.0.0.255 eq  80

مثال 3:

نحوه بستن پورت 23‌ که مربوط به Telnet است بر روي تمامي سيستم ها به جزء يک رنج خاص است .

Router (config) # access-list    101 deny   tcp 172.16.4.0   0.0.0.255   any   eq   23

Router (config) # access-list   101   permit   ip   any   any

Router (config) # interface   fastethernet   0/1

Router (config-if) # ip   access-group   101   out

چگونگي ويرايش ACL ها:

حال نکته اي که پيش ميايد اين است که چگونه ACL ها را ويرايش کنيم . اگر شما از ACL Extended ‌ استفاده کنيد ميتوانيد به خطوطي که مينويسيد شماره بدهيد و در نهايت اگر خواستيد خطي را اضافه و کم کنيد با توجه به مکانيت ان شماره اي را به ان اختصاص دهيد . به شکل زير توجه کنيد :

R1#show access-lists 120
Extended IP access list 120
10  deny tcp 192.168.10.0 0.0.0.255 any eq telnet
20  deny tcp 192.168.10.0 0.0.0.255 host 10.100.100.1 eq smtp
30  permit tcp any any

اعدادي را که در اول هر خط نوشته ايم نشان دهنده شماره هر خط است که شما اگر بعدا خطي را با شماره 12 اضافه کنيد اين خط در زمان اجرا به عنوان خط دوم اجرا ميشود .يکي ديگر از روشهاي ويرايش اين است که با کامند show access-list  کليه خطوط را در يک فايل Text کپي کرده و تغيرات مورد نظر را اعمال کرده و دوباره در محيط Configuration ‌ کپي کنيد، تنها با همين عمل خطوط Access-list  شما ويرايش شده است .

2,727
۰
۳۰ فروردین ۹۳

فرزانه تقدیسی

کارشناس ارشد هوش مصنوعی - پس از اتمام دوره Elastix & MCSE & CCNA & CCNP و اخذ مدارک بین المللی در این حوزه مشغول به کار شدم