معمولا در اکثر شرکتها لازم است کارمندان از راه دور به منابع شرکت دسترسی داشته باشند. برای اینکه این دسترسی به صورت امن صورت گیرد پروتکلهای مختلفی مانند PPTP, L2TP, L2TP/IPSec, OPENVPN, SSTP و … وجود دارند.
از میان این پروتکلها PPTP دیگر یک پروتکل امن به شمار نمی‌آید. بعضی از شرکتها مانند اپل دیگر از این پروتکل در محصولات خود پشتیبانی نمی‌کنند.

معرفی پشته پروتکلی IPSec

یکی از پروتکلهایی که از آن می‌توان به صورت مستقل و یا ترکیب آن با L2TP برای ایجاد یک تانل امن استفاده کرد، IPSec است. در واقع IPSec به مجموعه‌ای از پروتکلها اشاره می‌کند که جهت امن کردن ارتباطات در شبکه‌های IP قابل استفاده هستند.
تانل IPSec می‌تواند به دو صورت site to site و یا remote client باشد.

هدف IPSec

به طور خلاصه می‌توان گفت هدف IPSec فراهم آوردن نیازهای امنیتی زیر است.
1- Confidentiality: برای تامین این نیاز IPSec از رمزنگاری (encryption) استفاده می‌کند. داده‌های رمزنگاری شده در صورتی که در بین راه شنود شوند قابل فهم نخواهند بود.
2- Integrity: برای فراهم کردن این نیاز از hash استفاده می‌شود تا این اطمینان حاصل شود که داده‌های دریافت شده دقیقا همان داده‌های ارسال شده هستند و در بین راه به صورت تصادفی یا عمدی تغییر نکرده‌اند.
3-Authentication: برای اینکه دو سمت ارتباط اطمینان داشته باشند که طرف مقابل همان کسی است که ادعا می‌کند، IPSec امکان احراز هویت را فراهم می‌کند. انجام احراز هویت توسط pre shared key و همچنین digital certificate امکان پذیر است.
4- Anti replay: به این معنا که امکان ذخیره و سپس استفاده کردن از اطلاعات مهمی مانند اطلاعات احراز هویت که بین دو سمت رد و بدل می‌شوند، نباشد.

IKE – Internet Key Exchange

IPSec از پروتکل IKE برای ایجاد SA به معنای Security Association بین دو طرف ارتباط استفاده می‌کند. Security Association به معنای توافق بر سر یک سری پارامترهای امنیتی مثل الگورتیم رمزنگاری، الگوریتم hash و … است.
IKE دارای دو فاز است که با نامهای IKE Phase 1 و IKE Phase 2 شناخته می‌شوند.

IKE Phase 1

می‌توان گفت در این فاز دو طرف ارتباط به دنبال ایجاد یک مسیر امن بین یکدیگر برای تبادل پیامهای کنترلی با هم هستند.
در این فاز دو طرف بر سر پارامترهایی مانند الگوریتم رمزنگاری مورد استفاده، روش hash و … مذاکره می‌کنند. در صورت تفاهم در انتهای این فاز یک SA یا به عبارتی یک تانل بین دو طرف ایجاد می‌شود. گاها به این تانل IKE SA گفته می‌شود.

IKE Phase 2

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

پیکربندی IPSec VPN Server در میکروتیک برای remote clientها

تنظیمات اولیه

ابتدا تنظیمات اولیه شبکه مانند آدرس IP و default route را انجام می‌دهیم.

/ip address
add address=192.168.200.2/24 interface=ether2 network=192.168.200.0

/ip route
add distance=1 gateway=192.168.200.1

تعریف address pool

یک address pool برای آدرسهایی که می‌خواهیم به vpn clientها اختصاص دهیم در نظر می‌گیریم.

/ip pool
add name=pool1 ranges=192.168.230.0/24

نوشتن NAT rule

محدوده آدرسهایی که برای remote clientها در نظر گرفته ایم را NAT می‌کنیم. تا این کلاینتها دسترسی به اینترنت نیز داشته باشند.

/ip firewall nat
add action=masquerade chain=srcnat out-interface=UPLINK \
    src-address=192.168.230.0/24

تعریف ipsec policy group

ipsec policy group صرفا یک نام است که از آن در قسمتهای دیگر استفاده خواهیم کرد.

/ip ipsec policy group
add name=GROUP1

تعریف mode config

