waf چیست

حملات سایبری هر روز پیچیده‌تر می‌شوند و محافظت از داده‌ها و زیرساخت‌های آنلاین، به ضرورتی انکارناپذیر برای هر کسب‌وکاری تبدیل شده است. یکی از مهم‌ترین راه‌حل‌هایی که برای محافظت از برنامه‌های وب در برابر تهدیداتی هم‌چون انواع حمله دیداس استفاده می‌شود، WAF است.

WAF یا فایروال برنامه وب، یک سیستم امنیتی است که ترافیک ورودی به برنامه‌های وب را فیلتر کرده و از حملات مختلف جلوگیری می‌کند. اگر تاکنون نام فایروال لایه ۷ یا سرویس WAF را شنیده‌اید و نمی‌دانید دقیقن چه نقشی در افزایش امنیت دارد، این مطلب به شما توضیح می‌دهد که WAF چیست و چگونه می‌تواند از سرویس‌های آنلاین شما محافظت کند.

WAF چیست؟

فایروال برنامه وب یا Web Application Firewall، یک لایه‌ی امنیتی تخصصی است که بین کاربران و اپلیکیشن‌های وب قرار می‌گیرد تا از آن‌ها در برابر تهدیدات رایج اینترنتی محافظت کند. برخلاف فایروال‌های سنتی که بیش‌تر در سطح شبکه یا سیستم‌عامل عمل می‌کنند، WAF روی فایروال لایه ۷ تمرکز دارد؛ یعنی همان جایی که تعامل کاربران با وب‌سایت‌ها و اپلیکیشن‌ها شکل می‌گیرد.

برای نمونه، حمله‌ی SQL Injection یکی از رایج‌ترین تهدیداتی است که بسیاری از برنامه‌های وب با آن روبه‌رو هستند. در گزارش سالانه شرکت Imperva، مشخص شد که بیش از ۵۰٪ از اپلیکیشن‌های تحت وب بدون WAF، حداقل یک‌ بار هدف حملات تزریق کد قرار گرفته‌اند. در چنین مواردی، یک WAF با شناسایی الگوی این نوع حملات، می‌تواند جلوی نفوذ و دسترسی غیرمجاز به داده‌های حساس را بگیرد.

WAF چگونه کار می‌کند؟

برای درک بهتر این‌که WAF چیست و چگونه عمل می‌کند، باید با نحوه‌ی تحلیل و فیلتر ترافیک توسط آن آشنا شویم. سرویس WAF در نقطه‌ای بین کاربران و برنامه‌های تحت وب قرار می‌گیرد و تمام ترافیک ورودی و خروجی را پیش از رسیدن به سرور اپلیکیشن بررسی می‌کند. 

برخلاف فایروال‌های سنتی که تنها در لایه‌های پایین‌تر شبکه فعالیت دارند، فایروال لایه ۷ به‌شکل تخصصی روی ترافیک HTTP/HTTPS تمرکز دارد و قابلیت فیلتر ترافیک HTTP را دارد.  فایروال لایه ۷ می‌تواند به‌شکل real-time درخواست‌هایی را که مشکوک به حملاتی مانند SQL Injection ،Cross-Site Scripting یا انواع حمله دیداس هستند شناسایی و مسدود کند.

یکی از مهم‌ترین ویژگی‌های WAF، استفاده از مدل امنیتی مثبت و منفی برای تحلیل ترافیک است. در حالت مثبت، فقط درخواست‌هایی که در Whitelist WAF قرار دارند مجاز شناخته می‌شوند و باقی موارد رد می‌شوند. در حالت منفی، درخواست‌های مشکوک یا ناسازگار با سیاست‌های امنیتی تعریف‌شده، بر اساس Blacklist WAF مسدود می‌شوند. این قابلیت باعث می‌شود تا پیکربندی WAF بسیار انعطاف‌پذیر و متناسب با نوع برنامه، صنعت و تهدیدات خاص آن باشد. به‌طور خلاصه، سرویس WAF مانند یک سپر دفاعی هوشمند عمل می‌کند که به‌شکل همیشگی در حال پیکربندی برای مقابله با تهدیدهای نوظهور است.

آشنایی با انواع WAF

انواع WAF

همه WAFها یک هدف اصلی دارند: محافظت از برنامه‌های وب در برابر تهدیدات و آسیب‌پذیری‌ها. اما نحوه‌ی استقرار و عملکرد آن‌ها می‌تواند کاملن متفاوت باشد. در ادامه با انواع مختلف WAF آشنا می‌شویم تا بتوانید مناسب‌ترین گزینه را برای زیرساخت خود انتخاب کنید.

WAF مبتنی بر شبکه (Network-Based)

در این مدل، فایروال به‌شکل سخت‌افزاری در زیرساخت شبکه پیاده‌سازی می‌شود. این نوع فایروال عمومن در دیتاسنترها یا محیط‌های سازمانی بزرگ مورد استفاده قرار می‌گیرد و به‌دلیل نزدیکی به لایه فیزیکی، سرعت تحلیل بالایی دارد. با این حال، هزینه‌های سخت‌افزاری و پیکربندی WAF در این مدل معمولن بالاست.

WAF مبتنی بر نرم‌افزار (Software-Based)

در این روش، WAF به‌شکل نرم‌افزاری روی سیستم‌عامل یا سرورهای میزبان برنامه اجرا می‌شود. این مدل برای سازمان‌هایی که کنترل کامل روی زیرساخت دارند، مثلن از سرور اختصاصی استفاده می‌کنند، مناسب است. از مزایای آن می‌توان به انعطاف‌پذیری بالا و امکان سفارشی‌سازی دقیق Blacklist WAF و Whitelist WAF اشاره کرد.

