مدت زمان مطالعه:
0

امروزه بخش بزرگی از ترافیک وب با SSL/TLS رمزنگاری میشود. این موضوع از نظر محرمانگی و امنیت کاربران ضروری است، اما برای تجهیزات امنیتی یک چالش جدی ایجاد میکند: اگر FortiGate فقط آدرس مقصد و اطلاعات سطحی اتصال را ببیند، بسیاری از تهدیدها داخل ترافیک HTTPS پنهان میمانند. به همین دلیل SSL Inspection یکی از مهمترین بخشهای طراحی Security Profile در FortiGate است.
این مقاله بر اساس FortiGate / FortiOS 7.6 نوشته شده است و هدف آن این است که ادمین شبکه بداند تفاوت Certificate Inspection و Deep Inspection چیست، هرکدام برای چه سناریویی مناسباند، روی Web Filter، Application Control، Antivirus و IPS چه اثری دارند و هنگام پیادهسازی باید به چه نکاتی توجه کند.
نکته مهم این است که SSL Inspection فقط یک گزینه برای روشن کردن نیست. اگر بدون طراحی درست فعال شود، میتواند باعث خطای Certificate، اختلال در برنامهها، افزایش Latency، مصرف بیشتر منابع یا نارضایتی کاربران شود. بنابراین باید مرحلهای، محدود، مستند و متناسب با سناریوی شبکه پیادهسازی شود.
مروری بر این مقاله
SSL Inspection یا SSL/SSH Inspection در FortiGate قابلیتی است که به FortiGate اجازه میدهد ترافیک رمزنگاریشده را تا حد مشخصی بررسی کند. این بررسی میتواند سطحی باشد؛ یعنی فقط Certificate، SNI، مقصد و اطلاعات اتصال بررسی شود، یا میتواند عمیق باشد؛ یعنی FortiGate ترافیک را رمزگشایی کند، محتوا را به Security Profileها بدهد و بعد دوباره برای سمت مقابل رمزنگاری کند.
Fortinet در مستندات FortiOS توضیح میدهد که SSL content scanning and inspection به FortiGate اجازه میدهد قابلیتهایی مثل Antivirus scanning، Web Filtering و Email Filtering را روی ترافیک رمزنگاریشده اعمال کند و این Profileها روی Firewall Policy قابل استفاده هستند.
بسیاری از حملات، دانلود بدافزار، ارتباطات C2، ابزارهای Remote Access، سرویسهای Shadow IT و حتی بعضی تکنیکهای دور زدن Policy داخل HTTPS انجام میشوند. اگر FortiGate فقط لایه اتصال را ببیند، نمیتواند محتوای داخل صفحه، فایل دانلودی، URL کامل، بعضی Headerها یا Payload را کامل بررسی کند.
برای مثال، اگر کاربر یک فایل مخرب را از یک سایت HTTPS دانلود کند، Certificate Inspection فقط میتواند اطلاعات Certificate و مقصد را بررسی کند؛ اما برای اسکن محتوای فایل توسط Antivirus، معمولاً Deep Inspection لازم است. همین موضوع درباره بعضی موارد Web Filter، DLP، DNS over TLS، و تشخیص دقیقتر برخی Applicationها هم مطرح میشود.
| قابلیت امنیتی | بدون Deep Inspection چه محدودیتی دارد؟ | با Deep Inspection چه چیزی بهتر میشود؟ |
|---|---|---|
| Web Filter | معمولاً دید محدودتر روی URL کامل و محتوای HTTPS دارد | کنترل دقیقتر URL، Category و بعضی محتواهای وب |
| Antivirus | فایل داخل HTTPS ممکن است کامل اسکن نشود | امکان بررسی محتوای دانلود/آپلود رمزگشاییشده |
| Application Control | تشخیص بعضی برنامهها ممکن است فقط با SNI یا الگوی اتصال انجام شود | تشخیص دقیقتر برخی برنامهها، مخصوصاً روی HTTPS |
| IPS | Payload رمزنگاریشده قابل مشاهده کامل نیست | بررسی بهتر الگوهای حمله داخل ترافیک رمزگشاییشده |
| DLP / File Filter | کنترل محتوا و فایل محدود میشود | امکان بررسی دقیقتر فایل، نوع محتوا یا الگوهای حساس |
Certificate Inspection سبکترین مدل SSL Inspection است. در این حالت FortiGate اتصال HTTPS را کامل رمزگشایی نمیکند، بلکه بیشتر اطلاعات Certificate، SNI و مشخصات TLS Session را بررسی میکند. این مدل برای سناریوهایی مناسب است که میخواهید یک کنترل پایه روی ترافیک رمزنگاریشده داشته باشید، اما نمیخواهید FortiGate وارد محتوای رمزگشاییشده شود.
مزیت اصلی Certificate Inspection این است که سادهتر، سبکتر و کمریسکتر از Deep Inspection است. چون FortiGate نقش Man-in-the-Middle کامل را بازی نمیکند، معمولاً نیازی به نصب CA داخلی روی کلاینتها ندارد و احتمال خطای Certificate کمتر است.
Deep Inspection حالتی است که FortiGate بین Client و Server قرار میگیرد، اتصال TLS را از سمت کاربر Terminate میکند، محتوا را بررسی میکند و سپس یک اتصال رمزنگاریشده جداگانه به Server مقصد برقرار میکند. در این مدل، FortiGate برای کلاینت یک Certificate جدید صادر میکند که باید توسط کلاینت قابل اعتماد باشد.
Fortinet در Best Practice مربوط به SSL/TLS deep inspection توضیح میدهد که در Deep Inspection، FortiGate بهعنوان واسط به SSL Server وصل میشود، محتوا را decrypt و inspect میکند و سپس Threatها را شناسایی و Block میکند. این مدل برای دید امنیتی عمیقتر کاربرد دارد، اما نیازمند طراحی Certificate و مدیریت Exceptionهاست.
Client → TLS Session → FortiGate Deep Inspection → TLS Session → Server
│
└── Decrypt / Inspect / Re-encrypt
Protecting SSL Server برای سناریوهای Inbound استفاده میشود؛ یعنی زمانی که یک Web Server داخلی دارید و کاربران اینترنتی به آن وصل میشوند. در این حالت FortiGate با Certificate همان Server یا Certificate واردشده روی FortiGate، ترافیک ورودی به سرور را بررسی میکند.
این حالت با Deep Inspection کاربران به اینترنت فرق دارد. Deep Inspection معمولاً برای Outbound Traffic کاربران استفاده میشود، اما Protecting SSL Server برای محافظت از سرویس داخلی سازمان در برابر ترافیک ورودی HTTPS کاربرد دارد.
Internet Client → FortiGate → Internal HTTPS Server
│
└── Inspect inbound SSL traffic using server certificate
| مورد | Certificate Inspection | Deep Inspection |
|---|---|---|
| سطح بررسی | اطلاعات Certificate، SNI و اتصال | محتوای رمزگشاییشده ترافیک |
| نیاز به نصب CA روی کلاینت | معمولاً خیر | بله، برای جلوگیری از خطای Certificate |
| اثر روی Performance | کمتر | بیشتر |
| امکان اسکن فایل داخل HTTPS | محدود | بهتر و کاملتر |
| ریسک اختلال برنامهها | کمتر | بیشتر، مخصوصاً با Certificate Pinning |
| سناریوی مناسب | کنترل عمومی کاربران، Performance بالا، ریسک کم | واحدهای حساس، کنترل فایل، DLP، شناسایی دقیقتر Threatها |
SSL Inspection روی نحوه عملکرد بیشتر Security Profileها اثر مستقیم دارد. هرچه ترافیک رمزنگاریشدهتر باشد و FortiGate دید کمتری داشته باشد، Profileها مجبورند با اطلاعات محدودتری تصمیم بگیرند. این موضوع مخصوصاً در ترافیک HTTPS، HTTP/2، DoH و برنامههای SaaS مهم است.
با Certificate Inspection، Web Filter معمولاً میتواند تصمیمهایی در سطح دامنه و Category بگیرد. با Deep Inspection، کنترل URL و برخی محتوای HTTP داخل TLS دقیقتر میشود. اگر سازمان نیاز دارد مسیرهای خاص یا URLهای دقیقتری را کنترل کند، Deep Inspection در Policyهای محدود ارزشمندتر میشود.
Application Control در FortiGate میتواند بسیاری از برنامهها را با Signature، رفتار ترافیک و Decoderها تشخیص دهد، اما برای بعضی برنامههای رمزنگاریشده یا سرویسهایی که داخل HTTPS پنهان میشوند، Deep Inspection دید بهتری ایجاد میکند.
اگر فایل از داخل HTTPS دانلود شود و FortiGate محتوا را رمزگشایی نکند، Antivirus دید کافی روی فایل نخواهد داشت. Deep Inspection برای سناریوهایی که اسکن فایلهای دانلودی اهمیت دارد، معمولاً ضروریتر است.
IPS برای تشخیص Exploitها و Payloadهای مخرب به دید روی محتوای ترافیک نیاز دارد. روی HTTPS بدون Deep Inspection، بخشی از Payload قابل مشاهده نیست. البته فعال کردن IPS با Deep Inspection باید بر اساس ظرفیت دستگاه و حساسیت سرویس انجام شود.
Certificate Inspection برای بیشتر شبکهها نقطه شروع مناسبتری است، چون هم سادهتر است، هم احتمال اختلال کمتر دارد و هم بار پردازشی کمتری نسبت به Deep Inspection ایجاد میکند.
Deep Inspection زمانی ارزش دارد که سازمان حاضر است هزینه مدیریتی و پردازشی بیشتری پرداخت کند تا دید امنیتی عمیقتری روی ترافیک رمزنگاریشده داشته باشد. این حالت باید هدفمند و محدود پیادهسازی شود.
قبل از فعال کردن Deep Inspection باید چند موضوع آماده باشد. اگر این پیشنیازها رعایت نشود، احتمال خطای Certificate، باز نشدن سایتها و اختلال در برنامهها زیاد میشود.
در Deep Inspection، FortiGate برای سایت مقصد یک Certificate جدید به کلاینت ارائه میدهد. اگر کلاینت به CA صادرکننده این Certificate اعتماد نداشته باشد، مرورگر یا برنامه خطای Certificate نشان میدهد. بنابراین CA مورد استفاده در SSL Inspection باید در Trust Store کلاینتها نصب شده باشد.
برای ساخت یا ویرایش SSL/SSH Inspection Profile در FortiOS 7.6، مسیر کلی GUI به شکل زیر است:
ساختار دقیق CLI ممکن است بر اساس Patch Version و Featureهای فعال کمی تفاوت داشته باشد. قبل از Script کردن، بهتر است تنظیم پایه را از GUI بسازید و سپس خروجی را با دستور show بررسی کنید.
show firewall ssl-ssh-profile
config firewall ssl-ssh-profile
edit "Corp-Certificate-Inspection"
set comment "Certificate inspection profile for general users"
config https
set status certificate-inspection
end
next
end
config firewall ssl-ssh-profile
edit "Corp-Deep-Inspection"
set comment "Deep inspection profile for selected users"
set caname "Corp-SSL-Inspection-CA"
config https
set status deep-inspection
set ports 443
end
next
end
config firewall policy
edit 10
set name "Users-to-Internet"
set srcintf "LAN"
set dstintf "wan1"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
set utm-status enable
set ssl-ssh-profile "Corp-Certificate-Inspection"
set webfilter-profile "WF-Users"
set application-list "APP-Users"
set ips-sensor "IPS-Users"
set av-profile "AV-Users"
set logtraffic all
set nat enable
next
end
Deep Inspection همیشه نباید روی همه ترافیکها اعمال شود. بعضی سرویسها به دلیل حساسیت، حریم خصوصی، Certificate Pinning یا ماهیت فنی، بهتر است از Deep Inspection مستثنا شوند.
| نوع ترافیک | دلیل Exception | پیشنهاد |
|---|---|---|
| سایتهای بانکی و مالی | حساسیت حریم خصوصی و احتمال خطای Certificate | Bypass یا Certificate Inspection |
| سرویسهای سلامت و پزشکی | داده حساس و الزامات قانونی | بر اساس سیاست سازمان Exempt شود |
| برنامههای دارای Certificate Pinning | با Certificate صادرشده توسط FortiGate کار نمیکنند | Exception بر اساس FQDN یا Category |
| آپدیت بعضی Vendorها | ممکن است امضای محتوا یا TLS Validation حساس داشته باشند | ابتدا Monitor، سپس Exception هدفمند |
| ترافیک ادمین یا سرویسهای حساس داخلی | ریسک اختلال مدیریتی | Policy جدا و کنترلشده |
برای بیشتر کاربران سازمان، شروع با Certificate Inspection منطقیتر است. بعد از پایدار شدن Policyها میتوان Deep Inspection را فقط برای گروههای مشخص یا مسیرهای خاص فعال کرد.
برای واحدهای حساس ممکن است سازمان بخواهد کنترل عمیقتری روی فایل، بدافزار، برنامهها و سایتهای SaaS داشته باشد. در این حالت Deep Inspection قابل بررسی است، اما باید Exceptionهای حریم خصوصی و سایتهای مالی دقیق تعریف شوند.
برای مهمانها معمولاً Deep Inspection توصیه نمیشود، چون مدیریت Certificate روی دستگاههای مهمان دشوار است. Certificate Inspection به همراه Web Filter، DNS Filter و Application Control معمولاً انتخاب عملیاتیتری است.
برای کنترل DNS over HTTPS و DNS over TLS، فقط بستن پورت 53 کافی نیست. FortiGate میتواند با ترکیب Application Control، Web Filter، DNS Filter و در بعضی موارد Deep Inspection دید بهتری روی ترافیک رمزنگاریشده DNS ایجاد کند.
اگر FortiGate جلوی یک HTTPS Server داخلی قرار دارد، باید سناریوی Protecting SSL Server بررسی شود. در این مدل Certificate سرور روی FortiGate استفاده میشود تا ترافیک ورودی به Server قابل بررسی باشد.
مشکلات SSL Inspection معمولاً یکی از این دلایل را دارد: CA روی کلاینت نصب نشده، برنامه Certificate Pinning دارد، Certificate مقصد نامعتبر است، Exceptionها ناقصاند، یا دستگاه FortiGate از نظر منابع تحت فشار است.
show firewall ssl-ssh-profile show firewall policy get system performance status diagnose debug flow filter addr <client-ip> diagnose debug flow show function-name enable diagnose debug enable diagnose debug flow trace start 50
بعد از تست، Debug را غیرفعال کنید:
diagnose debug disable diagnose debug reset
| مورد | وضعیت مطلوب |
|---|---|
| نسخه FortiOS | سناریو با FortiOS 7.6 و Patch Version دستگاه تطبیق داده شده باشد |
| نوع Inspection | برای هر Policy مشخص باشد: Certificate Inspection، Deep Inspection یا Protecting SSL Server |
| CA Certificate | برای Deep Inspection آماده و روی کلاینتها Trust شده باشد |
| Firewall Policy | SSL/SSH Inspection Profile درست روی Policy اعمال شده باشد |
| Security Profileها | Web Filter، Antivirus، IPS و Application Control با SSL Inspection هماهنگ باشند |
| Exception | بانک، سلامت، Certificate Pinning و سرویسهای حساس بررسی شده باشند |
| Performance | CPU، Memory، Session و Latency قبل و بعد از فعالسازی بررسی شود |
| Logging | لاگهای مربوط به Security Profileها و خطاهای SSL بررسی شوند |
| Pilot | Deep Inspection ابتدا روی گروه محدود تست شود |
| Rollback | برنامه بازگشت به Certificate Inspection یا no-inspection آماده باشد |