در قسمت mode config مشخص می‌کنیم که به کلاینتها از کدام pool و با چه subnet maskی آدرس داده شود. در اینجا از address poolی که قبلا تعریف کردیم استفاده می‌کنیم. همچنین می‌توان آدرس سرورهای dns را برای کلاینتها مشخص کرد.

/ip ipsec mode-config
add address-pool="IPSec Pool" address-prefix-length=32 name=\
    CFG1 static-dns=8.8.8.8,9.9.9.9 system-dns=no

نکته: به صورت پیش فرض اکثر کلاینتها پس از متصل شدن VPN تمام ترافیک خود را به سمت تانل ارسال می‌کنند. برای اینکه به کلاینت بگوییم فقط ترافیک به مقصدهای خاصی را از طریق تانل ارسال کند می‌توان از گزینه split include استفاده کرد. در این فیلد باید محدوده‌ آدرسهای مورد نظر را مشخص کرد.

تعریف ipsec profile

در این قسمت تنظیمات مربوط به ipsec phase 1 را انجام می‌دهیم. تنظیماتی مانند الگورتیم رمزنگاری مورد استفاده در فاز اول، نوع گروه دفی هلمن و …
نکته: Diffie-Hellman یک پروتکل انتقال کلید است. این پروتکل این امکان را فراهم می‌کند تا دو طرف یک ارتباط که قصد استفاده از رمزنگاری متقارن را دارند، کلید مشترکی را ایجاد کرده و با یکدیگر به اشتراک بگذراند. هر گروه دفی هلمن بیانگر میزان بزرگی کلید ایجاد شده است. معمولا گروه‌های بزرگتر به معنی طول کلید بیشتر و امنیت بیشتر هستند.
نکته: دفی هلمن از یک الگوریتم غیرمتقارن برای تبادل کلیدها استفاده می‌کند.

/ip ipsec profile
add enc-algorithm=aes-256,aes-192,aes-128 name=profile1

Proposal Check: نحوه بررسی life time برای فاز 2 را مشخص می‌کند. مقدار این life time در قسمت ipsec proposal مشخص می‌شود.
Life Time: مشخص کردن طول عمر SA توسط این پارامتر انجام می‌شود و زمان پیش فرض 1 روز است.
DPD interval: کاربرد Dead Peer Detection بررسی در دسترس بودن طرف مقابل است. امکان غیر فعال کردن DPD نیز وجود دارد.
NAT Traversal: در صورت فعال نبودن NAT Traversal اگر یکی از طرفین پشت NAT قرار گرفته باشد امکان برقراری ارتباط از طریق IPSec وجود نخواهد داشت.

تعریف ipsec peer

تعدادی دیگر از تنظیمات مربوط به ipsec phase 1 در این قسمت انجام می‌شود.

/ip ipsec peer
add name=peer1 passive=yes profile=profile1 send-initial-contact=no

Exchange mode: نحوه تبادل و مذاکره برای پارامترهای فاز 1 را مشخص می‌کند. در این قسمت می‌توان از نسخه 2 پروتکل IKE نیز استفاده کرد. در نسخه 2 برای فاز 1 تعداد پیامهای کمتری برای مذاکره استفاده می‌شود. درو روش main و aggressive مربوطه به IKE نسخه 1 می‌شوند. به طور کلی میتوان گفت روش main از روش aggressive امنتر است.
Address: می‌توان محدوده آدرس سمت کلاینت را در اینجا وارد کرد تا در صورتی که آدرس کلاینت در این محدوده باشد تنظیمات این peer برای او اعمال شود.
Local Address: در صورتی که روتر دارای چند آدرس باشد مشخص می‌کند که آدرس مبدا برای برقراری SA کدام آدرس روتر باشد.
Send INITIAL_CANTACT: می‌توان مشخص کرد که بسته initial_contact توسط روتر ارسال بشود یا خیر. معمولا remote clientها شروع کننده یک ارتباط هستند و برای آنها نیازی نیست که سمت روتر این گزینه فعال باشد. همچنین در صورت استفاده از mode config و xauth بسته initial_contact ارسال نخواهد شد.

تعریف ipsec proposal

در قسمت ipsec proposal پارامترهای مربوط به فاز دوم ipsec را مشخص می‌کنیم.
برای احراز هویت امکان استفاده از md5 و انواع مختلف sha وجود دارد.
برای رمزنگاری نیز لیست مفصلی از الگوریتمهای رمزنگاری متقارن پشتیبانی می‌شود.