WAF ابری (Cloud-Based)

در این مدل، هیچ‌گونه نیاز به نصب یا نگه‌داری فیزیکی وجود ندارد. همه‌ چیز روی فضای ابری مدیریت می‌شود و شما تنها با چند کلیک، می‌توانید ترافیک خود را از طریق یک CDN عبور داده و از مزایای امنیتی WAF بهره‌مند شوید. اگر می‌خواهید سریع و بدون پیچیدگی از برنامه‌های وب‌تان محافظت کنید، در کنار خرید CDN استفاده از WAF ابری یک راهکار ایده‌آل است.

WAF مبتنی بر هاست (Host-Based WAF)

در این روش WAF می‌تواند به‌شکل کامل در کدِ اپلیکیشن، مجتمع شود. این روش نسبت به روش قبل، کم‌هزینه‌تر است اما عیب آن، هدر رفت منابع سرور اصلی میزبان سایت، پیچیدگی پیاده‌سازی و هزینه نگهداری است.

در نهایت، انتخاب نوع مناسب WAF به فاکتورهایی مانند ساختار برنامه، منابع سازمان و نیاز به مقیاس‌پذیری بستگی دارد.

انواع رویکردهای WAF

انواع رویکرد های waf یا دیوار آتش وب را در ادامه شرح میدهیم:

رویکرد مبتنی‌ بر الگو

در این حالت الگوهایی از پیش تعیین‌شده در WAF بارگذاری و درخواست‌های ارسالی با این الگوها مطابقت داده می‌شوند. اگر درخواستی با یکی از این الگوها مطابقت پیدا کند، به‌وسیله‌ی دیواره آتش وب مسدود می‌شود.

رویکرد مبتنی بر رفتار

در این حالت WAF با داشتن رفتار عادی کاربران، سعی می‌کند ناهنجاری را به‌عنوان حمله تشخیص داده و از آن جلوگیری کند.

رویکرد مبتنی بر امتیاز

در این حالت، هر قاعده دارای یک امتیاز است. اگر درخواستی با یکی از قواعد مطابقت پیدا کند، مجموع امتیاز قوانین منطبق‌شده، محاسبه می‌شود و اگر مقدار به‌دست‌‌آمده به حد آستانه‌ی از پیش تعیین‌شده برسد، WAF آن درخواست را مسدود می‌کند.

WAF ابر آروان چیست و چگونه عمل می‌کند؟

WAF با بررسی همه‌ی بسته‌های ارسالی به‌سمت سرور وب، بسته‌های مشکوک به حمله را شناسایی و از رسیدن آن‌ها به سرور اصلی جلوگیری می‌کند.  معمولن دیواره‌های آتش وب به‌شکل یک پروکسی معکوس پیاده‌سازی می‌شوند اما شکل‌های روتر و Bridge این محصول نیز موجود است. WAF می‌تواند به‌شکل ابری یا روی سخت‌افزار پیاده‌سازی شود. مقایسه‌ی این دو نوع از WAF در جدول زیر آمده است:

  سرعت مقیاس‌پذیری دقت قیمت انعطاف‌پذیری امکان هوشمندسازی هزینه‌ی نگهداری هزینه‌ی به‌کارگیری امکان شخصی‌سازی سرعت به‌روزرسانی
WAF سخت‌افزاری بسیار خوب بد خوب بالا پایین ندارد دارد دارد بسیار خوب پایین
WAF ابری خوب بسیار خوب خوب پایین بالا دارد ندارد ندارد خوب بالا

راه‌کار دیگر، استفاده از WAF ترکیبی (Hybrid) است. به این شکل که حملات کلی با استفاده از WAF ابری و حملات پیچیده‌تر و خاص‌تر با استفاده از WAF سخت‌افزاری تشخیص داده شوند.

بررسی انواع مدل‌های امنیتی WAF

یکی از ویژگی‌های کلیدی که عملکرد یک WAF را تعیین می‌کند، نحوه‌ی طراحی و اجرای سیاست‌های امنیتی آن است. به‌طور کلی، WAFها از دو مدل امنیتی اصلی استفاده می‌کنند: مدل امنیتی مثبت و منفی. هر یک از این مدل‌ها، شیوه‌ی متفاوتی برای فیلتر ترافیک HTTP و تشخیص تهدیدها دارند.

مدل امنیتی مثبت (Positive Security Model)

در این مدل، فقط ترافیکی که کاملن با قوانین مشخص شده مطابقت دارد اجازه‌ی عبور پیدا می‌کند. یعنی لیستی از درخواست‌های مجاز تعریف می‌شود و هر چیزی خارج از این لیست، به‌عنوان تهدید شناسایی و مسدود می‌شود. این همان چیزی است که در Whitelist WAF اجرا می‌شود.

مزیت اصلی این روش، دقت بالای آن در جلوگیری از حملات ناشناخته و پیچیده است. اگرچه ممکن است در ابتدا نیاز به پیکربندی دقیق‌تر WAF وجود داشته باشد، اما برای محیط‌های حساس مانند سامانه‌های مالی یا خدمات ابری پیچیده، گزینه‌ای بسیار مطمین است.

مدل امنیتی منفی (Negative Security Model)

در مقابل مدل امنیتی مثبت، این مدل به‌جای تعریف رفتارهای مجاز، روی شناسایی رفتارهای مخرب تمرکز می‌کند. در Blacklist WAF، درخواست‌هایی که با الگوهای شناخته‌شده حملات مثل SQL Injection ،XSS یا انواع حمله‌ی دیداس هم‌خوانی دارند، مسدود می‌شوند.

