پروازی بر دنیای امنیت شبکه (قسمت چهاردهم) – مفاهیم VPN

بسیاری از سازمان‌ها برای فراهم کردن یکپارچگی‌داده، احراز هویت، و رمزنگاری‌داده از Virtual Private Networkها یا همان VPN ها استفاده میکنند تا از محرمانگی Packetهایشان بر بستر یک شبکه ناامن ویا اینترنت، اطمینان حاصل کنند. VPNها طراحی شده‌اند تا از هزینه‌های اضافی برای تهیه لاین‌های اختصاصی(Leased Line) بی‌کاربرد جلوگیری کنند؛ در ادامه قسمت قبل از این سری آموزشی، در این پست میخواهیم درمورد مفاهیم VPNها، رمزنگاری‌ها وهمچنین ضرورت استفاده از VPNها صحبت کنیم، پس با من همراه باشید ;) .

اصلا VPN چیه؟

اگر مفهوم Virtual Private Network را به بخش‌های جداگانه‌ای تقسیم کنیم، میتوان VPN را به این صورت تعریف کرد:

  • ـ N - شبکه ویا Network، بستری که ارتباط و Connectivity را بین دو Device را فراهم میکند؛ این دو دیوایس میتوانند دو عدد کامپیوتر بروی یک LAN یکسان ویا دو کامپیوتر متصل به شبکه WAN باشند؛ به‌هرحال یک شبکه، Connectivity پایه‌ای را برای این دو دیوایس فراهم میکند.
  • ـ V - مجازی ویا Virtual، به یک ارتباط منطقی(Logical connection) بین دو دیوایس نسبت داده میشود؛ برای مثال، یک کاربر ممکن است در تهران و یک کاربر دیگر در مشهد به اینترنت متصل شده‌باشند و ما میتوانیم برای این دو، یک شبکه منطقی(Logical network) بسازیم؛ این شبکه مجازی بین این 2 دیوایس، از اینترنت به عنوان transport mechanism استفاده خواهد کرد.
  • ـ P - خصوصی ویا Private، شبکه‌مجازی‌ای که میتوانیم بین دو دیوایس حاضر در مشهد و تهران بسازیم، خصوصی و مخصوص سازمان‌شما خواهد بود.

پس با توضیحات پایه‌ای و مفهومی VPN آشنا شدید؛ شبکه‌ِمجازی‌ِخصوصی!

اگر ما بین دو دیوایس بر بستر اینترنت، VPNـی برقرار کنیم، چه چیزی باعث میشود که یک شخص نتواند پکت‌های مارا Sniff و بررسی کند؟ بصورت پیشفرض، هیچی! در نتیجه،ما به بسیاری از VPNها عناصری را اضافه میکنیم که محرمانگی و رمزنگاری را برای ما فراهم آورند، که اگر کسی پکت‌های ما را استراق سمع کرد، بدلیل استفاده از رمزنگاری، نتواند متوجه محتوای داخل پکت‌ها شود؛ این محرمانگی حاصل از رمزنگاری، میتواند از همان بخش P در حروف VPN حاصل شود.

همچنین برای جلوگیری از تغییر و دستکاری پکت‌ها در بین مسیر، از Integrity checking استفاده خواهیم کرد و اطمینان حاصل میکنیم که از سَمت دیگر VPN، پکت‌هایی که ارسال‌شده‌اند را به شکل صحیح و درست میبینیم و عمل مخربی در این میان، صورت نگرفته‌است؛ بگذارید به مثال مشهد تهران خودمون برگردیم.

