Port Security

مقدمه

امنیت پورت یک ویژگی امنیتی در لایه 2 است که به شما امکان می‌دهد دسترسی به پورت‌های روتر را با کنترل و محدود کردن آدرس‌های MAC مجاز، کنترل کنید. این قابلیت با تعیین حداکثر تعداد دستگاه‌های مجاز و محدود کردن آنها به پورت‌های خاص، از دسترسی غیرمجاز به شبکه جلوگیری می‌کند.

ویژگی‌های کلیدی:

  • یادگیری و ذخیره خودکار آدرس‌های MAC

  • محدودیت تعداد دستگاه‌های متصل به هر پورت

  • شناسایی و مدیریت تخلفات امنیتی (Violations)

  • قابلیت اجرای script سفارشی هنگام بروز تخلف

Violations (تخلفات امنیتی)

زمانی که دستگاهی با آدرس MAC غیرمجاز تلاش به اتصال به پورتی با Port Security فعال می‌کند، یک تخلف امنیتی رخ می‌دهد. آدرس MAC غیرمجاز هر آدرسی است که:

  • در لیست آدرس‌های MAC مجاز آن پورت نباشد

  • یا تعداد دستگاه‌های متصل از حداکثر مجاز تعیین شده بیشتر شود

هنگام شناسایی تخلف، می‌توانید یک script سفارشی را برای مدیریت تخلف اجرا کنید. این script می‌تواند برای ثبت log، خاموش کردن interface یا سایر اقدامات لازم استفاده شود.

دستورات پیکربندی

1. فعال‌سازی Sticky MAC Address

port-security mac-address sticky X:X:X:X:X:X

این دستور برای پیکربندی امنیت پورت با آدرس‌های MAC در حالت Sticky استفاده می‌شود.

پارامتر:

  • X:X:X:X:X:X: آدرس MAC که می‌خواهید به عنوان Sticky MAC تنظیم کنید (فرمت: شش گروه دو رقمی هگزادسیمال با جداکننده :)

نحوه عملکرد:

  1. هنگام اجرای دستور، روتر به صورت داینامیک آدرس MAC را یاد می‌گیرد

  2. آدرس یاد گرفته شده به running-config اضافه می‌شود

  3. فقط دستگاه‌های با MAC موجود در config مجاز به اتصال هستند

  4. با ذخیره config، تنظیمات پس از reboot حفظ می‌شوند

نکته مهم: پس از یادگیری MAC ها، می‌توانید حالت Sticky را غیرفعال کنید. در این صورت فقط MAC های یاد گرفته شده در بازه فعال بودن Sticky، مجاز به اتصال خواهند بود.

توجه

برای حذف یک MAC آدرس یاد گرفته شده، از دستور no port-security mac-address sticky X:X:X:X:X:X استفاده کنید.

2. تعیین حداکثر تعداد MAC

port-security maximum (1-100)

این دستور حداکثر تعداد آدرس‌های MAC امن مجاز در یک پورت را تعیین می‌کند.

پارامتر:

  • (1-100): حداکثر تعداد آدرس MAC ایمن (محدوده: 1 تا 100)

رفتار سیستم:

  • هنگام اتصال دستگاه، MAC آن به صورت داینامیک یاد گرفته و در جدول secure address ذخیره می‌شود

  • ترافیک از MAC های مجاز عبور می‌کند

  • ترافیک از MAC های غیرمجاز مسدود می‌شود

  • هنگام رسیدن به حد maximum، پورت محدود شده و violation رخ می‌دهد

نکته

MAC های یاد گرفته شده به صورت Sticky هستند و در running-config ذخیره می‌شوند.

3. نمایش آدرس‌های امن

show port-security address [IFNAME]

نمایش آدرس‌های MAC یاد گرفته شده و تعداد کل آدرس‌های MAC امن مجاز در interface.

پارامتر:

  • IFNAME (اختیاری): نام interface مورد نظر

نکته

این دستور فقط آدرس‌های MAC امن را نمایش می‌دهد. برای مشاهده تمام آدرس‌های MAC یاد گرفته شده توسط روتر از دستور show ip arp استفاده کنید.

4. نمایش وضعیت Port Security

show port-security interface [IFNAME]

نمایش تنظیمات و وضعیت امنیتی پورت برای یک interface خاص.

