درس بیست و ششم- ایجاد امنیت در لایه دوم شبکه

در این بخش می‌خواهیم انواع روش‌های امنیتی را در لایه دوم شبکه پیاده‌سازی کنیم که یکی از جاهایی است که مهاجمان بیشتر حمله را دارند و اگر به درستی از آن جلوگیری نکنید می‌تواند ضربه سنگینی به پیکره‌ی شبکه شما وارد کند.

در این بخش به موضوعات گوناگونی خواهیم پرداخت که لیست آن را در زیر مشاهده می‌کنید:

  • بررسی حفاظت از پروتکل Spanning Tree Protocol
  • بررسی تکنولوژی BPDU
  • بررسی تکنولوژی Root Gurd
  • تحلیل و بررسی سرویس Port Security
  • ایجاد امنیت در سرویس DHCP
  • تحلیل و بررسی Spoofing MAC Addresses
  • تحلیل و بررسی DHCP Snooping
  • تحلیل و بررسی IP source  guard 
  • تحلیل و بررسی Dynamic Arp Inspection 
  • تحلیل و بررسی تکنولوژی تشخیص (IDS)
  • تحلیل و بررسی Private VLAN

بررسی حفاظت از پروتکل Spanning Tree Protocol

در این بخش نگاهی به پروتکل STP می‌اندازیم و روش‌های محافظت از این پروتکل حیاتی را با هم بررسی می‌کنیم.

 STP (Spanning Tree Protocol)

پروتکل STP توسط سازمان IEEE با شماره­ی ۸۰۲.۱D استاندارد شده است و شرکت سازنده­ی آن DCE است.

کار این پروتکل این است که وقتی شبکه در Loop قرار می‌گیرد، بعضی از interface های اضافه را ShutDown می‌کند و فقط به یک‌ طرف اجازه­ی ارسال و دریافت اطلاعات می‌دهد.

این پروتکل از طریق الگوریتمی به نام STA (Spanning Tree Algorithm) برای این کار استفاده می‌کند که کار این الگوریتم به این صورت است که کل ساختار شبکه را به صورت یک درخت درآورده و جاهایی را که Loop در آن ایجاد شده، مهار می‌کند. در شکل زیر، ۲ سوئیچ با دو لینک به هم متصل شده‌اند و پروتکل STP برای جلوگیری از Loop، یکی از لینک‌ها را از رده خارج کرده است.

نحوه­ی کارکرد الگوریتم   STA

قبل از این کار به چند موضوع می‌پردازیم:

Bridge ID:

شناسه‌ای است برای تمایز دادن سوئیچ‌ها در پروتکل STP، پس می‌توان گفت با کمک این شناسه، سوئیچ‌ها در یک شبکه قابل تشخیص هستند و اجزای تشکیل‌دهنده­ی Bridgr Id دو چیز است:

  • Priority: عددی است روی سوئیچ‌های شرکت سیسکو که به صورت پیش‌فرض ۳۲۷۶۹ است.
  • Mac Address: آدرس Mac پورت مورد نظر در سوئیچ.

پس Bridge ID، جمع این دو گزینه می‌شود. به شکل صفحه­ی قبل توجه کنید؛ در سوئیچی که پروتکل STP روی آن اجرا شده است (که با جهت‌نما آن را مشخص کردیم) در مد Privileged دستور زیر را وارد کنید:

Switch# show spanning-tree

VLAN0001

Spanning tree enabled protocol ieee

Root ID    Priority    ۳۲۷۶۹

Address     ۰۰۰۱.C9A6.90A3

Cost        ۱۹

Port        ۱(FastEthernet0/1)

Hello Time  ۲ sec  Max Age 20 sec  Forward Delay 15 sec

Bridge ID  Priority    ۳۲۷۶۹  (priority 32768 sys-id-ext 1)

Address     ۰۰۹۰.0C6C.EE69

Hello Time  ۲ sec  Max Age 20 sec  Forward Delay 15 sec

Aging Time  ۲۰

Interface        Role Sts Cost      Prio.Nbr Type

—————- —- — ——— ——– ——————————–

Fa0/1            Root FWD 19        ۱۲۸.۱    P2p

Fa0/2            Altn BLK 19        ۱۲۸.۲    P2p

Fa0/3            Desg FWD 19        ۱۲۸.۳    P2p

این اعداد به رنگ قرمز در نتیجه مشخص شده‌اند.

Root Bridge:

برای انتخاب یک سوئیچ به ‌عنوان root Bridge تمام Bridge ID های مختلف سوئیچ‌ها باهم مقایسه می‌شوند و هرکدام که کوچک‌تر بود، همان سوئیچ به‌ عنوان Root Bridge انتخاب می‌شود.

