پرش به مطلب اصلی

دیوار آتش وب | WAF

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

در این راهنما به شیوه‌ی تنظیمات و پیکربندی WAF ابر آروان می‌پردازیم.

پیکربندی و تنظیمات WAF در پنل ابر آروان

برای انجام تنظیمات WAF در پنل کاربری ابر آروان، به بخش CDN، سپس «دیواره آتش وب (WAF)» بروید.

در بخش تنظیمات عمومی WAF، شما می‌توانید WAF خود را روی یکی از سه حالت تعیین‌شده در بخش «دیواره آتش وب» قرار دهید.

  • با فعال کردن دکمه‌ی خاموش، سرویس WAF برای وب‌سایت شما غیرفعال می‌شود.

    خاموش کردن WAF به کمک API:

    curl --location --request PATCH https://napi.arvancloud.ir/cdn/4.0/domains/example.com/waf'' \
    --header 'authority: napi.arvancloud.ir' \
    --header 'accept: application/json, text/plain, */*' \
    --header 'authorization: API KEY 1 2 3 4' \
    --header 'cache-control: no-cache' \
    --header 'content-type: application/json' \
    --data-raw '{"mode":"off"}'

  • اگر در این صفحه، WAF در حالت شناسایی قرار داده شود، دیواره آتش وب فقط گزارش (Log) ثبت می‌کند. دقت داشته باشید که در این حالت هیچ درخواست ورودی بلاک نمی‌شود.

    فعال کردن وضعیت شناسایی با API:

    curl --location --request PATCH 'https://napi.arvancloud.ir/cdn/4.0/domains/example.com/waf' \
    --header 'authority: napi.arvancloud.ir' \
    --header 'accept: application/json, text/plain, */*' \
    --header 'authorization: API KEY 1 2 3 4' \
    --header 'cache-control: no-cache' \
    --header 'content-type: application/json' \
    --data-raw '{"mode":"detect"}'

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

    روشن کردن WAF به کمک API:

    curl --location --request PATCH 'https://napi.arvancloud.ir/cdn/4.0/domains/example.com/waf' \
    --header 'authority: napi.arvancloud.ir' \
    --header 'accept: application/json, text/plain, */*' \
    --header 'authorization: API KEY 1 2 3 4' \
    --header 'cache-control: no-cache' \
    --header 'content-type: application/json' \
    --data-raw '{"mode":"protect"}'

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

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

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

خاموش کردن یک قانون مشخص با API: برای این کار باید پارامتر "disabled_rules" را با شماره قوانین مورد نظر ارسال کنید.

curl --location --request PATCH 'https://napi.arvancloud.ir/cdn/4.0/domains/example.com/waf/packages/default?revelio' \
--header 'authority: napi.arvancloud.ir' \
--header 'accept: application/json, text/plain, */*' \
--header 'authorization: API KEY 1 2 3 4' \
--header 'cache-control: no-cache' \
--header 'content-type: application/json' \
--data-raw '{"disabled_rules":["21001","21003","21006","21009","40026","99001","21002"]}'

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

توجه داشته باشید هنگام فعال بودن WAF بیش‌ترین حجم Body درخواست‌ها ۵۲۴۲۸۸ بایت خواهد بود.

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

پکیج‌ها

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

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