/ip ipsec proposal
add enc-algorithms=aes-256-cbc,aes-128-cbc name=proposal1 pfs-group=none

PFS Group: مشخص کردن گروه دفی هلمن برای Perfect Forward Secrecy از طریق این گزینه قاب انجام است. استفاده از PFS اختیاری است و می‌تواند موجب افزایش امنیت شود.

تعریف ipsec identity

در این قسمت مهمترین عملی که انجام می‌شود احراز هویت peer است.
در قسمت peer نام peer1 که در مراحل قبلی تعریف کردیم را انتخاب می‌کنیم.
روش احراز هویت را pre-shared-key-xauth قرار می‌دهیم.
با توجه به روش احراز هویتی که انتخاب کردیم باید قسمت secret که در واقع همان pre-shared-key است و قسمتهای username و password را پر کنیم.

/ip ipsec identity
add auth-method=pre-shared-key-xauth generate-policy=\
    port-strict mode-config=CFG1 password=123 peer=peer1 \
    policy-template-group=GROUP1 secret=12345678 username=\
    a.karimi

نکته: در صورتی که بخواهیم username و password از روی یک radius server خوانده شوند باید گزینه XAuth Use Radius را فعال کنیم.

/ip ipsec settings
set xauth-use-radius=yes

تعریف ipsec policy

ipsec policy مشخص کننده این است که تنظیمات امنیتی ipsec (فرستادن بسته از طریق تانل و انجام رمزنگاری و …) برای چه بسته‌هایی صورت گیرد.
در این قسمت از proposal و گروهی که در قسمتهای قبل ایجاد کردیم استفاده می‌کنیم.

/ip ipsec policy
add dst-address=0.0.0.0/0 group=GROUP1 proposal=proposal1 \
    src-address=0.0.0.0/0 template=yes

تنظیمات سمت گوشی اندروید

در گوشی اندروید به قسمت تنظیمات VPN می‌رویم و یک اتصال جدید به صورت زیر ایجاد می‌کنیم.
همانطور که مشاهده می‌کنید نوع را IPSec Xauth PSK قرار می‌دهیم.

بررسی صحت عملکرد VPN Server

در صورتی که کلاینت بتواند به صورت موفقیت آمیز به سرور متصل شود در قسمت Active peers و Installed SA می‌توان این امر را مشاهده کرد.

[admin@MikroTik] /ip ipsec active-peers> print detail 
Flags: R - responder, N - natt-peer 
 0 RN id="a.karimi" local-address=192.168.200.2 port=4500 
      remote-address=192.168.50.254 port=37708 
      state=established side=responder 
      dynamic-address=192.168.230.255 uptime=14m8s 
      last-seen=5s ph2-total=1 
[admin@MikroTik] /ip ipsec installed-sa> print detail 
Flags: H - hw-aead, A - AH, E - ESP 
 0  E spi=0x7D8E078 src-address=192.168.50.254:37708 
      dst-address=192.168.200.2:4500 state=mature 
      auth-algorithm=sha256 enc-algorithm=aes-cbc 
      enc-key-size=256 
      auth-key="ac75627c92bad874145189f15430b5731e1aff6560913553
         c4204504ad65429a" 
      enc-key="f0a9105c9bc77b35e8fe3e54ba452eac32a0d7605b86fd53d
        3b7d47434ce9911" 
      addtime=aug/29/2019 17:48:59 expires-in=2h46m9s 
      add-lifetime=2h24m/3h current-bytes=411381 
      current-packets=2850 replay=128 

 1  E spi=0xC5E40F26 src-address=192.168.200.2:4500 
      dst-address=192.168.50.254:37708 state=mature 
      auth-algorithm=sha256 enc-algorithm=aes-cbc 
      enc-key-size=256 
      auth-key="0823ffc208f95a86e9e01106edddd85ce5d305a5c9c55d46
         ceb8c73acca5bc76" 
      enc-key="c3b09eb4ced6308b292773aadaa7bf099bcef1ad0c21a4a77
        ffb6e1a541b3887" 
      addtime=aug/29/2019 17:48:59 expires-in=2h46m9s 
      add-lifetime=2h24m/3h current-bytes=1648550 
      current-packets=2767 replay=128 

دیدگاهتان را بنویسید

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