امنیت VLAN ها و ترانکها
نوشته شده توسط بهادر اکرمی در 17 نوامبر 2013امنیت VLAN ها و ترانکها
درست است کهVLANها از یک جنبه هایی امنیت را فراهم میکنند مثلاً با جدا کردن ترافیک بخشهای مختلف از هم، به طوری که یک بخش قادر به مشاهده ترافیک بخش دیگر نباشد؛ اما از لحاظ دیگر میتوانند امنیت شبکه را دچار مشکل کنند.
یکی از مهمترین مشکلات وجود VLAN1 است که به صورت پیش فرض در هـمه سوئیچها به عنوان native VLAN تعبیه شده است و پیامهایی که از این VLAN صادر میشود برچسب نخواهند خورد. و همین امر باعث میشود که کلیه پیامهایVLANهای ۱ به راحتی قابل شنود باشند. دلیل بعدی آن همان طور که گفتیم ترافیک بین سوئیچها از طریق ترانکها و توسط پروتکلهای ترانکینگ ISL و Q 802.1 کنترل میشوند. این پروتکلها تنها از طریق Header بستههای رسیده از VLAN ها به وظایف خود عمل میکنند، حالا یک مهاجم از ترکیب این دو ویژگی میتواند به هر کدام از VLAN ها که خواست دسترسی داشته باشد. چگونه؟ مهاجم بسته خارج شده از VLAN1 را که به راحتی قابل شنود است و بسته بندی هم نشده است، بسته بندی میکند و Header خود را به آن اضافه میکند! پروتکلهای ترانکینگ با بستهای سر و کار دارند که هدر دارد و مامور است و معذور که پیام را به سوئیچ مربوطه برساند! اما چگونه می توان جلوی این موضوع را گرفت؟ بهترین کار این است که تمامی پورتها و ترانکها را از VLAN1 خارج کنیم و تا آنجا که میتوانیم از این VLAN استفاده نکنیم، در عوضVLAN دیگری را به عنوان native VLAN تعریف کنیم. اگر پروتکلهایی داریم که تنها باید از VLAN1 استفاده کنند سعی کنیم که VLAN1 نهایت امنیت را به کار ببریم.
مورد بعدی اینکه تمام پورتهایی که در یک سوئیچ بلا استفاده هستند را خاموش (shut down) کنیم، باید توجه داشت که حتی disable کردن هم امن نیست چرا که امکان Enable کردنش وجود خواهد داشت و سپس این پورتهای بلااستفاده را در یک VLAN جداگانه قرار دهید و آن VLAN را به هیچ VLAN دیگری ارتباط ندهید. به این VLAN ها اصطلاحاً Parking lot VLAN میگویند!
- اگر یک سری از پورتها خیلی مهم حیاتی هستند آنها را از سایر پورتها جدا کرده و در یکVLAN جداگانهی امن، نگهداری کنید.
- اگر نسبت به یک سری از کاربران مشکوک هستید، آنها را در VLAN های جداگانهای قرار بدهید (نگاهی کنید به شکل ۶).
- پروتکل DTPرا که امکان ترانک کردن یک پورت در صورت نیاز را مهیا میکرد، غیر فعال کنیم، چرا که این کار میتواند توسط یک هکر صورت گیرد!
- برای سوئیچها پسورد بگذارید. از سیاستهای port security استفاده کنید.
- توجه داشته باشید که این تنها پارهای از مواردی بود که میشد با اتکا به آنها امنیت بیشتری را در VLAN ها برقرار کرد و پیدا کردن باقی راهها و روشها بر عهده خودتان است.
زیر دستور port-security :
از این دستور برای ایجاد امنیت بیشتر در سوئیچ مورد استفاده قرار می گیرد. بطوریکه با استفاده از این دستور می توان محدودیتهایی را درخصوص دسترسی به یک پورت اعمال کرد.
می خواهیم مشخص کنیم چه کسی اجازه دارد به یک پورت Switch وصل شود. می دانیم switch یک device لایه دو می باشد و آدرس دهی و دسترسی از طریق Mac می باشد. بنابراین با port security می خواهیم محدودیت سازی کنیم روی یک پورت Switch کدام Mac Address ها اجازه دارند وصل شوند.
و همچنین از این طریق میتوانیم مشخص کنیم چه تعداد PC میتواند به پورت switch دسترسی داشته باشند.
سوال پیش می آید که چطور یک پورت سوییچ میتواند بیشتر از یک Mac را Learn کند؟
پاسخ این است که وقتی ما به Mac table یک switch نگاه میکنیم زمانی روی یک port آن بیش از یک Mac add را یاد میگیرد که به switch دیگری متصل باشد و از طریق این اتصال و این port، تمامی Mac add های switch را Learn میکند.
قابلیت دیگری که وجود دارد این میباشد که گاهی میخواهیم تعداد mac add هایی را که روی یک port خاص،learn میشود را محدود کنیم. تا به پورت سوییچ، سوییچ دیگری متصل نگردد.
و اگر تخلفی رخ داد چه اتفاقی می افتد و سوییچ با متخلف چه برخوردی می کند؟
در نظر بگیرید در یک سازمان بزرگ ما توسط دستور nonegotiate پورت های بلا استفاده را در شبکه Block کرده ایم ولی اگر شخصی سوکت شبکه ای را از پشت یکی از PCهای مجموعه جدا کند و به دستگاه خود وصل کند مطمئناً می تواند وارد شبکه شود زیرا پورت را به حالت Access تنظیم کرده ایم، به منظور جلوگیری از این قبیل مسایل از دستور Port-Security استفاده می کنیم.
بر روی سوییچ ها دو نوع Port داریم:
ACCESS : پورت های بین Switch و User انتهایی
TRUNK: پورتهای بین سوییچ ها
نکته مهم این می باشد که port security فقط Access Port ها پیاده سازی میشود.
برای راه اندازی Port Security بر روی پورت مورد نظر، سوییچ را با دستور زیر به حالت Access میبریم:
cfcl(config)#interface fastethernet 0/1
cfcl(config-if)#switchport mode access
فعال کردن Port Security روی پورت مورد نظر:
cfcl(config-if)#switchport port-security
معرفی کردن Mac Address های مجاز:
یک کلاس درس را تصور کنید که دارای یک switch می باشد و همچنین تعداد client ها نیز،۱۰ عدد می باشد.
می خواهیم فقط کامپیوترهای کلاس یه سوییچ وصل شوند و نمی خواهیم کسی از بیرون به شبکهی ما دسترسی داشته باشند.
فرض کنید به ترتیب پورتهای ۱ تا ۱۰ به کامپیوترهای کلاس وصل میباشد. بنابراین باید وارد هرکدام از پورتها شویم و Mac Address کامپیوتر متصل شده به آن پورت را، به صورت دستی تعریف کنیم در Port Security.
Configure allowed mac addresses :
cfcl(config-if)#switchport port-security mac-address H.H.H (e23f.23e2.ef2e) 1st mac
cfcl(config-if)#switchport port-security mac-address H.H.H (e23f.23e2.ef3e)2nd mac
cfcl(config-if)#switchport port-security mac-address H.H.H (e23f.23e2.ef24) 3rd mac
در حال حاضر کلیهی کامپیوترهای کلاس مجازند و کامپیوتر متخلف نداریم. غیر از این Mac add ها هر کسی به سوییچ وصل بشه تخلف رخ داده!
cfcl(config-if)#switchport port-security mac-address sticky
(Max=1 by default)
Configure maximum MAC addresses (Max=1 by default) :
cfcl(config-if)#switchport port-security maximum 2
تعداد ماکزیمم Mac Address هایی که میتواند بر روی یک پورت Learn شود از طریق دستور بالا میباشد.
از آنجایی که Confige کردن کلیه ی Port ها، کار مشکل و وقت گیری میباشد، یک Range از interface ها را انتخاب می کنیم و Confige مربوطه را به کلیه Interface ها اعمال میکنیم
Interface range configuration :
cfcl(config)#interface range fastethernet 0/1-8 , fastethernet 0/24
Violation :
وقتی بر روی یکی از پورت ها تخلفی صورت بگیرد، به صورت defult، پورت مورد نظر Shutdown می گردد. از طریق Violation میتوانیم یکی از itemهای زیر را انتخاب کنیم و Defult قرار دهیم
Shutdown Disable port(yes) Discard packets(yes) Send Log(yes)
Restrict Disable port(No) Discard packets(yes) Send Log(yes)
Protect Disable port(No) Discard packets(yes) Send Log(No)
cfcl(config-if)#switchport port-security violation {restrict|protect|shutdown}
Note : “Shutdown” and “no shutdown” command is needed for error disabled ports.
بنابراین به طور خلاصه برای راه اندازی port-Security سه مرحله را باید راه اندازی کنیم
۱- ابتدا باید Port-Security را بر روی اینترفیس مربوطه راه اندازی میکنیم
cfcl(config-if)#switchport port-security
(به احتمال فراوان پس از وارد کردن این دستور و اعمال کردن Port-Security ،پیام زیر را خواهیم دید):
Command rejected: FastEthernet0/1 is a dynamic port
۲- پس از دیدن این پیغام، میبایست Fast-Ethernet 0/1 را از dynamic port به Access port انتقال دهیم
cfcl(config-if)#switchport mode access
cfcl(config-if)#switchport port-security
پس از اینکه mode Fastethernet0/1 را به access انتقال دادیم دوباره میبایست دستور زیر را اعمال کنیم تا Port security اعمال گردد
cfcl(config-if)#switchport port-security
۳- مرحله سوم این است که باید بدانیم از port security چه میخواهیم و انتخاب کنیم.
یا میتوانیم محدود کنیم چه تعداد Mac add، میتواند learn شود یا اینکه کدام Mac add میتواند learn شود!
از این دستور برای تعیین حالت سوئیچ استفاده می کنیم، که حالتهای سوئیچ به شرح ذیل میباشد:
۱- Server : به سوئیچهای Client ، Update میدهد، در مواقعی که تعداد سوئیچها و Vlanها زیاد باشد مو
۲- Client
۳- Transparent