BPDU:

فریمی در سوئیچ است که برای انتقال اطلاعات بین سوئیچ‌ها کاربرد دارد و یکی دیگر از ویژگی‌های آن این است که تغییر ساختار شبکه را خیلی سریع به دیگر سوئیچ‌ها در شبکه اطلاع می‌دهد.

Root Port:

پورتی است که ارتباط مستقیم با Root Bridge دارد و از طریق آن انتخاب می‌شود.

Designated port:

پورتی از سوئیچ است که به‌ عنوان Forwarding انتخاب می‌شود و کار ارسال و دریافت اطلاعات را انجام می‌دهد.

NonDesignated port:

برای جلوگیری از  loopاین پورت shutdown می‌شود.

پس در کل در الگوریتم STA هر سوئیچ Bridge ID خود را محاسبه می‌کند و بعد، از طریق BPDU آن را در شبکه تبلیغ می‌کند، بعد Bridge ID خود را با دیگر سوئیچ‌ها مقایسه می‌کند، اگر Bridge ID خودش کمتر از دیگران باشد، Bridge ID خود را در شبکه تبلیغ می‌کند، اما اگر یکی کمتر از خود را پیدا کند آن را در قالب فریم BPDU به دیگر سوئیچ‌ها اعلام می‌کند تا در آخر کار بعد از مقایسه، Bridge ID کمترینBridge ID  به دست آید که آخرین سوئیچ با کمترین Bridge Id به‌ عنوان Root Bridge انتخاب می‌شود. بعد از این کار، نوبت به انتخاب وضعیت پورت‌ها است که چه پورتی در چه وضعیتی قرار دارد.

در شکل صفحه­ی بعد، تمام مراحل بالا وجود دارد. اگر به شکل توجه کنید، Switch A به علت کوچک‌تر بودنMac Address نسبت به بقیه­ی سوئیچ‌ها، به‌ عنوان Root bridge انتخاب شده است و هر دو پورت آن به حالت Forwarding رفته است. پورت‌های سوئیچ‌های B و C که به سوئیچ A متصل هستند به ‌عنوان Root Port انتخاب شده‌اند. پورت بعدی سوئیچ‌های B و C به ‌عنوان پورت Forwarding انتخاب شده‌اند و به همین ترتیب بقیه­ی پورت‌ها انتخاب می‌شوند. برای جلوگیری از loop یکی از پورت‌های سوئیچ E به حالت Nondesignated رفته وBlock  شده است که البته این پورت به نسبت پورت دیگر دارای cost بیشتر و پهنای باند کمتری بوده است.

پس اگر مراحل کار الگوریتم STA را طبق مراحل زیر در نظر بگیریم، متوجه­ی کار این الگوریتم خواهیم شد.

  • سوئیچ‌ها، Bridge ID خود را مشخص می‌کنند.
  • در این مرحله، هر سوئیچ Bridge ID خود را تحت فریم BPDU به دیگر سوئیچ‌ها تبلیغ می‌کند تا پایین‌ترین Bridgr ID مشخص شود و بعدازآن، Root Bridge مشخص می‌شود.
  • باید Designated Port انتخاب شود که پورت‌های متصل به سوئیچ Root Bridge به‌ عنوانDesignated Port انتخاب می‌شوند و کار ارسال و دریافت اطلاعات را انجام می‌دهند. در بین دو سوئیچ هم پورتی که کمترین cost را داشته باشد، به ‌عنوانDesignated Port انتخاب می‌شود.
  • در این مرحله که مرحله­ی مهمی است در آن قسمت که loop ایجاد می‌شود، یکی از پورت‌ها که پهنای باند کمتر و Cost بیشتر داشته باشد، به ‌عنوان پورت NonDesignated Port انتخاب و Block می‌شود. اگر چنانچه هر دو فاکتور پهنای باند و cost یکی باشد، معیار انتخاب Bridge ID بزرگ‌تر است.

تا به اینجا سرویس STP را بررسی کردیم و روش کار آن را آموختید، در ادامه روش‌های محافظتی برای خرابکاری در این سرویس را می‌آموزیم.

بررسی BPDU Guard