این مدل، پیاده‌سازی آسان‌تری دارد و معمولن در سرویس WAF ابری یا فایروال لایه ۷ استفاده می‌شود. اگرچه سرعت راه‌اندازی آن بالاست، اما ممکن است در برابر حملات ناشناخته، دقت کم‌تری داشته باشد.

مدل ترکیبی

برای کسب‌وکارهایی که به‌دنبال حداکثر امنیت هستند، استفاده از مدل ترکیبی بسیار رایج است. در این حالت، WAF به‌طور هم‌زمان از Whitelist WAF و Blacklist WAF استفاده می‌کند تا بتواند هم در برابر تهدیدهای شناخته‌شده و هم ناشناخته ایمن عمل کند. 

انتخاب بین مدل‌های امنیتی مختلف در WAF، به نیازهای پروژه و نوع زیرساخت شما بستگی دارد. اگر به دنبال امنیت پویا و مقیاس‌پذیر هستید، پس از خرید سرور ابری یا هر زیرساخت میزبانی دیگری، پیکربندی WAF مطابق با نیازهای شناسایی شده را برنامه‌ریزی کنید.

عملکرد دیواره آتش وب

Web Application Firewall یا WAF با مانیتور و فیلتر متدهای GET و POST تبادل میان اپلیکشین وب و اینترنت، از اپلیکیشن وب در برابر ترافیک مخرب حفاظت می‌کند. برای مشهورترین آسیب ‎پذیری‎‌هایی که سبب تهدید یک اپلیکیشن وب می‎شوند، دسته‎‌بندی‌‎های مختلفی وجود دارد که owsap top 10 یکی از آن‌ها است.

عملکرد WAF برمبنای مجموعه‌ قوانینی است که به آن‌ها rule (قاعده) گفته می‌شود. قواعد برای WAF مشخص‌کننده‌ی آن هستند که: باید به‌دنبال چه تهدیدات/ نقاط ضعف/ رفتار ترافیکی بگردد، هم‌چنین نوع عملی که در مقابل تهدید کشف شده باید انجام شود، چیست. به عبارت بهتر، این قواعد، دیواره آتش وب را قادر می‌سازند تا از اپلیکیشن‌های وب محافظت کند.

براساس قوانین تعریفی، WAF، اپلیکیشن وب و درخواست‌های مرتبط با آن را بررسی می‌کند و طبق این قواعد، میان ترافیک مجاز و غیرمجاز تمایز قایل می‌شود. نکته‌ی مهم آن است که WAF افزون‌بر هِدِر، کل محتوای پکت را نیز بررسی می‌کند. WAF هم‌چنین قادر است تا الگوهای رفتاری نامعمول را نیز شناسایی کند.

مدل‌های پیکربندی WAF چیست؟

پیکربندی WAF عمومن بر پایه‌ی سه مدل امنیتی زیر است:

مدل وایت‌لیست (whitelist)

در این مدل فهرستی از URLهای مجاز مشخص می‌شود و تنها ترافیک همین URLهای مشخص اجازه‌ی عبور دارند. هر ترافیکی از URL غیر از URLهای فهرست مشخص‌شده، بلاک می‌شوند.

مدل بلک‌لیست (blacklist)

در این مدل، WAF از اپلیکیشن وب در برابر حملات شناخته‌شده محافظت می‌کند. به بیان بهتر WAF به‌گونه‌ای پیکربندی می‌شود که تهدیدات شناخته‌شده و فعالیت‌های مخربی که سعی در دسترسی به اپلیکیشن وب یا سرور را دارند، مسدود کند.

این مدل WAF برای اپلیکیشن‌های عمومی در دنیای اینترنت که هر نوع کاربری می‌تواند به آن‌ها‌ دسترسی داشته باشد، مفید است. اما این مدل در برابر حملات zero-day، روش موثری به‌شمار نمی‌آید. در حالت کلی این مدل به سه روش زیر انجام می‌شود:

مدل ترکیبی (Hybrid)

در این مدل WAF به‌گونه‌ای پیکربندی می‌شود که متناسب با نیاز اپلیکیشن از هر دو روش وایت‌لیست و بلک‌لیست استفاده کند. از این روش می‌توان هم در ساختارهای داخلی یک شبکه و هم ساختارهای عمومی (اینترنت) استفاده کرد.

حملات تحت پوشش WAF

حملات تحت پوشش WAF

همان‌طور که اشاره شد، یکی از مهم‌ترین قابلیت‌های هر WAF، توانایی شناسایی و جلوگیری از حملات رایج و مخرب وب است. در ادامه با چند نمونه از انواع حمله دیداس و دیگر تهدیداتی که توسط سرویس WAF قابل شناسایی و مهار هستند آشنا می‌شویم:

تزریق SQL یا SQL Injection

یکی از رایج‌ترین حملات وب که در آن مهاجم با وارد کردن دستورات SQL در فیلدهای ورودی، تلاش می‌کند به پایگاه داده دسترسی غیرمجاز پیدا کند. WAF با تحلیل درخواست‌ها و استفاده از Blacklist WAF این نوع حمله را به‌خوبی مسدود می‌کند.

File Inclusion Attacks

در این روش، مهاجم تلاش می‌کند فایل‌های مخرب را از طریق آسیب‌پذیری در اپلیکیشن، وارد سیستم کند. استفاده از Whitelist WAF در این موارد بسیار موثر است زیرا فقط درخواست‌های از پیش تاییدشده را مجاز می‌داند.

Brute Force & Credential Stuffing

این حملات با هدف دسترسی غیرمجاز به حساب کاربری انجام می‌شوند. WAF با محدودسازی نرخ درخواست‌ها (Rate Limiting) و شناسایی الگوهای رفتاری مشکوک، می‌تواند جلوی این حملات را بگیرد.

اسکریپت‌نویسی بین‌سایتی (XSS)