اطلاعات نمایش داده شده:

  • تعداد آدرس‌های MAC امن پیکربندی شده

  • آدرس‌های MAC امن فعلی

  • وضعیت تخلفات (violations)

  • تنظیمات maximum

پارامتر:

  • IFNAME (اختیاری): نام interface مورد نظر

5. مدیریت Violations

تنظیم Script برای Violation

port-security violation script <script-name>

اجرای یک script سفارشی هنگام بروز تخلف امنیتی.

پارامتر:

  • <script-name>: نام script که می‌خواهید هنگام violation اجرا شود

کاربردهای Script:

  • ثبت log دقیق از تخلفات

  • ارسال اعلان (notification)

  • خاموش کردن خودکار interface

  • اجرای اقدامات امنیتی پیشرفته

پاک کردن وضعیت Violation

clear port-security violation IFNAME

پاک کردن وضعیت تخلف امنیتی و بازگرداندن interface به حالت عادی.

پارامتر:

  • IFNAME: نام interface که می‌خواهید violation آن را پاک کنید

کاربرد: پس از رفع علت تخلف، این دستور interface را به حالت عادی برمی‌گرداند و عملیات عادی آن از سر گرفته می‌شود.

سناریوهای عملی

سناریو 1: محدود کردن دسترسی به یک دستگاه خاص

فرض کنید می‌خواهید فقط یک سرور با MAC مشخص بتواند به پورت ge1 متصل شود:

n1# config terminal
n1/config# interface ge1
n1/c/interface/ge1# port-security maximum 1
n1/c/interface/ge1# port-security mac-address sticky 00:11:22:33:44:55
n1/c/interface/ge1# exit
n1/config# exit
n1# write

سناریو 2: محدودیت تعداد کاربران در یک شبکه مشترک

برای محدود کردن تعداد کاربران به 10 دستگاه در پورت ge2:

n1# config terminal
n1/config# interface ge2
n1/c/interface/ge2# port-security maximum 10
n1/c/interface/ge2# exit
n1/config# exit
n1# write

سناریو 3: پیاده‌سازی امنیت پیشرفته با Script

ایجاد امنیت چندلایه با اجرای script هنگام violation:

n1# config terminal
n1/config# interface ge3
n1/c/interface/ge3# port-security maximum 5
n1/c/interface/ge3# port-security violation script:portsec-alert
n1/c/interface/ge3# exit
n1/config# exit
n1# write

محتوای نمونه Script (portsec-alert):

enable
conf t
interface ge3
shutdown
exit
exit
write

نکته

Script ها در روتر Soodar با نام خود (بدون مسیر Linux) ذخیره می‌شوند و شامل دستورات روتر Soodar هستند، نه دستورات Bash.

سناریو 4: یادگیری تدریجی MAC ها

برای یادگیری MAC دستگاه‌های مجاز در یک بازه زمانی:

مرحله 1: فعال کردن حالت Sticky

n1# config terminal
n1/config# interface ge4
n1/c/interface/ge4# port-security maximum 20
n1/c/interface/ge4# port-security mac-address sticky
n1/c/interface/ge4# exit
n1/config# exit

مرحله 2: اجازه اتصال دستگاه‌های مجاز (روتر MAC ها را یاد می‌گیرد)

مرحله 3: ذخیره و غیرفعال کردن Sticky

n1# write
n1# config terminal
n1/config# interface ge4
n1/c/interface/ge4# no port-security mac-address sticky
n1/c/interface/ge4# exit
n1/config# exit
n1# write

اکنون فقط دستگاه‌هایی که در مرحله 2 متصل شدند، دسترسی دائمی دارند.

سناریو 5: محدودیت دسترسی در محیط اداری

پیاده‌سازی Port Security برای کنترل دسترسی کارمندان:

n1# config terminal
n1/config# interface ge5
n1/c/interface/ge5# description Office Access Port
n1/c/interface/ge5# port-security maximum 3
n1/c/interface/ge5# port-security violation script:office-violation
n1/c/interface/ge5# exit
n1/config# exit
n1# write

نکات مهم و بهترین شیوه‌ها

هشدار

قبل از فعال‌سازی Port Security:

  • حتماً MAC دستگاه‌های ضروری را یادداشت کنید

  • در صورت از دست رفتن دسترسی، از Console برای بازیابی استفاده کنید

  • Script های violation را قبل از اعمال حتماً تست کنید

  • از پیاده‌سازی مستقیم در محیط production خودداری کنید