اصلا چرا باید برای Connectivity بین این دو، از VPN استفاده کنیم وقتی که گزینه‌های دیگری هم روز میز است؟؛ میتونیم برای هرکدام از یوزرهای خود، یک Dedicated WAN(خط اختصاصی) بین مشهد و تهران خریداری کنیم. هر یوزر میتواند به سَمت خودش از لینک متصل شود و از ارتباط مستقیم بهره بگیرد. اما مشخصا مشکلی که در این میان وجود دارد، بحث قیمت میباشد؛ در اینگونه مواقع، بسیار عقلانی‌تر و ارزان‌تر است که از یک VPN بر بستر اینترنت برای برقراری ارتباط استفاده کنیم، تا اینکه بیاییم و یک "خط اختصاصی که فقط به یک مقصد خاص میرود" خریداری کنیم.

یکی دیگر از مزیت‌های VPNها، Scalability(مقیاس‌پذیری) میباشد؛ اگر 10 ویا 20 کاربر دیگر هم نیاز داشته باشند که به مرکز اصلی بصورت مستقیم متصل شوند، ما میتوانیم براحتی از طریق Local Provider آنها این امکان برای برایشان فراهم کنیم؛ فقط با افزایش پهنای‌باند مرکز اصلی، میتوانیم هرتعدادی که میخواهیم برای کاربران بصورت Logical وبا استفاده از VPNها در بستر اینترنت، Connectivity فراهم کنیم.

انواع VPNها

بر اساس تعریف Virtual private networkها، موارد زیر میتوانند به عنوان تکنولوژی‌های VPN درنظر گرفته‌شوند:

  • ـ IPSec: برای لایه سوم مدل OSI و IP Packetها، امنیت را پیاده‌سازی میکند و میتواند برای VPNهای Site-to-Site و remote-access استفاده گردد.
  • ـ SSL: که اختصار Secure Sockets Layer میباشد، امنیت را برای یک TCP Session، با استفاده از قرار دادنش بروی یک SSL Tunnel رمزنگاری‌شده، پیاده‌سازی میکند و میتواند برای remote-access VPN ها استفاده گردد(مثل برقراری ارتباط رمزنگاری شده ی بین یک کلاینت و یک وب‌سرور که از HTTPS استفاده میکند).
  • ـ MPLS: اختصار Multi-protocol Label Switching میباشد؛ MPLS و MPLS Layer 3 توسط Service Provider ارائه میشوند و به یک کمپانی اجازه میدهند که بین دو ویا چندین سایتشان Logical Connectivity داشته‌باشند و از شبکه SP برای انتقالات استفاده کنند. بصورت پیشفرض رمزنگاری‌ای برای L3 VPN وجود ندارد، اگرچه میتوان از IPSec درکنارش، برای رمزنگاری استفاده کرد.

دو نوع اصلی از VPNها

دو دسته‌بندی اصلی وجود دارد که VPNهای گوناگون در آنها قرار میگیرند:

  • ـ Remote-access VPNها: ممکن است تعدادی از کاربران، نیاز به ایجاد یک VPN Connection بین یک‌کامپیوتر خاص و یک Headquarter اصلی(یا هرجای دیگر) داشته باشند، به این نوع ارتباطها Remote-access VPN Connection گفته میشود؛ remote-acceess VPNها میتوانند از تکنولوژی‌های IPSec ویا Secure Shell برای VPNهایشان استفاده‌کنند. به عنوان مثال بسیاری از مشتریان Cisco، از Cisco AnyConnect Client برای Remote-access SSL VPNهایشان استفاده میکنند. این روزها استفاده از SSL VPNها بسیار شایع‌تر میباشد، حتی باتوجه به اینکه AnyConnect از IPSec هم پیشتیبانی میکند(IKEv2).
  • ـ Site-to-site VPNها: این نوع VPN ها توسط کمپانی‌هایی پیاده‌سازی میشود که نیاز به ارتباط مستقیم و امن بین سایت‌هایشان دارند(مثلا با استفاده از بستر اینترنت)، تا هر سایت بتواند با سایت‌های دیگر هم ارتباط داشته باشد؛ به این نوع پیاده‌سازی site-to-site VPN گفته میشود. site-to-site vpnها عموما از یک مجموعه از تکنولوژی‌های VPN به نام IPSec استفاده میکنند.