در حملات XSS، مهاجم با تزریق کدهای جاوا اسکریپت در صفحات وب، اطلاعات کاربران را سرقت می‌کند. این حملات معمولا سمت کلاینت هستند، اما مدل امنیتی مثبت و منفی در WAF کمک می‌کند تا فقط ورودی‌های مجاز پردازش شوند. این موضوع به‌ویژه در اپلیکیشن‌هایی که تعامل زیادی با کاربر دارند، اهمیت دارد.

حملات DDoS

یکی از مهم‌ترین دلایل استفاده از WAF ابری، مقابله با انواع حمله دیداس است. این حملات با ایجاد ترافیک غیرعادی و بسیار زیاد، باعث از کار افتادن سرور و برنامه می‌شوند. WAF با تحلیل نرخ درخواست‌ها و یکپارچگی با راهکارهایی مانند کاهش حمله منع سرویس توزیع شده (DDoS Mitigation)، ترافیک مخرب را از ترافیک واقعی تفکیک کرده و از اختلال در سرویس جلوگیری می‌کند. اگر علاقه‌مندید بیش‌تر درباره‌ی نحوه‌ی عملکرد این راهکار بدانید، پیشنهاد می‌کنیم مقاله‌ی کامل «ddos mitigation چیست» را مطالعه کنید.

برای تقویت عملکرد و امنیت اپلیکیشن‌های وب، ترکیب WAF ابری با شبکه توزیع محتوا (CDN) یک راهکار اثبات‌شده است. اگر با نحوه‌ی کار CDN آشنا نیستید، پیشنهاد می‌کنیم مقاله «CDN چیست» را از بلاگ آروان‌کلاد از دست ندهید.

انتظارات نابه‌جا از WAF

WAF جایگزینی برای برنامه‌سازی امن نیست. به عبارت بهتر WAF هر قدر هم پرقدرت باشد، اگر برنامه‌ی شما آسیب‌پذیری داشته باشد، باز هم امکان نفوذ وجود خواهد داشت. به‌طورکلی WAF جزو مکانیزم‌های امن‌سازی است. این روش‌ها با استفاده از تکنولوژی‌های امنیتی سعی در کاهش تهدیدات دارند.

در مقابل، مکانیزم‌های ایمن‌سازی با استفاده از روش‌هایی سعی در کاهش نقاط آسیب‌پذیری دارند. از جمله مکانیزم‌های ایمن‌سازی می‌توان به چرخه‌ی تولید امن نرم‌افزار اشاره کرد.

در واقع WAF به‌ هیچ‌‌وجه امکان کاهش و حتا کشف آسیب‌پذیری‌های برنامه‌های شما را نمی‌دهد، بلکه فقط امکان استفاده از این آسیب‌پذیری‌ها را برای نفوذگر کاهش می‌دهد و اگر حمله‌ای رخ یا تشخیص داده شود، هشدارهایی برای جلوگیری از نفوذ ارایه می‌دهد. البته هیچ‌کدام از این دو مکانیزم نفی‌کننده‌ی مکانیزم دیگر نیست و برای امن‌تر شدن باید از هر دو مکانیزم در کنار هم استفاده کرد.

همان‌طور که گفته شد، WAF برای جلوگیری از حمله‌های لایه‌ی کاربرد طراحی‌شده و در زمینه‌های دیگر، مانند امنیت شبکه و… هیچ کاربردی ندارد و نباید آن را با دیواره‌های آتش نسل بعدی (Next Generation Firewall) اشتباه گرفت. از طرفی WAF یک راه‌حل کامل نیست.

به این معنا که ممکن است وابسته به مجموعه قواعد WAF، برخی حملات را نتوان تشخیص داد یا برخی از درخواست‌های درست، حمله تشخیص داده شوند. از طرفی بسیاری از آسیب‌پذیری‌های منطقی دارای الگوی مناسب برای کشف و جلوگیری نیستند.

شیوه‌ی عمکلرد WAF آروان‌کلاد

هنگامی‌که در ابر آروان تصمیم گرفته شد تا سرویس WAF ارایه شود، ابتدا فازی تحقیقاتی برای پیدا کردن بهترین گزینه‌ی Open Source تعریف شد. ما در نخستین جست‌وجوها، ModSecurity را پیدا کردیم. ماژولی که در ابتدا برای Apache طراحی‌شده، سپس روی Nginx هم پشتیبانی شده بود. از آن‌جایی‌که تعداد مقالات و شرکت‌های استفاده‌کننده از ModSecurity بالا بودند (از جمله Nginx Plus) مطمین شدیم بهترین گزینه برای دیواره آتش وب Open Source را در اختیار داریم.

سپس تصمیم گرفتیم که آن را روی سرورهای خود پیاده‌سازی کنیم. کار پیاده‌سازی بسیار راحت بود و فقط کافی بود پس از نصب ModSecurity، ماژول Connector آن را در Nginx لود کنیم.

پس از راه‌اندازی ماژول متصل‌کننده، زمان آن فرا رسیده بود که تست‌های مورد نظر را روی سرویس WAF اجرا کنیم تا از صحت عملکرد آن پیش از انتشار مطمین شویم. همه‌ی تست‌ها به‌خوبی پشت سر گذاشته شدند و در گام آخر باید Benchmark می‌گرفتیم. با توجه به تعداد درخواست‌های بالا روی سرورهای ابر آروان، ما به سرویس WAF نیاز داشتیم که تاخیری (Latency) کم‌تر از یک میلی‌ثانیه داشته باشد.

متاسفانه نتیجه‌ی تست‌های Benchmark روی ModSecurity بسیار ناامیدکننده بود و نمی‌توانست نیاز ما را برآورده سازد.