بهترین شیوه‌ها (Best Practices)

  1. پشتیبان‌گیری: همیشه قبل از اعمال Port Security، backup از config بگیرید

  2. تست محیط آزمایشگاهی: ابتدا در محیط تست پیاده‌سازی کنید

  3. نظارت مداوم: از show port-security interface برای monitoring استفاده کنید

  4. طراحی دقیق Script: Script های violation را با دقت طراحی و تست کنید

  5. تنظیم هوشمند Maximum: مقدار را با توجه به نیاز واقعی تنظیم کنید (نه خیلی کم، نه خیلی زیاد)

  6. مستندسازی: تمام MAC های مجاز را مستند کنید

  7. دسترسی اضطراری: همیشه یک راه دسترسی جایگزین (مثل Console) داشته باشید

عیب‌یابی (Troubleshooting)

مشکل 1: دستگاه مجاز نمی‌تواند متصل شود

علائم:

  • دستگاه با MAC مجاز نمی‌تواند ارتباط برقرار کند

  • Interface در حالت violation است

راه‌حل:

# بررسی وضعیت port security
show port-security interface ge1

# بررسی MAC های یاد گرفته شده
show port-security address ge1

# بررسی تعداد maximum
show running-config interface ge1

# در صورت نیاز، پاک کردن violation
clear port-security violation ge1

مشکل 2: MAC های زیادی یاد گرفته شده

علائم:

  • تعداد MAC های ذخیره شده بیش از حد مورد نیاز است

  • نیاز به reset کردن لیست

راه‌حل:

# حذف تک‌تک MAC های غیرضروری
n1# config terminal
n1/config# interface ge1
n1/c/interface/ge1# no port-security mac-address sticky <MAC-ADDRESS>
n1/c/interface/ge1# exit
n1/config# exit

# یا reset کامل و شروع دوباره
n1# config terminal
n1/config# interface ge1
n1/c/interface/ge1# no port-security
n1/c/interface/ge1# port-security maximum <تعداد جدید>
n1/c/interface/ge1# port-security mac-address sticky
n1/c/interface/ge1# exit
n1/config# exit
n1# write

مشکل 3: Script هنگام Violation اجرا نمی‌شود

بررسی‌های لازم:

  1. نام script را در config بررسی کنید:

show running-config interface ge1
  1. مطمئن شوید script با فرمت صحیح ذخیره شده (فقط نام، بدون مسیر):

port-security violation script:script-name
  1. محتوای script باید دستورات Soodar باشد نه دستورات Bash

نمونه Script صحیح:

enable
conf t
interface ge1
shutdown
exit
exit
write

مشکل 4: نمی‌توان به Config دسترسی پیدا کرد

راه‌حل اضطراری از Console:

n1# config terminal
n1/config# interface ge1
n1/c/interface/ge1# no port-security
n1/c/interface/ge1# exit
n1/config# exit
n1# write

جدول مرجع سریع دستورات

دستور

کاربرد

port-security mac-address sticky [MAC]

فعال‌سازی Sticky MAC

port-security maximum <1-100>

تعیین حداکثر تعداد MAC

port-security violation script:<name>

تنظیم Script برای Violation

show port-security address [IF]

نمایش MAC های امن

show port-security interface [IF]

نمایش وضعیت Port Security

clear port-security violation <IF>

پاک کردن Violation

no port-security mac-address sticky <MAC>

حذف Sticky MAC

no port-security

غیرفعال کردن Port Security

خلاصه

امنیت پورت یک ابزار قدرتمند برای کنترل دسترسی در لایه ۲ است که با استفاده صحیح می‌تواند امنیت شبکه را به طور قابل توجهی افزایش دهد. نکات کلیدی:

یادگیری خودکار آدرس‌های مک با حالت ثابت (Sticky)
محدودیت تعداد دستگاه‌های متصل
مدیریت هوشمند تخلفات با اسکریپت
نظارت و کنترل مداوم با دستورات نمایش
انعطاف‌پذیری در پیکربندی و مدیریت

با رعایت بهترین شیوه‌ها و تست کافی قبل از پیاده‌سازی، می‌توانید از امنیت پورت برای ایجاد یک لایه امنیتی موثر در شبکه خود استفاده کنید.