کار با Control plane
یکی دیگر از قسمتهای مهم شبکه Control Plane است که به صورت مستقیم مربوط میشود به دستگاههای شبکه که باید بار کاری آنها بررسی و آنالیز شود تا با افزایش درخواستها از دستگاههای مورد نظر مشکلات سختافزاری برای آن پیش نیاید و اگر هم Control Plane از کار بیفتد هر دو قسمت Managemnet Plane و Data Palen از کار خواهد افتاد.
بررسی CoPP
CoPP یا Control plane policing به روشها و سیاستهای کنترلی برای حفظ Control Plane اشاره دارد که به صورت کلی بر روی Control Plane اعمال میشود.
ترافیک بیش از حد در روتر میتواند به مرور زمان بر عملکرد آن تاثیر بگذارد و به خاطر همین باید کارهایی را در رفع مشکل آن پیادهسازی کرد.
در زیر روشهایی را بررسی میکنیم که کارکرد آنها میتواند بر روی CPU اثر گذار باشد:
- Access control list (ACL) logging : زمانی که از Access List در سی۵استهای کاری خود استفاده میکنید، هر عملی که با این لیستها انجام شود یک Log در دستگاه ثبت خواهد شد که همین موضوع بار CPU را افزایش میدهد.
- IP options : پردازش تمام بستههای IP با جزئیات آن
- Fragmentation : همانطور که میدانید هر بستهی IP در صورت نیاز باید تکه تکه شود و این کار باز هم به CPU نیاز دارد.
- Time-To-Live (TTL) expiry: بستههای ICMP که زمانی کمتر یا مساوی یک دارند نیاز به پردازش CPU دارند
- ICMP unreachables : بستههایی که در هنگام مسیریابی غیر قابل دسترس هستند تووسط CPU پردازش میشوند
- Traffi c requiring an ARP request : مقصدی که ورودی پروتکل ARP برای آنها وجود ندارد باید پردازش شود.
- Non-IP traffic : تمام ترافیکهای غیر IP توسط CPU پردازش میشوند.
traffic : به ترافیکهایی گفته میشود که توسط خود روتر پردازش میشود، اگر از دستور Show IP cef استفاده کنید، در شکل روبرو این دستور اجرا شده است و در قسمت Next Hop اگر کلمهی receive را مشاهده کردید به این معنا است که ترافیک توسط خود روتر ایجاد و پردازش شده است.
برای اینکه از Access list استفاده کنید بهتر است از Access List پیشرفته استفاده کنید و نوع سرویس را مشخص کنید تا محدوده Access List محدود به سرویس خاصی شود و بیش از حد از CPU استفاده نکند، در زیر به طور کامل Access list را بررسی و دو مورد Standard و Extended را مورد بررسی قرار میدهیم.
کار با Access List
Access control List یا همان Access list برای ایجاد محدودیت و امنیت در شبکه کاربرد دارد، با استفاده از این سرویس میتوانید بر روی پروتکلها، کلاینتها، سرورها و هر چیزی که در شبکه در حال رد و بدل اطلاعات است محدودیت ایجاد کنید، روتر با استفاده از این لیستها به تجزیه و تحلیل اطلاعات میپردازد.
Access List با استفاده از اطلاعات منبع و مقصد مانند شماره پورت، آدرس IP و… محدودیت مورد نظر خود را اعمال کند که در ادامه با این موضوعات کار خواهیم کرد.
این لیست شامل شرطهایی است که برای ان تعریف میکنیم و زمانی که بر روی یک پورت خاص اعمال شود محدودیت یا دسترسی به منابع خاص را خواهد داد که این موضوع بسیار میتواند به امنیت شبکه کمک کند.
با اجرا این سیاستها در شبکه شما خود را به عنوان یک مدیر شبکه با امنیت بالا معرفی خواهید کرد.
در این قسمت لیستی از تعدیدات امنیتی را مشاهده میکنید که با استفاده از Access List کم خواهد شد:
- IP address spoofing, inbound
- IP address spoofing, outbound
- Denial of service (DoS) TCP SYN attacks, blocking external attacks
- DoS TCP SYN attacks, using TCP Intercept
- DoS smurf attacks
- Filtering ICMP messages, inbound
- Filtering ICMP messages, outbound
- Filtering traceroute
در کل دو نوع Access List در شبکه داریم که با شمارههای مختلف مشخص شدهاند.
- Access List استاندارد با شمارههای ۱ تا ۹۹ و ۱۳۰۰ تا ۱۹۹۹
- Access List پیشرفته با شمارههای ۱۰۰ تا ۱۹۹ و ۲۰۰۰ تا ۲۶۹۹.
اگر وارد روتر شوید و دستور یر را اجرا کنید لیستی از access list ها را با شماره مشخص شده مشاهده میکنید:
R1(config)# access-list ?
<1-99> IP extended access list
<100-199> IP extended access list
<1100-1199> Extended 48-bit MAC address access list
<1300-1999> IP standard access list (expanded range)
<200-299> Protocol type-code access list
<2000-2699> IP extended access list (expanded range)
<700-799> 48-bit MAC address access list
compiled Enable IP access-list compilation
dynamic-extended Extend the dynamic ACL absolute timer
rate-limit Simple rate-limit specific access list
همانطور که در لیست بالا مشاهده میکنید، همه Access List ها با شماره مشخص شدهاند که هر کدام برای اجرای محدودیت خاصی، کاربرد دارد، برای شروع Access List Standard را با هم بررسی میکنیم.
Access List استاندارد:
این نوع از Access List ها از شمارههای ذکرشده در بالا استفاده میکنند و فقط ترافیکهای مربوط به مبدأ را مورد بررسی قرار میدهند. با نحوهی کار این Access List آشنا میشویم.
Deny: این دستور در access List برای جلوگیری از دسترسی یک Node خاص به یک شبکهی دیگر است که بسیار پرکاربرد و خطرناک است، به دلیل اینکه با یک اشتباه، نصف یا کل شبکه از کار میافتد.
Permit: این دستور ضد دستور Deny است و برای دسترسی به شبکه کاربرد دارد.
در این مثال میخواهیم از دسترسی pc1 به Pc3 و Pc4 جلوگیری کنیم.
وارد روتر میشویم و دستورات زیر را به ترتیب وارد میکنیم:
Router(config)#ip access-list standard dpc1
در قسمت اول باید access List را تعریف کنیم؛ هم میتوانیم با نام و هم میتوانیم با شماره تعریف کنیم که در این قسمت از نام dpc1 استفاده کردیم. شما میتوانید هر اسم دیگری در این قسمت قرار دهید و یا از شماره استفاده کنید، اما همیشه سعی کنید از نام استفاده کنید که مدیریت آن آسان باشد.
Router(config-std-nacl)#deny 192.168.1.2 0.0.0.0
با این دستور، ip address مربوط به pc1 را Deny میکنیم. اگر توجه کنید در قسمت اول، دستور Deny و بعد، ip address مربوط بهpc1 و بعد از آن که مهم است از Wildcard Mask تأکیدی استفاده کردیم، یعنی استفاده از ۴ تا صفر که تأکید بر Deny کردن همین ip را دارد. اگر wild Card Mask را به صورت ۰.۰.۰.۲۵۵ وارد کنیم، یعنی تمام ip address ها در رنج ۱۹۲.۱۶۸.۱.۰ فیلتر شود، پس سعی کنید از Wild card Mask تأکیدی استفاده کنید.
Router(config-std-nacl)#permit any
بعد از Deny حتماً از Permit استفاده کنید، چون هر زمان که از Deny استفاده میکنید، بقیهی شبکه هم deny میشود و به خاطر همین از Permit Any استفاده میکنیم تا بقیهی شبکه اجازهی دسترسی داشته باشند.
بعد از تعریف کامل access List باید به روتر بگوییم که این فیلترینگ را روی کدام پورت انجام بدهد، پس وارد روتر میشویم. اگر توجه کنید میخواهیم دسترسی pc1 به pc3 و pc4 جلوگیری کنیم، پس باید در پورت Fa0/1 روتر دستور زیر را وارد کنیم:
Router(config)# int f0/1
Router(config-if)#ip access-group dpc1 out
به دستور توجه کنید،ip Access-group را تعریف و بعد از آن، نام Access List که ایجاد کردهایم را وارد میکنیم. گفتیم ترافیک این access List در زمان خروج از اینترفیس فیلتر شود. اگر به جای out، گزینهی in را انتخاب میکردید، این بدان معنا بود که شما access List را برای شبکهی ۱۹۲.۱۶۸.۲.۰ نوشتید که این امر اشتباه است و این access list عمل نمیکند.
و حالا اگر ازpc1 به pc3 و pc4، Ping کنید، با پیام زیر مواجه میشوید:
PC>ping 192.168.2.3
Pinging 192.168.2.3 with 32 bytes of data:
Reply from 192.168.1.1: Destination host unreachable.
Reply from 192.168.1.1: Destination host unreachable.
Reply from 192.168.1.1: Destination host unreachable.
Reply from 192.168.1.1: Destination host unreachable.
و حالا اگر از طریق pc2 بخواهید pc3 و pc4 را Ping کنید، جواب خواهید گرفت.
PC>ping 192.168.2.3
Pinging 192.168.2.3 with 32 bytes of data:
Reply from 192.168.2.3: bytes=32 time=1ms TTL=127
Reply from 192.168.2.3: bytes=32 time=0ms TTL=127
Reply from 192.168.2.3: bytes=32 time=0ms TTL=127
Reply from 192.168.2.3: bytes=32 time=0ms TTL=127
Ping statistics for 192.168.2.3:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 1ms, Average = 0ms
برای قرار دادن توضیحات روی یک Access List، باید از دستور Remark استفاده کرد:
Router(config-std-nacl)# remark Access List Deny Pc1
برای مشاهدهی این دستور باید وارد Running-config شوید تا این پیام را مشاهده کنید.
Router# show Running-Config
access-list 20 remark Access List Deny Pc1
Access List پیشرفته:
این نوع Access List از شمارههای ۱۰۰ تا ۱۹۹ و ۲۰۰۰ تا ۲۶۹۹ تشکیل شده است و میتواند ترافیک مربوط به مبدأ و مقصد را مورد بررسی قرار دهد، حتی میتوانید پروتکلها یا برنامههای خاص را Deny یا Permit کنید.
مثال۵: در این مثال میخواهیم Telnet را روی روتر راهاندازی کنیم و accessList بنویسیم که از دسترسی Pc2 به Telnet جلوگیری کند.
وارد روتر میشویم و به صورت زیر عمل میکنیم:
Router(config)#ip access-list extended Dpc2tel
یک access List extended با نام Dpc2tel را ایجاد کردیم که شما میتوانید به جای این نام از نام دلخواه یا از شمارههای ذکرشده در قسمت قبل استفاده کنید.
Router(config-ext-nacl)# deny tcp 192.168.2.0 0.0.0.255 any eq 23
در این قسمت برای Deny کردن pc2 برای جلوگیری از Telnet، باید از پروتکل Tcp و پورت ۲۳ که مربوط به Telnet است را Deny کنید. در زیر جدول مربوط به پروتکلها و شمارهی پورتها مشخص شده است.
Router(config-ext-nacl)# deny tcp 192.168.2.0 0.0.0.255 any eq 23
چون در اینجا قرار است که Telnet را برایpc2 ببندیم، از پروتکل TCP طبق جدول و از پورت ۲۳ که مربوط به Telnet است، استفاده میکنیم، پس به این صورت بخوانیم که Deny کن، پروتکل TCP را برای شبکهی ۱۹۲.۱۶۸.۲.۰ با Wild Card mask، ۰.۰.۰.۲۵۵ و با پورت ۲۳ که مربوط به Telnet است.
نکته: بعد از این کار، تمام ترافیک مربوط به شبکهی ۱۹۲.۱۶۸.۲.۰ فیلتر میشود، به خاطر این باید از دستور زیر در آخر کار برای Permit دادن به بقیهی شبکه استفاده کرد.
Router(config-ext-nacl)#permit ip any any
با این کار، pc2 میتواند با روتر ارتباط داشته باشد و فقط پروتکل Telnet بسته شده است. اگر یادتان باشد در access List standard همهی ترافیک مربوط به یک دستگاه فیلتر میشد و حق دسترسی به هیچ عنوان نداشت، اما در accesslist Extended این چنین نیست و فقط pc2 نمیتواند Telnet کند، اما میتواند روتر را ping کند.
در ادامه باید این access List را روی پورت روتر فعال کنیم:
Router(config-if)#ip access-group Dpc2tel in
پس این دستور به این صورت خوانده میشود که Ip access-group Dpc2tel را بر روی این پورت به صورت ورودی فعال کن، ورودی یعنی اینکه Pc2 در حال ورود به روتر است. اگر از Pc2 به روتر Telnet کنیم، جواب نمیدهد.
PC>telnet 192.168.2.1
Trying 192.168.2.1 …
% Connection timed out; remote host not responding
اما اگر به روتر ping کنیم، جواب میگیریم:
PC>ping 192.168.2.1
Pinging 192.168.2.1 with 32 bytes of data:
Reply from 192.168.2.1: bytes=32 time=1ms TTL=255
Reply from 192.168.2.1: bytes=32 time=0ms TTL=255
Reply from 192.168.2.1: bytes=32 time=0ms TTL=255
Reply from 192.168.2.1: bytes=32 time=0ms TTL=255
Ping statistics for 192.168.2.1:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 1ms, Average = 0ms
دستورShow access-lists :
این دستور، تعداد Access List های موجود در روتر را با جزئیات نمایش میدهد:
Router(config)#do sh ip access-list
Extended IP access list Dpc2tel
دوستان توجه داشته باشید که دستورات به صورت خلاصهشده وارد شده است و چون در مد Global هستیم، در اول دستور از do استفاده کردیم.
دستورshow access-list:
با این دستور میتوانیم جزئیات یک access-list را مشاهده کنیم:
Router#show access-lists Dpc2tel
Extended IP access list Dpc2tel
deny tcp 192.168.2.0 0.0.0.255 any eq telnet (24 match(es))
permit ip any any (8 match(es))
در ادامه از access-List بسیار استفاده میکنیم و این دستور یک دستوراساسی در سیسکو است.
استفاده از Access-List در پورت مجازی VTY:
شما میتوانید با تعریف یک ACCESS List و فعال کردن آن در پورت Vtyبه یک ip اجازهی Telnet بدهید یا ندهید. برای انجام این کار به مثال زیر توجه کنید:
مانند شکل بالا، یک روتر و دو pc به صفحه اضافه و به هم متصل کنید و به پورتهای مورد نظرip دهید.
وارد روتر شوید و access-List زیر را وارد کنید:
Router(config)#ip access-list standard 10
Router(config-std-nacl)#permit 192.168.1.0 0.0.0.255
در دستورات بالا، یکaccess-list استاندارد با شمارهی ۱۰ تعریف کردیم و بعد از آن به شبکهی ۱۹۲.۱۶۸.۱.۰ اجازه دسترسی دادیم و زمانی که یک Permit برای یک شبکه تعریف میکنیم، بقیهی شبکههاDeny میشوند.
بعد از ایجاد Access-list، وارد پورتLine Vty میشویم و telnet را روی پورتها فعال میکنیم:
Router(config)#line vty 0 15
Router(config-line)#password 123
Router(config-line)#login
Router(config-line)#access-class 10 in
در دستور اول وارد پورت ۰ ۱۵ VTYمیشویم و بعد، رمز عبور را بر روی پورتها قرار میدهیم، سپس با دستور login میگوییم که در زمان telnet شدن، رمز عبور را درخواست کند و بعد از آن، با دستور access-class به این پورت میگوییم که در زمان telnet شدن، فقط ip address هایی را قبول کن که access-list 10 میگوید.
بعد از اتمام کار، اگر از طریق pc1 به روتر telnet کنید، جواب میگیرید، اما از طریق pc2 این امکان وجود ندارد.
بررسی CPPr
CPPr یا Control plane protection به مانند CoPP است با این تفاوت که بر جزئیات کار تمرکز دارد و میتوانید مشخص کنید چه ترافیکی بررسی شود در زیر سه زیر شاخه در باره این موضوع را مشاهده میکنید:
Host subinterface : نشان دهندهی ترافیکهای عبوری است که مقصد آن خود دستگاه مورد نظر است.
Transit subinterface : ترافیکی که از دستگاه خارج میشود و ربطی به خود دستگاه ندارد.
CEF-Exception subinterface : مربوط به یک سری از ترافیکهای به غیر از IP