رمزگشایی ترافیکهای SSL/TLS و SSH شبکه با استفاده از فایروال PaloAlto
Decryption
پروتکلهای رمزنگاری SSL و SSH برای رمزنگاری ترافیکهای بین سرور و کلاینت استفاده میشوند. این پروتکلها در واقع دادهها ارسالی بین سرور و کلاینت را کپسوله و رمزنگاری میکنند. ذاتاً رمزنگاری باید به گونهای باشد که دادهها برای شخص سوم یعنی به غیر از سرور و کلاینت (صاحب گواهی برای اعتبارسنجی و کلید برای رمزگشایی) بیمعنی باشد. با وجود اینکه ما اکثرا از این پروتکلها برای ایجاد امنیت و حریم خصوصی استفاده میکنیم، ولی گاهی نیاز است با توجه به دلایل زیر ترافیکهای رمز شده را رمزگشایی کنیم.
- جلوگیری از ورود بدافزارهایی که خود را در ترافیک رمز شده پنهان میکنند. برای مثال یک مهاجم ابتدا وب سایتی که از ssl استفاده میکند را تحت کنترل میگیرد و محتوای آلوده خود را بر روی آن قرار میهد. هنگامی که کاربری از این وب سایت بازدید میکند ممکن است به صورت ناخواسته بدافزار یا exploitای را دانلود کند. این آلودگی میتواند از این طریق و سیستم آلوده کارمند استفاده و سایر سیستمها را نیز آلوده نماید.
- جلوگیری از انتقال دادههای حساس به خارج از شبکه.
- اطمینان از اینکه که برنامه کاربردی مدنظر به صورت امن در شبکه در حال اجرا میباشد.
- رمزگشایی اطلاعات به صورت انتخابی; برای مثال ایجاد سیاست و پروفایل رمزگشایی برای مستثنا کردن ترافیکهای مربوط به سایتهای تجاری و مالی و سایتهای سلامت.
نحوه کار فایروال پالوالتو برای رمزگشایی ترافیکهای SSL/TLS و SSH
فایرول Palo Alto میتواند ترافیکهای رمز شده را براساس سیاستهای تعیین شده رمزگشایی کرده و از این راه ترافیکهای ورودی و خروجی ارتباطات SSL و SSH را بررسی و کنترل نماید. یک سیاست رمزگشایی به ما این امکان را میدهد تا ترافیک را براساس مبدا، مقصد، سرویس و یا نوع و دسته URL رمزگشایی کرده و براساس تنظیمات امنیتی انجام شده در پروفایل رمزگشایی، این ترافیک را مسدود یا اجازه عبور به آن بدهیم. یک پروفایل رمزگشایی (Decryption Profile) علاوه بر رمزگشایی ترافیک، نسخه SSL و اعتبار گواهی و خطاها موجود را نیز کنترل میکند تا از ترافیکهایی رمزشدهای که از الگوریتمهای ضعیف و یا از ورژنهای پایینتری استفاده میکنند جلوگیری نماید. فایروال از گواهی و کلید برای رمزگشایی ترافیک استفاده و سپس تنظیمات امنیتی سایر سیاستهای تعریف شده را بر روی ترافیک بدون رمز اعمال میکند. فایروال Palo Alto بعد از رمزگشایی ترافیک میتواند تنظیمات مربوط به پروفایل رمزگشایی، پروفایلهای مربوط به آنتی ویروس، آسیبپذیریها، ضد بدافزار، URL-filtering، پروفایل مربوط به مسدود کردن انتقال فایل و سیاستهای مربوط به Wildfire را بر روی ترافیک اعمال کند. در ادامه و بعد از کلیه چکهای انجام شده، فایروال در صورتی که ترافیک اجازه عبور داشته باشد مجددا آن را به خاطر حفظ محرمانگی و امنیت رمز و ارسال میکند.
Palo Alto از سه نوع پروفایل برای رمزگشایی ترافیکهای SSL و SSH پشتیبانی میکند
- SSL Forward Proxy برای ترافیکهای SSL خروجی از شبکه.
- SSL Inbound Inspection برای ترافیکهای SSL ورودی به شبکه.
- SSH Proxy برای کنترل و رمزگشایی ترافیکهای SSH.
SSL Forward Proxy
در مد SSL Forward Proxy ابتدا فایروال به صورت Man-in-the-middel بین ارتباط سرور و کلاینت قرار میگیرد. سپس فایروال از گواهیهای معتبری برای شناساندن کاربر به سرور و سرور به کاربر به صورت شفاف استفاده میکند، به گونهای که هم کاربر و هم سرور به طرف مقابل خود اعتماد میکند. در واقع فایروال از گواهیها برای معرفی خود به عنوان عامل سوم در ارتباطات کلاینت-سروری استفاده میکند. در مد SSL Forward Proxy براساس شکل بالا ارتباط کاربر با سرور طبق مراحل زیر برقرار میشود.
- کلاینت داخلی تلاش میکند تا یک ارتباط TLS با یک سروری خارج از سازمان برقرار کند.
- فایروال درخواست کالاینت را دریافت میکند و خود را جای سرور اصلی جا میزند.
- سپس فایروال در خواست گواهی SSL کلاینت را برای سرور اصلی ارسال میکند تا ارتباط جداگانهای با سرور برقرار کند. در این ارتباط برای سرور، فایروال هیچ فرقی با کلاینت ندارد و متوجه این موضوع نمیشود و گواهی را تایید میکند.
- سرور گواهی Sign شد را برای فایروال ارسال میکند.
- در ادامه فایروال گواهی سرور دریافتی از سرور را تجزیه تحلیل میکند. اگر گواهی سرور با یک CA مورد اعتماد فایروال امضاء شده باشد و گواهی الزامات مربوط به سیاستها و پروفایل تعریف شده را داشته باشد، فایروال یک کپی از گواهی SSL Forward Trust از گواهی سرور را ایجاد و برای کلاینت ارسال میکند. ولی اگر گواهی سرور با یک CA نامعتبر برای فایروال امضا شده باشد، فایروال یک کپی از گواهی SSL Forward Untrust از گواهی سرور را ایجاد و برای کلاینت ارسال میکند. کپی گواهی که فایروال تولید و برای کلاینت ارسال میکند حاوی پسوندهای سرور اصلی میباشد که فایروال آنها را جعل میکند.
- کلاینت گواهی جعل شده توسط فایروال را تایید میکند.سپس کلاینت نشتستی برای تبادل کلید رمزنگاری با سرور را شروع میکند که فایروال همانند تبادل گواهیها به عنوان Proxy عمل میکند. فایروال کلید کلاینت را برای سرور ارسال میکند و یک کپی جعل شده از کلید سرور را برای کلاینت ایجاد میکند، بنابراین فایروال به عنوان واسط نامرئی باقی میماند، در حالی که سرور و کلاینت فکر میکنند به صورت مستقیم باهم ارتباط دارند. به این ترتیب فایروال هر دو جزء لازم برای رمزگشایی ترافیک را بدست میآورد.
- تمام ترافیک جلسات SSL بین کلاینت و سرور به صورت شفاف از طریق فایروال عبور میکند. فایروال ابتدا ترافیک SSL را رمزگشایی و سپس سیاستها و پروفایلها امنیتی و پروفایلهای رمزگشایی را بر روی ترافیک اعمال میکند. در صورتی که ترافیک مجاز به عبور باشد فایروال ترافیک را مجددا رمزگذاری و ارسال مینماید.
SSH Proxy
در SSH Proxy فایروال ما بین کلاینت و سرور قرار میگیرد و ترافیک SSH را رمزگشایی میکند و از این طریق مطمئن میشود که فرد مهاجم از SSH برای تانل کردن ارتباطات خود استفاده نمیکند. فایروال Paloalto برای رمزگشایی ترافیکهای SSH نیازی به گواهی ندارد و از کلید SSH برای رمزگشایی ترافیکهای SSH و SSH v2 استفاده میکند.
با توجه به اینکه یکی از قابلیت SSH امکان تانل کردن سایر ترافیکها از جمله TCP و X11 میباشد. بنابراین فایروال بایستی قادر به تشخیص این ترافیکها باشد. فایروال میتواند به دو طریق از این ترافیکها جلوگیری کند. اولین راهکار استفاده از سیاستهای فایروالی و جلوگیری از ترافیکهای ssh-tunneling میباشد. در راهکار دوم فایروال میتواند با استفاده از رمزگشایی ترافیکهای SSH سیاستهای مورد نظر را بر روی ترافیکهای مشکوک اعمال نماید. یک ارتباط SSH میتواند شامل چندین کانال باشد. زمانی که فایروال از پروفایل Decryption برای رمزگشایی ترافیک SSH استفاده میکند، در واقع برای هر کانال موجود در ارتباط، فایروال کار تجزیه و تحلیل ترافیک را از طریق ماژول APP-ID انجام و نوع هر یک از کانالها را تشخیص میدهد. در ارتباطات SSH نوع هر یک از کانالها میتواند یکی از موارد زیر باشد.
- Session
- X11
- Forwarded-tcpip
- Direct tcpip
زمانی که نوع کانال از نوع Session باشد فایروال ارتباط SSH را SCP یا SFTP تشخیص میدهد. اما زمانی که نوع کانال از نوع X11 یا Forwarded-tcpip یا Direct tcpip باشد، فایروال ترافیک را از نوع SSH tunneling تشخیص و میتواند از طریق سیاستهای فایروالی جلوی این نوع ترافیک را بگیرد.
نکته مهم دیگر در ارتباطات SSH این است که اگر کلاینت از گواهی برای احراز هویت و رمزگشایی کلید خصوصی خود برای تکمیل فرآیند Handshake استفاده کند، فایروال بدلیل اینکه گواهی کاربر را ندارد قادر به رمزگشایی این نوع ارتباط نخواهد بود. بنابراین بایسنی برای استفاده از ماژول Decryption فایروال، تا حد امکان در ارتباطات SSH از نام کاربری و پسورد برای احراز هویت و برقرای تونل استفاده کنیم.
SSL Inbound Inspection
فایروال پالوالتو از SSL Inbound Inspection برای رمزگشایی و بررسی ترافیکهای SSL/TLS کلاینتهای خارجی به سرور هدف (هر سرور دارای گواهی که بشود کلید عمومی و خصوصی آن را بر روی فایروال وارد کرد) استفاده و از نشتهای مشکوک جلوگیری میکند. فرض کنید که فرد مهاجم بخواهد از آسیبپذیری شناخته شده بر روی سرور بهره برداری کند و از این طریق اطلاعات سازمان را به خطر بیندازد. رمزگشایی ترافیک SSL/TLS با توجه به شفافیتی در اختیار فایروال قرار میدهد کمک میکند تا فایروال به صورت فعال نسبت به اینگونه تهدیدات عکس العمل نشان دهد.
مکانیزم رمزگشایی ترافیکهای ورودی
روشی که فایروال برای رمزگشایی ترافیک Inbound استفاده میکند بستگی به نحوه تبادل کلید توسط سرور با کلاینت دارد. سرور میتواند به یکی از دو روش RSA یا PFS تبادل کلید با کلاینت را انجام دهد. در روش تبادل کلید به روش RSA، فایروال بدون قطع کردن ارتباط ترافیک رمز شده را بررسی میکند. به محض اینکه ارتباط رمز شده از فایروال عبور میکند فایروال به صورت کاملا شفاف یک کپی از ترافیک را ایجاد و از رمز خارج میکند. بنابراین فایروال میتواند سیاستهای مناسبی بر روی ترافیک اعمال کند. به عبارت دیگر فایروال به صورت کاملا پسیو ترافیک رمز شده را بدون اینکه کاربر و سرور از آن اطلاع داشته باشند رمزگشایی و نظارت میکند.
برای الگوریتمهای تبادل کلید به روش PFS فایروال به روش man-in-the-middle بین کلاینت و سرور عمل میکند. این موضوع به این دلیل است که در این روش سرور برای هر نشست کلید جدیدی ایجاد میکند و فایرول نمیتواند به سادگی ترافیک را کپی و رمزگشایی نماید و در این حالت فایروال نیاز دارد به صورت پروکسی عمل نماید. به این نکته هم باید توجه کنیم که فایروال در صورت که نقش پروکسی داشته باشد، قادر به رمز گشایی ترافیکهایی که Client Authentication یا گواهیهای پین شده دارند، نخواهد بود.
شکل زیر نحوه رمزگشایی ترافیک را زمانی که سرور از روش RSA برای تبادل کلید استفاده میکند نشان میدهد. در صورتی که سرور از روش PFS استفاده کند فایروال در نقش پروکسی ایفای نقش کرده و یک نشست امن بین خود و کلاینت و نشست دیگری بین خودش و سرور برقرار میکند.