دیوار آتش وب | 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 اشاره کرد.
میزان حساسیت
میزان حساسیت در ۸ سطح قابل تنظیم است:
0 (Emergency)
1 (Alert)
2 (Critical)
3 (Error)
4 (Warning)
5 (Notice)
6 (Info)
7 (Debug)
محاسبه امتیاز بر اساس میزان حساسیت
در این سیستم، میزان حساسیت (severity) تعیین میکند که کدام دسته از قوانین در محاسبهی امتیاز (score) مشارکت خواهند کرد. به عبارت دیگر، نوع Severity مشخص میکند که کدام شمارندهها برای محاسبهی امتیاز نهایی در نظر گرفته شوند.
فرض کنید چهار سطح مختلف Severity داریم که هرکدام شمارنده مخصوص به خود را دارند:
- severity_1
- severity_2
- severity_3
- severity_4
برای هر قانونی که به یکی از این سطوح اختصاص دارد، هنگام مطابقت (match)، مقدار آن Severity خاص افزایش مییابد. برای نمونه، اگر یک قانون به severity_1 تعلق دارد، وقتی این قانون مطابقت پیدا کند، مقدار severity_1 افزایش مییابد. به همین ترتیب، اگر قانون در severity_2 قرار داشته باشد، با مطابقت آن، مقدار severity_2 افزایش مییابد، و این روند برای سایر سطوح هم تکرار میشود.
مجموع این مقادیر باید برای محاسبهی امتیاز نهایی درخواست (request) جمع زده شوند. با این حال، اینکه کدام مقادیر باید جمع زده شوند، توسط Severity مشخص میشود. به طور مثال:
- زمانی که severity=1 باشد: total_score = severity_1
- زمانی که severity=3 باشد: total_score = severity_1 + severity_2 + severity_3
در نهایت، این total_score با Threshold مقایسه میشود و اگر مقدار آن از Threshold بیش تر باشد، درخواست مسدود (block) میشود.
تنظیم میزان حساسیت و تاثیر آن بر WAF
با توجه به توضیحات فوق، اگر میزان حساسیت روی ۰ (Emergency) تنظیم شود، WAF در کمترین حالت سختگیری قرار خواهد گرفت و تنها قوانین با حساسیت Emergency بررسی میشوند. به عبارت دیگر، در این حالت فقط قانونهایی که به حساسیت Emergency تعلق دارند، بررسی شده و امتیاز نهایی بر اساس آنها محاسبه میشود.
برعکس، اگر میزان حساسیت روی ۶ (Info) تنظیم شود، WAF در سختگیرانهترین حالت قرار میگیرد و تمام قوانین، از آسان تا سختگیرانهترین، بررسی خواهند شد. در این حالت، همهی قانونها از سطوح مختلف Severity (از Info گرفته تا Emergency) در محاسبهی امتیاز نهایی مشارکت خواهند داشت.
به این ترتیب، با تغییر میزان حساسیت، میتوان سطح سختگیری WAF را تنظیم کرد تا فقط قوانین با حساسیت خاص یا همه قوانین مورد نظر بررسی شوند.
پکیج CRS
این بسته شامل قوانین عمومی برای تشخیص حملات است و امکان استفاده از آن روی قابلیت WAF ابر آروان وجود دارد. با فعالسازی دیواره آتش وب و انتخاب پکیج CRS روی آن در پنل کاربری، میتوانید از وبسایت خود در برابر حملات مختلفی مخافظت کنید. جلوگیری از حملات رایج زیر بخشی از پکیج CRS را شامل میشود.
پکیج 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، آن را خاموش کنید.
در بخش حملات براساس نقشه نیز میتوانید مناطقی که از آنها به سایت شما حمله شده است، مشاهده کنید.