پس از کنار گذاشتن ModSecurity به‌دنبال گزینه‌های دیگری گشتیم که بتوانیم آن‌ها را به‌وسیله‌ی OpenResty اجرا کنیم. بنابراین تمرکز خود را روی سرویس‌های WAF پیاده‌سازی‌شده به زبان Lua گذاشتیم.

زبان Lua این امکان را برای ما فراهم می‌کرد که به‌راحتی بتوانیم بدون نیاز به کامپایل دوباره، سورس کد WAF را تغییر داده و تغییرات انجام‌شده را بررسی کنیم. گزینه‌ی مورد نظر ما Lua-resty-waf بود که به ادعای سازنده‌ی آن، Latency کم‌تر از یک میلی‌ثانیه داشت.

هرچند پیاده‌سازی Lua-resty-waf نیازمند زمان بیش‌تری نسبت به ModSecurity بود، پس از راه‌اندازی و انجام تست‌های مورد نظر روی آن، نتیجه‌ی تست Benchmark به‌شکل شگفت‌انگیزی بهتر از ModSecurity شد. در نتیجه توانسته بودیم سرویس WAFای را پیدا کنیم که پاسخ‌گوی نیاز ما باشد اما پرسشی مهم مطرح شد: آیا سرویسی که به‌شکل یک پروژه‌ی دانشگاهی انجام شده بود، برای اجرا در Production آماده است؟

برای پاسخ به این پرسش از پروژه‌ی اصلی Fork گرفتیم و تست‌های بیش‌تری برای آزمایش عملکرد سرویس WAF نوشتیم. با انجام تست‌ها تعدادی باگ اساسی شناسایی شد، برای نمونه این سرویس بدنه‌ی درخواست‌های Post را بررسی نمی‌کرد. پس از اعمال bugfixها همه‌ی تست‌ها PASS شدند، اما با اضافه‌شدن آن‌ها مقدار Latency از مقدار مورد نظر ما (یک میلی‌ثانیه) بیش‌تر شده بود. در گام بعدی تصمیم گرفتیم که سرویس WAF را Optimize کنیم.

سرویس Lua-resty-waf را چه‌طور Optimize کردیم؟

CPU Profiling از مهم‌ترین روش‌های آنالیز یک برنامه‌ی در حال اجرا است. یکی از اهداف اصلی پروفایل گرفتن از یک برنامه، بهبود عملکرد آن برنامه است که به‌شکل کلی در سه مرحله انجام می‌شود:

  1. پروفایل گرفتن از برنامه و استخراج اطلاعات آماری (مرحله‌ی شناسایی)
  2. بازنویسی کد برنامه با توجه به اطلاعات به‌دست آمده (مرحله‌ی بهبود)
  3. پروفایل گرفتن دوباره از برنامه و مقایسه‌ی اطلاعات، پیش و پس از بازنویسی (مرحله‌ی بازنگری)

برخلاف ‌Benchmark، پروفایل گرفتن از یک برنامه می‌تواند اطلاعات دقیق‌تری از رفتار اجزای برنامه ارایه کند که این عمل به شناسایی و بازنویسی بخش‌هایی که در زمان بیش‌تری اجرا شده‌اند، کمک شایانی می‌کند.

در ‌‌Benchmark امکان شناسایی تابعی که زمان بیش‌تری برای اجرا لازم داشته، وجود ندارد و تنها می‌توان زمان لازم برای اجرای کل برنامه را اندازه‌گیری کرد، اما با استفاده از پروفایل گرفتن به‌راحتی می‌توان تابعی که زمان‌بر است را شناسایی و اگر ممکن باشد، بازنویسی کرد.

ما برای Optimize کردن Lua-resty-waf از SystemTap استفاده کردیم. برای کار با این ابزار باید کرنل لینوکس را با پکیج‌های مربوط به debug دوباره Build می‌کردیم. پس از Build دوباره کرنل لینوکس و نصب SystemTap، حالا می‌توانستیم از سرویس WAF پروفایل بگیریم.

خروجی SystemTap از پروفایل سرویس WAF را به‌کمک ابزار FlameGraph به یک نمودار میله‌ای تبدیل کردیم تا راحت‌تر قابل بررسی باشد. برای نمونه شکل زیر یکی از این نمودارها است که برای بررسی سرویس WAF از آن استفاده کردیم:

هر چه‌قدر که عرض هر نوار بیش‌تر باشد نشان‌دهنده‌ی صرف زمان پردازش بیش‌تر CPU برای آن تابع است.

این کار را بارها و بارها تکرار کردیم و هر بار کد را تغییر دادیم و اثر آن را سنجیدیم، تا جایی‌که توانستیم Performance سرویس WAF را تا ۴۰ درصد افزایش دهیم. به این ترتیب Latency سرویس WAF به حد پذیرفتنی برای ما رسیده بود. دوباره تست‌های مورد نظر را روی سرویس WAF اجرا کردیم تا مطمین شویم تغییرات ما اثر مخربی روی عملکرد سرویس WAF نداشته است.

سپس سرویس WAF را روی سرورهای Production خود لانچ کردیم تا بتوانیم از کاربران خود در مقابل حملات اینترنتی حفاظت کنیم. با وجود طولانی بودن فرآیند بهینه‌سازی سرویس WAF، نتیجه‌ی کار بسیار رضایت‌بخش بود: دستیابی به یک سرویس مطمین که Latency کم‌تر از یک میلی‌ثانیه دارد. درنهایت نتیجه‌ی کار خود روی Lua-resty-waf را در Github منتشر کردیم.

مزایا و معایب WAF

