بریم برای پیادهسازی یک سیستم احراز هویتی جذاب با Dot1X!
خلاصهای از مفهوم:
پروتکل Dot1x، یا به طور دقیقتر IEEE 802.1X، یک استاندارد شبکه است که برای فراهم کردن امنیت دسترسی در شبکههای محلی (LAN) و شبکههای بیسیم (WLAN) طراحی شده است. این پروتکل نقش مهمی در مدیریت دسترسی به شبکه دارد و اغلب برای پیادهسازی User Authentication و کنترل دسترسی به شبکه استفاده میشود. هدف اصلی این پروتکل، فراهم آوردن کنترل دسترسی به شبکه بر اساس پورت با استفاده از EAP بر روی LAN، که به آن EAPOL نیز گفته میشود، میباشد.
استاندارد IEEE 802.1X رو میشه به سه دسته تقسیم کرد:
- Supplicant: دستگاهی که به شبکه متصل میشود و درخواست دسترسی به شبکه رو ارسال میکند. این دستگاه میتواند یک کامپیوتر شخصی، تلفن هوشمند، تبلت یا هر دستگاه دیگری باشد که نیاز به دسترسی به شبکه دارد.
- Authenticator:دستگاهی که وظیفه کنترل دسترسی به شبکه رو بر عهده دارد. این دستگاه معمولاً یک switch یا Access Point است که authentication request ها رو از supplicant دریافت کرده و به authentication server ارسال میکند.
- Authentication Server: سروری که مسئول بررسی و تایید اطلاعات هویتی supplicant است. این سرور معمولاً یک سرور RADIUS (Remote Authentication Dial-In User Service) است که authentication server رو پردازش میکند.
در RouterOS، پشتیبانی از هر دو طرف Authenticator و Supplicant فراهم شده است و همچنین پشتیبانی از authentication server در صورت نصب پکیج User Manager در دسترس است.
سمت client:
- anon-identity: زمانی که از پروتکلهای EAP (Extensible Authentication Protocol) برای احراز هویت استفاده میکنید. anon-identity به معنای هویت ناشناس یک ویژگی در پروتکلهای EAP مانند EAP-TTLS و PEAP است که به کاربران اجازه میدهد هویت واقعی خودشون رو پنهان کنند. این ویژگی به این صورت عمل میکند که ییورزنیم ناشناس (به جای یوزرنیم واقعی) در ابتدا برای شروع فرآیند احراز هویت به سرور ارسال میشود. سپس، در داخل تونل امن (که با استفاده از TLS برقرار شده است)، هویت واقعی کاربر به سرور احراز هویت ارسال میشود.
- client-certificate: در این قسمت شما میتونید نامی رو برای certificate list خودتون در بخش System/Certificates انتخاب کنید. در نظر داشته باشید که این قابلیت برای زمانی که eap-tls فعال باشد ضروریست.
- comment: توضیح مختصری رو برای زمانی که کاربر وارد میشود میتونید تنظیم کنید.
- disabled: از این قسمت میتونید کاربر رو فعال یا غیرفعال کنید.
- eap-methods: لیستی از EAP method ها رو که برای احراز هویت استفاده میشن رو به ما میدهد.
- identity: اطلاعات supplicant که در EAP Authentication استفاده شده رو به ما میدهد.
- interface: نام interface رو که کاربر میخواهد روی آن run شود رو میتونید از این قسمت تنظیم کنید.
- password: پسورد supplicant رو میتونید از این قسمت وارد کنید.
سمت server:
یک سرور RouterOS dot1x مثل یک authenticator عمل میکند. در نظر داشته باشید که توی interface که روی آن dot1x server تنظیم شده باشد. تمام ترافیک بر روی آن پورت رو block خواهد کرد. به غیر از ترافیکی که برای پکت های EAPOL استفاده میشود. پکت های EAPOL برای احراز هویت شبکه استفاده میشود. پس از اینکه کلاینت با موفقیت احراز هویت شد، interface مربوطه تمام ترافیک دریافتی در پورت رو accept میکند. حالا اگر interface ما بوسیله یک رسانه اتقال با چند Host در ارتباط باشد تا زمانی حداقل یکی از آن Host ها احراز نشده باشد ترافیک کل شبکه تایید نخواهد شد. گر چه ما میتونیم سوییچ ها رو طوری کانفیگ کنیم که تنها کلاینت هایی با MAC Address احراز شده بتونن از با interface در ارتباط باشند. ترافیک بقیه MAC Address ها دیگه drop شود.
ویژگیها:
- accounting: برای ارسال درخواستهای RAIDUS accounting به authentication سرور استفاده میشود.
- auth-timeout: مدت زمانی که برای EAP authentication در نظر گرفته میشود رو از این قسمت میتونید نتظیم کنید.
- auth-types: از این ویژگی در interface سرور استفاده میشود. auth-type مشخص میکند که چه نوع روش احراز هویت EAP (Extensible Authentication Protocol) باید استفاده شود. این تنظیم در کانفیگ پروفایلهای امنیتی و در تنظیمات Dot1X کاربرد دارد.
- comment: توضیح مختصری برای ورودی interface.
- disabled: فعال یا غیر فعال بودن رو مشخص میکند.
- interface: نام interface یا interface list که سرور قرار است روی آن run شود رو میتونین از این قسمت تنظیم کنید.
- interim-update: فاصله بین فاصله بین پیام های دورهای RADIUS Interim-Update رو میتونین از این قسمت تنیظیم کنید.
- mac-auth-mode: هنگامی که از MAC authentication داریم استفاده میکنیم، این ویژگی به ما اجازه میدهد تا کنترل Username و User-Password رو در دست دشته باشیم.
- radius-mac-format: نحوه کدگذاری MAC Address کلاینت در ویژگی های User-Name و User-Password هنگام استفاده از احراز هویت MAC رو کنترل می کند.
- reauth-timeout: این ویژگی باعث میشود re-authentication در پورت سرور ما فعال شود. وقتی که با Dot1X authentication فعال شود. سرور، کلاینت رو با فرستادنEAP-Request Identity دوباره re-authenticate میکند. همچنین زمانی که بر روی mac-auth تنظیم شده باشد. سرور، کلاینت رو توسط RADIUS server با استفاده از آخرین MAC Address که دریافت کرده re-authenticate خواهد کرد. در نظر داشته باشید که این قابلیت در حالت پیش فرض غیرفعال میباشد و از ورژن routerOS 7.2 به میکروتیک اضافه شد.
- reject-vlan-id: زمانی که احراز هویت ناموفق باشد. RADIUS server با یک پیام Access-Reject پاسخ میدهد. پس از آن یک VLAN ساخته و به کلاینت با احراز هویت ناموفق اختصاص داده میشود. اگر RADIUS server به هیچ وجه پاسخ ندهد، این ویژگی اعمال نخواهد شد، احراز هویت کلاینت به سادگی به پایان می رسد و سرویس در دسترس نخواهد بود.در نظر داشته باشید که این ویژگی فقط زمانی تأثیر می گذارد که bridge vlan-filtering فعال باشد. همچنین به طور پیش فرض، Reject VLAN غیرفعال است.
- retrans-timeout: فاصله زمانی بین ارسال مجدد پیام re-transmission در صورتی که پاسخی از درخواست کننده دریافت نشود رو میتونین از ین قسمت تنظیم کنید.
- server-fail-vlan-id: این ویژگی برای زمانیست که RAIDUS server پاسخی ارائه نمیدهد. و مدت زمان request timeout هم به پایان رسیده است در این شرایط VLAN اختصاص داده خواهد شد. در نظر داشته باشید که این قابلیت در حالت پیش فرض غیرفعال میباشد و از ورژن routerOS 7.2 به میکروتیک اضافه شد و تنها زمانی تاثیر میگذارد که bridge vlan-filtering فعال باشد.
- کلاینت های احراز هویت شده در active menu لیست شدهاند:
interface dot1x server active/
auth-info | Authentication information:
|
username | اطلاعات supplicant. |
client-mac | MAC آدرس supplicant. |
interface | نام interface. |
session-id | شناسه session-identifier |
vlan-id | VLAN ID هایی که برچسب گذاری نشدهاند و به interface اختصاص داده شدهاند. در نظر داشته باشید که vlan-id-filtering باید روی bridge فعال شده باشد. |
- وضعیت تمام interface هایی که dot1x server فعال بر روی آنها هست، لیست شدهاند:
interface dot1x server status/
interface | نام interface |
status | Possible interface statuses:
|
مثال:
در بخش زیر سادهترین سناریو کانفیگ سرور dot1x و کلاینت گفته شده. بریم با هم بررسیش کنیم:
با افزودن یک کلاینت جدید RADIUS شروع کنید. لازم نیست authentication سرور (RADIUS) در همان LAN با احراز هویت باشد. باید از طرف authenticator قابل دسترس باشد. بنابراین هرگونه محدودیت فایروال رو باید در نظر بگیریم.
/radius
add address=10.1.2.3 secret=radiussecret service=dot1x
موارد جدید سرور dot1x رو اضافه کنید.
/interface dot1x server
add interface=ether2 interim-update=30s comment=accounted
add interface=ether12 accounting=no comment=notaccounted
پورت هایی بر پایه VLAN ID:
با استفاده از bridge vlan-filtering میتوان یک interface مورد تایید رو به یک VLAN IDخاص اختصاص داد. این قابلیت رو میتوان با استفاده از ویژگی های RADIUS Tunnel-Type، Tunnel-Medium-Type و Tunnel-Private-Group-ID انجام داد. توجه داشته باشید که فقط دستگاههایی که hardware offloaded VLAN filtering دارند میتوانند این کار را در switch chip انجام دهند.
اول از همه مطمئن شوید. که interface به bridge که VLAN filtering فعال اضافه میشود.
/interface bridge
add name=bridge1 vlan-filtering=yes
/interface bridge port
add bridge=bridge1 interface=ether1
add bridge=bridge1 interface=ether2
add bridge=bridge1 interface=ether12
لازم است کانفیگ static VLAN برای ترافیک VLAN دارای تگ اضافه شود. تا از طریق interfae ether1 ارسال شود.
add bridge=bridge1 tagged=ether1 vlan-ids=2
add bridge=bridge1 tagged=ether1 vlan-ids=12
با فعالسازی RAIDUS debug logs، میتوانید پکتهای RAIDUS messages رو با تمامی ویژگیها مشاهده کنید. در این مثال ویژگی های Tunnel در پیام Access-Accept از RADIUS server دریافت می شود.
۰۹:۵۱:۴۵ radius,debug,packet received Access-Accept with id 64 from 10.1.2.3:1812
۰۹:۵۱:۴۵ radius,debug,packet Tunnel-Type = 13
۰۹:۵۱:۴۵ radius,debug,packet Tunnel-Medium-Type = 6
۰۹:۵۱:۴۵ radius,debug,packet Tunnel-Private-Group-ID = "12"
(..)
۰۹:۵۱:۴۵ radius,debug,packet User-Name = "dot1x-user"
VLAN ID اکنون در لیست sessionهای فعال موجود است. همچنین پورت های بدون برچسب به کانفیگ static VLAN قبلی اضافه می شوند.
۰ interface=ether12 username=”dot1x-user” user-mac=00:0C:42:EB:71:F6 session-id=”86b00006″ vlan=12
Flags: X – disabled, D – dynamic
۰ D bridge=bridge1 vlan-ids=1 tagged=”” untagged=”” current-tagged=”” current-untagged=bridge1,ether3۱ bridge=bridge1 vlan-ids=2 tagged=ether1 untagged=”” current-tagged=ether1 current-untagged=ether2۲ bridge=bridge1 vlan-ids=12 tagged=ether1 untagged=”” current-tagged=ether1 current-untagged=ether12
کانفیگ Dynamic Switch Rule:
Dynamic Switch Rule به شما اجازه میدهد تا بر اساس وضعیت احراز هویت Dot1X، قوانین پویایی برای پورتهای سوییچ ایجاد کنید. این قوانین میتوانند برای مدیریت دسترسی به شبکه، اولویتبندی ترافیک، یا حتی محدود کردن دسترسی کاربران غیرمجاز استفاده شوند. در زیر چند نمونه از ویژگی های Mikrotik-Switching-Filter و قوانین سوئیچ پویا که ایجاد می کنند رو میتونید مشاهده کنید.
# Drop ARP frames (EtherType: 0x0806 or 2054)
Mikrotik-Switching-Filter = “mac-protocol 2054 action drop”
/interface ethernet switch rule print
Flags: X – disabled, I – invalid, D – dynamic
۰ D ;;; dot1x dynamic
switch=switch1 ports=ether1 src-mac-address=CC:2D:E0:11:22:33/FF:FF:FF:FF:FF:FF mac-protocol=arp copy-to-cpu=no redirect-to-cpu=no mirror=no new-dst-ports=””
# Allow UDP (IP protocol: 0x11 or 17) destination port 100 and drop all other packets
Mikrotik-Switching-Filter = “protocol 17 dst-port 100 action allow, action drop”
/interface ethernet switch rule print
Flags: X – disabled, I – invalid, D – dynamic
۰ D ;;; dot1x dynamic
switch=switch1 ports=ether1 src-mac-address=CC:2D:E0:11:22:33/FF:FF:FF:FF:FF:FF protocol=udp dst-port=100 copy-to-cpu=no redirect-to-cpu=no mirror=no
۱ D ;;; dot1x dynamic
switch=switch1 ports=ether1 src-mac-address=CC:2D:E0:11:22:33/FF:FF:FF:FF:FF:FF copy-to-cpu=no redirect-to-cpu=no mirror=no new-dst-ports=””
# Allow only authenticated source MAC address, drop all other packets
Mikrotik-Switching-Filter = “action allow, src-mac-address none action drop”
/interface ethernet switch rule print
Flags: X – disabled, I – invalid; D – dynamic
۰ D ;;; dot1x dynamic
switch=switch1 ports=ether1 src-mac-address=CC:2D:E0:01:6D:EB/FF:FF:FF:FF:FF:FF copy-to-cpu=no redirect-to-cpu=no mirror=no
۱ D ;;; dot1x dynamic
switch=switch1 ports=ether1 copy-to-cpu=no redirect-to-cpu=no mirror=no new-dst-ports=””
در مثال ما، Supplicant2 در ether2 فقط مجاز به دسترسی به شبکه ۱۹۲٫۱۶۸٫۵۰٫۰/۲۴ با پورت مقصد UDP 50 هست، تمام ترافیک های دیگر باید حذف شوند. ابتدا مطمئن شوید که hardware offloading روی پورت های bridge کار می کند، در غیر این صورت ممکن است switch ruleها به درستی کار نکنند.
/interface bridge port print
Flags: X – disabled, I – inactive, D – dynamic, H – hw-offload
# INTERFACE BRIDGE HW PVID PRIORITY PATH-COST INTERNAL-PATH-COST HORIZON
۰ H ether1 bridge1 yes 1 0x80 10 10 none
۱ H ether2 bridge1 yes 1 0x80 10 10 none
۲ H ether12 bridge1 yes 1 0x80 10 10 none
با فعالسازی RAIDUS debug logs، میتوانید پکتهای RAIDUS messages رو با تمامی ویژگیها مشاهده کنید. در این مثال ویژگی های Tunnel در پیام Access-Accept از RADIUS server دریافت می شود.
۰۲:۳۵:۳۸ radius,debug,packet received Access-Accept with id 121 from 10.1.2.3:1812
(..)
۰۲:۳۵:۳۸ radius,debug,packet MT-Switching-Filter = “mac-protocol 2048 dst-address 192.168.50.0/24 dst-port 50 protocol 17 action allow,action drop”
و حالا dynamic switch rules در بخش switch menu اعمال شدهاند.
/interface ethernet switch rule print
Flags: X – disabled, I – invalid, D – dynamic
۰ D ;;; dot1x dynamic
switch=switch1 ports=ether2 src-mac-address=CC:2D:E0:11:22:33/FF:FF:FF:FF:FF:FF mac-protocol=ip dst-address=192.168.50.0/24 protocol=udp dst-port=50 copy-to-cpu=no redirect-to-cpu=no mirror=no
۱ D ;;; dot1x dynamic
switch=switch1 ports=ether2 src-mac-address=CC:2D:E0:11:22:33/FF:FF:FF:FF:FF:FF copy-to-cpu=no redirect-to-cpu=no mirror=no new-dst-ports=””
کانفیگ RouterOS Supplicant:
CA certificateها برای روش های احراز هویت eap-tls، eap-ttls و eap-peap مورد نیاز است. علاوه بر این، supplicant certificate برای روش eap-tls مورد نیاز است. در بخش زیر مثال از شکل آن را میبینید.
/certificate print
Flags: K – private-key, L – crl, C – smart-card-key, A – authority, I – issued, R – revoked, E – expired, T – trusted
# NAME COMMON-NAME SUBJECT-ALT-NAME FINGERPRINT
۰ K A T dot1x-client ez_dot1x-client IP:10.1.2.34
۱ L A T dot1x CA ca
به سادگی یک نمونه dot1x client جدید اضافه کنید که فرآیند authentication را آغاز می کند.
/interface dot1x client
add anon-identity=anonymous client-certificate=dot1x-client eap-methods=eap-tls identity=dot1x-user interface=ether1 password=dot1xtest
اگر احراز هویت موفقیت آمیز بود، interface ما باید status authenticated داشته باشد.
/interface dot1x client print
Flags: I – inactive, X – disabled
۰ interface=ether1 eap-methods=eap-peap identity=”dot1x-user” password=”dot1xtest” anon-identity=”anonymous” client-certificate=dot1x-client status=”authenticated”
برای مشاهده ترجمهها و مطالب بیشتر اینجا کلیک کنید