VPN چیست؟ (بخش سوم) - آموزش هک و دانلود برنامه های مفید
<
VPN چیست؟ (بخش سوم)
چیست؟ (بخش سوم) |
|
منبع : از مجله رایانه شماره 127
VPN با لینوکس (1) یکی از توانایی های VPN امکان کاربران دور از شبکه(Remote) در دسترسی به آ ن است . IPsec در این میان نقش مهمی در فراهم کردن ایمنی لازم برای داده ها دارد . یکی از مناسب ترین و به صرفه ترین وسیله ها در پیاده سازی این امکانات لینوکس و Free S/WAN که در این بخش به آن می پردازیم .
IPsec و Free S/WAN اگر چه لینوکس هم به دلیل توانایی های خوبFirewall بستر بسیار مناسبی برای یک دروازه امنیتی(Security Gateway) برپایه IPsec است مال خودش به طور پیش فرض بخش های لازم برای IPsec را به همراه ندارد. این برنامه ها را می توانید در مجموعه Free S/WAN بیابید. Free S/WAN (www.fresswan.org) در اصل مجمعی متشکل از برنامه نویسان زبده و تامین کنندگان مالی است که برنامه های ویژه لینوکس را فراهم می کنند. برنامه Free S/WAN از دو بخش اصلی تشکیل شده یکی KLIPS(Kernel IPsec ) است که پروتکل های لازم را به Kernel اضافه می کند و دیگری Daemon که وظیفهبرقراری ارتباط و رمز گذاری را بر عهده دارد. در این بخش می بینید که IPsec چگونه کار می کند و چگونه باید آن را به کمک Free S/WAN در لینوکس برای VPN پیکر بندی کرد. در ادامه خواهیم گفت که با X.509 چطور زیر ساخت های لازم برای یک شرکت پیاده سازی می شود.
نگاهی به IPsec IPsec در اصل مجموعه ای از پروتکل ها و روش هایی است که به کمک آنها می توان روی اینترنت یک ارتباط مطمئن و ایمن ایجاد کرد. جزییات IPsec یا Internet Protocol Security در RFC های شماره 2401 تا 2410 آمده. IPsec برای اطمینان بخشیدن به ارتباط های اینترنتی از شیوه های تعیین اعتبار و رمز گذاری داده ها استفاده می کند. برای این منظور در لایه شبکه دو حالت انتقال و دو لایه ایمنی فراهم می کند.
Transport در مقایسه با Tunnel در حالت Transport دو میزبان به طور مستقیم روی اینترنت با هم گفتگو می کنند. در این حالت می توان IPsec را برای تعیین اعتبار و همچنین یکپارچگی و درستی داده ها به کار برد. به کمک IPsec نه تنها می توان از هویت طرف گفتگو مطمئن شدبلکه می توان نسبت به درستی و دست نخوردگی داده هاهم اطمینان حاصل کرد . به کمک عملکرد رمز گذاری می توان افزون بر آن خوانده شدن داده ها از سوی افراد غیر مجاز جلوگیری کرد. اما از آنجا که در این شیوه، دو کامپیوتر به طور مستقیم داده ها را مبادله میکنند نمی توان مبدا و مقصد داده ها را پنهان کرد. از حالت Tunnel هنگامی که استفاده می شود که دست کم یکی از کامپیوترها به عنوان Security Gateway به کار برود. در این وضعیت حداقل یکی از کامپیوترهایی که در گفتگو شرکت می کند در پشت Gateway قراردارد و در نتیجه ناشناس می ماند. حتی اگر دو شبکه از از طریق Security Gateway های خود با هم داده مبادله کنند نمی توان از بیرون فهمید که دقیقا کدام کامپیوتر به تبادل داده مشغول است. در حالت Tunnel هم می توان از کارکردهای تعیین اعتبار ،کنترل درستی داده ها و رمز گذاری بهره برد.
Authentication Header وظیفه Authentication Header IP آن است که داده های در حال انتقال بدون اجازه از سوی شخص سوم مورد دسترسی و تغییر قرار نگیرد . برای این منظور از روی Header مربوط به IP و داده های اصلی یک عددHash به دست آمده و به همراه فیلدهای کنترلی دیگر به انتهای Header اضافه می شود. گیرنده با آزمایش این عدد می تواند به دستکاری های احتمالی در Header یا داده های اصلی پی ببرد. Authentication Header هم در حالت Transport و هم در حالت Tunnel کاربرد دارد. AH در حالت Transport میان Header مربوط به IP و داده های اصلی می نشیند . در مقابل، در حالت Tunneling ، Gateway کل Paket را همراه با Header مربوط به داده ها در یک IP Packet بسته بندی می کند. در این حالت، AH میان Header جدید و Packet اصلی قرار می گیرد. AH در هر دو حالت، اعتبار و سلامت داده ها را نشان می دهد اما دلیلی بر قابل اطمینان بودن آنها نیست چون عملکرد رمز گذاری ندارد.
Encapsulated Security Payload Encapsulated Security Payload IP برای اطمینان از ایمنی داده ها به کار می رود . این پروتکل داده ها در قالب یک Header و یک Trailer رمز گذاری می کند. به طوری اختیاری می توان به انتهای Packet یک فیلدESP Auth اضافه کرد که مانند AH اطلاعات لازم برای اطمینان از درستی داده ها رمز گذاری شده را در خود دارد. در حالت Transport، Header مربوط به ESP و Trailer تنها داده های اصلی IP از پوشش می دهند و Header مربوط به Packet بدون محافظ باقی می ماند. اما در حالت Tunneling همه Packet ارسالی از سوی فرستنده، داده اصلی به شمار می رود و Security Gateway آن را در قالب یک Packet مربوط به IP به همراه آدرس های فرستنده و گیرنده رمز گذاری می کند. در نتیجه،ESP نه تنها اطمینان از داده ها بلکه اطمینان از ارتباط را هم تامین می کند . در هر دوحالت،ESP در ترکیب با AH ما را از درستی بهترین داده های Header مربوط به IP مطمئن می کند.
Security Association برای اینکه بتوانESP/AH را به کار برد باید الگوریتم های مربوط به درهم ریزی(Hashing)، تعیین اعتبار و رمز گذاری روی کامپیوترهای طرف گفتگو یکسان باشد. همچنین دو طرف گفتگو باید کلیدهای لازم و طول مدت اعتبار آنها را بدانند. هر دو سر ارتباط IPsec هر بار هنگام برقرار کردن ارتباط به این پارامترهای نیاز دارند. SA یا Security Association به عنوان یک شبه استاندارد در این بخش پذیرفته شده. برای بالا بردن امنیت، از طریق SA می توان کلیدها را تا زمانی که ارتباط برقرار است عوض کرد. این کار را می توان در فاصله های زمانی مشخص یا پس از انتقال حجم مشخصی از داده ها انجام داد.
Internet Key Exchang پروتکل Internet Key Exchang یا IKE( RFC 2409 ) روند کار روی IPsec SA را تعریف می کند. این روش را Internet Security Association and Key Management Protocol یا ISAKMP نیز می نامند. این پروتکل مشکل ایجاد ارتباط میان دو کامپیوتر را که هیچ چیز از هم نمی دانند و هیچ کلیدی ندارند حل می کند. در نخستین مرحله IKE(IKE Phase 1) که به آن حالت اصلی(Main Mode) هم گفته می شود دو طرف گفتگو نخست بر سر پیکر بندی ممکن برای SA و الگوریتم های لازم برای درهم ریزی (Hashing)، تعیین اعتبار و رمزگذاری به توافق می رسند. آغاز کننده(Initiator) ارتباط به طرف مقابل(یا همان Responder) چند گزینه را پیشنهاد می کند. Responder هم مناسب ترین گزینه را انتخاب کرده و سپس هر دو طرف گفتگو، از طریق الگوریتم Diffie-Hellman یک کلید رمز(Secret Key) می سازند که پایه همه رمز گذاری های بعدی است. به این ترتیب صلاحیت طرف مقابل برای برقراری ارتباط تایید می شود. اکنون مرحله دوم IKE(2 ( IKE Phase آغاز می گردد که حالت سریع (Ouick Mode) هم نامیده می شود. این مرحله SA مربوط به IPsec را از روی پارامترهای مورد توافق برا ی ESP و AH می سازد.
گواهینامه x.506 همانطور که پیش از این گفتیم بهترین راه برای تبادل Public Key ها x.509 Certificate(RFC شماره 2495( است. یک چنین گواهینامه ای یک Public Key برای دارنده خود ایجاد می کند. این گواهینامه، داده هایی مربوط به الگوریتم به کار رفته برای امضاء ایجاد کننده، دارنده و مدت اعتبار در خود دارد که در این میان، Public Keyمربوط به دارنده از بقیه مهمتر است. CA هم گواهینامه را با یک عدد ساخته شده از روی داده ها که با Public Key خودش ترکیب شده امضاء می کند. برای بررسی اعتبار یک گواهینامه موجود، گیرنده باید این امضاء را با Public Key مربوط به CA رمز گشایی کرده و سپس با عدد نخست مقایسه کند . نقطه ضعف این روش در طول مدت اعتبار گواهینامه و امکان دستکاری و افزایش آن است. اما استفاده از این گواهینامه ها در ارتباطهای VPN مشکل چندانی به همراه ندارد چون مدیر شبکه Security Gateway و همه ارتباط ها را زیر نظر دارد.
IPsec یا FreeS/WAN همانطور که گفتیم FreeS/WAN مجموعه کاملی برای راه اندازی IPsec روی لینکوس است . البته بیشتر نگارش های لینوکس برنامه های لازم برای این کار را با خود دارند. اما بر اساس تجربه بهتر است FreeS/WANرا به کار ببرید. در اینجا ما از RedHatLinux نگارش 2/7 با هسته 2.4.18 وFreeS/WAN197 (ftp://ftp.xs4all.nl/pub/cryypto/freesean/ ) استفاده کرده ایم. درصورت لزوم می توان FreeS/WAN را با هسته هسته های خانواده 2.2 هم به کار برد. البته در این حالت دست کم به نگارش 2.2.19 لینوکس نیاز دارید. این را هم باید در نظر داشته باشید که راه انداختن VPN Gateway همراه با دیواره آتش سودمنداست و هسته نگارش 2.4 امکانات خوبی برای راه انداختن دیواره آتش دارد.
نصب برای نصب باید هسته را در/usr/ser/linux و Free S/WAN را در /usr/scr/freeswan-versionnumber باز کنید. سپس با فرمان های make menuconfig و make xconfig پیکربندی هسته را انجام بدهید. گزینه های لازم برای تنظیمات اضافی را در Networking Options\IPsec Options می یابید که معمولا نیازی به تغییر دادن تنظیمات پیش فرض آن نیست . برای راه انداختن x.509 patch باید بسته مربوطه را باز کرده و فایل freewan.diff را در فهرست Free S/WAN کپی کنید. پس از آن، فرمان patch-p1 < freewan.diff همه چیز را برایتان تنظیم می کند. در پایان باید هسته را که اکنون تغییر کرده کامپایل کنید. این مار را با صادر کردن فرمان make kinstall وقتی در فهرست Free S/WAN هستید انجام بدهید. پس از اضافه کردن هسته تازه به مدیر بوت و راه اندازی کامپیوتر می توانید نتیجه کارهایی که انجام دادید را ببینید. فرمان dmesg پیام های آغاز به کار KLIPS را نشان می دهد. لازم است که روی Runlevel ها هم کارهایی انجام بدهید. از آنجا که Free S/WAN بع رابط های eth0 و eth1، ipsec0 را اضافه می کند، سیستم نخست Networking سپس Free S/WAN و در پایان iptables را اجرا می کند.
پیکر بندی ما قصد داریم که Security Gateway خود را به گونه ای پیکربندی کنیم که یک Firewall هم باشد. این دیواره آتش باید به هر کامپیوتر از فضای اینترنت با هر IP دلخواه اجازه ارتباط با شبکه داخلی(172.16.0.0/16) را بدهد . این کامپیوتر برای این کار دو رابط Ethernet(eth0 برای شبکه داخلی (172.16.0.0/16) و eth1 برای محیط بیرونی)دارد . باید میان این دو رابط عملکرد IP-Forwarding فعال باشد. نخست باید دیواره آتش را در این Security Gateway طوری تنظیم کنیم که Packet های AH و ESP را بپذیرد. به همین دلیل روی رابط بیرونی(همان eth1) Packet های UDP را روی پورت 500(ESP) می فرستیم. تنظیمات FreeS/WAN در فایل /etc/ipsec.conf ثبت می شود . این تنظیمات به سه گروه تقسیم می شوند. Config setup به تنظیمات پایه ای مربوط می شود و conn%default تنظیمات مشترک برای همه ارتباط ها را در خود دارد. گروه سوم که با لغت کلیدی conn و یک نام دلخواه مشخص می شود پارامترهای ارتباطی با همان نام را در خود دارد. در این مثال ما نام این بخش را Roadwarrior گذاشته ایم که کاربرانی که از بیرون با کامپیوترهای همراه به شبکه متصل می شوند مربوط می شود.
/etc/ipsec.conf در بخش Config setup پیش از هر چیز باید رابطی که درخواست ارتباط های IPsec روی آن می روند رامشخص کرد. برای این منظور، فرمان interfaces=%defaultroute کافی است که البته می توانید بجای %defaultroute آدرس IP مربوط به کارت را هم وارد کنید. با تنظیم کردن kilpsdebug و plutodebug روی none حالت Debug را غیر فعال می کنیم . Plutoload و plutostart را روی %search تنظیم می کنیم تا ارتباط ها پس از درخواست از سمت مقابل ، ایجاد شوند. دربخشی conn %defqult فرمان keyingtries = 0 به Gateway می گوید که در صورت تغییر کلیدهای رمز تا پیدایش آنها صبر کند. برای انتخاب این روش تعیین اعتبار فرمان authby = rsasig باعث می شود تا هر دو طرف گفتگو حتما میان خود گواهینامه مبادله کنند: leftrsasigkey = %cert rightsasigkey = %cert برای left هم دوباره %defaultroute را اعلام می کنیم که به عنوان left subnet شبکه داخلی(172.16.0.0/16) به کار می رود. کمی بعد این بخش رابا leftid کامل می کنیم که گواهینامه ما را برای Gateway مشخص می کند. در بخش conn Roadwarrior هم با فرمان right = %any به همه کسانی که بتوانند گواهینامه ارائه کننداجازه دسترسی می دهیم. حالت ارتباط را هم با type = tunnel مشخص می کنیم که در آن تبادل کلیدها از طریق IKE(key exchang = ike) با Perfect Forwarding Secrecy (pfc = yes) انجام می گیرد. Auto = add هم به Free S/WAN می گوید که ارتباط در پی در خواست از سوی کاربران بیرون از شبکه برقرار شود.
گواهینامه اکنون S/WAN Free برای برقرار کردن ارتباط با یک رمز گذاری قوی از طریق تبادل گواهینامه پیکربندی شده. گواهینامه لازم برای Gateway و کاربران بیرون از شبکه را خودمان می سازیم. برای این کار از توانایی های SSL open بهره می گیریم. نخست یک ساختار فهرست برای ایجاد گواهینامه می سازیم. برای نمونه فهرست /etc/fenrisCA را در نظر می گیریم. اینجا فهرست های certs و private key ها می سازیم. فهرست private به طور منطقی باید در دسترس root باشد. در فهرست/etc/fenrisCA به دو فایل index.txt و serial نیاز داریم. با touch، index.txt را خالی می کنیم. Open SSL بعدا در این فایل لیستی از گواهینامه های صادر شده ثبت می کند. اکنون در فایل OPENSSL.CNF (که در /usr/ssl یا /usr/share/ssl قرار دارد) مسیر فهرست CA را به عنوان پارامتر dir وارد می کنیم.
RootCA اکنون به سراغ RootCA می رویم . برای این کار نخست یک RSAPrivate به طول 2048 بیت می سازیم :openssl gersa –des3 –out private/caKey.pem2048 گزینه des3 باعث می شود که از طریق روش Triple DES ساخته شود تا افراد غیر مجاز نتوانند گواهینامه را درستکاری کنند. البته اکنون گواهینامه را درستکاری کنند. البته اگر خودمان هم Passphrase را فراموش کنیم امکان انجام این کار را نخواهیم داشت. اکنون گواهینامه RootCA خودمان را ایجاد کرده و آن را به یک بازه زمانی محدوده می کنیم: Openssl req –new-x509 –days = 1825 – key private/cakey.pem out caCert.pem به عنوان passphrase از همان چیزی که برای Private Key کار بردیم استفاده کرده ایم. سپس openssl تک تک عناصر مربوط به شناسایی دارنده گواهینامه می پرسد. در پایان گواهینامه Root CA را در /eht/ipsec.d/cacerts برای Free S/WAN کپی می کنیم.
گواهینامه Gateway ساختن گواهینامه برای Gateway دقیقا همانند روشی است که برای گواهینامه Root CA شرح دادیم. به کمک گواهینامه Gateway به کاربران بیرون از شبکه اجازه ارتباط و استفاده از آن ر امی دهیم . نخست به یک Private key نیاز داریم که این بار طول آن 1024 بیت است: openssl gersa –des3 –out private/gwKey.pem1024 اکنون گام بعدی را بر می داریم: openssl req –new-key private/gwKey.pem –out geReq.pem اکنون Request را به عنوان Root CA امضاء می کنیم: Openssl ca –notext –in gwReq.pem –out gwCert.pem این گواهینامه را باید در قالب فایل /etc/x509cert.der به شکل باینر روی Gateway ذخیره کنیم . عمل تبدیل با فرمان زیر انجام می گیرد: openssl x509 –in gwcwert.pem –outform der –out /etc/x509cert.der Private key با نام gwkey.pem را برای Free S/WAN در /etc/ipsec.d/private کپی می کنیم. از این گذشته باید Passphrase مربوطه به طور واضح در فایل /etc/ipsec.secrets آمده باشد. اگر Passphrase به طور نمونه « asample Passphrase » باشد آن را در سطر زیر می نویسیم : « asample Passphrase » :RAS gwkey.pem روشن است که تنها root باید به ipsec.secrets دسترسی داشته باشد. اکنون آخرین جای خالی را در /etc/ipsec.conf پر می کنیم. Leftid = "C = IR,ST = Tehran, L = Tehran, O = Rayaneh Magazine, OU = Editorial,CN = fashkain, Email = fashkain@rayanehmag.net"
گواهینامه های کاربران اکنون باید عمل تعیین اعتبار را برای هر کاربر یکبار انجام بدهیم. در فرمان زیر که برای ساختن Private key برای یک کاربر به کار می رود: openssl genrsa –des3 –out private/userkey.pem –out 1024 باید برای هر کاربر Passphrase جداگانه ای وارد کنید. در گام بعدی فرمان زیر را به کار ببرید: openssl req –new-key private/gwKey.pem –out geReq.pem اکنون باید گواهینامه ای را که آن را در قالب Root CA امضاءخواهید کرد بسازید.-enddate در اینجا برای مشخص کردن مدت اعتبار به کار می رود: Openssl ca –notext –eddate 020931200z in gwReq.pem –out gwCert.pem در آخرین مرحله روی این گواهینامه یک فایل باینری با فرمت PKCS#12 می سازیم کهدر ادامه برای سرویس گیرنده های ویندوز xp /2000 لازم داریم. Openssl pkcs12 –export –inusercert.pem –inkey private/userkey.pem –certfile caCert.pem-out user.p12
چشم انداز پیکربندی Security Gateway را با موفقیت پشت سر گذاشتیم. در بخش بعدی به سرویس گیرنده های VPN در ویندوز می پردازیم. برای این کار از ابزارهای موجود در ویندوز 2000 و xp بهره خواهیم برد.
|
نوشته شده توسط :
آتیلاز
نظرات
دیگران [ نظر]