استفاده از WAF در معماری‌های مدرن وب، یکی از موثرترین راهکارهای افزایش امنیت اپلیکیشن‌ها محسوب می‌شود. اما مانند هر فناوری دیگری، این راهکار هم در کنار مزایای چشم‌گیر، محدودیت‌هایی دارد که باید با آگاهی کامل نسبت به آن‌ها تصمیم‌گیری شود.

مزایای WAF

در ادامه با مهم‌ترین مزایای WAF و نقش آن در افزایش امنیت برنامه‌های وب آشنا می‌شویم.

افزایش امنیت داده‌ها و کاربران 

WAF با تحلیل دقیق درخواست‌های ورودی می‌تواند مانع نفوذ حملات شناخته‌شده و ناشناخته شود. این ویژگی نقش موثری در محافظت از برنامه‌های وب ایفا می‌کند.

کاهش ریسک حملات

از تزریق SQL و XSS گرفته تا انواع حمله‌های دیداس، WAF می‌تواند تهدیدها را قبل از رسیدن به سرور متوقف کند. 

انعطاف‌پذیری و قابلیت پیکربندی

یکی از مهم‌ترین مزایای پیکربندی WAF، امکان تنظیم دقیق قوانین امنیتی متناسب با نوع اپلیکیشن، کاربران و حتا فصل کاری است.

قابلیت مقیاس‌پذیری

WAFهای ابری به‌راحتی با افزایش یا کاهش ترافیک سازگار می‌شوند و بدون نیاز به مداخله دستی، در برابر حملات گسترده عملکرد پایداری ارایه می‌دهند.

کاهش هزینه‌های ناشی از حملات و Downtime

جلوگیری از اختلال در سرویس‌ها و حفظ دسترس‌پذیری بالا، به‌ویژه برای کسب‌وکارهای آنلاین، به معنای کاهش مستقیم هزینه‌های ناشی از حملات سایبری و قطعی‌های احتمالی است.

معایب WAF

با وجود مزایای گسترده، WAF محدودیت‌هایی نیز دارد که در برخی شرایط می‌تواند چالش‌برانگیز باشد.

احتمال بروز مثبت کاذب (False Positive)

در برخی موارد، WAF ممکن است درخواست‌های قانونی را به اشتباه مسدود کند. این موضوع به‌ویژه در مدل‌های محدودکننده مثل Whitelist WAF شایع‌تر است و نیاز به بررسی و تنظیم مداوم دارد.

هزینه‌های بالا برای سازمان‌های کوچک

در مدل‌های سخت‌افزاری یا غیر ابری، راه‌اندازی و نگه‌داری WAF می‌تواند هزینه‌بر باشد. با این حال، بسیاری از کسب‌وکارهای کوچک با استفاده از CDN، می‌توانند از نسخه‌های مقرون‌به‌صرفه WAF بهره‌مند شوند که بدون نیاز به سخت‌افزار اختصاصی ارایه می‌شوند.

در مجموع، مزایای استفاده از WAF بسیار بیش‌تر از چالش‌های آن است، به‌ویژه زمانی که از راهکارهای مبتنی بر ابر استفاده شود. 

مزایای WAF ابری در مقایسه با راه‌کارهای سخت‌افزاری

یکی از بزرگترین چالش‌های پیاده‌سازی دیواره‌های آتش وب در مقیاس‌های بزرگ، نیاز به مقیاس‌پذیری و سرعت در پردازش درخواست‌ها است. WAF ابری این مزیت را دارد که به‌طور پویا قادر است خود را با تقاضای بالای ترافیک وب سازگار کند و بدون نیاز به تجهیزات سخت‌افزاری جدید، عملکرد خود را بهبود بخشد. در نتیجه، سازمان‌ها می‌توانند از مقیاس‌پذیری انعطاف‌پذیر بهره‌برداری کنند و هیچ‌گونه محدودیتی در مواجهه با حملات مقیاس‌پذیر و پیچیده نخواهند داشت.

علاوه‌بر این، امنیت بهینه‌شده در زیرساخت‌های ابری امکان بروزرسانی سریع‌تر قوانین و پشتیبانی از ویژگی‌های پیشرفته‌تر را فراهم می‌آورد. این امکان به‌ویژه در محیط‌های توزیع‌شده که حملات پیچیده‌تری ممکن است رخ دهند، حیاتی است. به‌عنوان‌مثال، قابلیت هوشمندسازی WAF ابری به سازمان‌ها این امکان را می‌دهد که بتوانند به‌طور خودکار با حملات جدید تطبیق پیدا کنند و قوانین جدید را با سرعت بیش‌تری اعمال کنند.

مقایسه WAF با فایروال‌های دیگر

یکی از اشتباهات رایج در حوزه امنیت وب، تصور یکسان بودن WAF با سایر انواع فایروال‌ها است. در حالی که همه فایروال‌ها با هدف محافظت از سیستم طراحی شده‌اند، اما نحوه عملکرد و نوع تهدیدهایی که پوشش می‌دهند، تفاوت‌های اساسی با یک‌دیگر دارند.

فایروال‌های سنتی (Network Firewall)

این نوع فایروال‌ها در لایه‌ی شبکه (لایه ۳ و ۴ مدل OSI) عمل می‌کنند و وظیفه‌شان کنترل دسترسی‌ها بر اساس IP، پورت، پروتکل و دیگر ویژگی‌های شبکه است. آن‌ها برای محافظت کلی از شبکه مفیدند، اما در برابر حملاتی که در سطح اپلیکیشن انجام می‌شوند، مانند SQL Injection یا XSS بی‌اثرند.

فایروال لایه ۷ (WAF)