برای بهتر متوجه‌شدن تفاوتشان، شکل زیر یک نمونه از VPNهای Site-to-site و یک نمونه از VPNهای remote-access را نشان میدهد. Cisco ASA در تهران و Headquarterاصلی قرار گرفته‌است و بصورتی کانفیگ شده‌است که Remote-access VPN Connectionهارا Accept کند و همچنین یک تانل site-to-site با یک مرکز در مشهد داشته‌باشد.

مزایای اصلی VPNها

چه از Remote-access VPNها استفاده کنید و چه از Site-to-site VPNها، از مزایای زیر بهره‌مند میشوند:

  • Confidentiality(محرمانگی)
  • Data integrity(یکپارچگی‌داده)
  • Authentication(احراز هویت)
  • Antireplay protection

بگذارید به هریک، نگاهی دقیق‌تر بیندازیم:

Confidentiality:

ـ Confidentiality ویا محرمانگی به این معنی میباشد که فقط دیوایس‌های موردنظر میتوانند متوجه داده‌های ارسالی بشوند و محتوای آنهارا بفهمند. اگر دربین راه شخصی پکت‌هارا ببیند، نمیتواند از محتوای آنها سردربیاورد، چراکه محتوا به شکل حروف و اعداد بدون معنی و مفهوم میباشند؛ به عنوان مثال ممکن است محتوای پکت‌ها به این شکل باشند:

سیستم Confidentiality مهمترین مزیت VPNها میباشد، چراکه فقط ارسال‌کننده و دریافت‌کننده که کلید(Key) ویا Secret را بلدند میتوانند داده‌هارا رمزنگاری و رمزگشایی کنند و هرشخصی که از این کلید اطلاعی نداشته باشد، قادر به Decrypt پیغام نمیباشد و صرفا دیدن این داده‌های نامفهوم برایش فایده‌ای ندارد.

Data Integrity:

اگر دو دیوایس بروی بستر یک VPN درحال ارتباط و انتقال پکت میباشند، یکی دیگر از موارد قابل اهمیت اینست که داده بصورت سالم و صحیح، end-to-end ارسال و دریافت شود و اتکر در بین راه قادر به خراب‌کردن داده و Injectکردن کوچکترین Bitـی نباشد.

Authentication:

مسلما برای امن نگه‌داشتن ارتباطات VPN ها، میبایستی از یک روش احرازهویت استفاده شود که مبادا Connectionشما بین دیوایس شما و اتکر برقرار شود ! ، پس نیاز به روشی برای احرازهویت خواهیم داشت تا بتوانیم فقط به افراد و موارد موردنظر خودمان اجازه برقراری ارتباط بدهیم. برای Authentication یک Peer راه‌های گوناگونی وجود دارد:

  • Pre-shared keys - used for authentication only
  • Public and private key pairs - used for authentication only
  • User authentication

Anti-replay Protection:

ممکن است یک Attacker، ترافیک VPN شمارا Capture کند و قصد این‌را داشته‌باشد که دوباره آنرا بازی‌دهد و ازش استفاده کند تا بتواند یکی از VPN Peerهارا به‌اشتباه بیندازد که باور کند که این Peer ، یک دیوایس مجاز میباشد؛ با این روش، دیوایس Attacker وانمود میکند که یک دیوایس دیگر است که مجاز به ادامه ارتباط است. بصورت پیشفرض برای جلوگیری از این حمله، در VPNها عملکردهایی برای جلوگیری از این‌مورد انجام میگیرند؛ به زبان ساده بخواهیم بگوییم به این صورت است که یکبار که یک پکت بر بستر VPN ارسال شود، دیگر همان بسته برای بار دوم در VPN Sessionفعلی، Valid نمیباشد.


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

در قسمت آینده درمورد Cryptography صحبت خواهیم کرد.

موفق باشید.