آموزش راه اندازی IKEv2 VPN در میکروتیک و ارتباط Site To Site

چگونه بین دو سایت در اینترنت IKEv2 راه اندازی کنیم؟ آموزش پیاده سازی پروتکل IKEv2 که یک پروتکل جدید با قابلیت های ویژه است را روی روتربورد های میکروتیک با هم دانبال می کنیم. خوب سناریو به این شکل است که ما یک دفتر اصلی داریم و سه دفتر فرعی. قصد داریم ارتباط این سه دفتر فرعی را با دفتر اصلی با تعریف چند شرط ساده انجام دهیم. پروتکل IKEv2 بصورت Policy Base تعریف میشه .حسن این روش اینه که بعد از تعریف Peer در سمت Client Site دیگه بقیه تنظیمات روی Server Site انجام می شود. با تعریف Policy در سمت سرور، بصورت خودکار Policy در سمت Client Site ایجاد می شود.در صورتی که در پروتکل های Route Base تنظیمات در دو طرف باید تک به تک انجام شود.

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران

پیشنیاز ها

1-حداقل یک IP Public برای دفتر مرکزی نیاز داریم.برای دفاتر فرعی نیز بهتر است IP Public داشته باشیم اما برای این سناریو اجباری نیست.

2-چهار عدد روتربورد میکروتیک ( RB750Gr3منظور همان hex 60 دلاری.ویژگی این مدل رمزگذاری سخت افزاری( AES Hardware )می باشد.

1- دفتر مرکزی Site-D حاوی 2 Network ID بصورت زیر می باشد

  • 192.168.1.0/24 مربوط به سرورها
  • 10.5.0.0/16 مربوط به کاربران دفتر مرکزی
  • 1.1.1.1/24 IP Public:

2- دفتر فرعی Site-A

  • 192.168.11.0/24 مربوط به کاربران
  • 192.168.12.0/24 مربوط به کاربران
  • 2.2.2.2/24 IP Public:

3- دفتر فرعی Site-B

  • 192.168.13.0/24 مربوط به کاربران
  • 3.3.3.3/24 IP Public:

4- دفتر فرعی Site-C

  • 192.168.14.0/24 مربوط به کاربران
  • 100.90.80.0/24 IP Private

تعریف سناریو

شبکه به نحوی تعریف شود که ارتباط کاربران دفاتر فرعی با کاربران دفتر مرکزی برقرار باشند.تمام کاربران تمام دفاتر بتوانند فقط با سرور اتوماسیون اداری در ارتباط باشند و به بقیه سرور ها دسترسی نداشته باشند.ارتباطات روی بستر WAN حتما رمز شده باشند.

نقشه سایت:

نقشه ارتباط IKEv2 سایت به سایت

تنظیمات روتر دفتر مرکزی Site-D:R1-Server

ابتدا تنظیمات اولیه روتر از قبیل IP ست کردن روی interface های روتر و تنظیم NTPو ساعت...وهمچنین دسترسی روتر به اینترنت(WAN ) را فراهم نمایید. توجه :در صورت تنظیم نبودن Time و Time Zone Name در مراحل صدور و خروجی گرفتن مجوز مغایرت بوجود می اید.

/system identity set name=R1-Server
/system clock set time-zone-name=Asia/Tehran
/system ntp client set enabled=yes
/system ntp client set primary-ntp=
/system ntp server set enabled=yes multicast=yes

در مرحله اول یک سازوکار برای شناسایی( Authenticate )کردن Router ها باید پیاده سازی کنیم..در پروتکل IKEv2 ما سه روش IKEv2-RSA و IKEv2-PSK و IKEv2-PSK+auth برای Authentication بین روتر سرور و روتر کلاینت های میکروتیکی می توانیم پیاده سازی کنیم .البته روش IKEv2-EAP هم هست که هنوز در RouterOS پشتیبانی نمی شود.در این مرحله ما از روش IKEv2-RSA استفاده میکنیم که در واقع از مکانیزم اعطای مجوز (Certificate) استفاده می کند.دستور زیر یک Certificate Authority با نام ca روی سرور ما ایجاد می کند:

#در موقع اجرای دستورات ایجاد مجوز حتما آیپی 1.1.1.1 را با آیپی پابلیک دفتر مرکزی خود عوض کنید.
#مجوز صدور گواهی ها
/certificate add name=ca-tpl country="IR" state="Hamid Samadi" locality="TEHRAN" organization="ITPRO" unit="IT Management" common-name="ca" key-size=2048 days-valid=3650 key-usage=crl-sign,key-cert-sign,digital-signature
/certificate sign ca-tpl ca-crl-host=1.1.1.1 name="ca"

با دستور زیر روتر به یک Certificate Server مبدل می شود

# مجوز سرور
/certificate add name=server-tpl country="IR" state="Hamid Samadi" locality="TEHRAN" organization="ITPRO" unit="IT Management" common-name=1.1.1.1 subject-alt-name=IP:1.1.1.1 key-size=2048 days-valid=3650 key-usage=digital-signature,key-encipherment,tls-server
/certificate sign server-tpl ca="ca" name="server1"
CA Server

دستور زیر باعث تنظیم پروتکل ثبت نام گواهی ساده (SCEP) می شود.که این سرویس به روتر های Client این امکان را میدهد که روی بستر اینترنت روی پورت 80 در خواست certificate به روتر دفتر مرکزی بدهند .مجوز ها برای مدت 60 روز اعتبار دارند که قابل تغییر است.پس از ارسال درخواست، مدیر 2 ساعت فرصت دارد تا مجوز را تایید و یا صادر کند.

#  تنظیم خودکار سازی پروتکل ثبت نام گواهی ساده 
/certificate scep-server add ca-cert=ca path=/scep/test days-valid=60 request-lifetime=2h
ُُُُSCPE Server

توصیه اکید باید دقت کنیم که ساعت روتر های ما تنظیم و یکسان باشند و روتر های ما از یک NTP سرور ساعت را دریافت کنند و اگر نه سیستم اعطای مجوز درست عمل نمی کند

/system clock set time-zone-name=Asia/Tehran
/system ntp client set enabled=yes
/system ntp client set primary-ntp=

در سمت سرور باید به ازای هر دفتر فرعی یک Peer تعریف کنیم.این پروسه را Phase1 برقرای ارتباط نیز می نامند .که در آن روتر سرور و روترهای کلاینت سعی می کنند با هم دست به دست بشوند.در این مرحله ما باید متد authentication بین روتر ها و پروتکل ارتباطی IKEv2 را مشخص وهمچنین یکسری الگوریتم های رمزگذاری در اجرای امن این مرحله را تعیین کنیم.

  • نکته: این مرحله را روی کلاینت هم داریم باید دقت کنیم که نوع الگوریتم های رمزگذاری در Phase1 بر روی سرور و کلاینت ها یکسان تعریف شود.
/ip ipsec policy group add name=group-R2
/ip ipsec peer add address=2.2.2.2 auth-method=rsa-signature exchange-mode=ike2 passive=no certificate=server1 notrack-chain=prerouting policy-template-group=group-R2 generate-policy=no hash-algorithm=sha256 enc-algorithm=aes-256 dh-group=modp6144 comment="Site to Site IKEv2 R1-Server->>-R2-Client"
/ip ipsec policy group add name=group-R3
/ip ipsec peer add address=3.3.3.3 auth-method=rsa-signature exchange-mode=ike2 passive=no certificate=server1 notrack-chain=prerouting policy-template-group=group-R3 generate-policy=no hash-algorithm=sha256 enc-algorithm=aes-256 dh-group=modp6144 comment="Site to Site IKEv2 R1-Server->>-R3-Client"
/ip ipsec policy group add name=group-R4
/ip ipsec peer add address=0.0.0.0/0 auth-method=rsa-signature exchange-mode=ike2 passive=yes certificate=server1 notrack-chain=prerouting policy-template-group=group-R4 generate-policy=port-strict hash-algorithm=sha256 enc-algorithm=aes-256 dh-group=modp6144 comment="Site to Site IKEv2 R1-Server->>-R4-Client"

Define Peer

نوبت به تنظیمات phase2 می رسد در این مرحله ما باید یک Proposal برای نوع و الگوریتم رمزنگاری روی داده ها را تعریف کنیم که روی Policy ها که در مرحله بعدی تعریف می کنیم قرار گیرند.

  • نکته: این مرحله را روی کلاینت هم داریم باید دقت کنیم که نوع الگوریتم های رمزگذاری در Phase2 نیز باید بر روی سرور و کلاینت ها یکسان تعریف شود.
/ip ipsec proposal add name=proposal1 auth-algorithms=sha256 enc-algorithms=aes-256-cbc pfs-group=modp4096

Phase2-Define Proposal

حال باید Policy هایی که تعیین کننده حدود دسترسی Network ها در حالت Tunnel Mode بین دفاتر هستند را تعریف کنیم. تعریف سیاست ارتباطی دفتر مرکزی با دفتر فرعی Site-A :

/ip ipsec policy add src-address=10.5.0.0/16 sa-src-address=1.1.1.1 sa-dst-address=2.2.2.2 dst-address=192.168.11.0/24 level=unique tunnel=yes proposal=proposal1 comment="IKEv2 R1-Server-<<->>-R2-Client Policy Tunnel"
/ip ipsec policy add src-address=10.5.0.0/16 sa-src-address=1.1.1.1 sa-dst-address=2.2.2.2 dst-address=192.168.12.0/24 level=unique tunnel=yes proposal=proposal1 comment="IKEv2 R1-Server-<<->>-R2-Client Policy Tunnel"
/ip ipsec policy add src-address=192.168.1.50/32 sa-src-address=1.1.1.1 sa-dst-address=2.2.2.2 dst-address=192.168.11.0/24 level=unique tunnel=yes proposal=proposal1 comment="IKEv2 R1-Automation server-<<->>-R2-Client Policy Tunnel"
/ip ipsec policy add src-address=192.168.1.50/32 sa-src-address=1.1.1.1 sa-dst-address=2.2.2.2 dst-address=192.168.12.0/24 level=unique tunnel=yes proposal=proposal1 comment="IKEv2 R1-Automation server-<<->>-R2-Client Policy Tunnel"

تعریف سیاست ارتباطی دفتر مرکزی با دفتر فرعی Site-B :

/ip ipsec policy add src-address=10.5.0.0/16 sa-src-address=1.1.1.1 sa-dst-address=3.3.3.3 dst-address=192.168.13.0/24 level=unique tunnel=yes proposal=proposal1 comment="IKEv2 R1-Server-<<->>-R3-Client Policy Tunnel"
/ip ipsec policy add src-address=192.168.1.50/32 sa-src-address=1.1.1.1 sa-dst-address=3.3.3.3 dst-address=192.168.13.0/24 level=unique tunnel=yes  proposal=proposal1 comment="IKEv2 R1-Automation Server-<<->>-R3-Client Policy Tunnel"

تعریف سیاست ارتباطی دفتر مرکزی با دفتر فرعی Site-C :

  • نکته: چون در این سایت IP Private داریم باید یک Policy خالی و از نوع Template تعریف کرده و سیاست ارتباطی را در سمت کلاینت تعریف کنیم.
/ip ipsec policy add src-address=0.0.0.0/0 sa-src-address=0.0.0.0 sa-dst-address=0.0.0.0 dst-address=0.0.0.0/0 template=yes group=group-R4  proposal=proposal1 comment="IKEv2 R1-Server-<<->>-R4-Client Policy Tunnel"

Define Policy Phase1

با اضافه شدن notrack-chain=prerouting به دستور Peer روی سمت Responder بطور خودکار RAW Rule ها را ایجاد می کند اما در سمت Initiator این کار دستی انجام می شود.با نوشتن Accept Rule دربالا ترین ردیف NAT نیز می توانیم این کار را انجام دهیم ولی استفاده از RAW Rule بار کمتری روی CPU دارد.

  • نکته:اگر از fasttracking نیز استفاده می کنید ،چند Rule Accept بالای آن درFilter Rule نیاز پیدا می کنید.
/ip firewall raw add chain=prerouting src-address=10.5.0.0/16 dst-address=192.168.0.0/16 action=notrack comment="Allow from Site-A,B,C To Site-D"
/ip firewall raw add chain=prerouting src-address=192.168.1.50/32 dst-address=192.168.0.0/16 action=notrack comment="Allow from Site-A,B,C To Automation Server"
/ip firewall filter add chain=forward  dst-address=!192.168.1.50 in-interface=ether3 out-interface=ether4 action=drop comment="Allow  from Site-D To Only Automation Server"

RAW Rule

تنظیمات دفتر مرکزی Site-D به پایان رسید.نوبت به تنظیمات دفتر فرعی Site-A هست:

ابتدا یک Template از Client Certificate ایجاد می کنیم

/system identity set name=R2-Client
#ایجاد نمونه مجوز کاربر برای خودکار سازی آن
/certificate add name=client1 common-name="R2-certificate1" key-usage=tls-client

از روی Template ایجاد شده یک درخواست به CA Server ارسال می کنیم، روی بستر اینترنت.

قبل از ارسال درخواست باید دقت کنیم که ساعت روتر های ما یکسان باشند و روتر های ما از یک NTP سرور ساعت را دریافت کنند.

/certificate add-scep template=client scep-url="http://1.1.1.1/scep/test"

تعریف Phase1 روی کلاینت

/ip ipsec peer add address=1.1.1.1 auth-method=rsa-signature exchange-mode=ike2 passive=yes certificate=client1 notrack-chain=prerouting generate-policy=port-strict hash-algorithm=sha256 enc-algorithm=aes-256 dh-group=modp6144 comment="Site to Site IKEv2 R2-Client Tunnel"

در تعریف Phase2 روی کلاینت، بررسی شود با تنظیمات سمت سرور یکسان باشد.

/ip ipsec proposal set default auth-algorithms=sha256 enc-algorithms=aes-256-cbc pfs-group=modp4096
Router2-Site-A

تنظیمات دفتر فرعی Site-B

ابتدا یک Template از Client Certificate ایجاد می کنیم

/system identity set name=R3-Client
#ایجاد نمونه مجوز کاربر برای خودکار سازی آن
/certificate add name=client1 common-name="R3-certificate1" key-usage=tls-client

از روی Template ایجاد شده یک درخواست به CA Server ارسال می کنیم، روی بستر اینترنت.قبل از ارسال درخواست باید دقت کنیم که ساعت روتر های ما یکسان باشند و روتر های ما از یک NTP سرور ساعت را دریافت کنند.

/certificate add-scep template=client scep-url="http://1.1.1.1/scep/test"

تعریف Phase1 روی کلاینت

/ip ipsec peer add address=1.1.1.1 auth-method=rsa-signature exchange-mode=ike2 passive=yes certificate=client1 notrack-chain=prerouting generate-policy=port-strict hash-algorithm=sha256 enc-algorithm=aes-256 dh-group=modp6144 comment="Site to Site IKEv2 R3-Client Tunnel"

در تعریف Phase2 روی کلاینت، بررسی شود با تنظیمات سمت سرور یکسان باشد.

/ip ipsec proposal set default auth-algorithms=sha256 enc-algorithms=aes-256-cbc pfs-group=modp4096
Router3 SiteB

تنظیمات دفتر فرعی Site-C

در Site-C به واسطه اینکه ما از سرویس LTE استفاده می کنیم . همانطور که مستحضر هستید اپراتورها روی سیم کارت IP Public ارایه نمی دهند . (در صورتی که IP Static بخواهید باید از سرویس APN استفاده کنید که اون هم هزینه نسبتا زیادی دارد) .تفاوت تنظیمات این سایت با دیگر دیگر سایت ها اینکه ما برای سایت های دیگه که IP Public داشتن Policy ها را روی سایت مرگزی می ساختیم و در اینجا باید Policy ها را روی دفتر فرعی بسازیم .و Peer مربوط به این گونه سایتها را در دفتر مرکزی بصورت Passive تعریف می کنیم تا در نقش Responder در بیاد.

  • نکته:پورت 4500 باید سمت ISP باز باشد.
/system identity set name=R4-Client
#ایجاد نمونه مجوز کاربر برای خودکار سازی آن
/certificate add name=client1 common-name="R4-certificate1" key-usage=tls-client
/certificate add-scep template=client scep-url="http://1.1.1.1/scep/test"

تعریف Phase1 و Phase2 روی کلاینت

/ip ipsec proposal set default auth-algorithms=sha256 enc-algorithms=aes-256-cbc pfs-group=modp4096
/ip ipsec peer add address=1.1.1.1 auth-method=rsa-signature exchange-mode=ike2 passive=no certificate=client1 notrack-chain=prerouting generate-policy=no hash-algorithm=sha256 enc-algorithm=aes-256 dh-group=modp6144 comment="Site to Site IKEv2 R4-Client Tunnel"

تعریف سیاست ارتباطی بر خلاف سایتهای A و B که دارای IP Public بودند، در سایت C روی Client تعریف می شود.

/ip ipsec policy add src-address=192.168.14.0/24 sa-src-address=0.0.0.0 sa-dst-address=1.1.1.1 dst-address=10.5.0.0/16 level=unique tunnel=yes comment="IKEv2 R4-Client-<<->>-R1-Server Policy Tunnel"
/ip ipsec policy add src-address=192.168.14.0/24 sa-src-address=0.0.0.0 sa-dst-address=1.1.1.1 dst-address=192.168.1.50/32 level=unique tunnel=yes comment="IKEv2 R4-Client-<<->>-R1-Automation Server Policy Tunnel"

/ip firewall raw add chain=prerouting src-address=192.168.14.0/24 dst-address=10.5.0.0/16 action=notrack comment="Allow from Site-C To Site-D"
/ip firewall raw add chain=prerouting src-address=192.168.14.0/24 dst-address=192.168.1.50/32 action=notrack comment="Allow from Site-C To Automation Server"

Router4-Site-D

تنظیمات به اتمام رسید.تنها کار باقیمانده تایید درخواست مجوز های کلاینت ها است که روی روتر دفتر مرکزی این کار بصورت زیر انجام می شود.در این روش بعد از Grant کردن مجوز ها در صورتی که بخواهیم زود تر از موقع آن مجوز را ابطال کنیم از دستور Revoke استفاده می کنیم.

Grant License

بعد از تایید فقط چند ثانیه طول می کشد که مرحله شناسایی و اعمال Policy ها روی روتر های انجام و ارتباط انشاالله امن برقرار شود.

ٍEstablished Connection

نظرات