یک شبکه را در نظر بگیرید که دارای چند سوئیچ می‌باشد و چندین سیستم به هر یک از سوئیچ‌ها متصل شده است، به صورت پیش‌فرض پورت‌هایی که از یک سوئیچ به سوئیچ دیگر متصل شده باشد در حالت Trunk قرار دارد و دستگاه‌های دیگر مانند کلاینت‌ها در حالت Access قرار می‌گیرند، در شکل زیر سه سوئیچ را مشاهده می‌کنید، سوئیچ SW1 که به عنوان سوئیچ Root مشخص شده است با سوئیچ SW2 ارتباط دارد و پورت آنها در حالت Trunk قرار گرفته است، ولی پورت دیگر سوئیچ SW2 در حالت Access قرار دارد و اصولاً باید کلاینت‌ها، سرورها، چاپگر‌ها و… به آن متصل شوند، ولی اگر یک مهاجم یک سوئیچ را به این پورت متصل کند می‌تواند در شبکه اختلال ایجاد کند.

برای جلوگیری از این کار باید دستور زیر را در پورت G1/0/1 سوئیچ SW2 وارد کنید:

Switch(config)#int G1/0/1

Switch(config-if)#switchport mode access

Switch(config-if)#switchport access vlan 1

Switch(config-if)#spanning-tree portfast

Switch(config-if)#spanning-tree bpduguard enable

با اجرای این دستور در پورت مورد نظر اگر چنانچه سوئیچ به آن پورت متصل شود و بخواهد فریم BPDU ارسال کند، با فعال بود BPDU Guard، پورت مورد نظر خاموش خواهد شد.

برای اینکه این موضوع بهتر برای شما جا بیفتد به مثال بعدی در این مورد توجه کنید.

در شکل روبرو سه سوئیچ و دو PC را به نرم‌افزار PacketTracer اضافه کردیم، سوئیچ SW1 که در قسمت شماره‌ی یک مشخص شده است، به عنوان سوئیچ اصلی در نظر گرفته شده است، و سوئیچ‌ها به همراه کلاینت‌ها بدون هیچ مشکلی به آن متصل شده‌اند، ولی برای ایجاد امنیت می‌خواهیم BPDU Guard را روی پورت سوئیچ شماره‌ی یک اعمال کنیم، ولی قبل از آن به این نکته اشاره کنیم که بهتر است همه پورت‌های سوئیچ را در حالت BPDU Guard قرار دهید و فقط بر روی پورت‌هایی که به سوئیچ اصلی متصل‌ می‌شوند این گزینه را فعال نکنید.

Switch(config)#interface range fastEthernet 0/2-24

با دستور بالا  وارد تمام پورت‌های سوئیچ شماره‌ی یک می‌شویم به جزء پورت Fa0/1 که به سوئیچ شماره‌ی دو متصل است.

Switch(config-if-range)#switchport mode access

Switch(config-if-range)#switchport access vlan 1

با این دستور پورت های سوئیچ در حالت Access قرار می‌گیرند

Switch(config-if-range)#spanning-tree bpduguard enable

با اجرای دستور بالا ارتباط بین سوئیچ شماره یک با سه به علت فعال سازی BPDU Guard قطع خواهد شد و با پیغام زیر مواجه می‌شوید

Switch(config-if-range)#%SPANTREE-2-BLOCK_BPDUGUARD: Received BPDU on port FastEthernet0/2 with BPDU Guard enabled. Disabling port.

%PM-4-ERR_DISABLE: bpduguard error detected on 0/2, putting 0/2 in err-disable state

%LINK-5-CHANGED: Interface FastEthernet0/2, changed state to administratively down

%LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/2, changed state to down

در پیغام بالا، به این موضوع اشاره شد که از پورت FastEthernet0/2 فریم BPDU دریافت شد که به خاطر فعال بودن سرویس BPDU Guard پورت مورد نظر خاموش شده است.

همانطور که در شکل روبرو مشاهده می‌کنید، پورت Fa0/2 در سوئیچ شماره‌ی یک خاموش شده است و ارتباط را قطع کرده است.

اگر چنانچه بعد از خاموش شدن پورت نیاز باشد که آن را روشن کنید، راحت‌ترین راه انی است که وارد آن پورت شوید و از دستورات Shutdown و No Shutdown استفاده کنید که این کار یک روش معمول برای تمام مدیران شبکه است؛ حال اگر در محل مورد نظر قرار نداشته باشد آن وقت چه باید کرد؟

برای حل این مشکل باید از مد Recovery استفاده کنید، برای این کار از دستور زیر استفاده کنید:

Switch(config)#errdisable recovery cause bpduguard

با دستور بالا مد Recovery برای سرویس BPDU فعال می‌شود.

Switch(config)#errdisable recovery interval 180

در این دستور هم زمان روشن شدن پورت ۱۸۰ ثانیه در نظر گرفته شده است.

پس نتیجه این کار این شد که کسی بدون اجازه نمی‌تواند سوئیچ غیر مجاز به شبکه اضافه کند و پروتکل STP را دستکاری کند.