در مقابل، فایروال لایه ۷ یا همان WAF، در بالاترین لایه مدل OSI فعالیت می‌کند؛ یعنی همان جایی که داده‌ها از سمت کاربر به اپلیکیشن وب منتقل می‌شوند. WAF با فیلتر ترافیک HTTP، تحلیل محتوای درخواست‌ها، بررسی ورودی‌ها و استفاده از Blacklist WAF یا Whitelist WAF، توان مقابله با انواع حمله دیداس و تهدیدات پیچیده‌تری را دارد.

برای داشتن یک معماری امنیتی کامل، استفاده از هر دو نوع فایروال توصیه می‌شود. 

مراحل نصب و راه‌اندازی WAF

مراحل نصب و راه‌اندازی WAF

راه‌اندازی یک WAF به‌ویژه در فضای ابری، برخلاف تصور بسیاری از کاربران، فرآیندی پیچیده و فنی نیست. با چند مرحله ساده می‌توان یک فایروال لایه ۷ را فعال کرد تا از برنامه‌های وب در برابر تهدیدات رایج محافظت کند. در ادامه، مراحل کلی راه‌اندازی یک سرویس WAF را بررسی می‌کنیم:

1. انتخاب نوع WAF

اولین قدم، انتخاب نوع مناسب WAF است. برای پروژه‌هایی که بر بستر خدمات ابری اجرا می‌شوند، استفاده از WAF ابری توصیه می‌شود؛ چراکه بدون نیاز به سخت‌افزار یا نصب نرم‌افزار اضافی، تنها با چند کلیک از طریق پنل کاربری قابل فعال‌سازی است.

2. اتصال دامنه به WAF

در این مرحله، لازم است DNS دامنه‌ی خود را به سرویس WAF متصل کنید. در بسیاری از موارد، این اتصال از طریق یک CDN انجام می‌شود که به‌شکل پیش‌فرض با WAF یکپارچه است.

3. تنظیم قوانین امنیتی (Policy)

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

4. بررسی لاگ‌ها و ترافیک

در یک پیکربندی WAF حرفه‌ای، امکان مشاهده گزارش‌ها و لاگ‌های ترافیک فراهم است. این بخش به شما کمک می‌کند فیلتر ترافیک HTTP را به‌مرور دقیق‌تر و هوشمندتر کنید.

5. تست نهایی و پایش مستمر

پس از فعال‌سازی، حتمن عملکرد WAF را با ابزارهای تست امنیت بررسی کنید. هم‌چنین در بازه‌های زمانی مشخص، قوانین را بر اساس رفتار کاربران و تهدیدهای جدید به‌روزرسانی کنید.

پیکربندی اولیه تنها نقطه‌ی شروع است؛ حفظ امنیت به بررسی و به‌روزرسانی مداوم نیاز دارد. توصیه می‌شود پس از راه‌اندازی، عملکرد سیستم را به‌طور منظم پایش و تنظیمات را بر اساس نیاز بهینه‌سازی کنید.

نقش الگوریتم‌‌های هوش مصنوعی در عملکردWAF

یکی دیگر از روندهای جدید در بهبود عملکرد WAF، استفاده از هوش مصنوعی و یادگیری ماشین است. با تجزیه و تحلیل الگوهای ترافیک و رفتار کاربران، مدل‌های هوشمند می‌توانند تهدیدات بالقوه را شبیه‌سازی کرده و حتا حملات نوظهور که هنوز الگوهای شناخته‌شده‌ای ندارند را شناسایی کنند. این تکنولوژی نه‌تنها دقت WAF را در شناسایی حملات افزایش می‌دهد، بلکه با زمان‌بندی مناسب و الگوریتم‌های پیش‌بینی، توانایی جلوگیری از حملات در زمان مناسب را نیز دارد.

یک نمونه از شیوه‌ی عملکرد WAF ابر آروان

فرض کنید سایت dvwa.com از محصول WAF امنیت ابری ابر آروان استفاده می‌کند. به‌ این‌ ترتیب تمامی درخواست‎ها به این سایت، به WAF ابر آروان می‎رسد. در این محصول ما از رویکرد مبتنی‌بر امتیاز استفاده می‎کنیم. به این‌شکل که فرض کنید حمله‎ی SQLI در درخواست زیر برای این سایت ارسال شده است:

http://dvwa.com/vulnerabilities/sqli/?id=’and”=’&Submit=Submit

در دیواره آتش وب ابر آروان قواعد زیر برای این درخواست تطابق داده می‌شود:

دقت کنید که در قاعده‌ی آخر، امتیاز درخواست اندازه‌گیری شده و چون مقداری بزرگ‌تر از مقدار آستانه‌ی تعیین‌شده داشته، درخواست مسدود شده است.

چالش‌ها و محدودیت‌های WAF

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

بهترین روش‌ها برای استفاده از WAF

برای افزایش اثربخشی WAF و حفظ امنیت مداوم، رعایت چند اصل کاربردی در استفاده‌ی روزمره از این ابزار امنیتی ضروری است:

1. به‌روزرسانی منظم قوانین امنیتی

تهدیدهای سایبری به‌سرعت تکامل پیدا می‌کنند و بدون به‌روزرسانی مداوم، حتا قوی‌ترین فایروال هم ممکن است آسیب‌پذیر شود. تنظیم قوانین جدید بر اساس الگوهای حملات روز، جلوی نفوذهای احتمالی را می‌گیرد.

2. مانیتورینگ مستمر ترافیک

با پایش مداوم ترافیک ورودی و خروجی، می‌توان رفتارهای غیرعادی را پیش از تبدیل‌شدن به تهدید شناسایی کرد. این مانیتورینگ باید شامل بررسی دقیق درخواست‌ها، نرخ آن‌ها و نحوه‌ی پاسخ‌دهی سیستم باشد.

3. استفاده از ترکیب مدل‌های امنیتی

