SlideShare una empresa de Scribd logo
1 de 32
‫تعالی‬ ‫باسمه‬
‫کانفیق‬ ‫و‬ ‫مدیریت‬
naxsi
‌
: ‫نویسنده‬
‫دخت‬ ‫اسمعیل‬ ‫یاشار‬ ‫مهندس‬
:‫نسخه‬
‌
0.1
: ‫نویسنده‬ ‫درباره‬
‫رشته‬ ‫آموخته‬ ‫دانش‬ ‫دخت‬ ‫اسمعیل‬ ‫یاشار‬ ‫بنده‬
cyber security
. ‫هستم‬
‫از‬ ‫بیش‬
۱۵
. ‫دارم‬ ‫فعالیت‬ ‫سابقه‬ ‫سال‬
‫مولف‬ - ‫مدرس‬ - ‫مشاور‬ : ‫داد‬ ‫شرح‬ ‫زیر‬ ‫های‬ ‫ساختار‬ ‫در‬ ‫میتوان‬ ‫را‬ ‫بنده‬ ‫های‬ ‫فعالیت‬ ‫جمله‬ ‫از‬
gnu/linux system/network/security/cloud Engineer/administrator & oracle dba | Linux Trainer |devops
. ): ‫جدید‬ ‫دنیاهای‬ ‫کشف‬ ‫و‬ ‫تحقیق‬ ‫و‬ ‫مطالعه‬ ‫به‬ ‫مند‬ ‫عالقه‬
. ‫کنم‬ ‫اشاره‬ ‫استراتژی‬ ‫های‬ ‫بازی‬ ‫و‬ ‫اوتلو‬ ‫و‬ ‫شطرنج‬ ‫بازی‬ ‫به‬ ‫میتوانم‬ ‫من‬ ‫های‬ ‫سرگرمی‬ ‫از‬ ‫واقع‬ ‫در‬
‫تبریز‬ ‫الگ‬ ‫گذاران‬ ‫بنیان‬ ‫از‬ ‫یکی‬ ‫و‬ ‫لینوکس‬/‫گنو‬ ‫و‬ ‫باز‬ ‫متن‬ ‫دنیای‬ ‫عاشق‬ . ‫هستم‬ ‫عاشق‬ ‫یک‬ ‫من‬
: ‫کنید‬ ‫پیدا‬ ‫و‬ ‫کنید‬ ‫دنبال‬ ‫را‬ ‫من‬ ‫میتوانید‬ ‫چطور‬ ‫خب‬
Mob : 09141100257
Telegram ID
Telegram channel
Instagram Account
Linkedin Account
. ‫بشنوم‬ ‫را‬ ‫انتقادتون‬ ‫یا‬ ‫پیشنهاد‬ ‫هرگونه‬ ‫میشم‬ ‫خوشحال‬ ‫همچنین‬
: ‫کنید‬ ‫پیدا‬ ‫را‬ ‫من‬ ‫از‬ ‫ی‬ ‫دیگر‬ ‫های‬ ‫کتاب‬ ‫میتونید‬ ‫چطور‬
‫توی‬
slideshare
. ‫کنید‬ ‫پیدا‬ ‫را‬ ‫کردم‬ ‫منتشر‬ ‫آزاد‬ ‫بصورت‬ ‫که‬ ‫دیگری‬ ‫های‬ ‫کتاب‬ ‫میتونید‬ ‫بگردید‬ ‫من‬ ‫اسم‬ ‫دنبال‬ ‫گوگل‬ ‫یا‬
: ‫مشاوره‬
. ‫بود‬ ‫خواهم‬ ‫شما‬ ‫دسترس‬ ‫در‬ ‫من‬ . ‫فرمایید‬ ‫حاصل‬ ‫تماس‬ . ‫کردم‬ ‫اشاره‬ ‫قبل‬ ‫صفحه‬ ‫در‬ ‫که‬ ‫هایی‬ ‫کانال‬ ‫از‬ ‫میتوانید‬ ‫مشاوره‬ ‫جهت‬
WAF
‫مختلف‬ ‫های‬ ‫الیه‬ ‫در‬ ‫هکرها‬ ‫حمالت‬ ‫چیست؟‬
OSI
،‫ها‬ ‫الیه‬ ‫این‬ ‫از‬ ‫یکی‬ ‫که‬ ‫‌گیرد‬
‫ی‬‫م‬ ‫صورت‬
Application
،‫کاربرد‬ ‫الیه‬ .‫دارد‬ ‫نام‬
.‫‌افتد‬
‫ی‬‫م‬ ‫اتفاق‬ ‫الیه‬ ‫این‬ ‫در‬ ‫حمالت‬ ‫ترین‬ ‫پیچیده‬ ‫و‬ ‫است‬ ‫شبکه‬ ‫الیه‬ ‫هفتمین‬
WAF
‫مخفف‬
Web Application Firewall
‫که‬ ‫است‬ ‫فایروالی‬
:‫شامل‬ ‫حمالت‬ ‫این‬ .‫‌دهد‬
‫ی‬‫م‬ ‫نشان‬ ‫العمل‬ ‫عکس‬ ‫ها‬ ‫آن‬ ‫برابر‬ ‫در‬ ‫و‬ ‫کرده‬ ‫شناسایی‬ ‫را‬ ‫حمالت‬ ‫نوع‬ ‫این‬
( ‫سایتی‬ ‫بین‬ ‫اسکریپت‬
XSS
)
‫صفحه‬ ‫یک‬ ‫لود‬ ‫هنگام‬ ‫را‬ ‫مضر‬ ‫کدهای‬ ‫هکرها‬ .‫‌باشد‬
‫ی‬‫م‬ ‫کاربر‬ ‫سمت‬ ‫به‬ ‫کد‬ ‫تزریق‬ ‫با‬ ‫حمله‬ ‫نوعی‬ ‫سایتی‬ ‫بین‬ ‫نویسی‬ ‫اسکریپت‬ ،‫موارد‬ ‫بیشتر‬ ‫در‬
.‫هستند‬ ‫پذیر‬ ‫آسیب‬ ‫‌ها‬
‫ت‬‫اسکریپ‬ ‫این‬ ‫برابر‬ ‫در‬ ‫ویژه‬ ‫به‬ ‫تعاملی‬ ‫‌های‬
‫ن‬‫اپلیکیش‬ ‫و‬ ‫‌ها‬
‫ت‬‫‌سای‬
‫ب‬‫و‬ .‫‌کنند‬
‫ی‬‫م‬ ‫وارد‬ ‫وب‬
(‫سایتی‬ ‫بین‬ ‫درخواست‬ ‫جعل‬
Cross-site request forgery
)
‫تحت‬ ،‫دارند‬ ‫کاربر‬ ‫ورود‬ ‫به‬ ‫نیاز‬ ‫خاص‬ ‫اقدام‬ ‫یک‬ ‫انجام‬ ‫برای‬ ‫که‬ ‫را‬ ‫وب‬ ‫کاربردی‬ ‫‌های‬
‫ه‬‫برنام‬ ‫و‬ ‫‌ها‬
‫ت‬‫‌سای‬
‫ب‬‫و‬ ‫تمامی‬ ‫‌تواند‬
‫ی‬‫م‬ ‫سایبری‬ ‫حمالت‬ ‫این‬
‫های‬ ‫درخواست‬ ‫کاربر‬ ‫مرورگر‬ ‫که‬ ‫شوند‬ ‫می‬ ‫باعث‬ ‫آنها‬ .‫دهد‬ ‫قرار‬ ‫تأثیر‬
HTTP
.‫شود‬ ‫انجام‬ ‫نامطلوب‬ ‫اقدامات‬ ‫تا‬ ‫کند‬ ‫ارسال‬ ‫سایت‬ ‫وب‬ ‫به‬ ‫را‬
Csrf
‫کد‬ ‫تزریق‬
SQL (SQL injection)
‫تزریق‬ ‫حمله‬ ‫یک‬ ‫در‬
SQL
‫جوی‬ ‫و‬ ‫پرس‬ ‫فیلد‬ ‫یک‬ ‫از‬ ‫سایبری‬ ‫مجرمان‬ ،
SQL
.‫کنند‬ ‫می‬ ‫استفاده‬ ‫اضافی‬ ‫نامطلوب‬ ‫اطالعات‬ ‫انتقال‬ ‫برای‬
Buffer Overflow
Malicious Robots
Information leakage
Malicious and Illegal Encoding
Web Server and OS Attacks
OS command injection
RFI bug
Session Hijacking
DOS
Protection against common attacks
Site Reconnaissance
Parameter Tampering
‫سازمان‬ ،‫شد‬ ‫اشاره‬ ‫آنها‬ ‫به‬ ‫باال‬ ‫در‬ ‫که‬ ‫مواردی‬ ‫بر‬ ‫عالوه‬
OWASP
‫با‬ ‫که‬ ‫‌کند‬
‫ی‬‫م‬ ‫معرفی‬ ‫را‬ ‫اپلیکیشن‬ ‫وب‬ ‫امنیتی‬ ‫مشکالت‬ ‫سایر‬ ‫از‬ ‫لیستی‬
WAF
:‫داد‬ ‫کاهش‬ ‫را‬ ‫آنها‬ ‫توسط‬ ‫‌پذیری‬
‫ب‬‫آسی‬ ‫میزان‬ ‫‌توان‬
‫ی‬‫م‬
•
(‫شکسته‬ ‫هویت‬ ‫احراز‬
Broken authentication
)
•
(‫حساس‬ ‫‌های‬
‫ه‬‫داد‬ ‫افشای‬
Sensitive data exposure
)
•
(‫ال‬ ‫ام‬ ‫ایکس‬ ‫پذیری‬ ‫آسیب‬
XML external entities (XXE)
)
•
(‫ناقص‬ ‫دسترسی‬ ‫کنترل‬
Broken access control
)
•
(‫امنیتی‬ ‫اشتباه‬ ‫پیکربندی‬
Security misconfiguration
)
•
deserialization
(‫ناامن‬
Insecure deserialization
)
•
(‫‌شده‬
‫ه‬‫شناخت‬ ‫‌های‬
‫ی‬‫پذیر‬ ‫آسیب‬ ‫با‬ ‫‌هایی‬
‫ه‬‫مؤلف‬ ‫از‬ ‫استفاده‬
Using components with known vulnerabilities
)
•
(‫ناکافی‬ ‫مانیتورینگ‬ ‫و‬ ‫اندازی‬ ‫الگ‬
Insufficient logging & monitoring
)
WAF
‫‌کند؟‬
‫ی‬‫م‬ ‫کار‬ ‫چگونه‬
WAF
‫الیه‬ ‫روی‬ ‫بر‬ ‫که‬ ‫است‬ ‫شده‬ ‫طراحی‬ ‫ای‬ ‫گونه‬ ‫به‬
Application
‫بر‬ ‫مبتنی‬ ‫خروجی‬/‫ورودی‬ ‫ترافیک‬ ‫و‬ ‫‌گیرد‬
‫ی‬‫م‬ ‫قرار‬
HTTP/HTTPS
‫را‬
‫درخواست‬ ‫دو‬ ‫هر‬ ‫از‬ ‫مخربی‬ ‫ترافیک‬ ‫که‬ ‫زمان‬ ‫هر‬ .‫‌کند‬
‫ی‬‫م‬ ‫بررسی‬
GET
‫و‬
POST
.‫‌دهد‬
‫ی‬‫م‬ ‫نشان‬ ‫العمل‬ ‫عکس‬ ‫سرعت‬ ‫به‬ ،‫کند‬ ‫شناسایی‬ ‫را‬
،‫‌کنند‬
‫ی‬‫م‬ ‫عمل‬ ‫سرورها‬ ‫از‬ ‫ایمن‬ ‫دروازه‬ ‫یک‬ ‫عنوان‬ ‫به‬ ‫فقط‬ ‫که‬ ‫معمولی‬ ‫های‬ ‫فایروال‬ ‫برخالف‬
WAF
‫سرویس‬ ‫بین‬ ‫که‬ ‫است‬ ‫امنیتی‬ ‫اقدام‬ ‫یک‬
( ‫گیرنده‬
Client
‫تهدیدات‬ ‫نوع‬ ‫این‬ ‫تشخیص‬ ‫که‬ ‫‌گیرند‬
‫ی‬‫م‬ ‫انجام‬ ‫خودکار‬ ‫صورت‬ ‫به‬ ‫معموال‬ ،‫مخرب‬ ‫حمالت‬ ‫بیشترین‬ .‫دارد‬ ‫قرار‬ ‫سرور‬ ‫وب‬ ‫و‬ )
.‫نیست‬ ‫شناسایی‬ ‫قابل‬ ‫و‬ ‫شده‬ ‫طراحی‬ ‫انسان‬ ‫ترافیک‬ ‫از‬ ‫تقلید‬ ‫برای‬ ‫غالبا‬ ‫زیرا‬ ‫است؛‬ ‫سخت‬ ‫بسیار‬
WAF
‫و‬ ‫درخواست‬ ‫هر‬ ‫از‬ ‫عمیقی‬ ‫بازرسی‬
‫به‬ ‫بازرسی‬ ‫این‬ .‫‌دهد‬
‫ی‬‫م‬ ‫انجام‬ ‫وب‬ ‫ترافیک‬ ‫متداول‬ ‫اشکاالت‬ ‫همه‬ ‫برای‬ ‫را‬ ‫پاسخ‬
WAF
‫و‬ ‫کند‬ ‫مسدود‬ ‫و‬ ‫شناسایی‬ ‫را‬ ‫تهدیدات‬ ‫تا‬ ‫‌کند‬
‫ی‬‫م‬ ‫کمک‬
.‫کند‬ ‫جلوگیری‬ ‫سرور‬ ‫به‬ ‫ها‬ ‫آن‬ ‫رسیدن‬ ‫از‬
‫انواع‬
WAF
:
( ‫شبکه‬ ‫بر‬ ‫مبتنی‬ ‫اپلیکیشن‬ ‫وب‬ ‫فایروال‬
Network-based web application firewall
)
( ‫شبکه‬ ‫بر‬ ‫مبتنی‬ ‫وب‬ ‫تحت‬ ‫های‬ ‫فایروال‬
NWAF
‫در‬ ‫تاخیر‬ ،‫محلی‬ ‫نصب‬ ‫دلیل‬ ‫به‬ ‫و‬ ‫هستند‬ ‫افزار‬ ‫سخت‬ ‫بر‬ ‫مبتنی‬ ‫سنتی‬ ‫طور‬ ‫به‬ )
‫که‬ ‫معناست‬ ‫بدان‬ ‫این‬ .‫‌دهند‬
‫ی‬‫م‬ ‫کاهش‬ ‫را‬ ‫خروجی‬/‫ورودی‬
NWAF
‫این‬ ‫اما‬ .‫است‬ ‫آسان‬ ‫آن‬ ‫به‬ ‫دسترسی‬ ‫و‬ ‫شده‬ ‫نصب‬ ‫برنامه‬ ‫سرور‬ ‫نزدیک‬
.‫‌طلبد‬
‫ی‬‫م‬ ‫را‬ ‫داخلی‬ ‫امنیتی‬ ‫های‬ ‫تخصص‬ ‫و‬ ‫شود‬ ‫خریداری‬ ‫افزاری‬ ‫سخت‬ ‫صورت‬ ‫به‬ ‫باید‬ ‫که‬ ‫چرا‬ ‫است؛‬ ‫گران‬ ‫بسیار‬ ‫راهکاری‬
( ‫میزبان‬ ‫بر‬ ‫مبتنی‬ ‫اپلیکیشن‬ ‫وب‬ ‫فایروال‬
Host-based web application firewall
( ‫میزبان‬ ‫بر‬ ‫مبتنی‬ ‫اپلیکیشن‬ ‫وب‬ ‫های‬ ‫فایروال‬ )
HWAF
‫از‬ ‫نوع‬ ‫این‬ .‫دارند‬ ‫وجود‬ ‫سرور‬ ‫وب‬ ‫یک‬ ‫های‬ ‫ماژول‬ ‫عنوان‬ ‫به‬ )
WAF
‫با‬ ‫مقایسه‬ ‫در‬ ‫تر‬ ‫ارزان‬ ‫بسیار‬ ‫حل‬ ‫راه‬ ‫یک‬
WAF
‫بر‬ ‫مبتنی‬ ‫های‬
‫امنیتی‬ ‫های‬ ‫تخصص‬ .‫اند‬ ‫شده‬ ‫طراحی‬ ‫وب‬ ‫های‬ ‫برنامه‬ ‫برای‬ ‫که‬ ‫است‬ ‫افزار‬ ‫سخت‬
. ‫میطلبد‬ ‫را‬
‫یک‬ ‫که‬ ‫هنگامی‬
WAF
‫افزایش‬ ‫را‬ ‫نگهداری‬ ‫های‬ ‫هزینه‬ ‫و‬ ‫سازی‬ ‫پیاده‬ ‫پیچیدگی‬ ،‫محلی‬ ‫سرور‬ ‫منابع‬ ‫مصرف‬ ‫‌تواند‬
‫ی‬‫م‬ ،‫شود‬ ‫ادغام‬ ‫سرور‬ ‫در‬
.‫دهد‬
( ‫ابر‬ ‫بر‬ ‫مبتنی‬ ‫اپلیکیشن‬ ‫وب‬ ‫فایروال‬
Cloud-based web application firewall
)
‫های‬ ‫حل‬ ‫راه‬ .‫‌کنند‬
‫ی‬‫م‬ ‫عمل‬ ‫معکوس‬ ‫پروکسی‬ ‫عنوان‬ ‫به‬ ‫و‬ ‫هستند‬ ‫صرفه‬ ‫به‬ ‫مقرون‬ ‫ای‬ ‫گزینه‬ ‫ابر‬ ‫بر‬ ‫مبتنی‬ ‫وب‬ ‫تحت‬ ‫برنامه‬ ‫های‬ ‫فایروال‬
‫نیاز‬ ‫تعمیر‬ ‫به‬ ‫که‬ ‫سیستمی‬ ‫از‬ ‫‌خواهید‬
‫ی‬‫م‬ ‫یا‬ ‫و‬ ‫کنید‬ ‫محدود‬ ‫عملکردی‬ ‫های‬ ‫قابلیت‬ ‫با‬ ‫را‬ ‫خود‬ ‫‌خواهید‬
‫ی‬‫نم‬ ‫که‬ ‫است‬ ‫مناسب‬ ‫زمانی‬ ‫ابر‬ ‫بر‬ ‫مبتنی‬
.‫کنید‬ ‫نگهداری‬ ‫دارد‬
‫سیاه‬ ‫لیست‬
WAF
‫سفید‬ ‫لیست‬ ،
WAF
‫و‬
WAF
:‫ترکیبی‬
WAF
‫ترکیبی‬ ‫امنیتی‬ ‫های‬ ‫مدل‬ ‫و‬ )‫مثبت‬ ‫(امنیت‬ ‫سفید‬ ‫لیست‬ ،)‫منفی‬ ‫(امنیت‬ ‫سیاه‬ ‫لیست‬ ‫جمله‬ ‫از‬ ‫مختلفی‬ ‫های‬ ‫مدل‬ ‫تحت‬ ‫‌توانند‬
‫ی‬‫م‬ ‫ها‬
.‫کنند‬ ‫کار‬
:‫سیاه‬ ‫لیست‬
‫حمالتی‬ ‫از‬ ‫مانع‬ ‫امنیت‬ ‫نوع‬ ‫این‬ .‫‌کند‬
‫ی‬‫م‬ ‫کار‬ ‫خاص‬ ‫امضاهای‬ ‫یا‬ ‫شده‬ ‫شناخته‬ ‫حمالت‬ ‫برابر‬ ‫در‬ ‫وب‬ ‫برنامه‬ ‫از‬ ‫محافظت‬ ‫با‬ ‫سیاه‬ ‫لیست‬ ‫مدل‬
‫های‬ ‫لیست‬ ‫مختلف‬ ‫انواع‬ ‫که‬ ‫است‬ ‫این‬ ‫مدل‬ ‫این‬ ‫اشکال‬ .‫‌کنند‬
‫ی‬‫م‬ ‫سوءاستفاده‬ ‫ها‬ ‫پذیری‬ ‫آسیب‬ ‫یا‬ ‫شده‬ ‫شناخته‬ ‫موضوعات‬ ‫این‬ ‫از‬ ‫که‬ ‫‌شود‬
‫ی‬‫م‬
‫حمالت‬ ‫باالی‬ ‫درصد‬ ‫دلیل‬ ‫به‬ ‫و‬ ‫‌شوند‬
‫ی‬‫م‬ ‫ایجاد‬ ‫لحظه‬ ‫در‬ ‫سیاه‬
ZERO DAY
.‫اند‬ ‫شده‬ ‫منسوخ‬
:‫سفید‬ ‫لیست‬
.‫باشد‬ ‫داشته‬ ‫جریان‬ ‫خاص‬ ‫معیارهای‬ ‫با‬ ‫مطابق‬ ‫ترافیکی‬ ‫‌دهد‬
‫ی‬‫م‬ ‫اجازه‬ ‫و‬ ‫‌کند‬
‫ی‬‫م‬ ‫استفاده‬ ‫منطقی‬ ‫گیری‬ ‫تصمیم‬ ‫و‬ ‫امضا‬ ‫از‬ ‫سفید‬ ‫لیست‬ ‫مدل‬
‫طریق‬ ‫از‬ ‫ها‬ ‫درخواست‬ ‫است‬ ‫ممکن‬ ‫یعنی‬
URL
‫زمانی‬ ‫مدل‬ ‫این‬ ‫ضعف‬ ‫نقطه‬ .‫شود‬ ‫مسدود‬ ‫ها‬ ‫سایت‬ ‫سایر‬ ‫طریق‬ ‫از‬ ‫و‬ ‫باشند‬ ‫مجاز‬ ‫خاص‬ ‫های‬
.‫است‬ ‫نیاز‬ ‫اضافی‬ ‫نگهداری‬ ‫و‬ ‫تعمیر‬ ‫صورت‬ ‫این‬ ‫در‬ ‫کنید‬ ‫می‬ ‫معرفی‬ ‫را‬ ‫جدید‬ ‫برنامه‬ ‫ویژگی‬ ‫یک‬ ‫شما‬ ‫که‬ ‫است‬
:‫ترکیبی‬ ‫مدل‬
.‫‌کند‬
‫ی‬‫م‬ ‫استفاده‬ ‫سفید‬ ‫لیست‬ ‫و‬ ‫سیاه‬ ‫لیست‬ ‫مدل‬ ‫دو‬ ‫هر‬ ‫از‬ ،‫پیداست‬ ‫آن‬ ‫نام‬ ‫از‬ ‫که‬ ‫همانطور‬
WAF
:‫شبکه‬ ‫فایروال‬ ‫مقابل‬ ‫در‬
.‫دارد‬ ‫وجود‬ ‫دو‬ ‫این‬ ‫بین‬ ‫آشکاری‬ ‫های‬ ‫تفاوت‬ ‫اما‬ ،‫برسد‬ ‫نظر‬ ‫به‬ ‫کننده‬ ‫گیج‬ ‫است‬ ‫ممکن‬ ‫اپلیکیشن‬ ‫وب‬ ‫فایروال‬ ‫و‬ ‫شبکه‬ ‫فایروال‬ ‫بین‬ ‫انتخاب‬
‫و‬ ‫محلی‬ ‫شبکه‬ ‫بین‬ ‫بان‬ ‫دروازه‬ ‫عنوان‬ ‫به‬ ‫یعنی‬ ‫‌شوند؛‬
‫ی‬‫م‬ ‫استفاده‬ ‫محلی‬ ‫شبکه‬ ‫منابع‬ ‫به‬ ‫دسترسی‬ ‫کنترل‬ ‫برای‬ ‫شبکه‬ ‫فایروال‬ ‫های‬ ‫برنامه‬
‫مانند‬ .‫دارند‬ ‫را‬ ‫وب‬ ‫صفحات‬ ‫از‬ ‫بازدید‬ ‫نبودن‬ ‫یا‬ ‫بودن‬ ‫مجاز‬ ‫تعیین‬ ‫برای‬ ‫قوانینی‬ ‫شبکه‬ ‫های‬ ‫فایروال‬ .‫‌کنند‬
‫ی‬‫م‬ ‫عمل‬ ‫اینترنت‬
WAF
‫حل‬ ‫راه‬ ‫این‬ ،
.‫شوند‬ ‫ارائه‬ ‫افزاری‬ ‫نرم‬ ‫یا‬ ‫افزاری‬ ‫سخت‬ ‫صورت‬ ‫به‬ ‫‌توانند‬
‫ی‬‫م‬ ‫امنیتی‬ ‫های‬
،‫گفتیم‬ ‫تر‬ ‫قبل‬ ‫که‬ ‫همانطور‬
WAF
‫صورت‬ ‫به‬ ‫مشکوک‬ ‫ترافیک‬ .‫است‬ ‫شده‬ ‫طراحی‬ ‫وب‬ ‫برنامه‬ ‫یک‬ ‫از‬ ‫خروجی‬/‫ورودی‬ ‫ترافیک‬ ‫بر‬ ‫نظارت‬ ‫برای‬
.‫‌شود‬
‫ی‬‫م‬ ‫فیلتر‬ ‫خیر‬ ‫یا‬ ‫است‬ ‫مخرب‬ ‫ترافیک‬ ‫این‬ ‫آیا‬ ‫اینکه‬ ‫اساس‬ ‫بر‬ ‫سپس‬ ‫و‬ ‫‌شود‬
‫ی‬‫م‬ ‫بررسی‬ ‫جداگانه‬
WAF
‫که‬ ‫هایی‬ ‫سازمان‬ ‫بین‬ ‫در‬ ‫اغلب‬ ‫ها‬
.‫هستند‬ ‫محبوب‬ ‫‌دهند‬
‫ی‬‫م‬ ‫ارائه‬ ‫اینترنت‬ ‫بر‬ ‫مبتنی‬ ‫خدمات‬
( ‫وب‬ ‫برنامه‬ ‫فایروال‬
WAF
‫کند؟‬ ‫محافظت‬ ‫تواند‬ ‫نمی‬ ‫تهدیدها‬ ‫کدام‬ ‫برابر‬ ‫در‬ )
‫متاسفانه‬
WAF
‫اپلیکیشن‬ ‫وب‬ ‫یا‬ ‫‌سایت‬
‫ب‬‫و‬ ‫یک‬ ‫از‬ ‫جامع‬ ‫امنیتی‬ ‫مفهوم‬ ‫یک‬ ‫از‬ ‫بخشی‬ ‫همیشه‬ ‫باید‬ ‫اما‬ ،‫دهد‬ ‫نمی‬ ‫ارائه‬ ‫را‬ ‫جانبه‬ ‫همه‬ ‫حفاظت‬
‫که‬ ‫دارد‬ ‫وجود‬ ‫‌هایی‬
‫ی‬‫‌پذیر‬
‫ب‬‫آسی‬ .‫باشد‬
WAF
‫در‬ .‫‌کند‬
‫ی‬‫نم‬ ‫محافظت‬ ‫شبکه‬ ‫در‬ ‫موجود‬ ‫بدافزارهای‬ ‫برابر‬ ‫در‬ ‫همچنین‬ .‫است‬ ‫اثر‬ ‫بی‬ ‫آنها‬ ‫برابر‬ ‫در‬
‫مناسب‬ ‫حفاظتی‬ ‫اقدامات‬ ‫باید‬ ‫نیز‬ ‫ها‬ ‫شرکت‬ ،‫نتیجه‬
in-house
.‫دهند‬ ‫انجام‬ ‫را‬
•
‫مانندحمالت‬ ،‫وب‬ ‫‌های‬
‫ه‬‫برنام‬ ‫فایروال‬ ‫زدن‬ ‫دور‬ ‫‌های‬
‫ه‬‫را‬ ‫از‬ ‫خوبی‬ ‫به‬ ‫هکرها‬
HTTP request smuggling
‫بنابراین‬ .‫هستند‬ ‫آگاه‬
.‫است‬ ‫نیاز‬ ‫مورد‬ ‫اینجا‬ ‫در‬ ‫نیز‬ ‫بیشتری‬ ‫حفاظت‬
•
‫مدیریت‬
filter setting
،‫باشند‬ ‫شده‬ ‫تنظیم‬ ‫سخت‬ ‫خیلی‬ ‫یا‬ ‫ساده‬ ‫خیلی‬ ‫فیلترها‬ ‫اگر‬ .‫دارد‬ ‫زیادی‬ ‫تخصص‬ ‫به‬ ‫نیاز‬
WAF
‫که‬ ‫آنطور‬
.‫‌کند‬
‫ی‬‫نم‬ ‫کار‬ ‫شماست‬ ‫نیاز‬ ‫مورد‬
•
‫فایروال‬ ‫یک‬ ‫شاید‬
WAF
‫خوب‬
developer
‫فایروال‬ ‫اینکه‬ ‫فرض‬ .‫آورند‬ ‫بعمل‬ ‫را‬ ‫الزم‬ ‫دقت‬ ‫امنیتی‬ ‫موارد‬ ‫در‬ ‫کمتر‬ ‫تا‬ ‫دهد‬ ‫فریب‬ ‫را‬ ‫ها‬
.‫شود‬ ‫اپلیکیشن‬ ‫در‬ ‫‌ها‬
‫ی‬‫‌پذیر‬
‫ب‬‫آسی‬ ‫از‬ ‫بیشتری‬ ‫تعداد‬ ‫به‬ ‫منجر‬ ‫است‬ ‫ممکن‬ ‫حتی‬ ،‫کند‬ ‫می‬ ‫فراهم‬ ‫را‬ ‫الزم‬ ‫حفاظت‬
‫کانفیق‬ ‫ساختار‬
naxsi
‌
: ‫پرداخت‬ ‫خواهیم‬ ‫آن‬ ‫های‬ ‫ساختار‬ ‫بررسی‬ ‫به‬ ‫ما‬ ‫که‬ ‫میباشد‬ ‫زیر‬ ‫صورت‬ ‫به‬ ‫کلی‬ ‫صورت‬ ‫به‬
‫نکسی‬ ‫در‬ ‫ما‬
۲
‫حالت‬
learning mode
‫‌و‬
normal
‌
: ‫داریم‬ ‫را‬
‫هدایت‬ ‫آنها‬ ‫کردن‬ ‫مسدود‬ ‫جای‬ ‫به‬ ‫را‬ ‫‌ها‬
‫ت‬‫درخواس‬ ‫ما‬ ‫که‬ ‫آنجایی‬ ‫از‬ .‫شوند‬ ‫می‬ ‫هدایت‬ ‫خاصی‬ ‫مکان‬ ‫به‬ ‫مخرب‬ ‫های‬ ‫درخواست‬ :‫عادی‬ ‫حالت‬
.‫بازگردانیم‬ ،‫‌کند‬
‫ی‬‫م‬ ‫ارائه‬ ‫را‬ ‫خطا‬ ‫پیام‬ ‫که‬ ‫را‬ ‫ثابت‬ ‫وب‬ ‫صفحه‬ ‫یک‬ ‫‌توانیم‬
‫ی‬‫م‬ ،‫‌کنیم‬
‫ی‬‫م‬
.‫شوند‬ ‫می‬ ‫پردازش‬ ‫برنامه‬ ‫توسط‬ ‫همچنان‬ ‫اما‬ ،‫شوند‬ ‫می‬ ‫کپی‬ ‫خاص‬ ‫مکان‬ ‫یک‬ ‫در‬ ‫مخرب‬ ‫های‬ ‫درخواست‬ :‫یادگیری‬ ‫حالت‬
: ‫نکته‬
‫با‬ ‫که‬ ‫هنگامی‬
LearningMode
.‫شود‬ ‫می‬ ‫پیکربندی‬
naxsi
‫مسدود‬ ‫را‬ ‫اقدامی‬ ‫هیچ‬ ‫اما‬ ،‫کند‬ ‫می‬ ‫ثبت‬ ‫را‬ ‫شده‬ ‫شناسایی‬ ‫حمالت‬
. ‫‌کند‬
‫ی‬‫نم‬
.‫است‬ ‫مفید‬ ‫بسیار‬ ‫سفید‬ ‫لیست‬ ‫خودکار‬ ‫تولید‬ ‫برای‬ ‫آزمایشی‬/‫‌ای‬
‫ه‬‫مرحل‬ ‫‌های‬
‫ط‬‫محی‬ ‫یا‬ ‫جدید‬ ‫‌های‬
‫ه‬‫برنام‬ ‫برای‬ ‫این‬
Learning-Mode
‫را‬ ‫شما‬
‫یک‬ ‫تا‬ ‫سازد‬ ‫می‬ ‫قادر‬
naxsi-setup
‫برنامه‬ ‫برای‬ ‫و‬ ‫بگیرید‬ ‫یاد‬ ‫درخواستی‬ ‫هیچ‬ ‫کردن‬ ‫مسدود‬ ‫بدون‬ ‫شده‬ ‫شناسایی‬ ‫رویدادهای‬ ‫از‬ ‫و‬ ‫کنید‬ ‫اجرا‬ ‫را‬
‫وب‬ ‫تحت‬ ‫های‬
. ‫کنید‬ ‫استفاده‬ ‫خود‬
‫اسکریپت‬ ‫توسط‬ ‫را‬ ‫ایجاد‬ ‫برای‬ ‫الزم‬ ‫‌ها‬
‫م‬‫اقدا‬ ‫و‬ ‫کنیم‬ ‫رصد‬ ‫را‬ ‫حمالت‬ ‫که‬ ‫میگذارد‬ ‫ما‬ ‫اختیار‬ ‫در‬ ‫را‬ ‫امکان‬ ‫این‬ ‫قابلیت‬ ‫این‬
nxtools-ng
. ‫کنیم‬ ‫‌سازی‬
‫ه‬‫پیاد‬
‫بررسی‬ ‫مورد‬ ‫را‬ ‫ها‬ ‫رول‬ ‫از‬ ‫نمونه‬ ‫چند‬ ‫اینجا‬ ‫در‬ . ‫کنیم‬ ‫سازی‬ ‫سفارشی‬ ‫و‬ ‫ایجاد‬ ‫خود‬ ‫برنامه‬ ‫به‬ ‫نسبت‬ ‫هایی‬ ‫ساختار‬ ‫و‬ ‫ها‬ ‫رول‬ ‫که‬ ‫داریم‬ ‫نیاز‬ ‫ما‬
. ‫میدهیم‬ ‫قرار‬
# WordPress naxsi rules
### HEADERS
BasicRule wl:1000,1001,1005,1007,1010,1011,1013,1100,1101,1200,1308,1309,1310,1311,1315 "mz:$HEADERS_VAR:cookie";
# xmlrpc
BasicRule wl:1402 "mz:$HEADERS_VAR:content-type";
### simple BODY (POST)
BasicRule wl:1001,1015,1009,1311,1310,1101,1016 "mz:$URL:/|$BODY_VAR:customized";
# comments
BasicRule wl:1000,1010,1011,1013,1015,1200,1310,1311 "mz:$BODY_VAR:post_title";
BasicRule wl:1000 "mz:$BODY_VAR:original_publish";
BasicRule wl:1000 "mz:$BODY_VAR:save";
BasicRule wl:1008,1010,1011,1013,1015 "mz:$BODY_VAR:sk2_my_js_payload";
BasicRule wl:1001,1009,1005,1016,1100,1101,1310 "mz:$BODY_VAR:url";
BasicRule wl:1009,1100,1101 "mz:$BODY_VAR:referredby";
BasicRule wl:1009,1100,1101 "mz:$BODY_VAR:_wp_original_http_referer";
BasicRule wl:1000,1001,1005,1008,1007,1009,1010,1011,1013,1015,1016,1100,1101,1200,1302,1303,1310,1311,1315,1400 "mz:
$BODY_VAR:comment";
BasicRule wl:1100,1101 "mz:$BODY_VAR:redirect_to";
BasicRule wl:1000,1009,1315 "mz:$BODY_VAR:_wp_http_referer";
BasicRule wl:1000 "mz:$BODY_VAR:action";
BasicRule wl:1001,1013 "mz:$BODY_VAR:blogname";
BasicRule wl:1015,1013 "mz:$BODY_VAR:blogdescription";
BasicRule wl:1015 "mz:$BODY_VAR:date_format_custom";
BasicRule wl:1015 "mz:$BODY_VAR:date_format";
BasicRule wl:1015 "mz:$BODY_VAR:tax_input%5bpost_tag%5d";
BasicRule wl:1015 "mz:$BODY_VAR:tax_input[post_tag]";
BasicRule wl:1100,1101 "mz:$BODY_VAR:siteurl";
BasicRule wl:1100,1101 "mz:$BODY_VAR:home";
BasicRule wl:1000,1015 "mz:$BODY_VAR:submit";
# news content matches pretty much everything
BasicRule wl:0 "mz:$BODY_VAR:content";
BasicRule wl:1000 "mz:$BODY_VAR:delete_option";
BasicRule wl:1000 "mz:$BODY_VAR:prowl-msg-message";
BasicRule wl:1100,1101 "mz:$BODY_VAR:_url";
BasicRule wl:1001,1009 "mz:$BODY_VAR:c2c_text_replace%5btext_to_replace%5d";
BasicRule wl:1200 "mz:$BODY_VAR:ppn_post_note";
BasicRule wl:1100,1101 "mz:$BODY_VAR:author";
BasicRule wl:1001,1015 "mz:$BODY_VAR:excerpt";
BasicRule wl:1015 "mz:$BODY_VAR:catslist";
BasicRule wl:1005,1008,1009,1010,1011,1015,1315 "mz:$BODY_VAR:cookie";
BasicRule wl:1101 "mz:$BODY_VAR:googleplus";
BasicRule wl:1007 "mz:$BODY_VAR:name";
BasicRule wl:1007 "mz:$BODY_VAR:action";
BasicRule wl:1100,1101 "mz:$BODY_VAR:attachment%5burl%5d";
BasicRule wl:1100,1101 "mz:$BODY_VAR:attachment_url";
BasicRule wl:1001,1009,1100,1101,1302,1303,1310,1311 "mz:$BODY_VAR:html";
BasicRule wl:1015 "mz:$BODY_VAR:title";
BasicRule wl:1001,1009,1015 "mz:$BODY_VAR:recaptcha_challenge_field";
BasicRule wl:1011 "mz:$BODY_VAR:pwd";
BasicRule wl:1000 "mz:$BODY_VAR:excerpt";
### BODY|NAME
BasicRule wl:1000 "mz:$BODY_VAR:delete_option|NAME";
BasicRule wl:1000 "mz:$BODY_VAR:from|NAME";
### Simple ARGS (GET)
# WP login screen
BasicRule wl:1100,1101 "mz:$ARGS_VAR:redirect_to";
BasicRule wl:1000,1009 "mz:$ARGS_VAR:_wp_http_referer";
BasicRule wl:1000 "mz:$ARGS_VAR:wp_http_referer";
BasicRule wl:1000 "mz:$ARGS_VAR:action";
BasicRule wl:1000 "mz:$ARGS_VAR:action2";
# load and load[] GET variable
BasicRule wl:1000,1015 "mz:$ARGS_VAR:load";
BasicRule wl:1000,1015 "mz:$ARGS_VAR:load[]";
BasicRule wl:1015 "mz:$ARGS_VAR:q";
BasicRule wl:1000,1015 "mz:$ARGS_VAR:load%5b%5d";
### URL
BasicRule wl:1000 "mz:URL|$URL:/wp-admin/update-core.php";
BasicRule wl:1000 "mz:URL|$URL:/wp-admin/update.php";
BasicRule wl:1000 "mz:$URL:/wp-includes/js/imgareaselect/imgareaselect.css|URL";
BasicRule wl:1002 "mz:$URL_X:/wp-content/uploads/[0-9]{4}/[0-9]{2}/[^/]+.jpg$|URL";
# URL|ARGS
BasicRule wl:1015 "mz:$URL:/wp-admin/load-styles.php|$ARGS_VAR:dashicons,admin-bar,wp-admin,buttons,wp-auth-check";
BasicRule wl:1000 "mz:$URL:/wp-admin/about.php|$ARGS_VAR:updated";
BasicRule wl:1009 "mz:$URL:/wp-admin/customize.php|$ARGS_VAR:return";
# URL|BODY
BasicRule wl:1009,1100,1101 "mz:$URL:/wp-admin/post.php|$BODY_VAR:_wp_http_referer";
BasicRule wl:1016 "mz:$URL:/wp-admin/post.php|$BODY_VAR:metakeyselect";
BasicRule wl:11 "mz:$URL:/xmlrpc.php|BODY";
BasicRule wl:11,16 "mz:$URL:/wp-cron.php|BODY";
BasicRule wl:2 "mz:$URL:/wp-admin/async-upload.php|BODY";
# URL|BODY|NAME
BasicRule wl:1100,1101 "mz:$URL:/wp-admin/post.php|$BODY_VAR:_wp_original_http_referer|NAME";
BasicRule wl:1000 "mz:$URL:/wp-admin/post.php|$BODY_VAR:metakeyselect|NAME";
BasicRule wl:1000 "mz:$URL:/wp-admin/user-edit.php|$BODY_VAR:from|NAME";
BasicRule wl:1100,1101 "mz:$URL:/wp-admin/admin-ajax.php|$BODY_VAR:attachment%5burl%5d|NAME";
BasicRule wl:1100,1101 "mz:$URL:/wp-admin/post.php|$BODY_VAR:attachment_url|NAME";
BasicRule wl:1000 "mz:$URL:/wp-admin/plugins.php|$BODY_VAR:verify-delete|NAME";
BasicRule wl:1310,1311 "mz:$URL:/wp-admin/post.php|$BODY_VAR:post_category[]|NAME";
BasicRule wl:1311 "mz:$URL:/wp-admin/post.php|$BODY_VAR:post_category|NAME";
BasicRule wl:1310,1311 "mz:$URL:/wp-admin/post.php|$BODY_VAR:tax_input[post_tag]|NAME";
BasicRule wl:1310,1311 "mz:$URL:/wp-admin/post.php|$BODY_VAR:newtag[post_tag]|NAME";
BasicRule wl:1310,1311 "mz:$URL:/wp-admin/users.php|$BODY_VAR:users[]|NAME";
BasicRule wl:1000 "mz:$URL:/wp-admin/update-core.php|$BODY_VAR:Update%2BTranslations|NAME";
BasicRule wl:1000 "mz:$URL:/wp-admin/update-core.php|$BODY_VAR:Update%2BNow|NAME";
# URL|ARGS|NAME
BasicRule wl:1310,1311 "mz:$URL:/wp-admin/load-scripts.php|$ARGS_VAR:load[]|NAME";
BasicRule wl:1000 "mz:$URL:/wp-admin/users.php|$ARGS_VAR:delete_count|NAME";
BasicRule wl:1000 "mz:$URL:/wp-admin/users.php|$ARGS_VAR:update|NAME";
BasicRule wl:1310,1311 "mz:$URL:/wp-admin/customize.php|$ARGS_VAR:autofocus[control]|NAME";
# plain WP site
BasicRule wl:1000 "mz:URL|$URL:/wp-admin/update-core.php";
BasicRule wl:1000 "mz:URL|$URL:/wp-admin/update.php";
# URL|BODY
BasicRule wl:1009,1100,1101 "mz:$URL:/wp-admin/post.php|$BODY_VAR:_wp_http_referer";
BasicRule wl:1016 "mz:$URL:/wp-admin/post.php|$BODY_VAR:metakeyselect";
BasicRule wl:11 "mz:$URL:/xmlrpc.php|BODY";
BasicRule wl:11,16 "mz:$URL:/wp-cron.php|BODY";
# URL|BODY|NAME
BasicRule wl:1100,1101 "mz:$URL:/wp-admin/post.php|$BODY_VAR:_wp_original_http_referer|NAME";
BasicRule wl:1000 "mz:$URL:/wp-admin/post.php|$BODY_VAR:metakeyselect|NAME";
BasicRule wl:1000 "mz:$URL:/wp-admin/user-edit.php|$BODY_VAR:from|NAME";
BasicRule wl:1100,1101 "mz:$URL:/wp-admin/admin-ajax.php|$BODY_VAR:attachment%5burl%5d|NAME";
BasicRule wl:1310,1311 "mz:$URL:/wp-admin/admin-ajax.php|$BODY_VAR:data[wp-auth-check]|NAME";
BasicRule wl:1310,1311 "mz:$URL:/wp-admin/admin-ajax.php|$BODY_VAR:data[wp-check-locked-posts][]|NAME";
BasicRule wl:1310,1311 "mz:$URL:/wp-admin/admin-ajax.php|$BODY_VAR:data[wp-refresh-post-lock][post_id]|NAME";
BasicRule wl:1310,1311 "mz:$URL:/wp-admin/admin-ajax.php|$BODY_VAR:data[wp-refresh-post-lock][lock]|NAME";
BasicRule wl:1310,1311 "mz:$URL:/wp-admin/update-core.php|$BODY_VAR:checked[]|NAME";
# URL|ARGS|NAME
BasicRule wl:1310,1311 "mz:$URL:/wp-admin/load-scripts.php|$ARGS_VAR:load[]|NAME";
BasicRule wl:1000 "mz:$URL:/wp-admin/users.php|$ARGS_VAR:delete_count|NAME";
BasicRule wl:1000 "mz:$URL:/wp-admin/users.php|$ARGS_VAR:update|NAME";
### Plugins
#WP Minify
BasicRule wl:1015 "mz:$URL:/wp-content/plugins/bwp-minify/min/|$ARGS_VAR:f";
#Jetpack Infinite Scroll
BasicRule wl:1310,1311 "mz:$BODY_VAR:scripts[]|NAME";
BasicRule wl:1310,1311 "mz:$BODY_VAR:styles[]|NAME";
BasicRule wl:1310,1311 "mz:$BODY_VAR_X:^query_args[.*]|NAME";
BasicRule wl:1000 "mz:$BODY_VAR:query_args[update_post_term_cache]|NAME";
BasicRule wl:1000 "mz:$BODY_VAR:query_args[update_post_meta_cache]|NAME";
#UpdraftPlus
BasicRule wl:1000 "mz:$URL:/wp-content/plugins/updraftplus/includes/select2/select2.min.css|URL";
BasicRule wl:1000 "mz:$URL:/wp-content/plugins/updraftplus/includes/select2/select2.min.js|URL";
#WP plugin updates
BasicRule wl:1315 "mz:$ARGS_VAR:query|$URL:/wp-json/jetpack/v4/jitm";
#Jetpack Google Fonts
BasicRule wl:1001 "mz:$URL_X:^/wp-content/plugins/jetpack/css/.*|URL";
#WooCommerce
BasicRule wl:1000 "mz:$URL:/wp-content/plugins/woocommerce/assets/js/select2/select2.full.min.js|URL";
BasicRule wl:1000 "mz:$URL:/wp-content/plugins/woocommerce/assets/js/selectWoo/selectWoo.full.min.js|URL";
BasicRule wl:1000 "mz:$URL:/wp-content/plugins/woocommerce/assets/js/stupidtable/stupidtable.min.js|URL";
#WPML
BasicRule wl:1000 "mz:$URL:/wp-content/plugins/sitepress-multilingual-cms/lib/select2/select2.min.js|URL";
#Yoast SEO
BasicRule wl:1000 "mz:$URL:/wp-content/plugins/wordpress-seo/js/dist/select2/select2.full.min.js|URL";
BasicRule wl:1000 "mz:$URL:/wp-content/plugins/wordpress-seo/css/dist/select2/select2.min.css|URL";
: ‫ها‬ ‫اسکن‬ ‫از‬ ‫بلوک‬ ‫و‬ ‫جلوگیری‬ ‫برای‬ ‫رول‬ ‫نمونه‬ ‫برای‬
MainRule "str:havij" "msg:Havij-SQL_scanner" "mz:$HEADERS_VAR:User-Agent" "s:$UWA:8" id:42000312 ;
MainRule "str:http://http://" "msg:Abnormal double http:// in HTTP header," "mz:HEADERS" "s:$UWA:8" id:42000310 ;
# http://pastebin.com/NP64hTQr# http://blog.initiative-s.de/2013/09/kompromitierte-wordpress-blogs-werden-fuer-
ddos-attacken-genutzt/
# If using wp then turn off this rule
MainRule "str:wordpress/" "msg:Wordpress-UA, probably Botnet-Attack" "mz:$HEADERS_VAR:User-Agent" "s:$UWA:8"
id:42000317 ;
# https://github.com/robertdavidgraham/masscan
MainRule "str:masscan/" "msg:MASSCAN - UA Detected" "mz:$HEADERS_VAR:User-Agent" "s:$UWA:8" id:42000326 ;
# sensepost Wiko/Nikto-Clone filescan
MainRule "str:sensepostnotthere" "msg:SensePost Wikto-Scanner" "mz:URL" "s:$ATTACK:8" id:42000452 ;
# block acunetix scan
MainRule "str:99999999999999999999999" "msg:acunetix scan nginx buffer size " "mz:$HEADERS_VAR:Content-length"
"s:$UWA:8" id:42001326 ;
MainRule "str:acunetix" "msg:acunetix scan website " "mz:URL|BODY|$HEADERS_VAR:Accept|$HEADERS_VAR:User-
Agent" "s:$UWA:8" id:42001327 ;
MainRule "str:acunetix/wvs" "msg:acunetix scan website " "mz:$HEADERS_VAR:Accept" "s:$UWA:8" id:42001328 ;
MainRule "str:webmole" "msg:Scanner webmole" "mz:$HEADERS_VAR:User-Agent" "s:$UWA:8" id:42000159 ;
MainRule "str:nlpproject.info" "msg:Some Scanner nlpproject.info" "mz:$HEADERS_VAR:User-Agent" "s:$ATTACK:8"
id:42000454 ;
MainRule "str:cloudmapping" "msg:Cloud-Mapping-Scanner" "mz:$HEADERS_VAR:User-Agent" "s:$ATTACK:8"
id:42000453 ;
MainRule "str:sucuri" "msg:Sucuri Vulnerability Scaner" "mz:$HEADERS_VAR:User-Agent" "s:$UWA:8" id:42000364 ;
MainRule "str:brutus/" "msg:Brutus - Scanner" "mz:$HEADERS_VAR:User-Agent" "s:$UWA:8" id:42000258 ;
MainRule "str:/phpmyadmin" "msg:PHPMyAdmin - Scanner (2) " "mz:URL" "s:$UWA:8" id:42000244 ;
MainRule "str:/pma" "msg:PHPMyAdmin - Scanner" "mz:URL" "s:$UWA:8" id:42000243 ;
MainRule "str:/phppgadmin " "msg:PHPPgAdmin - Scanner" "mz:URL" "s:$UWA:8" id:42000242 ;
MainRule "str:/mysqldumper " "msg:MysqlDumper - Scanner " "mz:URL" "s:$UWA:8" id:42000241 ;
MainRule "str:apachebench" "msg:AB - ApacheBenchmark-Tool detected" "mz:$HEADERS_VAR:User-Agent" "s:$UWA:4"
id:42000240 ;
MainRule "str:/netsparker" "msg:Netsparker-Scan in Progress" "mz:URL" "s:$UWA:8" id:42000202 ;
MainRule "str:sqlmap" "msg:Scanner sqlmap sql injection" "mz:$HEADERS_VAR:User-Agent" "s:$UWA:8" id:42000203 ;
MainRule "str:mysqloit" "msg:Scanner Mysqloit - Mysql Injection Takover Tool" "mz:$HEADERS_VAR:User-Agent" "s:
$UWA:8" id:42000200 ;
MainRule "str:network-services-auditor" "msg:Scanner IBM NSA User Agent" "mz:$HEADERS_VAR:User-Agent" "s:
$UWA:8" id:42000198 ;
MainRule "str:dav.pm" "msg:Scanner DavTest WebDav Vulnerability Scanner" "mz:$HEADERS_VAR:User-Agent" "s:
$UWA:8" id:42000194 ;
MainRule "str:w3af" "msg:Scanner w3af" "mz:$HEADERS_VAR:User-Agent" "s:$UWA:8" id:42000178 ;
MainRule "str:http_get_vars" "msg:PHP-Injetion on UA" "mz:$HEADERS_VAR:User-Agent" "s:$ATTACK:8" id:42000174 ;
MainRule "str:whisker" "msg:Scanner whisker" "mz:$HEADERS_VAR:User-Agent" "s:$UWA:8" id:42000171 ;
MainRule "str:whatweb" "msg:Scanner whatweb" "mz:$HEADERS_VAR:User-Agent" "s:$UWA:8" id:42000151 ;
MainRule "str:dirbuster" "msg:DirBuster Web App Scan in Progress" "mz:$HEADERS_VAR:User-Agent" "s:
$ATTACK:8,$UWA:8" id:42000036 ;
MainRule "str:gzinflate(" "msg:gzinflate in URI" "mz:URL|BODY|ARGS" "s:$UWA:8" id:42000259 ;
MainRule "str:/bin/sh" "msg:/bin/sh in URI" "mz:URL|BODY|ARGS|$HEADERS_VAR:User-Agent|$HEADERS_VAR:Cookie"
"s:$UWA:8" id:42000257 ;
MainRule "str:.conf" "msg:possible CONF-File - Access" "mz:URL" "s:$UWA:8" id:42000252 ;
MainRule "str:.ini" "msg:possible INI - File - Access" "mz:URL" "s:$UWA:8" id:42000254 ;
MainRule "str:/sftp-config.json" "msg:SFTP-config-file access" "mz:URL|BODY" "s:$ATTACK:8,$UWA:8" id:42000084 ;
# https://www.bleepingcomputer.com/news/security/phps-git-server-hacked-to-add-backdoors-to-php-source-code/
# https://github.com/php/php-src/commit/c730aa26bd52829a49f2ad284b181b7e82a68d7d#diff-
a35f2ee9e1d2d3983a3270ee10ec70bf86349c53febdeabdf104f88cb2167961R370
# prevent php supply chain attack
MainRule "str:zerodium" "msg:php supply chain attack " "mz:$HEADERS_VAR:User-Agent" "s:$UWA:8" id:42000085 ;
# prevent log4j attack
# info https://www.govcert.ch/blog/zero-day-exploit-targeting-popular-java-library-log4j/
# payload check https://github.com/johto89/Some-collections-for-Security-Researcher/blob/master/log4j-all-in-one.md
MainRule "str:${" "msg:log4j attack detection " "mz:$HEADERS_VAR:User-Agent" "s:$UWA:8" id:42000086;
‌
: ‫میباشد‬ ‫زیر‬ ‫صورت‬ ‫هابه‬ ‫رول‬ ‫ساختار‬ ‫اما‬ ‫و‬
' ‫رشته‬ ‫حاوی‬ ‫درخواستی‬ ‫هر‬ ‫یعنی‬ .‫هستند‬ ‫حمالت‬ ‫شناسایی‬ ‫برای‬ ‫درخواست‬ ‫از‬ ‫‌هایی‬
‫ش‬‫بخ‬ ‫در‬ ‫الگوها‬ ‫جستجوی‬ ‫برای‬ ‫قوانین‬
zz
‫هر‬ ‫در‬ ‫را‬ '
‫آرگومان‬
GET
‫یا‬
POST
: ‫میباشد‬
MainRule id:424242 "str:zz" "mz:ARGS|BODY" "s:DROP";
MainRule "str:/phpmyadmin" "msg:PHPMyAdmin - Scanner (2) " "mz:URL" "s:$UWA:8" id:42000244 ;
‫مثال‬ ‫برای‬ . ‫شود‬ ‫استفاده‬ ‫هم‬ ‫هم‬ ‫در‬ ‫بصورت‬ ‫ساختار‬ ‫میتواند‬ :‫نکته‬
id
. ‫باشد‬ ‫آخر‬ ‫یا‬ ‫اول‬ ‫‌در‬
( ‫مکان‬ ‫سطح‬ ‫در‬ ‫توانند‬ ‫می‬ ‫قوانین‬
BasicRule
‫سطح‬ ‫در‬ ‫یا‬ )
http (MainRule)
‫قوانین‬ .‫باشند‬ ‫داشته‬ ‫وجود‬
‫مثل‬
‫طرح‬
‫باال‬
. ‫هستند‬
ID (id:...)
id:num
‫در‬ ‫که‬ ‫است‬ ‫قانون‬ ‫‌فرد‬
‫ه‬‫منحصرب‬ ‫عددی‬ ‫شناسه‬
NAXSI_FMT
‫از‬ ‫کمتر‬ ‫های‬ ‫شناسه‬ .‫‌شود‬
‫ی‬‫م‬ ‫استفاده‬ ‫سفید‬ ‫‌های‬
‫ت‬‫لیس‬ ‫یا‬
1000
‫داخلی‬ ‫قوانین‬ ‫برای‬
naxsi
. ‫میباشد‬
‌
: ‫میباشند‬ ‫زیر‬ ‫الگوهای‬ ‫براساس‬ ‫و‬
‫الگو‬
‫بصورت‬
regex
‌
: ‫است‬ ‫‌سازی‬
‫ه‬‫پیاد‬ ‫قابل‬
• rx:foo|bar : will match foo or bar
• str:foo|bar : will match foo|bar
• d:libinj_xss : will match if libinjection says it's XSS (>= 0.55rc2)
• d:libinj_sql : will match if libinjection says it's SQLi (>= 0.55rc2)
‫الگو‬ ‫زیرا‬ ،‫باشند‬ ‫کوچک‬ ‫حروف‬ ‫با‬ ‫باید‬ ‫‌ها‬
‫ه‬‫رشت‬ ‫همه‬ .‫است‬ ‫سریعتر‬ ‫بسیار‬ ‫زیرا‬ ،‫شود‬ ‫می‬ ‫توصیه‬ ‫امکان‬ ‫صورت‬ ‫در‬ ‫ساده‬ ‫رشته‬ ‫تطابق‬ ‫از‬ ‫استفاده‬
‫های‬
naxsi
.‫هستند‬ ‫حساس‬ ‫کوچک‬ ‫و‬ ‫بزرگ‬ ‫حروف‬ ‫به‬
Score (s:...)
s
:‫کنید‬ ‫ایجاد‬ »‫‌شده‬
‫ی‬‫‌گذار‬
‫م‬‫«نا‬ ‫‌های‬
‫ه‬‫شمارند‬ ‫‌توانید‬
‫ی‬‫م‬ .‫است‬ ‫امتیاز‬ ‫بخش‬
s:$FOOBAR:4
$ ‫مقدار‬
FOOBAR
‫را‬ ‫شمارنده‬
4
‫افزایش‬
:‫دهد‬ ‫افزایش‬ ‫را‬ ‫امتیاز‬ ‫چندین‬ ‫‌تواند‬
‫ی‬‫م‬ ‫قانون‬ ‫یک‬ .‫‌دهد‬
‫ی‬‫م‬
s:$FOO:4،$BAR:8
$ ‫هم‬
FOO
‫را‬
4
.‫‌دهد‬
‫ی‬‫م‬ ‫افزایش‬ $ ‫هم‬ ‫و‬
BAR
‫توسط‬
8
.
‫مانند‬ ‫کند‬ ‫مشخص‬ ‫را‬ ‫عمل‬ ‫یک‬ ً‫ا‬‫مستقیم‬ ‫تواند‬ ‫می‬ ‫همچنین‬ ‫قانون‬ ‫یک‬
BLOCK
‫یا‬ )‫کند‬ ‫می‬ ‫مسدود‬ ‫یادگیری‬ ‫غیر‬ ‫حالت‬ ‫در‬ ‫را‬ ‫(درخواست‬
DROP
‫توسط‬ ً‫ا‬‫بعد‬ ‫شده‬ ‫نامگذاری‬ ‫امتیازهای‬ )‫کند‬ ‫می‬ ‫مسدود‬ ‫یادگیری‬ ‫حالت‬ ‫در‬ ‫حتی‬ ‫را‬ ‫(درخواست‬
CheckRules
.‫شوند‬ ‫می‬ ‫مدیریت‬
‫واما‬
CheckRules
‌
:
CheckRules
‫به‬
naxsi
( ‫اقدامی‬ ،‫درخواست‬ ‫با‬ ‫مرتبط‬ ‫خاص‬ ‫امتیاز‬ ‫یک‬ ‫اساس‬ ‫بر‬ ‫تا‬ ‫دهد‬ ‫می‬ ‫دستور‬
LOG، BLOCK، DROP، ALLOW
)
.‫شود‬ ‫می‬ ‫تعیین‬ ‫قانون‬ ‫چند‬ ‫یا‬ ‫یک‬ ‫توسط‬ ً‫ال‬‫معمو‬ ‫امتیاز‬ ‫این‬ .‫دهد‬ ‫انجام‬
‫یک‬
CheckRule
‫معمولی‬
‫صورت‬ ‫این‬ ‫به‬
:‫است‬
CheckRule "$SQL >= 8" BLOCK;
$ ‫اگر‬
SQL
‫یا‬ ‫برابر‬
‫بزرگتر‬
' ‫از‬
8
'
‫باشد‬
‫پرچم‬ ،
BLOCK
‫اعمال‬ ‫درخواست‬ ‫روی‬ ‫را‬
‫میکند‬
‫که‬ ‫شود‬ ‫می‬ ‫مسدود‬ ‫صورتی‬ ‫در‬ ‫فقط‬ ‫درخواست‬ .
.‫نباشد‬ ‫یادگیری‬ ‫حالت‬ ‫در‬ ‫مکان‬
‫استفاده‬ ‫موارد‬ ‫سایر‬
CheckRule
‫مجازی‬ ‫وصله‬ ‫ترکیبی‬ ‫پیکربندی‬ ‫یک‬ ‫داشتن‬ ‫با‬ .‫شود‬ ‫استفاده‬ ‫سیاه‬ ‫و‬ ‫سفید‬ ‫های‬ ‫لیست‬ ‫ترکیب‬ ‫برای‬ ‫تواند‬ ‫می‬ ‫همچنین‬ )‫(های‬
‫و‬
naxsi_core.rules
: ‫باشد‬ ‫صورت‬ ‫این‬ ‫به‬ ‫ممکن‬ ،
CheckRule "$UWA >= 4" DROP;
CheckRule "$XSS >= 8" BLOCK;
$ ‫امتیاز‬ ‫با‬ ‫درخواستی‬ ‫هر‬ - ‫یادگیری‬ ‫حالت‬ ‫در‬ ‫حتی‬ - ‫بنابراین‬
UWA
‫با‬ ‫برابر‬
4
‫‌های‬
‫ت‬‫درخواس‬ ‫که‬ ‫حالی‬ ‫در‬ ،‫‌کند‬
‫ی‬‫م‬ ‫مسدود‬ ‫را‬ ‫‌ها‬
‫ت‬‫درخواس‬
‫امتیاز‬ ‫دارای‬
XSS
‫از‬ ‫باالتر‬ ‫(حتی‬ $
8
‫در‬ ‫فقط‬ )
location
.‫‌شوند‬
‫ی‬‫م‬ ‫مسدود‬ ‫یادگیری‬ ‫در‬ ‫نه‬ ‫و‬ )‫(ها‬
MatchZone (mz:...)
‌
: ‫شد‬ ‫آور‬ ‫یاد‬ ‫باید‬ ‫بحث‬ ‫شروع‬ ‫از‬ ‫قبل‬
Match Zones mz
‫باشد‬ ‫مجاز‬ ‫باید‬ ‫که‬ ‫جایی‬ ‫یا‬ )‫(قوانین‬ ‫الگو‬ ‫یک‬ ‫جستجوی‬ ‫محل‬ ‫تعیین‬ ‫برای‬ .‫دارد‬ ‫وجود‬ ‫سفید‬ ‫لیست‬ ‫و‬ ‫قوانین‬ ‫در‬
‫در‬ :‫‌کنند‬
‫ی‬‫م‬ ‫عمل‬ ‫متفاوت‬ ‫کمی‬ ‫سفید‬ ‫‌های‬
‫ت‬‫لیس‬ ‫و‬ ‫قوانین‬ ‫در‬ ‫مطابق‬ ‫مناطق‬ ‫که‬ ‫باشید‬ ‫داشته‬ ‫توجه‬ ً‫ا‬‫لطف‬ .‫شود‬ ‫می‬ ‫استفاده‬ )‫سفید‬ ‫(لیست‬
‫شرط‬ ‫هر‬ ،‫قوانین‬
OR
‫در‬ ‫مثال‬ ‫عنوان‬ ‫(به‬ ‫است‬
BODY
‫در‬ ‫یا‬
HEADERS
‫سفید‬ ‫لیست‬ ‫در‬ ‫که‬ ‫حالی‬ ‫در‬ ،)
AND
‫آدرس‬ ‫(یعنی‬ ‫است‬
/ ‫باید‬ ‫اینترنتی‬
foo
‫در‬ ‫باید‬ ‫استثنا‬ ‫و‬ ‫باشد‬
ARGS
)‫دهد‬ ‫رخ‬
‫جهانی‬ ‫مناطق‬
4
:‫دارد‬ ‫وجود‬ ‫اصلی‬ ‫منطقه‬
URL، ARGS، HEADERS، BODY
‫و‬ ،
matchzone
.‫باشند‬ ‫کننده‬ ‫محدود‬ ‫بیش‬ ‫و‬ ‫کم‬ ‫توانند‬ ‫می‬
mz
:‫باشد‬ ‫گسترده‬ ‫تواند‬ ‫می‬
ARGS
‫کنید‬ ‫دریافت‬ ‫را‬ ‫ارگ‬ :
‫های‬ ‫سرصفحه‬ :‫هدرها‬
HTTP
BODY : POST args
‫(و‬
RAW_BODY
)
URL
‫خود‬ :
URL
)»‫«؟‬ ‫از‬ ‫(قبل‬
:‫تر‬ ‫دقیق‬ ‫یا‬
$
ARGS_VAR:string
‫آرگومان‬ ‫نام‬ ‫با‬ :
GET
$
HEADERS_VAR:string
‫نام‬ ‫به‬ :
HTTP header
$
BODY_VAR:string
‫آرگومان‬ ‫نام‬ ‫با‬ :
POST
:)‫باشد‬ ‫متفاوت‬ ‫تواند‬ ‫می‬ ‫متغیرها‬ ‫نام‬ ‫(یعنی‬ ‫است‬ ‫نیاز‬ ‫مورد‬ ‫منظم‬ ‫عبارات‬ ،‫اوقات‬ ‫گاهی‬
$
HEADERS_VAR_X:regex: regex
‫عنوان‬ ‫با‬ ‫مطابق‬
HTTP
=>( ‫شده‬ ‫‌گذاری‬
‫م‬‫نا‬
0.52
)
$
ARGS_VAR_X:regex: regex
‫آرگومان‬ ‫یک‬ ‫نام‬ ‫با‬ ‫مطابق‬
GET (>= 0.52)
$
BODY_VAR_X:regex: regex
‫آرگومان‬ ‫نام‬ ‫با‬ ‫مطابق‬
POST (>= 0.52)
‫یک‬
Matchzone
‫یک‬ ‫به‬ ‫توان‬ ‫می‬ ‫را‬
URL
)‫نیست‬ ‫منطقه‬ ‫یک‬ ‫خود‬ ‫خودی‬ ‫به‬ ‫(اما‬ :‫کرد‬ ‫محدود‬ ‫خاص‬
$
URL:string
‫است‬ ‫اینترنتی‬ ‫آدرس‬ ‫این‬ ‫به‬ ‫محدود‬ :
$
URL_X:regex
‫به‬ ‫محدود‬ :
Regex
‫با‬ ‫مطابق‬
URL (>= 0.52)
‫که‬ ‫ای‬ ‫مسابقه‬ ‫منطقه‬
BODY،HEADERS،ARGS
| ‫تواند‬ ‫می‬ ،‫دهد‬ ‫می‬ ‫قرار‬ ‫هدف‬ ‫را‬
NAME
‫یک‬ ‫محتوای‬ ،‫کند‬ ‫اضافه‬ ‫هدف‬ ‫تعیین‬ ‫برای‬ ‫را‬
.‫است‬ ‫آن‬ ‫نام‬ ‫خود‬ ‫بلکه‬ ،‫نیست‬ ‫متغیر‬
‫نام‬ ‫شکل‬ ‫به‬ ] [ ‫سفید‬ ‫لیست‬ ‫مثال‬ ‫عنوان‬ ‫(به‬ ‫است‬ ‫مفید‬ ‫خاص‬ ‫های‬ ‫زمینه‬ ‫در‬
var
‫در‬
url /foo
)
BasicRule id:1310,1311 "mz:$URL:/foo|BODY|NAME
;"
:‫مطابقت‬ ‫مناطق‬ ،‫تر‬ ‫خاص‬
FILE_EXT
‫یک‬ ‫(در‬ ‫فایل‬ ‫نام‬ :
POST
)‫فایل‬ ‫یک‬ ‫حاوی‬ ‫قسمتی‬ ‫چند‬
RAW_BODY
‫از‬ ‫نشده‬ ‫تجزیه‬ ‫و‬ ‫خام‬ ‫نمایش‬ ‫یک‬ :
BODY
‫درخواست‬ ‫یک‬
http (>= 0.55rc0)
(‫مسابقه‬ ‫منطقه‬
Matchzone
)
Matchzone
‫یک‬ ‫با‬ ‫ناحیه‬ ‫چند‬ ‫یا‬ ‫یک‬ ‫از‬ ‫ترکیبی‬
URL
.‫است‬ ‫اختیاری‬
‫یک‬ ‫توان‬ ‫می‬ ‫و‬ ‫است‬ ‫بینی‬ ‫پیش‬ ‫قابل‬ ‫اینترنتی‬ ‫آدرس‬ ‫و‬ ‫متغیر‬ ‫نام‬ ،‫ها‬ ‫موقعیت‬ ‫بیشتر‬ ‫در‬
mz
:‫کرد‬ ‫ایجاد‬ ‫ثابت‬
‫که‬ ‫زمانی‬
regex
‌
: ‫هست‬ ‫‌نیاز‬
‫توانید‬ ‫نمی‬ ‫شما‬ :‫توجه‬
regex ($URL_X)
$( ‫استاتیک‬ ‫و‬
ARGS_VAR
.‫کنید‬ ‫ترکیب‬ ‫قانون‬ ‫یک‬ ‫در‬ ‫را‬ )
$
URL
$ ‫و‬
URL_X
‫یک‬ ‫محدوده‬ ‫کردن‬ ‫محدود‬ ‫برای‬ ‫فقط‬
matchzone
.‫‌کنند‬
‫ی‬‫نم‬ ‫مشخص‬ ‫را‬ ‫منطقه‬ ‫و‬ ‫‌شوند‬
‫ی‬‫م‬ ‫استفاده‬
‫دهد‬ ‫می‬ ‫قرار‬ ‫سفید‬ ‫لیست‬ ‫در‬ ‫را‬ ‫مسابقه‬ ‫مناطق‬
:‫شوند‬ ‫برآورده‬ ‫باید‬ ‫شرایط‬ ‫همه‬ ،‫سفید‬ ‫لیست‬ ‫زمینه‬ ‫در‬
BasicRule wl:X "mz:$ARGS_VAR:foo|$URL:/bar";
id X
‫متغیر‬ ‫سفید‬ ‫لیست‬ ‫در‬
GET 'foo
‫در‬ '
URL '/bar
‫دارد‬ ‫قرار‬ '
‫مسابقه‬ ‫مناطق‬ ‫قوانین‬
$ ،‫قوانین‬ ‫زمینه‬ ‫در‬
URL
$ ‫یا‬
URL_X
‫عنوان‬ ‫به‬ ‫دیگری‬ ‫شرایط‬ ‫هر‬ .‫شود‬ ‫برآورده‬ ‫باید‬ ‫وجود‬ ‫صورت‬ ‫در‬
OR
‫تلقی‬ )‫سفید‬ ‫لیست‬ ‫خالف‬ ‫(بر‬
.‫شود‬ ‫می‬
BasicRule str:Y id:X "mz:ARGS|BODY
' ‫الگوی‬ ;"
Y
‫استدالل‬ ‫هر‬ ‫با‬ '
GET
‫و‬
POST
‫داشت‬ ‫خواهد‬ ‫مطابقت‬
BasicRule str:Y id:X "mz:ARGS|BODY|$URL:/foo
‫که‬ ‫زمانی‬ ‫تا‬ ;"
URL /foo
' ‫الگوی‬ ،‫باشد‬
Y
‫استدالل‬ ‫هر‬ ‫با‬ '
GET
‫و‬
POST
‫دارد‬ ‫مطابقت‬
Regex
‫رشته‬ ‫مقابل‬ ‫در‬
Matchzones
‫از‬ ‫متشکل‬
Matchzones
_*$( ‫ایستا‬
VAR: $URL
‫در‬ ):
hashtable
.‫است‬ ‫بهینه‬ ‫بنابراین‬ ‫و‬ ‫شود‬ ‫می‬ ‫ذخیره‬ ‫ها‬
‫مسابقه‬ ‫مناطق‬
Regex ($*_VAR_X: $URL_X:)
‫اختالط‬ ‫امکان‬ .‫دارند‬ ‫نیاز‬ ‫بیشتری‬ ‫اجرا‬ ‫زمان‬ ‫پردازش‬ ‫به‬
static
‫و‬
regex
matchzone
:‫ندارد‬ ‫وجود‬ ‫سفید‬ ‫لیست‬/‫قانون‬ ‫یک‬ ‫در‬
mz:$ARGS_VAR_X:^foo$|$URL:/x ‫یا‬ mz:$URL_X:/foo|$ARGS_VAR:x
. ‫است‬ ‫اشتباه‬
‌
: ‫ادامه‬ ‫در‬
mz
.‫شود‬ ‫می‬ ‫بازرسی‬ ‫قانون‬ ‫توسط‬ ‫درخواست‬ ‫از‬ ‫قسمت‬ ‫کدام‬ ‫کند‬ ‫می‬ ‫تعیین‬ ‫که‬ ‫است‬ ‫تطبیق‬ ‫منطقه‬
$ ‫جز‬ ‫به‬ ‫مطابق‬ ‫مناطق‬ ‫همه‬ ،‫قوانین‬ ‫در‬
URL
‫شرایط‬ ‫عنوان‬ ‫به‬ :*
OR
:‫شوند‬ ‫می‬ ‫تلقی‬
MainRule id:4242 str:z "mz:$ARGS_VAR:X|BODY";
' ‫الگوی‬
z
‫در‬ '
GET var 'X
‫متغیرهای‬ ‫همه‬ ‫و‬ '
BODY
.‫شود‬ ‫می‬ ‫جستجو‬
MainRule id:4242 str:z "mz:$ARGS_VAR:X|BODY|$URL_X:^/foo";
' ‫الگوی‬
z
‫در‬ '
GET var 'X
‫متغیرهای‬ ‫همه‬ ‫و‬ '
BODY
‫که‬ ‫زمانی‬ ‫تا‬
URL
/ ‫با‬
foo
.‫شود‬ ‫می‬ ‫جستجو‬ ‫شود‬ ‫شروع‬
‫ورژن‬ ‫از‬
naxsi 0.55rc0
‫مطابقت‬ ‫منطقه‬ ‫از‬ ‫‌توانید‬
‫ی‬‫م‬ ،‫ناشناخته‬ ‫محتوای‬ ‫انواع‬ ‫برای‬ ،
RAW_BODY
‫قوانین‬ .‫کنید‬ ‫استفاده‬
RAW_BODY
:‫است‬ ‫صورت‬ ‫این‬ ‫به‬
MainRule id:4241 s:DROP str:RANDOMTHINGS mz:RAW_BODY;
‫منطقه‬ ‫در‬ ‫قوانین‬
RAW_BODY
:‫که‬ ‫شوند‬ ‫می‬ ‫اعمال‬ ‫زمانی‬ ‫فقط‬
‫که‬ ‫معنی‬ ‫این‬ ‫(به‬ ‫است‬ ‫ناشناخته‬ ‫محتوا‬ ‫نوع‬
naxsi
)‫کند‬ ‫تجزیه‬ ‫درستی‬ ‫به‬ ‫را‬ ‫درخواست‬ ‫چگونه‬ ‫داند‬ ‫نمی‬
id 11
.‫است‬ ‫گرفته‬ ‫قرار‬ ‫سفید‬ ‫لیست‬ ‫در‬ )‫است‬ »‫ناشناخته‬ ‫محتوای‬ ‫«نوع‬ ‫برای‬ ‫داخلی‬ ‫مسدودسازی‬ ‫قانون‬ ‫(که‬
( ‫کامل‬ ‫متن‬ ،‫سپس‬
url
' ‫با‬ ‫که‬ ‫تهی‬ ‫های‬ ‫بایت‬ ‫با‬ ‫و‬ ‫شده‬ ‫رمزگشایی‬
0
‫کامل‬ ‫بدنه‬ .‫شود‬ ‫می‬ ‫منتقل‬ ‫قوانین‬ ‫مجموعه‬ ‫این‬ ‫به‬ )‫اند‬ ‫شده‬ ‫جایگزین‬ '
.‫شود‬ ‫می‬ ‫داده‬ ‫مطابقت‬ ‫ای‬ ‫رشته‬ ‫های‬ ‫مطابقت‬ ‫یا‬ ‫ها‬ ‫رجکس‬ ‫با‬ ‫دوباره‬
‫قوانین‬ ‫برای‬ ‫سفید‬ ‫لیست‬
RAW_BODY
:‫مانند‬ ،‫شود‬ ‫می‬ ‫نوشته‬ ‫معمولی‬ ‫بدن‬ ‫قوانین‬ ‫مانند‬ ‫درست‬ ‫واقع‬ ‫در‬
BasicRule wl:4241 "mz:$URL:/rata|BODY";
Human readable message (msg:...)
msg
.‫شود‬ ‫می‬ ‫استفاده‬ ‫انسان‬ ‫برای‬ ‫فهم‬ ‫قابل‬ ‫متنی‬ ‫داشتن‬ ‫و‬ ‫تحلیل‬ ‫و‬ ‫تجزیه‬ ‫برای‬ ‫بیشتر‬ ‫این‬ .‫کند‬ ‫می‬ ‫توصیف‬ ‫را‬ ‫الگو‬ ‫که‬ ‫است‬ ‫ای‬ ‫رشته‬
)‫(منفی‬ ‫منفی‬ ‫کلیدی‬ ‫کلمه‬
Negative Keyword (negative)
.‫کرد‬ ‫استفاده‬ ‫منفی‬ ‫قانون‬ ‫یک‬ ‫ایجاد‬ ‫برای‬ ‫آن‬ ‫از‬ ‫توان‬ ‫می‬ ‫که‬ ‫است‬ ‫کلیدی‬ ‫کلمه‬ ‫منفی‬
MainRule negative "rx:multipart/form-data|application/x-www-form-
urlencoded" "msg:Content is neither mulipart/x-www-form.." "mz:
$HEADERS_VAR:Content-type" "s:$EVADE:4" id:1402;
Whitelists
‫به‬ ‫دادن‬ ‫دستور‬ ‫منظور‬ ‫به‬ ‫سفید‬ ‫‌های‬
‫ت‬‫فهرس‬
naxsi
‫مثبت‬ ‫از‬ ‫جلوگیری‬ ‫برای‬ ‫خاص‬ )‫(های‬ ‫زمینه‬ ‫در‬ ‫خاص‬ ‫الگوهای‬ ‫گرفتن‬ ‫نادیده‬ ‫برای‬
‫آدرس‬ ‫در‬ ‫عبارت‬ ‫نام‬ ‫با‬ ‫فیلد‬ ‫در‬ ‫کاراکتر‬ ‫به‬ ‫دادن‬ ‫اجازه‬ ‫یعنی‬ .‫است‬ ‫کاذب‬
/search : BasicRule wl:1013 "mz:$ARGS_VAR:term|$URL:/search";
( ‫مکان‬ ‫سطح‬ ‫در‬ ‫تواند‬ ‫می‬ ‫سفید‬ ‫لیست‬
BasicRule
‫سطح‬ ‫در‬ ‫یا‬ )
http (MainRule)
‫زیر‬ ‫نحو‬ ‫دارای‬ ‫سفید‬ ‫لیست‬ .‫باشد‬ ‫داشته‬ ‫وجود‬
:‫است‬
‫قسمت‬ ‫جز‬ ‫به‬ ،‫شود‬ ‫نقل‬ ‫قول‬ ‫نقل‬ ‫دو‬ ‫با‬ ‫باید‬ ‫چیز‬ ‫همه‬
wl
.
Whitelisted ID (wl:...)
wl:0 : Whitelist all rules
• wl:42 : Whitelist rule #42
• wl:42,41,43 : Whitelist rules 42, 41 and 43
• wl:-42 : Whitelist all user rules (>= 1000), excepting rule 42
‫اندازی‬ ‫راه‬ ‫و‬ ‫ساختار‬
ui
‫به‬ ‫مرتبط‬
naxsi
:
nxapi/nxtool
‫انجام‬ ‫را‬ ‫زیر‬ ‫موارد‬ ‫که‬ ‫است‬ ‫جدیدی‬ ‫یادگیری‬ ‫ابزار‬
‫مید‬
:‫هد‬
‫رویدادهای‬ ‫کردن‬ ‫وارد‬ :‫رویدادها‬ ‫کردن‬ ‫وارد‬
naxsi
‫داده‬ ‫پایگاه‬ ‫به‬
elasticsearch
‫کنید‬ ‫ایجاد‬ ‫صرف‬ ‫آماری‬ ‫های‬ ‫جنبه‬ ‫جای‬ ‫به‬ ‫الگوها‬ ‫از‬ ‫را‬ ‫سفید‬ ‫های‬ ‫لیست‬ :‫سفید‬ ‫لیست‬ ‫تولید‬
‫فرآیند‬ ‫از‬ ‫را‬ ‫آنها‬ ‫تا‬ ‫دهید‬ ‫اجازه‬ ‫داده‬ ‫پایگاه‬ ‫در‬ ‫رویدادها‬ ‫گذاری‬ ‫برچسب‬ ‫به‬ :‫رویدادها‬ ‫مدیریت‬
wl gen
‫کنید‬ ‫حذف‬
‫اطالعات‬ ‫نمایش‬ : ‫گزارش‬
naxsi
‫از‬
json
‌
: ‫میکند‬ ‫استفاده‬ ‫کار‬ ‫این‬ ‫برای‬
{
# elasticsearch setup, must point to the right instance.
"elastic" : {
"host" : "127.0.0.1:9200",
"index" : "nxapi",
"doctype" : "events",
"default_ttl" : "7200",
"max_size" : "1000"
},
# filter used for any issued requests, you shouldn't modify it yet
"global_filters" : {
"whitelisted" : "false"
},
# global warning and global success rules, used to distinguish good and 'bad'
whitelists
"global_warning_rules" : {
"rule_uri" : [ ">", "5" ],
"rule_var_name" : [ ">", "5" ],
"rule_ip" : ["<=", 10 ],
"global_rule_ip_ratio" : ["<", 5]
},
"global_success_rules" : {
"global_rule_ip_ratio" : [">=", 30],
"rule_ip" : [">=", 10]
},
# path to naxsi core rules, path to template files,
# path to geoloc database.
"naxsi" : {
"rules_path" : "/etc/nginx/naxsi_core.rules",
"template_path" : "tpl/",
"geoipdb_path" : "nx_datas/country2coords.txt"
},
# controls default colors and verbosity behavior
"output" : {
"colors" : "true",
"verbosity" : "5"
}
}
‌
: ‫‌سازی‬
‫ه‬‫پیاد‬ ‫جهت‬ ‫نیاز‬ ‫پیش‬
‫زیر‬ ‫لینک‬ ‫از‬ ‫االستیکس‬ ‫بسته‬ ‫دانلود‬
https://www.elastic.co/downloads/elasticsearch
. ‫است‬ ‫مفروض‬ ‫زیر‬ ‫‌ها‬
‫م‬‫اقدا‬ ‫دانلود‬ ‫از‬ ‫بعد‬
• Extract the archive
• Start ElasticSearch by executing bin/elasticsearch in the extracted folder
• Check whether ElasticSearch is running correctly: curl -XGET
http://localhost:9200/
• Add a nxapi index with the following command: curl -XPUT
'http://localhost:9200/nxapi/'
‫بسته‬ ‫خود‬ ‫میتوان‬ ‌
: ‫نکته‬
ElasticSearch
. ‫نمود‬ ‫نصب‬ ‫‌را‬ 
‫از‬ ‫اطالعات‬ ‫گرفتن‬ ‫جهت‬
db
: ‫‌داریم‬
 
./nxtool.py -x --colors -c nxapi.json
‫ساخت‬ ‫برای‬
whitelist
‌
: ‫داریم‬
./nxtool.py -c nxapi.json -x --colors
# Whitelist(ing) ratio :
# false 79.96 % (total:196902/246244)
# true 20.04 % (total:49342/246244)
# Top servers :
# www.x1.fr 21.93 % (total:43181/196915)
# www.x2.fr 15.21 % (total:29945/196915)
...
# Top URI(s) :
# /foo/bar/test 8.55 % (total:16831/196915)
# /user/register 5.62 % (total:11060/196915)
# /index.php/ 4.26 % (total:8385/196915)
...
# Top Zone(s) :
# BODY 41.29 % (total:81309/196924)
# HEADERS 23.2 % (total:45677/196924)
# BODY|NAME 16.88 % (total:33243/196924)
# ARGS 12.47 % (total:24566/196924)
# URL 5.56 % (total:10947/196924)
# ARGS|NAME 0.4 % (total:787/196924)
# FILE_EXT 0.2 % (total:395/196924)
# Top Peer(s) :
# ...
# nx_util.py -l /var/log/nginx/*error.log -H /var/www/nxutil.html
‫نام‬ ‫به‬ ‫دیگری‬ ‫پروژه‬
spike
‫های‬ ‫پروژه‬ ‫از‬ ‫یکی‬ ‫که‬ . ‫میباشد‬ ‫موجود‬ ‫نیز‬ ‫وب‬ ‫تحت‬ ‫ها‬ ‫روال‬ ‫ایجاد‬ ‫منظور‬ ‫به‬
nbs-system
. ‫میباشد‬
‫های‬ ‫روال‬ ‫با‬ ‫مرتبط‬ ‫های‬ ‫ساختار‬ ‫و‬ ‫شروط‬ ‫ایجاد‬ ‫امکان‬ ‫ما‬ ‫پروژه‬ ‫این‬ ‫در‬
naxsi
. ‫هستیم‬ ‫دارا‬ ‫نیز‬ ‫را‬
. ‫نکنید‬ ‫استفاده‬ ‫پروژه‬ ‫این‬ ‫از‬ ‫عملیات‬ ‫سیستم‬ ‫در‬ ‫‌شود‬
‫ی‬‫م‬ ‫‌پیشنهاد‬
: ‫نکته‬
‫زیادی‬ ‫مخاطرات‬ ‫شامل‬ ‫و‬ .‫شود‬ ‫قوانین‬ ‫حذف‬ ‫یا‬ ‫‌دیدگی‬
‫ب‬‫آسی‬ ‫به‬ ‫منجر‬ ‫‌تواند‬
‫ی‬‫م‬ ‫عموم‬ ‫به‬ !‫اسپایک‬ ‫افشای‬ .‫است‬ ‫آلفا‬ ‫نسخه‬ ‫هنوز‬ ‫اسپایک‬
. ‫باشد‬ ‫میتواند‬
‫‌های‬
‫ی‬‫ویژگ‬ ‫از‬ ‫یکی‬
naxsi
. ‫میباشد‬ ‫ها‬ ‫ساختار‬ ‫سایر‬ ‫با‬ ‫اینتگرید‬ ‫قابلیت‬
Naxsi
‫با‬ ‫میتواند‬
apparmor, faile2ban
‫ها‬ ‫ساختار‬ ‫سایر‬ ‫و‬ ‌
. ‫شود‬ ‫اینتگرید‬
‫با‬ ‫را‬ ‫آن‬ ‫اینتگرید‬ ‫نحوه‬ ‫ما‬ ‫جا‬ ‌
‫ن‬‫ای‬ ‫در‬
faile2ban
‌
: ‫میدهیم‬ ‫قرار‬ ‫بررسی‬ ‫مورد‬
‫در‬ ‫را‬ ‫زیر‬ ‫های‬ ‫کانفیق‬
faile2ban
. ‫نمایید‬ ‫وارد‬
# jail.conf
[naxsi]
enabled = true
port = http,https
filter = naxsi
logpath = /var/log/nginx/error.log
maxretry = 3
banaction = iptables-multiport-log
action = %(action_mwl)s
# filter.d/naxsi.conf
[INCLUDES]
before = common.conf
[Definition]
failregex = NAXSI_FMT: ip=<HOST>
ignoreregex = learning=1

Más contenido relacionado

La actualidad más candente (20)

Ossec و Wazuh
Ossec   و WazuhOssec   و Wazuh
Ossec و Wazuh
 
how enable ceph dashboard
how enable  ceph dashboardhow enable  ceph dashboard
how enable ceph dashboard
 
Partition in oracle mysql |Mariadb
Partition in oracle mysql |MariadbPartition in oracle mysql |Mariadb
Partition in oracle mysql |Mariadb
 
Zfs and btrfs
Zfs and btrfsZfs and btrfs
Zfs and btrfs
 
Beowolf
BeowolfBeowolf
Beowolf
 
Ossec
OssecOssec
Ossec
 
Package management
Package managementPackage management
Package management
 
Rbdmap ceph realease 0.2
Rbdmap ceph realease 0.2Rbdmap ceph realease 0.2
Rbdmap ceph realease 0.2
 
‫سطح دسترسی و کنترل لیست و سهمیه بندی‬ ‫در گنو/لینوکس‬
‫سطح دسترسی و کنترل لیست و سهمیه بندی‬ ‫در گنو/لینوکس‬‫سطح دسترسی و کنترل لیست و سهمیه بندی‬ ‫در گنو/لینوکس‬
‫سطح دسترسی و کنترل لیست و سهمیه بندی‬ ‫در گنو/لینوکس‬
 
تجارت الکترونبکی با opencart
تجارت الکترونبکی با opencartتجارت الکترونبکی با opencart
تجارت الکترونبکی با opencart
 
ips/ids
ips/idsips/ids
ips/ids
 
Podman
PodmanPodman
Podman
 
Recovery in gnu/linux
Recovery in gnu/linux Recovery in gnu/linux
Recovery in gnu/linux
 
rbdmap in ceph
rbdmap in ceph rbdmap in ceph
rbdmap in ceph
 
virsh vmware
virsh vmwarevirsh vmware
virsh vmware
 
Pg autoscaling in ceph
Pg autoscaling in  cephPg autoscaling in  ceph
Pg autoscaling in ceph
 
کتاب امنیت
کتاب امنیتکتاب امنیت
کتاب امنیت
 
Ssh
SshSsh
Ssh
 
Ssh edition 2
Ssh edition 2Ssh edition 2
Ssh edition 2
 
Cisco Exploration 2 In Persion-Muhibullah Aman
Cisco Exploration 2 In Persion-Muhibullah AmanCisco Exploration 2 In Persion-Muhibullah Aman
Cisco Exploration 2 In Persion-Muhibullah Aman
 

Similar a how config Naxsi

نرم افزار حضور غیاب تحت وب
نرم افزار حضور غیاب تحت وب نرم افزار حضور غیاب تحت وب
نرم افزار حضور غیاب تحت وب JahangostarParsRaden
 
انواع حملات در شبکه های کامپیوتری.pdf
انواع حملات در شبکه های کامپیوتری.pdfانواع حملات در شبکه های کامپیوتری.pdf
انواع حملات در شبکه های کامپیوتری.pdfAliAzarifar
 
Forth exploration dari note-muhibullah aman اکسپلوریشن چهارم- شبکه های کمپیور...
Forth exploration dari note-muhibullah aman اکسپلوریشن چهارم- شبکه های کمپیور...Forth exploration dari note-muhibullah aman اکسپلوریشن چهارم- شبکه های کمپیور...
Forth exploration dari note-muhibullah aman اکسپلوریشن چهارم- شبکه های کمپیور...Muhibullah Aman
 
معرفي فايروال پايگاه داده
معرفي فايروال پايگاه دادهمعرفي فايروال پايگاه داده
معرفي فايروال پايگاه دادهHamid Torkashvand
 
گاهنامه چهارمحال و_بختیاری_دیماه
گاهنامه چهارمحال و_بختیاری_دیماهگاهنامه چهارمحال و_بختیاری_دیماه
گاهنامه چهارمحال و_بختیاری_دیماهtarasad
 
Web Application Security Test
Web Application Security TestWeb Application Security Test
Web Application Security TestSaeid Sadeghi
 
راهکارهای طراحی نرم افزار ها محب الله امان
راهکارهای طراحی نرم افزار ها   محب الله امانراهکارهای طراحی نرم افزار ها   محب الله امان
راهکارهای طراحی نرم افزار ها محب الله امانMuhibullah Aman
 
اهمیت و ویژگی های Web Platform در حال و آینده
اهمیت و ویژگی های Web Platform در حال و آیندهاهمیت و ویژگی های Web Platform در حال و آینده
اهمیت و ویژگی های Web Platform در حال و آیندهWeb Standards School
 
Log4j CRE Vulnerability
Log4j CRE VulnerabilityLog4j CRE Vulnerability
Log4j CRE VulnerabilityMahzad Zahedi
 
معرفی نرم‌افزار آزاد و فعالیت‌های گروه
معرفی نرم‌افزار آزاد و فعالیت‌های گروهمعرفی نرم‌افزار آزاد و فعالیت‌های گروه
معرفی نرم‌افزار آزاد و فعالیت‌های گروهS. M. Masoud Sadrnezhaad
 

Similar a how config Naxsi (20)

security book
security book security book
security book
 
Keylogger
KeyloggerKeylogger
Keylogger
 
Network penetration
Network penetrationNetwork penetration
Network penetration
 
Owasp top 10
Owasp top 10Owasp top 10
Owasp top 10
 
نرم افزار حضور غیاب تحت وب
نرم افزار حضور غیاب تحت وب نرم افزار حضور غیاب تحت وب
نرم افزار حضور غیاب تحت وب
 
Openstack Rally
Openstack RallyOpenstack Rally
Openstack Rally
 
OpenStack and its service
OpenStack and its serviceOpenStack and its service
OpenStack and its service
 
ارائهٔ DLP
ارائهٔ DLPارائهٔ DLP
ارائهٔ DLP
 
Proxmox
ProxmoxProxmox
Proxmox
 
انواع حملات در شبکه های کامپیوتری.pdf
انواع حملات در شبکه های کامپیوتری.pdfانواع حملات در شبکه های کامپیوتری.pdf
انواع حملات در شبکه های کامپیوتری.pdf
 
Forth exploration dari note-muhibullah aman اکسپلوریشن چهارم- شبکه های کمپیور...
Forth exploration dari note-muhibullah aman اکسپلوریشن چهارم- شبکه های کمپیور...Forth exploration dari note-muhibullah aman اکسپلوریشن چهارم- شبکه های کمپیور...
Forth exploration dari note-muhibullah aman اکسپلوریشن چهارم- شبکه های کمپیور...
 
معرفي فايروال پايگاه داده
معرفي فايروال پايگاه دادهمعرفي فايروال پايگاه داده
معرفي فايروال پايگاه داده
 
گاهنامه چهارمحال و_بختیاری_دیماه
گاهنامه چهارمحال و_بختیاری_دیماهگاهنامه چهارمحال و_بختیاری_دیماه
گاهنامه چهارمحال و_بختیاری_دیماه
 
Web Application Security Test
Web Application Security TestWeb Application Security Test
Web Application Security Test
 
how use iptables
how use iptables how use iptables
how use iptables
 
راهکارهای طراحی نرم افزار ها محب الله امان
راهکارهای طراحی نرم افزار ها   محب الله امانراهکارهای طراحی نرم افزار ها   محب الله امان
راهکارهای طراحی نرم افزار ها محب الله امان
 
APV Series 3
APV Series 3APV Series 3
APV Series 3
 
اهمیت و ویژگی های Web Platform در حال و آینده
اهمیت و ویژگی های Web Platform در حال و آیندهاهمیت و ویژگی های Web Platform در حال و آینده
اهمیت و ویژگی های Web Platform در حال و آینده
 
Log4j CRE Vulnerability
Log4j CRE VulnerabilityLog4j CRE Vulnerability
Log4j CRE Vulnerability
 
معرفی نرم‌افزار آزاد و فعالیت‌های گروه
معرفی نرم‌افزار آزاد و فعالیت‌های گروهمعرفی نرم‌افزار آزاد و فعالیت‌های گروه
معرفی نرم‌افزار آزاد و فعالیت‌های گروه
 

Más de Yashar Esmaildokht

how install and config sdn in proxmox virtualization
how install and config sdn in proxmox virtualizationhow install and config sdn in proxmox virtualization
how install and config sdn in proxmox virtualizationYashar Esmaildokht
 
service registery and the service discovery
service registery and the service discoveryservice registery and the service discovery
service registery and the service discoveryYashar Esmaildokht
 
مرجع oracle mysql |mariadb
مرجع oracle mysql |mariadb مرجع oracle mysql |mariadb
مرجع oracle mysql |mariadb Yashar Esmaildokht
 
bcache and cachefs its benefits.
bcache and cachefs   its benefits. bcache and cachefs   its benefits.
bcache and cachefs its benefits. Yashar Esmaildokht
 
Systemd and its various uses and capabilities.
Systemd and its various uses and capabilities.Systemd and its various uses and capabilities.
Systemd and its various uses and capabilities.Yashar Esmaildokht
 
how add and remove Mgr in ceph cluster
how add and remove  Mgr in ceph  clusterhow add and remove  Mgr in ceph  cluster
how add and remove Mgr in ceph clusterYashar Esmaildokht
 
how add and delete new mon in ceph cluster
how add  and delete new  mon in ceph clusterhow add  and delete new  mon in ceph cluster
how add and delete new mon in ceph clusterYashar Esmaildokht
 
Load Balancing-as-a-Service (LBaaS) with octavia in openstack
Load Balancing-as-a-Service (LBaaS) with octavia in openstackLoad Balancing-as-a-Service (LBaaS) with octavia in openstack
Load Balancing-as-a-Service (LBaaS) with octavia in openstackYashar Esmaildokht
 
نحوه ایجاد snapshot و ایجاد point در سیستم‌های گنو/لینوکسی برای ایجاد sys...
 نحوه ایجاد snapshot  و ایجاد point  در سیستم‌های گنو/لینوکسی  برای ایجاد sys... نحوه ایجاد snapshot  و ایجاد point  در سیستم‌های گنو/لینوکسی  برای ایجاد sys...
نحوه ایجاد snapshot و ایجاد point در سیستم‌های گنو/لینوکسی برای ایجاد sys...Yashar Esmaildokht
 

Más de Yashar Esmaildokht (20)

how install and config sdn in proxmox virtualization
how install and config sdn in proxmox virtualizationhow install and config sdn in proxmox virtualization
how install and config sdn in proxmox virtualization
 
service registery and the service discovery
service registery and the service discoveryservice registery and the service discovery
service registery and the service discovery
 
process
processprocess
process
 
nbd and it's benefits
nbd and it's benefitsnbd and it's benefits
nbd and it's benefits
 
مرجع oracle mysql |mariadb
مرجع oracle mysql |mariadb مرجع oracle mysql |mariadb
مرجع oracle mysql |mariadb
 
openstack designate
openstack designateopenstack designate
openstack designate
 
bcache and cachefs its benefits.
bcache and cachefs   its benefits. bcache and cachefs   its benefits.
bcache and cachefs its benefits.
 
Systemd and its various uses and capabilities.
Systemd and its various uses and capabilities.Systemd and its various uses and capabilities.
Systemd and its various uses and capabilities.
 
radosgw
radosgw radosgw
radosgw
 
cachefs
cachefs cachefs
cachefs
 
how add and remove Mgr in ceph cluster
how add and remove  Mgr in ceph  clusterhow add and remove  Mgr in ceph  cluster
how add and remove Mgr in ceph cluster
 
how add and delete new mon in ceph cluster
how add  and delete new  mon in ceph clusterhow add  and delete new  mon in ceph cluster
how add and delete new mon in ceph cluster
 
Nfs Acl
Nfs AclNfs Acl
Nfs Acl
 
nbd
nbdnbd
nbd
 
raid with megacli
raid with megacliraid with megacli
raid with megacli
 
Load Balancing-as-a-Service (LBaaS) with octavia in openstack
Load Balancing-as-a-Service (LBaaS) with octavia in openstackLoad Balancing-as-a-Service (LBaaS) with octavia in openstack
Load Balancing-as-a-Service (LBaaS) with octavia in openstack
 
نحوه ایجاد snapshot و ایجاد point در سیستم‌های گنو/لینوکسی برای ایجاد sys...
 نحوه ایجاد snapshot  و ایجاد point  در سیستم‌های گنو/لینوکسی  برای ایجاد sys... نحوه ایجاد snapshot  و ایجاد point  در سیستم‌های گنو/لینوکسی  برای ایجاد sys...
نحوه ایجاد snapshot و ایجاد point در سیستم‌های گنو/لینوکسی برای ایجاد sys...
 
linux industry
linux industrylinux industry
linux industry
 
squid
squidsquid
squid
 
how upgrade ceph
how upgrade cephhow upgrade ceph
how upgrade ceph
 

how config Naxsi

  • 1. ‫تعالی‬ ‫باسمه‬ ‫کانفیق‬ ‫و‬ ‫مدیریت‬ naxsi ‌ : ‫نویسنده‬ ‫دخت‬ ‫اسمعیل‬ ‫یاشار‬ ‫مهندس‬ :‫نسخه‬ ‌ 0.1
  • 2. : ‫نویسنده‬ ‫درباره‬ ‫رشته‬ ‫آموخته‬ ‫دانش‬ ‫دخت‬ ‫اسمعیل‬ ‫یاشار‬ ‫بنده‬ cyber security . ‫هستم‬ ‫از‬ ‫بیش‬ ۱۵ . ‫دارم‬ ‫فعالیت‬ ‫سابقه‬ ‫سال‬ ‫مولف‬ - ‫مدرس‬ - ‫مشاور‬ : ‫داد‬ ‫شرح‬ ‫زیر‬ ‫های‬ ‫ساختار‬ ‫در‬ ‫میتوان‬ ‫را‬ ‫بنده‬ ‫های‬ ‫فعالیت‬ ‫جمله‬ ‫از‬ gnu/linux system/network/security/cloud Engineer/administrator & oracle dba | Linux Trainer |devops . ): ‫جدید‬ ‫دنیاهای‬ ‫کشف‬ ‫و‬ ‫تحقیق‬ ‫و‬ ‫مطالعه‬ ‫به‬ ‫مند‬ ‫عالقه‬ . ‫کنم‬ ‫اشاره‬ ‫استراتژی‬ ‫های‬ ‫بازی‬ ‫و‬ ‫اوتلو‬ ‫و‬ ‫شطرنج‬ ‫بازی‬ ‫به‬ ‫میتوانم‬ ‫من‬ ‫های‬ ‫سرگرمی‬ ‫از‬ ‫واقع‬ ‫در‬ ‫تبریز‬ ‫الگ‬ ‫گذاران‬ ‫بنیان‬ ‫از‬ ‫یکی‬ ‫و‬ ‫لینوکس‬/‫گنو‬ ‫و‬ ‫باز‬ ‫متن‬ ‫دنیای‬ ‫عاشق‬ . ‫هستم‬ ‫عاشق‬ ‫یک‬ ‫من‬ : ‫کنید‬ ‫پیدا‬ ‫و‬ ‫کنید‬ ‫دنبال‬ ‫را‬ ‫من‬ ‫میتوانید‬ ‫چطور‬ ‫خب‬ Mob : 09141100257 Telegram ID Telegram channel Instagram Account Linkedin Account . ‫بشنوم‬ ‫را‬ ‫انتقادتون‬ ‫یا‬ ‫پیشنهاد‬ ‫هرگونه‬ ‫میشم‬ ‫خوشحال‬ ‫همچنین‬ : ‫کنید‬ ‫پیدا‬ ‫را‬ ‫من‬ ‫از‬ ‫ی‬ ‫دیگر‬ ‫های‬ ‫کتاب‬ ‫میتونید‬ ‫چطور‬ ‫توی‬ slideshare . ‫کنید‬ ‫پیدا‬ ‫را‬ ‫کردم‬ ‫منتشر‬ ‫آزاد‬ ‫بصورت‬ ‫که‬ ‫دیگری‬ ‫های‬ ‫کتاب‬ ‫میتونید‬ ‫بگردید‬ ‫من‬ ‫اسم‬ ‫دنبال‬ ‫گوگل‬ ‫یا‬
  • 3. : ‫مشاوره‬ . ‫بود‬ ‫خواهم‬ ‫شما‬ ‫دسترس‬ ‫در‬ ‫من‬ . ‫فرمایید‬ ‫حاصل‬ ‫تماس‬ . ‫کردم‬ ‫اشاره‬ ‫قبل‬ ‫صفحه‬ ‫در‬ ‫که‬ ‫هایی‬ ‫کانال‬ ‫از‬ ‫میتوانید‬ ‫مشاوره‬ ‫جهت‬
  • 4. WAF ‫مختلف‬ ‫های‬ ‫الیه‬ ‫در‬ ‫هکرها‬ ‫حمالت‬ ‫چیست؟‬ OSI ،‫ها‬ ‫الیه‬ ‫این‬ ‫از‬ ‫یکی‬ ‫که‬ ‫‌گیرد‬ ‫ی‬‫م‬ ‫صورت‬ Application ،‫کاربرد‬ ‫الیه‬ .‫دارد‬ ‫نام‬ .‫‌افتد‬ ‫ی‬‫م‬ ‫اتفاق‬ ‫الیه‬ ‫این‬ ‫در‬ ‫حمالت‬ ‫ترین‬ ‫پیچیده‬ ‫و‬ ‫است‬ ‫شبکه‬ ‫الیه‬ ‫هفتمین‬ WAF ‫مخفف‬ Web Application Firewall ‫که‬ ‫است‬ ‫فایروالی‬ :‫شامل‬ ‫حمالت‬ ‫این‬ .‫‌دهد‬ ‫ی‬‫م‬ ‫نشان‬ ‫العمل‬ ‫عکس‬ ‫ها‬ ‫آن‬ ‫برابر‬ ‫در‬ ‫و‬ ‫کرده‬ ‫شناسایی‬ ‫را‬ ‫حمالت‬ ‫نوع‬ ‫این‬ ( ‫سایتی‬ ‫بین‬ ‫اسکریپت‬ XSS ) ‫صفحه‬ ‫یک‬ ‫لود‬ ‫هنگام‬ ‫را‬ ‫مضر‬ ‫کدهای‬ ‫هکرها‬ .‫‌باشد‬ ‫ی‬‫م‬ ‫کاربر‬ ‫سمت‬ ‫به‬ ‫کد‬ ‫تزریق‬ ‫با‬ ‫حمله‬ ‫نوعی‬ ‫سایتی‬ ‫بین‬ ‫نویسی‬ ‫اسکریپت‬ ،‫موارد‬ ‫بیشتر‬ ‫در‬ .‫هستند‬ ‫پذیر‬ ‫آسیب‬ ‫‌ها‬ ‫ت‬‫اسکریپ‬ ‫این‬ ‫برابر‬ ‫در‬ ‫ویژه‬ ‫به‬ ‫تعاملی‬ ‫‌های‬ ‫ن‬‫اپلیکیش‬ ‫و‬ ‫‌ها‬ ‫ت‬‫‌سای‬ ‫ب‬‫و‬ .‫‌کنند‬ ‫ی‬‫م‬ ‫وارد‬ ‫وب‬ (‫سایتی‬ ‫بین‬ ‫درخواست‬ ‫جعل‬ Cross-site request forgery ) ‫تحت‬ ،‫دارند‬ ‫کاربر‬ ‫ورود‬ ‫به‬ ‫نیاز‬ ‫خاص‬ ‫اقدام‬ ‫یک‬ ‫انجام‬ ‫برای‬ ‫که‬ ‫را‬ ‫وب‬ ‫کاربردی‬ ‫‌های‬ ‫ه‬‫برنام‬ ‫و‬ ‫‌ها‬ ‫ت‬‫‌سای‬ ‫ب‬‫و‬ ‫تمامی‬ ‫‌تواند‬ ‫ی‬‫م‬ ‫سایبری‬ ‫حمالت‬ ‫این‬ ‫های‬ ‫درخواست‬ ‫کاربر‬ ‫مرورگر‬ ‫که‬ ‫شوند‬ ‫می‬ ‫باعث‬ ‫آنها‬ .‫دهد‬ ‫قرار‬ ‫تأثیر‬ HTTP .‫شود‬ ‫انجام‬ ‫نامطلوب‬ ‫اقدامات‬ ‫تا‬ ‫کند‬ ‫ارسال‬ ‫سایت‬ ‫وب‬ ‫به‬ ‫را‬ Csrf ‫کد‬ ‫تزریق‬ SQL (SQL injection) ‫تزریق‬ ‫حمله‬ ‫یک‬ ‫در‬ SQL ‫جوی‬ ‫و‬ ‫پرس‬ ‫فیلد‬ ‫یک‬ ‫از‬ ‫سایبری‬ ‫مجرمان‬ ، SQL .‫کنند‬ ‫می‬ ‫استفاده‬ ‫اضافی‬ ‫نامطلوب‬ ‫اطالعات‬ ‫انتقال‬ ‫برای‬ Buffer Overflow Malicious Robots Information leakage Malicious and Illegal Encoding Web Server and OS Attacks OS command injection
  • 5. RFI bug Session Hijacking DOS Protection against common attacks Site Reconnaissance Parameter Tampering ‫سازمان‬ ،‫شد‬ ‫اشاره‬ ‫آنها‬ ‫به‬ ‫باال‬ ‫در‬ ‫که‬ ‫مواردی‬ ‫بر‬ ‫عالوه‬ OWASP ‫با‬ ‫که‬ ‫‌کند‬ ‫ی‬‫م‬ ‫معرفی‬ ‫را‬ ‫اپلیکیشن‬ ‫وب‬ ‫امنیتی‬ ‫مشکالت‬ ‫سایر‬ ‫از‬ ‫لیستی‬ WAF :‫داد‬ ‫کاهش‬ ‫را‬ ‫آنها‬ ‫توسط‬ ‫‌پذیری‬ ‫ب‬‫آسی‬ ‫میزان‬ ‫‌توان‬ ‫ی‬‫م‬ • (‫شکسته‬ ‫هویت‬ ‫احراز‬ Broken authentication ) • (‫حساس‬ ‫‌های‬ ‫ه‬‫داد‬ ‫افشای‬ Sensitive data exposure ) • (‫ال‬ ‫ام‬ ‫ایکس‬ ‫پذیری‬ ‫آسیب‬ XML external entities (XXE) ) • (‫ناقص‬ ‫دسترسی‬ ‫کنترل‬ Broken access control ) • (‫امنیتی‬ ‫اشتباه‬ ‫پیکربندی‬ Security misconfiguration ) • deserialization (‫ناامن‬ Insecure deserialization ) • (‫‌شده‬ ‫ه‬‫شناخت‬ ‫‌های‬ ‫ی‬‫پذیر‬ ‫آسیب‬ ‫با‬ ‫‌هایی‬ ‫ه‬‫مؤلف‬ ‫از‬ ‫استفاده‬ Using components with known vulnerabilities ) • (‫ناکافی‬ ‫مانیتورینگ‬ ‫و‬ ‫اندازی‬ ‫الگ‬ Insufficient logging & monitoring )
  • 6. WAF ‫‌کند؟‬ ‫ی‬‫م‬ ‫کار‬ ‫چگونه‬ WAF ‫الیه‬ ‫روی‬ ‫بر‬ ‫که‬ ‫است‬ ‫شده‬ ‫طراحی‬ ‫ای‬ ‫گونه‬ ‫به‬ Application ‫بر‬ ‫مبتنی‬ ‫خروجی‬/‫ورودی‬ ‫ترافیک‬ ‫و‬ ‫‌گیرد‬ ‫ی‬‫م‬ ‫قرار‬ HTTP/HTTPS ‫را‬ ‫درخواست‬ ‫دو‬ ‫هر‬ ‫از‬ ‫مخربی‬ ‫ترافیک‬ ‫که‬ ‫زمان‬ ‫هر‬ .‫‌کند‬ ‫ی‬‫م‬ ‫بررسی‬ GET ‫و‬ POST .‫‌دهد‬ ‫ی‬‫م‬ ‫نشان‬ ‫العمل‬ ‫عکس‬ ‫سرعت‬ ‫به‬ ،‫کند‬ ‫شناسایی‬ ‫را‬ ،‫‌کنند‬ ‫ی‬‫م‬ ‫عمل‬ ‫سرورها‬ ‫از‬ ‫ایمن‬ ‫دروازه‬ ‫یک‬ ‫عنوان‬ ‫به‬ ‫فقط‬ ‫که‬ ‫معمولی‬ ‫های‬ ‫فایروال‬ ‫برخالف‬ WAF ‫سرویس‬ ‫بین‬ ‫که‬ ‫است‬ ‫امنیتی‬ ‫اقدام‬ ‫یک‬ ( ‫گیرنده‬ Client ‫تهدیدات‬ ‫نوع‬ ‫این‬ ‫تشخیص‬ ‫که‬ ‫‌گیرند‬ ‫ی‬‫م‬ ‫انجام‬ ‫خودکار‬ ‫صورت‬ ‫به‬ ‫معموال‬ ،‫مخرب‬ ‫حمالت‬ ‫بیشترین‬ .‫دارد‬ ‫قرار‬ ‫سرور‬ ‫وب‬ ‫و‬ ) .‫نیست‬ ‫شناسایی‬ ‫قابل‬ ‫و‬ ‫شده‬ ‫طراحی‬ ‫انسان‬ ‫ترافیک‬ ‫از‬ ‫تقلید‬ ‫برای‬ ‫غالبا‬ ‫زیرا‬ ‫است؛‬ ‫سخت‬ ‫بسیار‬ WAF ‫و‬ ‫درخواست‬ ‫هر‬ ‫از‬ ‫عمیقی‬ ‫بازرسی‬ ‫به‬ ‫بازرسی‬ ‫این‬ .‫‌دهد‬ ‫ی‬‫م‬ ‫انجام‬ ‫وب‬ ‫ترافیک‬ ‫متداول‬ ‫اشکاالت‬ ‫همه‬ ‫برای‬ ‫را‬ ‫پاسخ‬ WAF ‫و‬ ‫کند‬ ‫مسدود‬ ‫و‬ ‫شناسایی‬ ‫را‬ ‫تهدیدات‬ ‫تا‬ ‫‌کند‬ ‫ی‬‫م‬ ‫کمک‬ .‫کند‬ ‫جلوگیری‬ ‫سرور‬ ‫به‬ ‫ها‬ ‫آن‬ ‫رسیدن‬ ‫از‬ ‫انواع‬ WAF : ( ‫شبکه‬ ‫بر‬ ‫مبتنی‬ ‫اپلیکیشن‬ ‫وب‬ ‫فایروال‬ Network-based web application firewall ) ( ‫شبکه‬ ‫بر‬ ‫مبتنی‬ ‫وب‬ ‫تحت‬ ‫های‬ ‫فایروال‬ NWAF ‫در‬ ‫تاخیر‬ ،‫محلی‬ ‫نصب‬ ‫دلیل‬ ‫به‬ ‫و‬ ‫هستند‬ ‫افزار‬ ‫سخت‬ ‫بر‬ ‫مبتنی‬ ‫سنتی‬ ‫طور‬ ‫به‬ ) ‫که‬ ‫معناست‬ ‫بدان‬ ‫این‬ .‫‌دهند‬ ‫ی‬‫م‬ ‫کاهش‬ ‫را‬ ‫خروجی‬/‫ورودی‬ NWAF ‫این‬ ‫اما‬ .‫است‬ ‫آسان‬ ‫آن‬ ‫به‬ ‫دسترسی‬ ‫و‬ ‫شده‬ ‫نصب‬ ‫برنامه‬ ‫سرور‬ ‫نزدیک‬ .‫‌طلبد‬ ‫ی‬‫م‬ ‫را‬ ‫داخلی‬ ‫امنیتی‬ ‫های‬ ‫تخصص‬ ‫و‬ ‫شود‬ ‫خریداری‬ ‫افزاری‬ ‫سخت‬ ‫صورت‬ ‫به‬ ‫باید‬ ‫که‬ ‫چرا‬ ‫است؛‬ ‫گران‬ ‫بسیار‬ ‫راهکاری‬ ( ‫میزبان‬ ‫بر‬ ‫مبتنی‬ ‫اپلیکیشن‬ ‫وب‬ ‫فایروال‬ Host-based web application firewall ( ‫میزبان‬ ‫بر‬ ‫مبتنی‬ ‫اپلیکیشن‬ ‫وب‬ ‫های‬ ‫فایروال‬ ) HWAF ‫از‬ ‫نوع‬ ‫این‬ .‫دارند‬ ‫وجود‬ ‫سرور‬ ‫وب‬ ‫یک‬ ‫های‬ ‫ماژول‬ ‫عنوان‬ ‫به‬ ) WAF ‫با‬ ‫مقایسه‬ ‫در‬ ‫تر‬ ‫ارزان‬ ‫بسیار‬ ‫حل‬ ‫راه‬ ‫یک‬ WAF ‫بر‬ ‫مبتنی‬ ‫های‬ ‫امنیتی‬ ‫های‬ ‫تخصص‬ .‫اند‬ ‫شده‬ ‫طراحی‬ ‫وب‬ ‫های‬ ‫برنامه‬ ‫برای‬ ‫که‬ ‫است‬ ‫افزار‬ ‫سخت‬ . ‫میطلبد‬ ‫را‬ ‫یک‬ ‫که‬ ‫هنگامی‬ WAF ‫افزایش‬ ‫را‬ ‫نگهداری‬ ‫های‬ ‫هزینه‬ ‫و‬ ‫سازی‬ ‫پیاده‬ ‫پیچیدگی‬ ،‫محلی‬ ‫سرور‬ ‫منابع‬ ‫مصرف‬ ‫‌تواند‬ ‫ی‬‫م‬ ،‫شود‬ ‫ادغام‬ ‫سرور‬ ‫در‬ .‫دهد‬
  • 7. ( ‫ابر‬ ‫بر‬ ‫مبتنی‬ ‫اپلیکیشن‬ ‫وب‬ ‫فایروال‬ Cloud-based web application firewall ) ‫های‬ ‫حل‬ ‫راه‬ .‫‌کنند‬ ‫ی‬‫م‬ ‫عمل‬ ‫معکوس‬ ‫پروکسی‬ ‫عنوان‬ ‫به‬ ‫و‬ ‫هستند‬ ‫صرفه‬ ‫به‬ ‫مقرون‬ ‫ای‬ ‫گزینه‬ ‫ابر‬ ‫بر‬ ‫مبتنی‬ ‫وب‬ ‫تحت‬ ‫برنامه‬ ‫های‬ ‫فایروال‬ ‫نیاز‬ ‫تعمیر‬ ‫به‬ ‫که‬ ‫سیستمی‬ ‫از‬ ‫‌خواهید‬ ‫ی‬‫م‬ ‫یا‬ ‫و‬ ‫کنید‬ ‫محدود‬ ‫عملکردی‬ ‫های‬ ‫قابلیت‬ ‫با‬ ‫را‬ ‫خود‬ ‫‌خواهید‬ ‫ی‬‫نم‬ ‫که‬ ‫است‬ ‫مناسب‬ ‫زمانی‬ ‫ابر‬ ‫بر‬ ‫مبتنی‬ .‫کنید‬ ‫نگهداری‬ ‫دارد‬ ‫سیاه‬ ‫لیست‬ WAF ‫سفید‬ ‫لیست‬ ، WAF ‫و‬ WAF :‫ترکیبی‬ WAF ‫ترکیبی‬ ‫امنیتی‬ ‫های‬ ‫مدل‬ ‫و‬ )‫مثبت‬ ‫(امنیت‬ ‫سفید‬ ‫لیست‬ ،)‫منفی‬ ‫(امنیت‬ ‫سیاه‬ ‫لیست‬ ‫جمله‬ ‫از‬ ‫مختلفی‬ ‫های‬ ‫مدل‬ ‫تحت‬ ‫‌توانند‬ ‫ی‬‫م‬ ‫ها‬ .‫کنند‬ ‫کار‬ :‫سیاه‬ ‫لیست‬ ‫حمالتی‬ ‫از‬ ‫مانع‬ ‫امنیت‬ ‫نوع‬ ‫این‬ .‫‌کند‬ ‫ی‬‫م‬ ‫کار‬ ‫خاص‬ ‫امضاهای‬ ‫یا‬ ‫شده‬ ‫شناخته‬ ‫حمالت‬ ‫برابر‬ ‫در‬ ‫وب‬ ‫برنامه‬ ‫از‬ ‫محافظت‬ ‫با‬ ‫سیاه‬ ‫لیست‬ ‫مدل‬ ‫های‬ ‫لیست‬ ‫مختلف‬ ‫انواع‬ ‫که‬ ‫است‬ ‫این‬ ‫مدل‬ ‫این‬ ‫اشکال‬ .‫‌کنند‬ ‫ی‬‫م‬ ‫سوءاستفاده‬ ‫ها‬ ‫پذیری‬ ‫آسیب‬ ‫یا‬ ‫شده‬ ‫شناخته‬ ‫موضوعات‬ ‫این‬ ‫از‬ ‫که‬ ‫‌شود‬ ‫ی‬‫م‬ ‫حمالت‬ ‫باالی‬ ‫درصد‬ ‫دلیل‬ ‫به‬ ‫و‬ ‫‌شوند‬ ‫ی‬‫م‬ ‫ایجاد‬ ‫لحظه‬ ‫در‬ ‫سیاه‬ ZERO DAY .‫اند‬ ‫شده‬ ‫منسوخ‬ :‫سفید‬ ‫لیست‬ .‫باشد‬ ‫داشته‬ ‫جریان‬ ‫خاص‬ ‫معیارهای‬ ‫با‬ ‫مطابق‬ ‫ترافیکی‬ ‫‌دهد‬ ‫ی‬‫م‬ ‫اجازه‬ ‫و‬ ‫‌کند‬ ‫ی‬‫م‬ ‫استفاده‬ ‫منطقی‬ ‫گیری‬ ‫تصمیم‬ ‫و‬ ‫امضا‬ ‫از‬ ‫سفید‬ ‫لیست‬ ‫مدل‬ ‫طریق‬ ‫از‬ ‫ها‬ ‫درخواست‬ ‫است‬ ‫ممکن‬ ‫یعنی‬ URL ‫زمانی‬ ‫مدل‬ ‫این‬ ‫ضعف‬ ‫نقطه‬ .‫شود‬ ‫مسدود‬ ‫ها‬ ‫سایت‬ ‫سایر‬ ‫طریق‬ ‫از‬ ‫و‬ ‫باشند‬ ‫مجاز‬ ‫خاص‬ ‫های‬ .‫است‬ ‫نیاز‬ ‫اضافی‬ ‫نگهداری‬ ‫و‬ ‫تعمیر‬ ‫صورت‬ ‫این‬ ‫در‬ ‫کنید‬ ‫می‬ ‫معرفی‬ ‫را‬ ‫جدید‬ ‫برنامه‬ ‫ویژگی‬ ‫یک‬ ‫شما‬ ‫که‬ ‫است‬
  • 8. :‫ترکیبی‬ ‫مدل‬ .‫‌کند‬ ‫ی‬‫م‬ ‫استفاده‬ ‫سفید‬ ‫لیست‬ ‫و‬ ‫سیاه‬ ‫لیست‬ ‫مدل‬ ‫دو‬ ‫هر‬ ‫از‬ ،‫پیداست‬ ‫آن‬ ‫نام‬ ‫از‬ ‫که‬ ‫همانطور‬ WAF :‫شبکه‬ ‫فایروال‬ ‫مقابل‬ ‫در‬ .‫دارد‬ ‫وجود‬ ‫دو‬ ‫این‬ ‫بین‬ ‫آشکاری‬ ‫های‬ ‫تفاوت‬ ‫اما‬ ،‫برسد‬ ‫نظر‬ ‫به‬ ‫کننده‬ ‫گیج‬ ‫است‬ ‫ممکن‬ ‫اپلیکیشن‬ ‫وب‬ ‫فایروال‬ ‫و‬ ‫شبکه‬ ‫فایروال‬ ‫بین‬ ‫انتخاب‬ ‫و‬ ‫محلی‬ ‫شبکه‬ ‫بین‬ ‫بان‬ ‫دروازه‬ ‫عنوان‬ ‫به‬ ‫یعنی‬ ‫‌شوند؛‬ ‫ی‬‫م‬ ‫استفاده‬ ‫محلی‬ ‫شبکه‬ ‫منابع‬ ‫به‬ ‫دسترسی‬ ‫کنترل‬ ‫برای‬ ‫شبکه‬ ‫فایروال‬ ‫های‬ ‫برنامه‬ ‫مانند‬ .‫دارند‬ ‫را‬ ‫وب‬ ‫صفحات‬ ‫از‬ ‫بازدید‬ ‫نبودن‬ ‫یا‬ ‫بودن‬ ‫مجاز‬ ‫تعیین‬ ‫برای‬ ‫قوانینی‬ ‫شبکه‬ ‫های‬ ‫فایروال‬ .‫‌کنند‬ ‫ی‬‫م‬ ‫عمل‬ ‫اینترنت‬ WAF ‫حل‬ ‫راه‬ ‫این‬ ، .‫شوند‬ ‫ارائه‬ ‫افزاری‬ ‫نرم‬ ‫یا‬ ‫افزاری‬ ‫سخت‬ ‫صورت‬ ‫به‬ ‫‌توانند‬ ‫ی‬‫م‬ ‫امنیتی‬ ‫های‬ ،‫گفتیم‬ ‫تر‬ ‫قبل‬ ‫که‬ ‫همانطور‬ WAF ‫صورت‬ ‫به‬ ‫مشکوک‬ ‫ترافیک‬ .‫است‬ ‫شده‬ ‫طراحی‬ ‫وب‬ ‫برنامه‬ ‫یک‬ ‫از‬ ‫خروجی‬/‫ورودی‬ ‫ترافیک‬ ‫بر‬ ‫نظارت‬ ‫برای‬ .‫‌شود‬ ‫ی‬‫م‬ ‫فیلتر‬ ‫خیر‬ ‫یا‬ ‫است‬ ‫مخرب‬ ‫ترافیک‬ ‫این‬ ‫آیا‬ ‫اینکه‬ ‫اساس‬ ‫بر‬ ‫سپس‬ ‫و‬ ‫‌شود‬ ‫ی‬‫م‬ ‫بررسی‬ ‫جداگانه‬ WAF ‫که‬ ‫هایی‬ ‫سازمان‬ ‫بین‬ ‫در‬ ‫اغلب‬ ‫ها‬ .‫هستند‬ ‫محبوب‬ ‫‌دهند‬ ‫ی‬‫م‬ ‫ارائه‬ ‫اینترنت‬ ‫بر‬ ‫مبتنی‬ ‫خدمات‬
  • 9. ( ‫وب‬ ‫برنامه‬ ‫فایروال‬ WAF ‫کند؟‬ ‫محافظت‬ ‫تواند‬ ‫نمی‬ ‫تهدیدها‬ ‫کدام‬ ‫برابر‬ ‫در‬ ) ‫متاسفانه‬ WAF ‫اپلیکیشن‬ ‫وب‬ ‫یا‬ ‫‌سایت‬ ‫ب‬‫و‬ ‫یک‬ ‫از‬ ‫جامع‬ ‫امنیتی‬ ‫مفهوم‬ ‫یک‬ ‫از‬ ‫بخشی‬ ‫همیشه‬ ‫باید‬ ‫اما‬ ،‫دهد‬ ‫نمی‬ ‫ارائه‬ ‫را‬ ‫جانبه‬ ‫همه‬ ‫حفاظت‬ ‫که‬ ‫دارد‬ ‫وجود‬ ‫‌هایی‬ ‫ی‬‫‌پذیر‬ ‫ب‬‫آسی‬ .‫باشد‬ WAF ‫در‬ .‫‌کند‬ ‫ی‬‫نم‬ ‫محافظت‬ ‫شبکه‬ ‫در‬ ‫موجود‬ ‫بدافزارهای‬ ‫برابر‬ ‫در‬ ‫همچنین‬ .‫است‬ ‫اثر‬ ‫بی‬ ‫آنها‬ ‫برابر‬ ‫در‬ ‫مناسب‬ ‫حفاظتی‬ ‫اقدامات‬ ‫باید‬ ‫نیز‬ ‫ها‬ ‫شرکت‬ ،‫نتیجه‬ in-house .‫دهند‬ ‫انجام‬ ‫را‬ • ‫مانندحمالت‬ ،‫وب‬ ‫‌های‬ ‫ه‬‫برنام‬ ‫فایروال‬ ‫زدن‬ ‫دور‬ ‫‌های‬ ‫ه‬‫را‬ ‫از‬ ‫خوبی‬ ‫به‬ ‫هکرها‬ HTTP request smuggling ‫بنابراین‬ .‫هستند‬ ‫آگاه‬ .‫است‬ ‫نیاز‬ ‫مورد‬ ‫اینجا‬ ‫در‬ ‫نیز‬ ‫بیشتری‬ ‫حفاظت‬ • ‫مدیریت‬ filter setting ،‫باشند‬ ‫شده‬ ‫تنظیم‬ ‫سخت‬ ‫خیلی‬ ‫یا‬ ‫ساده‬ ‫خیلی‬ ‫فیلترها‬ ‫اگر‬ .‫دارد‬ ‫زیادی‬ ‫تخصص‬ ‫به‬ ‫نیاز‬ WAF ‫که‬ ‫آنطور‬ .‫‌کند‬ ‫ی‬‫نم‬ ‫کار‬ ‫شماست‬ ‫نیاز‬ ‫مورد‬ • ‫فایروال‬ ‫یک‬ ‫شاید‬ WAF ‫خوب‬ developer ‫فایروال‬ ‫اینکه‬ ‫فرض‬ .‫آورند‬ ‫بعمل‬ ‫را‬ ‫الزم‬ ‫دقت‬ ‫امنیتی‬ ‫موارد‬ ‫در‬ ‫کمتر‬ ‫تا‬ ‫دهد‬ ‫فریب‬ ‫را‬ ‫ها‬ .‫شود‬ ‫اپلیکیشن‬ ‫در‬ ‫‌ها‬ ‫ی‬‫‌پذیر‬ ‫ب‬‫آسی‬ ‫از‬ ‫بیشتری‬ ‫تعداد‬ ‫به‬ ‫منجر‬ ‫است‬ ‫ممکن‬ ‫حتی‬ ،‫کند‬ ‫می‬ ‫فراهم‬ ‫را‬ ‫الزم‬ ‫حفاظت‬
  • 10. ‫کانفیق‬ ‫ساختار‬ naxsi ‌ : ‫پرداخت‬ ‫خواهیم‬ ‫آن‬ ‫های‬ ‫ساختار‬ ‫بررسی‬ ‫به‬ ‫ما‬ ‫که‬ ‫میباشد‬ ‫زیر‬ ‫صورت‬ ‫به‬ ‫کلی‬ ‫صورت‬ ‫به‬
  • 11. ‫نکسی‬ ‫در‬ ‫ما‬ ۲ ‫حالت‬ learning mode ‫‌و‬ normal ‌ : ‫داریم‬ ‫را‬ ‫هدایت‬ ‫آنها‬ ‫کردن‬ ‫مسدود‬ ‫جای‬ ‫به‬ ‫را‬ ‫‌ها‬ ‫ت‬‫درخواس‬ ‫ما‬ ‫که‬ ‫آنجایی‬ ‫از‬ .‫شوند‬ ‫می‬ ‫هدایت‬ ‫خاصی‬ ‫مکان‬ ‫به‬ ‫مخرب‬ ‫های‬ ‫درخواست‬ :‫عادی‬ ‫حالت‬ .‫بازگردانیم‬ ،‫‌کند‬ ‫ی‬‫م‬ ‫ارائه‬ ‫را‬ ‫خطا‬ ‫پیام‬ ‫که‬ ‫را‬ ‫ثابت‬ ‫وب‬ ‫صفحه‬ ‫یک‬ ‫‌توانیم‬ ‫ی‬‫م‬ ،‫‌کنیم‬ ‫ی‬‫م‬ .‫شوند‬ ‫می‬ ‫پردازش‬ ‫برنامه‬ ‫توسط‬ ‫همچنان‬ ‫اما‬ ،‫شوند‬ ‫می‬ ‫کپی‬ ‫خاص‬ ‫مکان‬ ‫یک‬ ‫در‬ ‫مخرب‬ ‫های‬ ‫درخواست‬ :‫یادگیری‬ ‫حالت‬ : ‫نکته‬ ‫با‬ ‫که‬ ‫هنگامی‬ LearningMode .‫شود‬ ‫می‬ ‫پیکربندی‬ naxsi ‫مسدود‬ ‫را‬ ‫اقدامی‬ ‫هیچ‬ ‫اما‬ ،‫کند‬ ‫می‬ ‫ثبت‬ ‫را‬ ‫شده‬ ‫شناسایی‬ ‫حمالت‬ . ‫‌کند‬ ‫ی‬‫نم‬ .‫است‬ ‫مفید‬ ‫بسیار‬ ‫سفید‬ ‫لیست‬ ‫خودکار‬ ‫تولید‬ ‫برای‬ ‫آزمایشی‬/‫‌ای‬ ‫ه‬‫مرحل‬ ‫‌های‬ ‫ط‬‫محی‬ ‫یا‬ ‫جدید‬ ‫‌های‬ ‫ه‬‫برنام‬ ‫برای‬ ‫این‬ Learning-Mode ‫را‬ ‫شما‬ ‫یک‬ ‫تا‬ ‫سازد‬ ‫می‬ ‫قادر‬ naxsi-setup ‫برنامه‬ ‫برای‬ ‫و‬ ‫بگیرید‬ ‫یاد‬ ‫درخواستی‬ ‫هیچ‬ ‫کردن‬ ‫مسدود‬ ‫بدون‬ ‫شده‬ ‫شناسایی‬ ‫رویدادهای‬ ‫از‬ ‫و‬ ‫کنید‬ ‫اجرا‬ ‫را‬ ‫وب‬ ‫تحت‬ ‫های‬ . ‫کنید‬ ‫استفاده‬ ‫خود‬ ‫اسکریپت‬ ‫توسط‬ ‫را‬ ‫ایجاد‬ ‫برای‬ ‫الزم‬ ‫‌ها‬ ‫م‬‫اقدا‬ ‫و‬ ‫کنیم‬ ‫رصد‬ ‫را‬ ‫حمالت‬ ‫که‬ ‫میگذارد‬ ‫ما‬ ‫اختیار‬ ‫در‬ ‫را‬ ‫امکان‬ ‫این‬ ‫قابلیت‬ ‫این‬ nxtools-ng . ‫کنیم‬ ‫‌سازی‬ ‫ه‬‫پیاد‬
  • 12. ‫بررسی‬ ‫مورد‬ ‫را‬ ‫ها‬ ‫رول‬ ‫از‬ ‫نمونه‬ ‫چند‬ ‫اینجا‬ ‫در‬ . ‫کنیم‬ ‫سازی‬ ‫سفارشی‬ ‫و‬ ‫ایجاد‬ ‫خود‬ ‫برنامه‬ ‫به‬ ‫نسبت‬ ‫هایی‬ ‫ساختار‬ ‫و‬ ‫ها‬ ‫رول‬ ‫که‬ ‫داریم‬ ‫نیاز‬ ‫ما‬ . ‫میدهیم‬ ‫قرار‬
  • 13. # WordPress naxsi rules ### HEADERS BasicRule wl:1000,1001,1005,1007,1010,1011,1013,1100,1101,1200,1308,1309,1310,1311,1315 "mz:$HEADERS_VAR:cookie"; # xmlrpc BasicRule wl:1402 "mz:$HEADERS_VAR:content-type"; ### simple BODY (POST) BasicRule wl:1001,1015,1009,1311,1310,1101,1016 "mz:$URL:/|$BODY_VAR:customized"; # comments BasicRule wl:1000,1010,1011,1013,1015,1200,1310,1311 "mz:$BODY_VAR:post_title"; BasicRule wl:1000 "mz:$BODY_VAR:original_publish"; BasicRule wl:1000 "mz:$BODY_VAR:save"; BasicRule wl:1008,1010,1011,1013,1015 "mz:$BODY_VAR:sk2_my_js_payload"; BasicRule wl:1001,1009,1005,1016,1100,1101,1310 "mz:$BODY_VAR:url"; BasicRule wl:1009,1100,1101 "mz:$BODY_VAR:referredby"; BasicRule wl:1009,1100,1101 "mz:$BODY_VAR:_wp_original_http_referer"; BasicRule wl:1000,1001,1005,1008,1007,1009,1010,1011,1013,1015,1016,1100,1101,1200,1302,1303,1310,1311,1315,1400 "mz: $BODY_VAR:comment"; BasicRule wl:1100,1101 "mz:$BODY_VAR:redirect_to"; BasicRule wl:1000,1009,1315 "mz:$BODY_VAR:_wp_http_referer"; BasicRule wl:1000 "mz:$BODY_VAR:action"; BasicRule wl:1001,1013 "mz:$BODY_VAR:blogname"; BasicRule wl:1015,1013 "mz:$BODY_VAR:blogdescription"; BasicRule wl:1015 "mz:$BODY_VAR:date_format_custom"; BasicRule wl:1015 "mz:$BODY_VAR:date_format"; BasicRule wl:1015 "mz:$BODY_VAR:tax_input%5bpost_tag%5d"; BasicRule wl:1015 "mz:$BODY_VAR:tax_input[post_tag]"; BasicRule wl:1100,1101 "mz:$BODY_VAR:siteurl"; BasicRule wl:1100,1101 "mz:$BODY_VAR:home"; BasicRule wl:1000,1015 "mz:$BODY_VAR:submit"; # news content matches pretty much everything BasicRule wl:0 "mz:$BODY_VAR:content"; BasicRule wl:1000 "mz:$BODY_VAR:delete_option"; BasicRule wl:1000 "mz:$BODY_VAR:prowl-msg-message"; BasicRule wl:1100,1101 "mz:$BODY_VAR:_url"; BasicRule wl:1001,1009 "mz:$BODY_VAR:c2c_text_replace%5btext_to_replace%5d"; BasicRule wl:1200 "mz:$BODY_VAR:ppn_post_note"; BasicRule wl:1100,1101 "mz:$BODY_VAR:author"; BasicRule wl:1001,1015 "mz:$BODY_VAR:excerpt"; BasicRule wl:1015 "mz:$BODY_VAR:catslist"; BasicRule wl:1005,1008,1009,1010,1011,1015,1315 "mz:$BODY_VAR:cookie"; BasicRule wl:1101 "mz:$BODY_VAR:googleplus"; BasicRule wl:1007 "mz:$BODY_VAR:name"; BasicRule wl:1007 "mz:$BODY_VAR:action"; BasicRule wl:1100,1101 "mz:$BODY_VAR:attachment%5burl%5d"; BasicRule wl:1100,1101 "mz:$BODY_VAR:attachment_url"; BasicRule wl:1001,1009,1100,1101,1302,1303,1310,1311 "mz:$BODY_VAR:html"; BasicRule wl:1015 "mz:$BODY_VAR:title"; BasicRule wl:1001,1009,1015 "mz:$BODY_VAR:recaptcha_challenge_field"; BasicRule wl:1011 "mz:$BODY_VAR:pwd"; BasicRule wl:1000 "mz:$BODY_VAR:excerpt"; ### BODY|NAME BasicRule wl:1000 "mz:$BODY_VAR:delete_option|NAME"; BasicRule wl:1000 "mz:$BODY_VAR:from|NAME"; ### Simple ARGS (GET) # WP login screen BasicRule wl:1100,1101 "mz:$ARGS_VAR:redirect_to"; BasicRule wl:1000,1009 "mz:$ARGS_VAR:_wp_http_referer"; BasicRule wl:1000 "mz:$ARGS_VAR:wp_http_referer"; BasicRule wl:1000 "mz:$ARGS_VAR:action"; BasicRule wl:1000 "mz:$ARGS_VAR:action2"; # load and load[] GET variable BasicRule wl:1000,1015 "mz:$ARGS_VAR:load"; BasicRule wl:1000,1015 "mz:$ARGS_VAR:load[]"; BasicRule wl:1015 "mz:$ARGS_VAR:q"; BasicRule wl:1000,1015 "mz:$ARGS_VAR:load%5b%5d";
  • 14. ### URL BasicRule wl:1000 "mz:URL|$URL:/wp-admin/update-core.php"; BasicRule wl:1000 "mz:URL|$URL:/wp-admin/update.php"; BasicRule wl:1000 "mz:$URL:/wp-includes/js/imgareaselect/imgareaselect.css|URL"; BasicRule wl:1002 "mz:$URL_X:/wp-content/uploads/[0-9]{4}/[0-9]{2}/[^/]+.jpg$|URL"; # URL|ARGS BasicRule wl:1015 "mz:$URL:/wp-admin/load-styles.php|$ARGS_VAR:dashicons,admin-bar,wp-admin,buttons,wp-auth-check"; BasicRule wl:1000 "mz:$URL:/wp-admin/about.php|$ARGS_VAR:updated"; BasicRule wl:1009 "mz:$URL:/wp-admin/customize.php|$ARGS_VAR:return"; # URL|BODY BasicRule wl:1009,1100,1101 "mz:$URL:/wp-admin/post.php|$BODY_VAR:_wp_http_referer"; BasicRule wl:1016 "mz:$URL:/wp-admin/post.php|$BODY_VAR:metakeyselect"; BasicRule wl:11 "mz:$URL:/xmlrpc.php|BODY"; BasicRule wl:11,16 "mz:$URL:/wp-cron.php|BODY"; BasicRule wl:2 "mz:$URL:/wp-admin/async-upload.php|BODY"; # URL|BODY|NAME BasicRule wl:1100,1101 "mz:$URL:/wp-admin/post.php|$BODY_VAR:_wp_original_http_referer|NAME"; BasicRule wl:1000 "mz:$URL:/wp-admin/post.php|$BODY_VAR:metakeyselect|NAME"; BasicRule wl:1000 "mz:$URL:/wp-admin/user-edit.php|$BODY_VAR:from|NAME"; BasicRule wl:1100,1101 "mz:$URL:/wp-admin/admin-ajax.php|$BODY_VAR:attachment%5burl%5d|NAME"; BasicRule wl:1100,1101 "mz:$URL:/wp-admin/post.php|$BODY_VAR:attachment_url|NAME"; BasicRule wl:1000 "mz:$URL:/wp-admin/plugins.php|$BODY_VAR:verify-delete|NAME"; BasicRule wl:1310,1311 "mz:$URL:/wp-admin/post.php|$BODY_VAR:post_category[]|NAME"; BasicRule wl:1311 "mz:$URL:/wp-admin/post.php|$BODY_VAR:post_category|NAME"; BasicRule wl:1310,1311 "mz:$URL:/wp-admin/post.php|$BODY_VAR:tax_input[post_tag]|NAME"; BasicRule wl:1310,1311 "mz:$URL:/wp-admin/post.php|$BODY_VAR:newtag[post_tag]|NAME"; BasicRule wl:1310,1311 "mz:$URL:/wp-admin/users.php|$BODY_VAR:users[]|NAME"; BasicRule wl:1000 "mz:$URL:/wp-admin/update-core.php|$BODY_VAR:Update%2BTranslations|NAME"; BasicRule wl:1000 "mz:$URL:/wp-admin/update-core.php|$BODY_VAR:Update%2BNow|NAME"; # URL|ARGS|NAME BasicRule wl:1310,1311 "mz:$URL:/wp-admin/load-scripts.php|$ARGS_VAR:load[]|NAME"; BasicRule wl:1000 "mz:$URL:/wp-admin/users.php|$ARGS_VAR:delete_count|NAME"; BasicRule wl:1000 "mz:$URL:/wp-admin/users.php|$ARGS_VAR:update|NAME"; BasicRule wl:1310,1311 "mz:$URL:/wp-admin/customize.php|$ARGS_VAR:autofocus[control]|NAME"; # plain WP site BasicRule wl:1000 "mz:URL|$URL:/wp-admin/update-core.php"; BasicRule wl:1000 "mz:URL|$URL:/wp-admin/update.php"; # URL|BODY BasicRule wl:1009,1100,1101 "mz:$URL:/wp-admin/post.php|$BODY_VAR:_wp_http_referer"; BasicRule wl:1016 "mz:$URL:/wp-admin/post.php|$BODY_VAR:metakeyselect"; BasicRule wl:11 "mz:$URL:/xmlrpc.php|BODY"; BasicRule wl:11,16 "mz:$URL:/wp-cron.php|BODY"; # URL|BODY|NAME BasicRule wl:1100,1101 "mz:$URL:/wp-admin/post.php|$BODY_VAR:_wp_original_http_referer|NAME"; BasicRule wl:1000 "mz:$URL:/wp-admin/post.php|$BODY_VAR:metakeyselect|NAME"; BasicRule wl:1000 "mz:$URL:/wp-admin/user-edit.php|$BODY_VAR:from|NAME"; BasicRule wl:1100,1101 "mz:$URL:/wp-admin/admin-ajax.php|$BODY_VAR:attachment%5burl%5d|NAME"; BasicRule wl:1310,1311 "mz:$URL:/wp-admin/admin-ajax.php|$BODY_VAR:data[wp-auth-check]|NAME"; BasicRule wl:1310,1311 "mz:$URL:/wp-admin/admin-ajax.php|$BODY_VAR:data[wp-check-locked-posts][]|NAME"; BasicRule wl:1310,1311 "mz:$URL:/wp-admin/admin-ajax.php|$BODY_VAR:data[wp-refresh-post-lock][post_id]|NAME"; BasicRule wl:1310,1311 "mz:$URL:/wp-admin/admin-ajax.php|$BODY_VAR:data[wp-refresh-post-lock][lock]|NAME"; BasicRule wl:1310,1311 "mz:$URL:/wp-admin/update-core.php|$BODY_VAR:checked[]|NAME"; # URL|ARGS|NAME BasicRule wl:1310,1311 "mz:$URL:/wp-admin/load-scripts.php|$ARGS_VAR:load[]|NAME"; BasicRule wl:1000 "mz:$URL:/wp-admin/users.php|$ARGS_VAR:delete_count|NAME"; BasicRule wl:1000 "mz:$URL:/wp-admin/users.php|$ARGS_VAR:update|NAME"; ### Plugins #WP Minify BasicRule wl:1015 "mz:$URL:/wp-content/plugins/bwp-minify/min/|$ARGS_VAR:f"; #Jetpack Infinite Scroll BasicRule wl:1310,1311 "mz:$BODY_VAR:scripts[]|NAME"; BasicRule wl:1310,1311 "mz:$BODY_VAR:styles[]|NAME"; BasicRule wl:1310,1311 "mz:$BODY_VAR_X:^query_args[.*]|NAME"; BasicRule wl:1000 "mz:$BODY_VAR:query_args[update_post_term_cache]|NAME"; BasicRule wl:1000 "mz:$BODY_VAR:query_args[update_post_meta_cache]|NAME"; #UpdraftPlus
  • 15. BasicRule wl:1000 "mz:$URL:/wp-content/plugins/updraftplus/includes/select2/select2.min.css|URL"; BasicRule wl:1000 "mz:$URL:/wp-content/plugins/updraftplus/includes/select2/select2.min.js|URL"; #WP plugin updates BasicRule wl:1315 "mz:$ARGS_VAR:query|$URL:/wp-json/jetpack/v4/jitm"; #Jetpack Google Fonts BasicRule wl:1001 "mz:$URL_X:^/wp-content/plugins/jetpack/css/.*|URL"; #WooCommerce BasicRule wl:1000 "mz:$URL:/wp-content/plugins/woocommerce/assets/js/select2/select2.full.min.js|URL"; BasicRule wl:1000 "mz:$URL:/wp-content/plugins/woocommerce/assets/js/selectWoo/selectWoo.full.min.js|URL"; BasicRule wl:1000 "mz:$URL:/wp-content/plugins/woocommerce/assets/js/stupidtable/stupidtable.min.js|URL"; #WPML BasicRule wl:1000 "mz:$URL:/wp-content/plugins/sitepress-multilingual-cms/lib/select2/select2.min.js|URL"; #Yoast SEO BasicRule wl:1000 "mz:$URL:/wp-content/plugins/wordpress-seo/js/dist/select2/select2.full.min.js|URL"; BasicRule wl:1000 "mz:$URL:/wp-content/plugins/wordpress-seo/css/dist/select2/select2.min.css|URL"; : ‫ها‬ ‫اسکن‬ ‫از‬ ‫بلوک‬ ‫و‬ ‫جلوگیری‬ ‫برای‬ ‫رول‬ ‫نمونه‬ ‫برای‬ MainRule "str:havij" "msg:Havij-SQL_scanner" "mz:$HEADERS_VAR:User-Agent" "s:$UWA:8" id:42000312 ; MainRule "str:http://http://" "msg:Abnormal double http:// in HTTP header," "mz:HEADERS" "s:$UWA:8" id:42000310 ; # http://pastebin.com/NP64hTQr# http://blog.initiative-s.de/2013/09/kompromitierte-wordpress-blogs-werden-fuer- ddos-attacken-genutzt/ # If using wp then turn off this rule MainRule "str:wordpress/" "msg:Wordpress-UA, probably Botnet-Attack" "mz:$HEADERS_VAR:User-Agent" "s:$UWA:8" id:42000317 ; # https://github.com/robertdavidgraham/masscan MainRule "str:masscan/" "msg:MASSCAN - UA Detected" "mz:$HEADERS_VAR:User-Agent" "s:$UWA:8" id:42000326 ; # sensepost Wiko/Nikto-Clone filescan MainRule "str:sensepostnotthere" "msg:SensePost Wikto-Scanner" "mz:URL" "s:$ATTACK:8" id:42000452 ; # block acunetix scan MainRule "str:99999999999999999999999" "msg:acunetix scan nginx buffer size " "mz:$HEADERS_VAR:Content-length" "s:$UWA:8" id:42001326 ; MainRule "str:acunetix" "msg:acunetix scan website " "mz:URL|BODY|$HEADERS_VAR:Accept|$HEADERS_VAR:User- Agent" "s:$UWA:8" id:42001327 ; MainRule "str:acunetix/wvs" "msg:acunetix scan website " "mz:$HEADERS_VAR:Accept" "s:$UWA:8" id:42001328 ; MainRule "str:webmole" "msg:Scanner webmole" "mz:$HEADERS_VAR:User-Agent" "s:$UWA:8" id:42000159 ; MainRule "str:nlpproject.info" "msg:Some Scanner nlpproject.info" "mz:$HEADERS_VAR:User-Agent" "s:$ATTACK:8" id:42000454 ; MainRule "str:cloudmapping" "msg:Cloud-Mapping-Scanner" "mz:$HEADERS_VAR:User-Agent" "s:$ATTACK:8" id:42000453 ; MainRule "str:sucuri" "msg:Sucuri Vulnerability Scaner" "mz:$HEADERS_VAR:User-Agent" "s:$UWA:8" id:42000364 ; MainRule "str:brutus/" "msg:Brutus - Scanner" "mz:$HEADERS_VAR:User-Agent" "s:$UWA:8" id:42000258 ; MainRule "str:/phpmyadmin" "msg:PHPMyAdmin - Scanner (2) " "mz:URL" "s:$UWA:8" id:42000244 ; MainRule "str:/pma" "msg:PHPMyAdmin - Scanner" "mz:URL" "s:$UWA:8" id:42000243 ; MainRule "str:/phppgadmin " "msg:PHPPgAdmin - Scanner" "mz:URL" "s:$UWA:8" id:42000242 ; MainRule "str:/mysqldumper " "msg:MysqlDumper - Scanner " "mz:URL" "s:$UWA:8" id:42000241 ; MainRule "str:apachebench" "msg:AB - ApacheBenchmark-Tool detected" "mz:$HEADERS_VAR:User-Agent" "s:$UWA:4" id:42000240 ; MainRule "str:/netsparker" "msg:Netsparker-Scan in Progress" "mz:URL" "s:$UWA:8" id:42000202 ; MainRule "str:sqlmap" "msg:Scanner sqlmap sql injection" "mz:$HEADERS_VAR:User-Agent" "s:$UWA:8" id:42000203 ;
  • 16. MainRule "str:mysqloit" "msg:Scanner Mysqloit - Mysql Injection Takover Tool" "mz:$HEADERS_VAR:User-Agent" "s: $UWA:8" id:42000200 ; MainRule "str:network-services-auditor" "msg:Scanner IBM NSA User Agent" "mz:$HEADERS_VAR:User-Agent" "s: $UWA:8" id:42000198 ; MainRule "str:dav.pm" "msg:Scanner DavTest WebDav Vulnerability Scanner" "mz:$HEADERS_VAR:User-Agent" "s: $UWA:8" id:42000194 ; MainRule "str:w3af" "msg:Scanner w3af" "mz:$HEADERS_VAR:User-Agent" "s:$UWA:8" id:42000178 ; MainRule "str:http_get_vars" "msg:PHP-Injetion on UA" "mz:$HEADERS_VAR:User-Agent" "s:$ATTACK:8" id:42000174 ; MainRule "str:whisker" "msg:Scanner whisker" "mz:$HEADERS_VAR:User-Agent" "s:$UWA:8" id:42000171 ; MainRule "str:whatweb" "msg:Scanner whatweb" "mz:$HEADERS_VAR:User-Agent" "s:$UWA:8" id:42000151 ; MainRule "str:dirbuster" "msg:DirBuster Web App Scan in Progress" "mz:$HEADERS_VAR:User-Agent" "s: $ATTACK:8,$UWA:8" id:42000036 ; MainRule "str:gzinflate(" "msg:gzinflate in URI" "mz:URL|BODY|ARGS" "s:$UWA:8" id:42000259 ; MainRule "str:/bin/sh" "msg:/bin/sh in URI" "mz:URL|BODY|ARGS|$HEADERS_VAR:User-Agent|$HEADERS_VAR:Cookie" "s:$UWA:8" id:42000257 ; MainRule "str:.conf" "msg:possible CONF-File - Access" "mz:URL" "s:$UWA:8" id:42000252 ; MainRule "str:.ini" "msg:possible INI - File - Access" "mz:URL" "s:$UWA:8" id:42000254 ; MainRule "str:/sftp-config.json" "msg:SFTP-config-file access" "mz:URL|BODY" "s:$ATTACK:8,$UWA:8" id:42000084 ; # https://www.bleepingcomputer.com/news/security/phps-git-server-hacked-to-add-backdoors-to-php-source-code/ # https://github.com/php/php-src/commit/c730aa26bd52829a49f2ad284b181b7e82a68d7d#diff- a35f2ee9e1d2d3983a3270ee10ec70bf86349c53febdeabdf104f88cb2167961R370 # prevent php supply chain attack MainRule "str:zerodium" "msg:php supply chain attack " "mz:$HEADERS_VAR:User-Agent" "s:$UWA:8" id:42000085 ; # prevent log4j attack # info https://www.govcert.ch/blog/zero-day-exploit-targeting-popular-java-library-log4j/ # payload check https://github.com/johto89/Some-collections-for-Security-Researcher/blob/master/log4j-all-in-one.md MainRule "str:${" "msg:log4j attack detection " "mz:$HEADERS_VAR:User-Agent" "s:$UWA:8" id:42000086;
  • 17. ‌ : ‫میباشد‬ ‫زیر‬ ‫صورت‬ ‫هابه‬ ‫رول‬ ‫ساختار‬ ‫اما‬ ‫و‬ ' ‫رشته‬ ‫حاوی‬ ‫درخواستی‬ ‫هر‬ ‫یعنی‬ .‫هستند‬ ‫حمالت‬ ‫شناسایی‬ ‫برای‬ ‫درخواست‬ ‫از‬ ‫‌هایی‬ ‫ش‬‫بخ‬ ‫در‬ ‫الگوها‬ ‫جستجوی‬ ‫برای‬ ‫قوانین‬ zz ‫هر‬ ‫در‬ ‫را‬ ' ‫آرگومان‬ GET ‫یا‬ POST : ‫میباشد‬ MainRule id:424242 "str:zz" "mz:ARGS|BODY" "s:DROP"; MainRule "str:/phpmyadmin" "msg:PHPMyAdmin - Scanner (2) " "mz:URL" "s:$UWA:8" id:42000244 ; ‫مثال‬ ‫برای‬ . ‫شود‬ ‫استفاده‬ ‫هم‬ ‫هم‬ ‫در‬ ‫بصورت‬ ‫ساختار‬ ‫میتواند‬ :‫نکته‬ id . ‫باشد‬ ‫آخر‬ ‫یا‬ ‫اول‬ ‫‌در‬ ( ‫مکان‬ ‫سطح‬ ‫در‬ ‫توانند‬ ‫می‬ ‫قوانین‬ BasicRule ‫سطح‬ ‫در‬ ‫یا‬ ) http (MainRule) ‫قوانین‬ .‫باشند‬ ‫داشته‬ ‫وجود‬ ‫مثل‬ ‫طرح‬ ‫باال‬ . ‫هستند‬ ID (id:...) id:num ‫در‬ ‫که‬ ‫است‬ ‫قانون‬ ‫‌فرد‬ ‫ه‬‫منحصرب‬ ‫عددی‬ ‫شناسه‬ NAXSI_FMT ‫از‬ ‫کمتر‬ ‫های‬ ‫شناسه‬ .‫‌شود‬ ‫ی‬‫م‬ ‫استفاده‬ ‫سفید‬ ‫‌های‬ ‫ت‬‫لیس‬ ‫یا‬ 1000 ‫داخلی‬ ‫قوانین‬ ‫برای‬ naxsi . ‫میباشد‬ ‌ : ‫میباشند‬ ‫زیر‬ ‫الگوهای‬ ‫براساس‬ ‫و‬
  • 18. ‫الگو‬ ‫بصورت‬ regex ‌ : ‫است‬ ‫‌سازی‬ ‫ه‬‫پیاد‬ ‫قابل‬ • rx:foo|bar : will match foo or bar • str:foo|bar : will match foo|bar • d:libinj_xss : will match if libinjection says it's XSS (>= 0.55rc2) • d:libinj_sql : will match if libinjection says it's SQLi (>= 0.55rc2) ‫الگو‬ ‫زیرا‬ ،‫باشند‬ ‫کوچک‬ ‫حروف‬ ‫با‬ ‫باید‬ ‫‌ها‬ ‫ه‬‫رشت‬ ‫همه‬ .‫است‬ ‫سریعتر‬ ‫بسیار‬ ‫زیرا‬ ،‫شود‬ ‫می‬ ‫توصیه‬ ‫امکان‬ ‫صورت‬ ‫در‬ ‫ساده‬ ‫رشته‬ ‫تطابق‬ ‫از‬ ‫استفاده‬ ‫های‬ naxsi .‫هستند‬ ‫حساس‬ ‫کوچک‬ ‫و‬ ‫بزرگ‬ ‫حروف‬ ‫به‬ Score (s:...) s :‫کنید‬ ‫ایجاد‬ »‫‌شده‬ ‫ی‬‫‌گذار‬ ‫م‬‫«نا‬ ‫‌های‬ ‫ه‬‫شمارند‬ ‫‌توانید‬ ‫ی‬‫م‬ .‫است‬ ‫امتیاز‬ ‫بخش‬ s:$FOOBAR:4 $ ‫مقدار‬ FOOBAR ‫را‬ ‫شمارنده‬ 4 ‫افزایش‬ :‫دهد‬ ‫افزایش‬ ‫را‬ ‫امتیاز‬ ‫چندین‬ ‫‌تواند‬ ‫ی‬‫م‬ ‫قانون‬ ‫یک‬ .‫‌دهد‬ ‫ی‬‫م‬ s:$FOO:4،$BAR:8 $ ‫هم‬ FOO ‫را‬ 4 .‫‌دهد‬ ‫ی‬‫م‬ ‫افزایش‬ $ ‫هم‬ ‫و‬ BAR ‫توسط‬ 8 . ‫مانند‬ ‫کند‬ ‫مشخص‬ ‫را‬ ‫عمل‬ ‫یک‬ ً‫ا‬‫مستقیم‬ ‫تواند‬ ‫می‬ ‫همچنین‬ ‫قانون‬ ‫یک‬ BLOCK ‫یا‬ )‫کند‬ ‫می‬ ‫مسدود‬ ‫یادگیری‬ ‫غیر‬ ‫حالت‬ ‫در‬ ‫را‬ ‫(درخواست‬ DROP ‫توسط‬ ً‫ا‬‫بعد‬ ‫شده‬ ‫نامگذاری‬ ‫امتیازهای‬ )‫کند‬ ‫می‬ ‫مسدود‬ ‫یادگیری‬ ‫حالت‬ ‫در‬ ‫حتی‬ ‫را‬ ‫(درخواست‬ CheckRules .‫شوند‬ ‫می‬ ‫مدیریت‬
  • 19. ‫واما‬ CheckRules ‌ : CheckRules ‫به‬ naxsi ( ‫اقدامی‬ ،‫درخواست‬ ‫با‬ ‫مرتبط‬ ‫خاص‬ ‫امتیاز‬ ‫یک‬ ‫اساس‬ ‫بر‬ ‫تا‬ ‫دهد‬ ‫می‬ ‫دستور‬ LOG، BLOCK، DROP، ALLOW ) .‫شود‬ ‫می‬ ‫تعیین‬ ‫قانون‬ ‫چند‬ ‫یا‬ ‫یک‬ ‫توسط‬ ً‫ال‬‫معمو‬ ‫امتیاز‬ ‫این‬ .‫دهد‬ ‫انجام‬ ‫یک‬ CheckRule ‫معمولی‬ ‫صورت‬ ‫این‬ ‫به‬ :‫است‬ CheckRule "$SQL >= 8" BLOCK; $ ‫اگر‬ SQL ‫یا‬ ‫برابر‬ ‫بزرگتر‬ ' ‫از‬ 8 ' ‫باشد‬ ‫پرچم‬ ، BLOCK ‫اعمال‬ ‫درخواست‬ ‫روی‬ ‫را‬ ‫میکند‬ ‫که‬ ‫شود‬ ‫می‬ ‫مسدود‬ ‫صورتی‬ ‫در‬ ‫فقط‬ ‫درخواست‬ . .‫نباشد‬ ‫یادگیری‬ ‫حالت‬ ‫در‬ ‫مکان‬ ‫استفاده‬ ‫موارد‬ ‫سایر‬ CheckRule ‫مجازی‬ ‫وصله‬ ‫ترکیبی‬ ‫پیکربندی‬ ‫یک‬ ‫داشتن‬ ‫با‬ .‫شود‬ ‫استفاده‬ ‫سیاه‬ ‫و‬ ‫سفید‬ ‫های‬ ‫لیست‬ ‫ترکیب‬ ‫برای‬ ‫تواند‬ ‫می‬ ‫همچنین‬ )‫(های‬ ‫و‬ naxsi_core.rules : ‫باشد‬ ‫صورت‬ ‫این‬ ‫به‬ ‫ممکن‬ ،
  • 20. CheckRule "$UWA >= 4" DROP; CheckRule "$XSS >= 8" BLOCK; $ ‫امتیاز‬ ‫با‬ ‫درخواستی‬ ‫هر‬ - ‫یادگیری‬ ‫حالت‬ ‫در‬ ‫حتی‬ - ‫بنابراین‬ UWA ‫با‬ ‫برابر‬ 4 ‫‌های‬ ‫ت‬‫درخواس‬ ‫که‬ ‫حالی‬ ‫در‬ ،‫‌کند‬ ‫ی‬‫م‬ ‫مسدود‬ ‫را‬ ‫‌ها‬ ‫ت‬‫درخواس‬ ‫امتیاز‬ ‫دارای‬ XSS ‫از‬ ‫باالتر‬ ‫(حتی‬ $ 8 ‫در‬ ‫فقط‬ ) location .‫‌شوند‬ ‫ی‬‫م‬ ‫مسدود‬ ‫یادگیری‬ ‫در‬ ‫نه‬ ‫و‬ )‫(ها‬ MatchZone (mz:...) ‌ : ‫شد‬ ‫آور‬ ‫یاد‬ ‫باید‬ ‫بحث‬ ‫شروع‬ ‫از‬ ‫قبل‬ Match Zones mz ‫باشد‬ ‫مجاز‬ ‫باید‬ ‫که‬ ‫جایی‬ ‫یا‬ )‫(قوانین‬ ‫الگو‬ ‫یک‬ ‫جستجوی‬ ‫محل‬ ‫تعیین‬ ‫برای‬ .‫دارد‬ ‫وجود‬ ‫سفید‬ ‫لیست‬ ‫و‬ ‫قوانین‬ ‫در‬ ‫در‬ :‫‌کنند‬ ‫ی‬‫م‬ ‫عمل‬ ‫متفاوت‬ ‫کمی‬ ‫سفید‬ ‫‌های‬ ‫ت‬‫لیس‬ ‫و‬ ‫قوانین‬ ‫در‬ ‫مطابق‬ ‫مناطق‬ ‫که‬ ‫باشید‬ ‫داشته‬ ‫توجه‬ ً‫ا‬‫لطف‬ .‫شود‬ ‫می‬ ‫استفاده‬ )‫سفید‬ ‫(لیست‬ ‫شرط‬ ‫هر‬ ،‫قوانین‬ OR ‫در‬ ‫مثال‬ ‫عنوان‬ ‫(به‬ ‫است‬ BODY ‫در‬ ‫یا‬ HEADERS ‫سفید‬ ‫لیست‬ ‫در‬ ‫که‬ ‫حالی‬ ‫در‬ ،) AND ‫آدرس‬ ‫(یعنی‬ ‫است‬ / ‫باید‬ ‫اینترنتی‬ foo ‫در‬ ‫باید‬ ‫استثنا‬ ‫و‬ ‫باشد‬ ARGS )‫دهد‬ ‫رخ‬ ‫جهانی‬ ‫مناطق‬ 4 :‫دارد‬ ‫وجود‬ ‫اصلی‬ ‫منطقه‬ URL، ARGS، HEADERS، BODY ‫و‬ ، matchzone .‫باشند‬ ‫کننده‬ ‫محدود‬ ‫بیش‬ ‫و‬ ‫کم‬ ‫توانند‬ ‫می‬
  • 21. mz :‫باشد‬ ‫گسترده‬ ‫تواند‬ ‫می‬ ARGS ‫کنید‬ ‫دریافت‬ ‫را‬ ‫ارگ‬ : ‫های‬ ‫سرصفحه‬ :‫هدرها‬ HTTP BODY : POST args ‫(و‬ RAW_BODY ) URL ‫خود‬ : URL )»‫«؟‬ ‫از‬ ‫(قبل‬ :‫تر‬ ‫دقیق‬ ‫یا‬ $ ARGS_VAR:string ‫آرگومان‬ ‫نام‬ ‫با‬ : GET $ HEADERS_VAR:string ‫نام‬ ‫به‬ : HTTP header $ BODY_VAR:string ‫آرگومان‬ ‫نام‬ ‫با‬ : POST :)‫باشد‬ ‫متفاوت‬ ‫تواند‬ ‫می‬ ‫متغیرها‬ ‫نام‬ ‫(یعنی‬ ‫است‬ ‫نیاز‬ ‫مورد‬ ‫منظم‬ ‫عبارات‬ ،‫اوقات‬ ‫گاهی‬ $ HEADERS_VAR_X:regex: regex ‫عنوان‬ ‫با‬ ‫مطابق‬ HTTP =>( ‫شده‬ ‫‌گذاری‬ ‫م‬‫نا‬ 0.52 ) $ ARGS_VAR_X:regex: regex ‫آرگومان‬ ‫یک‬ ‫نام‬ ‫با‬ ‫مطابق‬ GET (>= 0.52) $ BODY_VAR_X:regex: regex ‫آرگومان‬ ‫نام‬ ‫با‬ ‫مطابق‬ POST (>= 0.52) ‫یک‬ Matchzone ‫یک‬ ‫به‬ ‫توان‬ ‫می‬ ‫را‬ URL )‫نیست‬ ‫منطقه‬ ‫یک‬ ‫خود‬ ‫خودی‬ ‫به‬ ‫(اما‬ :‫کرد‬ ‫محدود‬ ‫خاص‬ $ URL:string ‫است‬ ‫اینترنتی‬ ‫آدرس‬ ‫این‬ ‫به‬ ‫محدود‬ : $ URL_X:regex ‫به‬ ‫محدود‬ : Regex ‫با‬ ‫مطابق‬ URL (>= 0.52) ‫که‬ ‫ای‬ ‫مسابقه‬ ‫منطقه‬ BODY،HEADERS،ARGS | ‫تواند‬ ‫می‬ ،‫دهد‬ ‫می‬ ‫قرار‬ ‫هدف‬ ‫را‬ NAME ‫یک‬ ‫محتوای‬ ،‫کند‬ ‫اضافه‬ ‫هدف‬ ‫تعیین‬ ‫برای‬ ‫را‬ .‫است‬ ‫آن‬ ‫نام‬ ‫خود‬ ‫بلکه‬ ،‫نیست‬ ‫متغیر‬ ‫نام‬ ‫شکل‬ ‫به‬ ] [ ‫سفید‬ ‫لیست‬ ‫مثال‬ ‫عنوان‬ ‫(به‬ ‫است‬ ‫مفید‬ ‫خاص‬ ‫های‬ ‫زمینه‬ ‫در‬ var ‫در‬ url /foo ) BasicRule id:1310,1311 "mz:$URL:/foo|BODY|NAME ;" :‫مطابقت‬ ‫مناطق‬ ،‫تر‬ ‫خاص‬ FILE_EXT ‫یک‬ ‫(در‬ ‫فایل‬ ‫نام‬ : POST )‫فایل‬ ‫یک‬ ‫حاوی‬ ‫قسمتی‬ ‫چند‬ RAW_BODY ‫از‬ ‫نشده‬ ‫تجزیه‬ ‫و‬ ‫خام‬ ‫نمایش‬ ‫یک‬ : BODY ‫درخواست‬ ‫یک‬ http (>= 0.55rc0)
  • 22. (‫مسابقه‬ ‫منطقه‬ Matchzone ) Matchzone ‫یک‬ ‫با‬ ‫ناحیه‬ ‫چند‬ ‫یا‬ ‫یک‬ ‫از‬ ‫ترکیبی‬ URL .‫است‬ ‫اختیاری‬ ‫یک‬ ‫توان‬ ‫می‬ ‫و‬ ‫است‬ ‫بینی‬ ‫پیش‬ ‫قابل‬ ‫اینترنتی‬ ‫آدرس‬ ‫و‬ ‫متغیر‬ ‫نام‬ ،‫ها‬ ‫موقعیت‬ ‫بیشتر‬ ‫در‬ mz :‫کرد‬ ‫ایجاد‬ ‫ثابت‬
  • 23. ‫که‬ ‫زمانی‬ regex ‌ : ‫هست‬ ‫‌نیاز‬ ‫توانید‬ ‫نمی‬ ‫شما‬ :‫توجه‬ regex ($URL_X) $( ‫استاتیک‬ ‫و‬ ARGS_VAR .‫کنید‬ ‫ترکیب‬ ‫قانون‬ ‫یک‬ ‫در‬ ‫را‬ ) $ URL $ ‫و‬ URL_X ‫یک‬ ‫محدوده‬ ‫کردن‬ ‫محدود‬ ‫برای‬ ‫فقط‬ matchzone .‫‌کنند‬ ‫ی‬‫نم‬ ‫مشخص‬ ‫را‬ ‫منطقه‬ ‫و‬ ‫‌شوند‬ ‫ی‬‫م‬ ‫استفاده‬ ‫دهد‬ ‫می‬ ‫قرار‬ ‫سفید‬ ‫لیست‬ ‫در‬ ‫را‬ ‫مسابقه‬ ‫مناطق‬ :‫شوند‬ ‫برآورده‬ ‫باید‬ ‫شرایط‬ ‫همه‬ ،‫سفید‬ ‫لیست‬ ‫زمینه‬ ‫در‬ BasicRule wl:X "mz:$ARGS_VAR:foo|$URL:/bar";
  • 24. id X ‫متغیر‬ ‫سفید‬ ‫لیست‬ ‫در‬ GET 'foo ‫در‬ ' URL '/bar ‫دارد‬ ‫قرار‬ ' ‫مسابقه‬ ‫مناطق‬ ‫قوانین‬ $ ،‫قوانین‬ ‫زمینه‬ ‫در‬ URL $ ‫یا‬ URL_X ‫عنوان‬ ‫به‬ ‫دیگری‬ ‫شرایط‬ ‫هر‬ .‫شود‬ ‫برآورده‬ ‫باید‬ ‫وجود‬ ‫صورت‬ ‫در‬ OR ‫تلقی‬ )‫سفید‬ ‫لیست‬ ‫خالف‬ ‫(بر‬ .‫شود‬ ‫می‬ BasicRule str:Y id:X "mz:ARGS|BODY ' ‫الگوی‬ ;" Y ‫استدالل‬ ‫هر‬ ‫با‬ ' GET ‫و‬ POST ‫داشت‬ ‫خواهد‬ ‫مطابقت‬ BasicRule str:Y id:X "mz:ARGS|BODY|$URL:/foo ‫که‬ ‫زمانی‬ ‫تا‬ ;" URL /foo ' ‫الگوی‬ ،‫باشد‬ Y ‫استدالل‬ ‫هر‬ ‫با‬ ' GET ‫و‬ POST ‫دارد‬ ‫مطابقت‬ Regex ‫رشته‬ ‫مقابل‬ ‫در‬ Matchzones ‫از‬ ‫متشکل‬ Matchzones _*$( ‫ایستا‬ VAR: $URL ‫در‬ ): hashtable .‫است‬ ‫بهینه‬ ‫بنابراین‬ ‫و‬ ‫شود‬ ‫می‬ ‫ذخیره‬ ‫ها‬ ‫مسابقه‬ ‫مناطق‬ Regex ($*_VAR_X: $URL_X:) ‫اختالط‬ ‫امکان‬ .‫دارند‬ ‫نیاز‬ ‫بیشتری‬ ‫اجرا‬ ‫زمان‬ ‫پردازش‬ ‫به‬ static ‫و‬ regex matchzone :‫ندارد‬ ‫وجود‬ ‫سفید‬ ‫لیست‬/‫قانون‬ ‫یک‬ ‫در‬ mz:$ARGS_VAR_X:^foo$|$URL:/x ‫یا‬ mz:$URL_X:/foo|$ARGS_VAR:x . ‫است‬ ‫اشتباه‬ ‌ : ‫ادامه‬ ‫در‬ mz .‫شود‬ ‫می‬ ‫بازرسی‬ ‫قانون‬ ‫توسط‬ ‫درخواست‬ ‫از‬ ‫قسمت‬ ‫کدام‬ ‫کند‬ ‫می‬ ‫تعیین‬ ‫که‬ ‫است‬ ‫تطبیق‬ ‫منطقه‬ $ ‫جز‬ ‫به‬ ‫مطابق‬ ‫مناطق‬ ‫همه‬ ،‫قوانین‬ ‫در‬ URL ‫شرایط‬ ‫عنوان‬ ‫به‬ :* OR :‫شوند‬ ‫می‬ ‫تلقی‬ MainRule id:4242 str:z "mz:$ARGS_VAR:X|BODY"; ' ‫الگوی‬ z ‫در‬ ' GET var 'X ‫متغیرهای‬ ‫همه‬ ‫و‬ ' BODY .‫شود‬ ‫می‬ ‫جستجو‬
  • 25. MainRule id:4242 str:z "mz:$ARGS_VAR:X|BODY|$URL_X:^/foo"; ' ‫الگوی‬ z ‫در‬ ' GET var 'X ‫متغیرهای‬ ‫همه‬ ‫و‬ ' BODY ‫که‬ ‫زمانی‬ ‫تا‬ URL / ‫با‬ foo .‫شود‬ ‫می‬ ‫جستجو‬ ‫شود‬ ‫شروع‬ ‫ورژن‬ ‫از‬ naxsi 0.55rc0 ‫مطابقت‬ ‫منطقه‬ ‫از‬ ‫‌توانید‬ ‫ی‬‫م‬ ،‫ناشناخته‬ ‫محتوای‬ ‫انواع‬ ‫برای‬ ، RAW_BODY ‫قوانین‬ .‫کنید‬ ‫استفاده‬ RAW_BODY :‫است‬ ‫صورت‬ ‫این‬ ‫به‬ MainRule id:4241 s:DROP str:RANDOMTHINGS mz:RAW_BODY; ‫منطقه‬ ‫در‬ ‫قوانین‬ RAW_BODY :‫که‬ ‫شوند‬ ‫می‬ ‫اعمال‬ ‫زمانی‬ ‫فقط‬ ‫که‬ ‫معنی‬ ‫این‬ ‫(به‬ ‫است‬ ‫ناشناخته‬ ‫محتوا‬ ‫نوع‬ naxsi )‫کند‬ ‫تجزیه‬ ‫درستی‬ ‫به‬ ‫را‬ ‫درخواست‬ ‫چگونه‬ ‫داند‬ ‫نمی‬ id 11 .‫است‬ ‫گرفته‬ ‫قرار‬ ‫سفید‬ ‫لیست‬ ‫در‬ )‫است‬ »‫ناشناخته‬ ‫محتوای‬ ‫«نوع‬ ‫برای‬ ‫داخلی‬ ‫مسدودسازی‬ ‫قانون‬ ‫(که‬ ( ‫کامل‬ ‫متن‬ ،‫سپس‬ url ' ‫با‬ ‫که‬ ‫تهی‬ ‫های‬ ‫بایت‬ ‫با‬ ‫و‬ ‫شده‬ ‫رمزگشایی‬ 0 ‫کامل‬ ‫بدنه‬ .‫شود‬ ‫می‬ ‫منتقل‬ ‫قوانین‬ ‫مجموعه‬ ‫این‬ ‫به‬ )‫اند‬ ‫شده‬ ‫جایگزین‬ ' .‫شود‬ ‫می‬ ‫داده‬ ‫مطابقت‬ ‫ای‬ ‫رشته‬ ‫های‬ ‫مطابقت‬ ‫یا‬ ‫ها‬ ‫رجکس‬ ‫با‬ ‫دوباره‬ ‫قوانین‬ ‫برای‬ ‫سفید‬ ‫لیست‬ RAW_BODY :‫مانند‬ ،‫شود‬ ‫می‬ ‫نوشته‬ ‫معمولی‬ ‫بدن‬ ‫قوانین‬ ‫مانند‬ ‫درست‬ ‫واقع‬ ‫در‬ BasicRule wl:4241 "mz:$URL:/rata|BODY"; Human readable message (msg:...) msg .‫شود‬ ‫می‬ ‫استفاده‬ ‫انسان‬ ‫برای‬ ‫فهم‬ ‫قابل‬ ‫متنی‬ ‫داشتن‬ ‫و‬ ‫تحلیل‬ ‫و‬ ‫تجزیه‬ ‫برای‬ ‫بیشتر‬ ‫این‬ .‫کند‬ ‫می‬ ‫توصیف‬ ‫را‬ ‫الگو‬ ‫که‬ ‫است‬ ‫ای‬ ‫رشته‬ )‫(منفی‬ ‫منفی‬ ‫کلیدی‬ ‫کلمه‬
  • 26. Negative Keyword (negative) .‫کرد‬ ‫استفاده‬ ‫منفی‬ ‫قانون‬ ‫یک‬ ‫ایجاد‬ ‫برای‬ ‫آن‬ ‫از‬ ‫توان‬ ‫می‬ ‫که‬ ‫است‬ ‫کلیدی‬ ‫کلمه‬ ‫منفی‬ MainRule negative "rx:multipart/form-data|application/x-www-form- urlencoded" "msg:Content is neither mulipart/x-www-form.." "mz: $HEADERS_VAR:Content-type" "s:$EVADE:4" id:1402; Whitelists ‫به‬ ‫دادن‬ ‫دستور‬ ‫منظور‬ ‫به‬ ‫سفید‬ ‫‌های‬ ‫ت‬‫فهرس‬ naxsi ‫مثبت‬ ‫از‬ ‫جلوگیری‬ ‫برای‬ ‫خاص‬ )‫(های‬ ‫زمینه‬ ‫در‬ ‫خاص‬ ‫الگوهای‬ ‫گرفتن‬ ‫نادیده‬ ‫برای‬ ‫آدرس‬ ‫در‬ ‫عبارت‬ ‫نام‬ ‫با‬ ‫فیلد‬ ‫در‬ ‫کاراکتر‬ ‫به‬ ‫دادن‬ ‫اجازه‬ ‫یعنی‬ .‫است‬ ‫کاذب‬ /search : BasicRule wl:1013 "mz:$ARGS_VAR:term|$URL:/search"; ( ‫مکان‬ ‫سطح‬ ‫در‬ ‫تواند‬ ‫می‬ ‫سفید‬ ‫لیست‬ BasicRule ‫سطح‬ ‫در‬ ‫یا‬ ) http (MainRule) ‫زیر‬ ‫نحو‬ ‫دارای‬ ‫سفید‬ ‫لیست‬ .‫باشد‬ ‫داشته‬ ‫وجود‬ :‫است‬ ‫قسمت‬ ‫جز‬ ‫به‬ ،‫شود‬ ‫نقل‬ ‫قول‬ ‫نقل‬ ‫دو‬ ‫با‬ ‫باید‬ ‫چیز‬ ‫همه‬ wl .
  • 27. Whitelisted ID (wl:...) wl:0 : Whitelist all rules • wl:42 : Whitelist rule #42 • wl:42,41,43 : Whitelist rules 42, 41 and 43 • wl:-42 : Whitelist all user rules (>= 1000), excepting rule 42
  • 28. ‫اندازی‬ ‫راه‬ ‫و‬ ‫ساختار‬ ui ‫به‬ ‫مرتبط‬ naxsi : nxapi/nxtool ‫انجام‬ ‫را‬ ‫زیر‬ ‫موارد‬ ‫که‬ ‫است‬ ‫جدیدی‬ ‫یادگیری‬ ‫ابزار‬ ‫مید‬ :‫هد‬ ‫رویدادهای‬ ‫کردن‬ ‫وارد‬ :‫رویدادها‬ ‫کردن‬ ‫وارد‬ naxsi ‫داده‬ ‫پایگاه‬ ‫به‬ elasticsearch ‫کنید‬ ‫ایجاد‬ ‫صرف‬ ‫آماری‬ ‫های‬ ‫جنبه‬ ‫جای‬ ‫به‬ ‫الگوها‬ ‫از‬ ‫را‬ ‫سفید‬ ‫های‬ ‫لیست‬ :‫سفید‬ ‫لیست‬ ‫تولید‬ ‫فرآیند‬ ‫از‬ ‫را‬ ‫آنها‬ ‫تا‬ ‫دهید‬ ‫اجازه‬ ‫داده‬ ‫پایگاه‬ ‫در‬ ‫رویدادها‬ ‫گذاری‬ ‫برچسب‬ ‫به‬ :‫رویدادها‬ ‫مدیریت‬ wl gen ‫کنید‬ ‫حذف‬ ‫اطالعات‬ ‫نمایش‬ : ‫گزارش‬ naxsi ‫از‬ json ‌ : ‫میکند‬ ‫استفاده‬ ‫کار‬ ‫این‬ ‫برای‬ { # elasticsearch setup, must point to the right instance. "elastic" : { "host" : "127.0.0.1:9200", "index" : "nxapi", "doctype" : "events", "default_ttl" : "7200", "max_size" : "1000" }, # filter used for any issued requests, you shouldn't modify it yet "global_filters" : { "whitelisted" : "false" }, # global warning and global success rules, used to distinguish good and 'bad' whitelists "global_warning_rules" : { "rule_uri" : [ ">", "5" ], "rule_var_name" : [ ">", "5" ], "rule_ip" : ["<=", 10 ], "global_rule_ip_ratio" : ["<", 5] }, "global_success_rules" : { "global_rule_ip_ratio" : [">=", 30], "rule_ip" : [">=", 10] }, # path to naxsi core rules, path to template files, # path to geoloc database. "naxsi" : { "rules_path" : "/etc/nginx/naxsi_core.rules", "template_path" : "tpl/", "geoipdb_path" : "nx_datas/country2coords.txt" }, # controls default colors and verbosity behavior "output" : { "colors" : "true", "verbosity" : "5" } }
  • 29. ‌ : ‫‌سازی‬ ‫ه‬‫پیاد‬ ‫جهت‬ ‫نیاز‬ ‫پیش‬ ‫زیر‬ ‫لینک‬ ‫از‬ ‫االستیکس‬ ‫بسته‬ ‫دانلود‬ https://www.elastic.co/downloads/elasticsearch . ‫است‬ ‫مفروض‬ ‫زیر‬ ‫‌ها‬ ‫م‬‫اقدا‬ ‫دانلود‬ ‫از‬ ‫بعد‬ • Extract the archive • Start ElasticSearch by executing bin/elasticsearch in the extracted folder • Check whether ElasticSearch is running correctly: curl -XGET http://localhost:9200/ • Add a nxapi index with the following command: curl -XPUT 'http://localhost:9200/nxapi/' ‫بسته‬ ‫خود‬ ‫میتوان‬ ‌ : ‫نکته‬ ElasticSearch . ‫نمود‬ ‫نصب‬ ‫‌را‬  ‫از‬ ‫اطالعات‬ ‫گرفتن‬ ‫جهت‬ db : ‫‌داریم‬   ./nxtool.py -x --colors -c nxapi.json ‫ساخت‬ ‫برای‬ whitelist ‌ : ‫داریم‬ ./nxtool.py -c nxapi.json -x --colors # Whitelist(ing) ratio : # false 79.96 % (total:196902/246244) # true 20.04 % (total:49342/246244) # Top servers : # www.x1.fr 21.93 % (total:43181/196915) # www.x2.fr 15.21 % (total:29945/196915) ... # Top URI(s) : # /foo/bar/test 8.55 % (total:16831/196915)
  • 30. # /user/register 5.62 % (total:11060/196915) # /index.php/ 4.26 % (total:8385/196915) ... # Top Zone(s) : # BODY 41.29 % (total:81309/196924) # HEADERS 23.2 % (total:45677/196924) # BODY|NAME 16.88 % (total:33243/196924) # ARGS 12.47 % (total:24566/196924) # URL 5.56 % (total:10947/196924) # ARGS|NAME 0.4 % (total:787/196924) # FILE_EXT 0.2 % (total:395/196924) # Top Peer(s) : # ... # nx_util.py -l /var/log/nginx/*error.log -H /var/www/nxutil.html
  • 31. ‫نام‬ ‫به‬ ‫دیگری‬ ‫پروژه‬ spike ‫های‬ ‫پروژه‬ ‫از‬ ‫یکی‬ ‫که‬ . ‫میباشد‬ ‫موجود‬ ‫نیز‬ ‫وب‬ ‫تحت‬ ‫ها‬ ‫روال‬ ‫ایجاد‬ ‫منظور‬ ‫به‬ nbs-system . ‫میباشد‬ ‫های‬ ‫روال‬ ‫با‬ ‫مرتبط‬ ‫های‬ ‫ساختار‬ ‫و‬ ‫شروط‬ ‫ایجاد‬ ‫امکان‬ ‫ما‬ ‫پروژه‬ ‫این‬ ‫در‬ naxsi . ‫هستیم‬ ‫دارا‬ ‫نیز‬ ‫را‬ . ‫نکنید‬ ‫استفاده‬ ‫پروژه‬ ‫این‬ ‫از‬ ‫عملیات‬ ‫سیستم‬ ‫در‬ ‫‌شود‬ ‫ی‬‫م‬ ‫‌پیشنهاد‬ : ‫نکته‬ ‫زیادی‬ ‫مخاطرات‬ ‫شامل‬ ‫و‬ .‫شود‬ ‫قوانین‬ ‫حذف‬ ‫یا‬ ‫‌دیدگی‬ ‫ب‬‫آسی‬ ‫به‬ ‫منجر‬ ‫‌تواند‬ ‫ی‬‫م‬ ‫عموم‬ ‫به‬ !‫اسپایک‬ ‫افشای‬ .‫است‬ ‫آلفا‬ ‫نسخه‬ ‫هنوز‬ ‫اسپایک‬ . ‫باشد‬ ‫میتواند‬
  • 32. ‫‌های‬ ‫ی‬‫ویژگ‬ ‫از‬ ‫یکی‬ naxsi . ‫میباشد‬ ‫ها‬ ‫ساختار‬ ‫سایر‬ ‫با‬ ‫اینتگرید‬ ‫قابلیت‬ Naxsi ‫با‬ ‫میتواند‬ apparmor, faile2ban ‫ها‬ ‫ساختار‬ ‫سایر‬ ‫و‬ ‌ . ‫شود‬ ‫اینتگرید‬ ‫با‬ ‫را‬ ‫آن‬ ‫اینتگرید‬ ‫نحوه‬ ‫ما‬ ‫جا‬ ‌ ‫ن‬‫ای‬ ‫در‬ faile2ban ‌ : ‫میدهیم‬ ‫قرار‬ ‫بررسی‬ ‫مورد‬ ‫در‬ ‫را‬ ‫زیر‬ ‫های‬ ‫کانفیق‬ faile2ban . ‫نمایید‬ ‫وارد‬ # jail.conf [naxsi] enabled = true port = http,https filter = naxsi logpath = /var/log/nginx/error.log maxretry = 3 banaction = iptables-multiport-log action = %(action_mwl)s # filter.d/naxsi.conf [INCLUDES] before = common.conf [Definition] failregex = NAXSI_FMT: ip=<HOST> ignoreregex = learning=1