تحلیل و بررسی Root Guard

یکی از دیگر روش‌های منحصر به فرد سیسکو برای محافظت از پروتکل STP استفاده از Root Guard است، این سرویس قابلیت اطمینان، کنترل و امنیت را در شبکه افزایش می‌دهد، در این سرویس با انتخاب یک سوئیچ به عنوان Root به بقیه‌ی سوئیچ‌ها اجازه نمی‌دهد که به عنوان سوئیچ Root فعالیت کنند، در ادامه این موضوع را به طور کامل بررسی می‌کنیم.

در این شکل چندین سوئیچ در نرم‌افزار Packet Tracer اضافه شده است، با توجه به ساختار شبکه، سوئیچ شماره‌ی یک باید به عنوان Root Bridge انتخاب شود، و همانطور که در درس قبلی به آن اشاره کردیم سوئیچ Root Brige از طریق شماره‌ی Priority انتخاب می‌شود.

به مانند شکل، برای اینکه متوجه شویم که آیا سوئیچ شماره‌ی یک به عنوان Root انتخاب شده یا نه از دستور show spanning-tree استفاده می‌کنیم؛ در قسمت اول شماره‌ی Priority و آدرس MAC سوئیچ Root مشخص شده است و در قسمت شماره‌ی دو مشخصات همین سوئیچی که انتخاب کردیم مشخص شده است، اگر توجه کرده باشید همین سوئیچ شماره‌ی یک به عنوان Root انتخاب شده است.

اگر دستور show spanning-tree را در سوئیچ شماره‌ی دو وارد کنید،  نتیجه به صورت شکل روبرو مشخص شده است، در قسمت اول سوئیچ Root با MAC آدرس ۰۰D0.BC5A.B425 مشخص شده است که این آدرس مربوط به سوئیچ شماره‌ی یک می‌باشد و در قسمت Port هم FastEthernet0/1 نوشته شده است که نشان می‌دهد اطلاعات را از این مسیر از سوئیچ Root  دریافت می‌کند.

همانطور که مشاهده کردید سوئیچ شماره‌ی یک به عنوان Root در این ساختار انتخاب شده است، حال اگر یک مهاجم Priority خود را در سوئیچ تغییر دهد، همه سوئیچ‌ها این سوئیچ را به عنوان Root قبول خواهند کرد.

 اگر به شکل زیر توجه کنید یک سوئیچ جدید به شبکه ما اضافه شده که همان سوئیچ مهاجم است، با اضافه شدن سوئیچ آدرس Root به سوئیچ جدید تغییر کرده است که این می‌تواند بسیار خطرناک باشد.

برای جلوگیری از این نوع حملات می‌توانیم در پورت‌هایی که احتمال بیشتری دارد تا مهاجم از آن طریق به شبکه حمله کند، دستور زیر را وارد کنید:

spanning-tree guard root

توجه داشته باشید این دستور باید در داخل Port مورد نظر که به بیرون متصل است اجرا شود.

همانطور که مشاهده می‌کنید، دستور spanning-tree guard root در سه سوئیچ اجرا شد و نتیجه ان این شد که مهاجمی که با Piority کمتر در لاش بود که خود را به عنوان Root معرفی کند بلاک شد و دوباره سوئیچ Root همان سوئیچ شماره‌ی یک شد.

تفاوت‌های بین دو سرویس Root Guard و BPDU Guard

سرویس BPDU و Root تفاوت خاصی با هم ندارند و هر دو برای یک هدف ایجاد شده‌اند، ولی اگر دقیق‌تر به موضوع نگاه کنیم، سرویس BPDU زمانی فعال می‎‌شود که یک مهاجم بخواهد یک سوئیچ را به شبکه شما متصل کند، که بعد از این کار چون سوئیچ‌ها به همدیگر فریم BPDU ارسال می‌کنند آن پورت خاموش می‌شود و مدیر شبکه باید به صورت دستی آن پورت را روشن کند و یا اینکه سرویس errdisable را برای آن فعال کند تا بعد از مدت زمان مشخص آن پورت روشن شود.

اما سرویس Root Guard تا زمانی که مهاجم سعی در تغییر Priority نکند واکنشی از خود نشان نمی‎‌دهد، ولی اگر Priority تغییر کند و سوئیچ Root تغییر کند، آن پورت بلاک خواهد شد.

در کل استفاده  برای امنیت بیشتر سوئیچ‌ها در شبکه از هر دو سرویس به طور همزمان استفاده کنید تا از خطرات آن جلوگیری کنید.

 

دیدگاه‌ خود را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

Scroll to Top