پکیج WAF ابر آروان

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

  • اجرای کدهای مخرب XSS (کد 42xxx) این حمله نتیجه‌ی اجرای ورودی داده شده (کد مخرب) به وسیله‌ی مرورگر، بدون اعتبارسنجی مناسب است. در این حمله، مهاجم با روش‌های مختلفی هم‌چون ارسال یک URL با استفاده از ایمیل، بارگذاری در بخش‌های آسیب‌پذیر وب‌سایت و ... اسکریپت مخرب خود را در مرورگر کاربر دیگری اجرا می‌کند و با این روش کنترل مرورگر کاربر قربانی را در اختیار می‌گیرد.

  • حملات SQL Injection (کد 41xxx) در این حمله مهاجم یک SQL Query ناخواسته را از راه اطلاعات ورودی یک فرم یا پارامترهای یک URL، از سمت کاربر به‌سمت سرور ارسال می‌کند. در این حمله احتمال ایجاد، ویرایش، حذف و خواندن اطلاعات محرمانه، تغییر اطلاعات دیتابیس یا ایجاد دسترسی‌های غیرمجاز برای یک کاربر خاص (هم‌چون گرفتن دسترسی Admin از سوی مهاجم) وجود دارد.

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

  • بات‌های مخرب (کد 35xxx) در این بخش، WAF از فعالیت‌ بات‌های مخرب جلوگیری می‌کند. بات‌های عادی همگی از قوانین WAF پیروی می‌کنند و به‌وسیله‌ی آن بلاک نمی‌شوند. تنها آن دسته از بات‌ها که سعی در نقض قوانین WAF دارند و به‌دنبال استفاده از آسیب‌پذیری‌های مختلف در اپلیکیشن‌ها هستند، به‌وسیله‌ی WAF بلاک می‌شوند.

  • جلوگیری از درخواست‌های خارج از استاندارد HTTP (کد 20xxx) در این حالت، WAF عملکرد درست پروتکل HTTP را بررسی می‌کند؛ مانند بررسی این‌که متدهای POST/GET دارای Body باشند یا درخواست POST شامل هدر Content Length باشد.

  • حملات عمومی (کد 40xxx) در این دسته از حملات، مهاجم از فقدان اعتبارسنجی داده‌های ورودی/خروجی استفاده و کد مخرب خود را به برنامه تزریق می‌کند. با تفسیر این کد به‌کمک برنامه، مهاجم می‌تواند اعمالی هم‌چون سرقت اطلاعات یا bypass فرآیند احراز هویت و ... را انجام دهد. از مشهورترین این حملات می‌توان به (Remote File Inclusion (RFI و (Local File Inclusion (LFI اشاره کرد.

پکیج CRS

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

SQL Injection (SQLi)
Cross Site Scripting (XSS)
Local File Inclusion (LFI)
Remote File Inclusion (RFI)
PHP Code Injection
Java Code Injection
HTTPoxy
Shellshock
Unix/Windows Shell Injection
Session Fixation
Scripting/Scanner/Bot Detection
Metadata/Error Leakages

پکیج Comodo

این پکیج نیز در کنار پکیج‌های دیگر از طریق بخش مربوطه در پنل کاربری ابر آروان قابل انتخاب و اعمال است. قوانین پکیج Comodo شامل Rulesetهای اصلی Intrusion Protection و Advanced Filtering می‌شود.

قوانین سفارشی

در WAF ابر آروان این امکان وجود دارد که محافظت WAF برای یک مسیر خاص از دامنه و یا یک رنج IP را فعال یا غیر فعال کنید. برای این کار ابتدا باید در پنل CDN به قسمت دیوار آتش وب WAF رفته و سپس در بخش قوانین سفارشی روی«افزودن قانون» جدید کلیک کنید.

در این مرحله باید مسیر درخواستی را در قالب Glob و IP یا رنج IP مورد نظر که تصمیم دارید قانون روی آن‌ها اعمال شود را وارد کنید. در نهایت وضعیت عملیات را انتخاب کنید.

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

ایجاد یک قانون سفارشی با API

برای تعیین عملکرد قانون باید پارامتر "action" را با protect برای محافظت یا passthrough برای عدم محافظت ارسال کنید.

curl --location --request POST 'https://napi.arvancloud.ir/cdn/4.0/domains/example.com/waf/rules' \
--header 'authority: napi.arvancloud.ir' \
--header 'accept: application/json, text/plain, */*' \
--header 'authorization: API KEY 1 2 3 4' \
--header 'content-type: application/json' \
--data-raw '{"id":null,"url_pattern":"example.com/**","sources":["192.168.1.1/32"],"description":"Test For Docs","action":"protect"}'

تحلیل حملات WAF

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

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

به‌ازای هر حمله، شما می‌توانید با کلیک روی لاگ آن، جزییات بیش‌تری را مشاهده کنید.

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

  • IP شخص حمله‌کننده
  • متد درخواست
  • نشانی که به آن حمله شده است
  • زمان
  • کوکی‌های ارسالی
  • و User Agent

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

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