ترکیب مدل امنیتی مثبت و منفی باعث ایجاد تعادل میان دقت و انعطاف‌پذیری در شناسایی تهدیدها می‌شود. این رویکرد چندلایه، احتمال عبور درخواست‌های مخرب را به‌حداقل می‌رساند و پوشش امنیتی را گسترده‌تر می‌کند.

با رعایت این اصول، عملکرد WAF نه‌تنها در مقابله با تهدیدات بهبود می‌یابد، بلکه امنیت سرویس تحت وب شما نیز به‌مراتب پایدارتر و قابل اطمینان‌تر خواهد بود.

WAF و سایر فناوری‌های امنیتی

WAF به‌تنهایی یک راهکار قدرتمند برای محافظت از برنامه‌های وب است، اما زمانی بیش‌ترین اثربخشی را دارد که با سایر فناوری‌های امنیتی به‌شکل یکپارچه کار کند. در ادامه به چند ترکیب رایج و موثر اشاره می‌کنیم:

WAF در کنار CDN: ترکیبی برای افزایش سرعت و امنیت

استفاده‌ی هم‌زمان از WAF ابری و CDN باعث می‌شود ترافیک ابتدا از لبه‌ی شبکه فیلتر شده و سپس به سمت سرورهای اصلی منتقل شود. این ترکیب در برابر انواع حمله دیداس نیز مقاومت بالایی ایجاد می‌کند.

WAF و SIEM: یکپارچگی با سیستم‌های مدیریت رخدادهای امنیتی

 ادغام WAF با سامانه‌های SIEM، امکان تحلیل دقیق‌تر رخدادهای امنیتی، بررسی لاگ‌ها و پاسخ سریع به تهدیدات را فراهم می‌کند. این هماهنگی به تیم امنیت کمک می‌کند تا تصویر جامع‌تری از وضعیت امنیتی شبکه داشته باشند.

WAF و Zero Trust: هماهنگی با معماری بدون اعتماد

در مدل امنیتی Zero Trust، هیچ کاربر یا سیستمی تا زمان تایید شدن قابل‌اعتماد نیست. WAF با اعمال محدودیت در سطح درخواست‌های وب و کنترل دسترسی دقیق، به‌خوبی با این معماری هم‌سو می‌شود و از ورود تهدیدات احتمالی از نقاط مرزی جلوگیری می‌کند.

این همکاری میان WAF و فناوری‌های مکمل، پایه‌ای برای ایجاد یک زیرساخت امن، منعطف و آماده مقابله با تهدیدات روز دنیا در محیط‌های ابری است.

آینده WAF چگونه است؟

با افزایش پیچیدگی حملات سایبری و گسترش معماری‌های مبتنی بر سرویس، نقش WAF نیز به‌سرعت در حال تحول است. نسل‌های آینده‌ی سرویس WAF بر پایه‌ی هوش مصنوعی و یادگیری ماشین ساخته می‌شوند تا بتوانند به‌شکل بلادرنگ الگوهای جدید حملات را شناسایی کرده و پاسخ دهند. این سیستم‌ها دیگر تنها متکی به لیست‌های ثابت Blacklist WAF و Whitelist WAF نخواهند بود، بلکه توانایی پیش‌بینی تهدیدها و خودکارسازی پیکربندی WAF را نیز خواهند داشت.

در کنار این پیشرفت‌ها، انتظار می‌رود WAF به‌شکل کامل با سایر سرویس‌های ابری از جمله CDN، سیستم‌های مدیریت هویت، SIEM و حتا مدل‌های Zero Trust یکپارچه شود. هم‌چنین با افزایش تقاضا برای خرید زیرساخت‌های ابری و سرویس‌های مقیاس‌پذیر، ارایه‌دهندگان زیرساخت نیز نسخه‌های هوشمندتری را عرضه خواهند کرد. در آینده‌ای نزدیک، WAF نه‌فقط یک ابزار دفاعی، بلکه بخشی پویا و تصمیم‌ساز از معماری امنیتی سازمان‌ها خواهد بود.

نتیجه‌گیری

فایروال برنامه وب، فراتر از یک ابزار فنی، به بخشی جدانشدنی از استراتژی امنیتی هر سازمان تبدیل شده است. با افزایش حملات هدفمند و رشد پیچیدگی تهدیدات، استفاده از راهکارهایی مثل WAF دیگر یک انتخاب نیست، بلکه یک ضرورت است. پیش از انتخاب یا پیاده‌سازی هر نوع راه‌حل امنیتی، درک درست از نیازهای پروژه، زیرساخت موجود و سطح ریسک‌پذیری، اهمیت زیادی دارد. با انتخاب هوشمندانه و نگه‌داری مستمر، WAF می‌تواند به ستون قابل‌اعتماد دفاعی برای هر برنامه‌ وب تبدیل شود.

ارسال پاسخ

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

2 پاسخ در “WAF چیست و چگونه عمل می‌کند؟”

  • ۲۴ مرداد ۱۳۹۸ در۲:۳۵ ق٫ظ

    سلام دوستان عزیز.وقت بخیر.آیا آروان کارورز با سطح دانش فنی پایین قبول میکنه ؟؟اینکه در کنار تیمتون (حتی شیفت شب که احتمالا حجم کار ها کمتره) آموزش ببینه و هدایت بشه تا رشد کنه؟؟در نتیجه ی رشدش اگر بتونه در کارها بهتون کمک کنه و تلاش کنه که حق شناسیش رو به جا بیاره.

  • ۱ شهریور ۱۳۹۸ در۱۰:۰۴ ق٫ظ

    این که اطلاعات و نتایجی که به دست آوردید را منتشر می‌کنید، جای تقدیر و تشکر دارد.