How Create Waf With Naxsi

Yashar Esmaildokht
Yashar Esmaildokhtgnu/linux system/network/security administrator & oracle dba

How Create Waf With Naxsi

‫تعالی‬ ‫باسمه‬
nginx
‫آن‬ ‫های‬ ‫ژول‬ ‫ما‬ ‫و‬
‫الخصوص‬ ‫علی‬
naxsi
‫(چگونه‬
WAF
) ‫کنیم‬ ‫‌سازی‬
‫ه‬‫پیاد‬
: ‫نویسنده‬
‫دخت‬ ‫اسمعیل‬ ‫یاشار‬ ‫مهندس‬
: ‫نسخه‬
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
. ‫کنید‬ ‫پیدا‬ ‫را‬ ‫کردم‬ ‫منتشر‬ ‫آزاد‬ ‫بصورت‬ ‫که‬ ‫دیگری‬ ‫های‬ ‫کتاب‬ ‫میتونید‬ ‫بگردید‬ ‫من‬ ‫اسم‬ ‫دنبال‬ ‫گوگل‬ ‫یا‬
: ‫مشاوره‬
. ‫بود‬ ‫خواهم‬ ‫شما‬ ‫دسترس‬ ‫در‬ ‫من‬ . ‫فرمایید‬ ‫حاصل‬ ‫تماس‬ . ‫کردم‬ ‫اشاره‬ ‫قبل‬ ‫صفحه‬ ‫در‬ ‫که‬ ‫هایی‬ ‫کانال‬ ‫از‬ ‫میتوانید‬ ‫مشاوره‬ ‫جهت‬
nginx
. ‫میباشد‬ ‫قدرتمند‬ ‫سرور‬ ‫وب‬ ‫‌یک‬
‫از‬ ‫بعد‬ ‫دنیا‬ ‫در‬ ‫مطرح‬ ‫سرور‬ ‫وب‬ ‫دومین‬ ‫سرور‬ ‫وب‬ ‫این‬ ‫‌واقع‬
‫ر‬‫د‬
apache
. ‫‌باشد‬
‫ی‬‫م‬
. ‫برد‬ ‫بهره‬ ‫و‬ ‫کرد‬ ‫استفاده‬ ‫آن‬ ‫از‬ ‫‌توان‬
‫ی‬‫م‬ ‫نیاز‬ ‫به‬ ‫نسبت‬ ‫که‬ ‫دارد‬ ‫زیادی‬ ‫فرد‬ ‫به‬ ‫منحصر‬ ‫ی‬ ‫‌ها‬
‫ی‬‫ویژگ‬ ‫سرور‬ ‫وب‬ ‫این‬
‫به‬ ‫میتوان‬ ‫‌های‬
‫ت‬‫قابلی‬ ‫و‬ ‫مطرح‬ ‫های‬ ‫ماژول‬ ‫از‬ ‫یکی‬ . ‫نمود‬ ‫اشاره‬ ‫زیادی‬ ‫های‬ ‫ماژول‬ ‫از‬ ‫پشتیبانی‬ ‫به‬ ‫میتوان‬ ‫آن‬ ‫‌های‬
‫ی‬‫ویژگ‬ ‫از‬
mod
‫پروکسی‬
‫قابلیت‬ ‫همچنین‬ . ‫کرد‬ ‫اشاره‬ ‫آن‬
rtmp
‫یا‬
real time messaging protocol
. ‫میباشد‬ ‫اهمیت‬ ‫حايز‬ ‫بسیار‬ ‫که‬ ‫بود‬ ‫نمی‬ ‫اشاره‬ ‫آن‬
‫همچنین‬
‫پروکسی‬
‫انجنیکس‬ ‫سرور‬
‫های‬ ‫پروتکل‬ ‫برای‬
 
HTTP, HTTPS, SMTP, POP3
‫و‬
 
IMAP
 
‫استفاده‬ ‫مورد‬ … ‫و‬
.‫باشد‬ ‫می‬
‫از‬ ‫استفاده‬ ‫با‬ ‫که‬ ‫نمود‬ ‫اشاره‬ ‫نکته‬ ‫این‬ ‫به‬ ‫‌توان‬
‫ی‬‫م‬ ‫‌واقع‬
‫ر‬‫د‬
Nginx
‫میتوان‬
‫یا‬ ‫بار‬ ‫کننده‬ ‫متعادل‬ ‫عنوان‬ ‫به‬
 
load balancer
‫و‬ ‫سرور‬ ‫وب‬ ،
HTTP
cache
 
. ‫نمود‬ ‫استفاده‬
‫پروژه‬
nginx
‫کم‬ ‫استفاده‬ ‫ی‬ ‫رو‬ ‫و‬ ‫شده‬ ‫متمرکز‬ ‫باال‬ ‫سرعت‬ ‫و‬ ‫رقابت‬ ‫و‬ ‫کارایی‬ ‫روی‬
‫شده‬ ‫بهینه‬ ‫و‬
. ‫است‬ ‫گشته‬ ‫متمرکز‬ ‫رم‬ ‫از‬
‫جمله‬ ‫از‬ ‫مختلفی‬ ‫های‬ ‫عامل‬ ‫سیستم‬ ‫روی‬ ‫بر‬ ‫ایکس‬ ‫جین‬ ‫ان‬
 
Linux, OS X, Solaris, AIX, HP-UX
‫انواع‬ ‫و‬
 
BSD
‫‌سازی‬
‫ه‬‫پیاد‬ ‫قابل‬
. ‫میباشد‬
‫توسعه‬ ‫اساس‬
 
Nginx
‫پویای‬ ‫صفحات‬ ‫محتوای‬ ‫به‬ ‫رسانی‬ ‫خدمت‬ ‫برای‬ ‫توان‬ ‫می‬ ‫را‬
 
HTTP
‫طریق‬ ‫از‬ ‫شبکه‬ ‫روی‬ ‫بر‬
 
FastCGI, SCGI
‫برای‬
‫افزار‬ ‫نرم‬ ‫های‬ ‫دهنده‬ ‫سرویس‬ ‫و‬ ‫ها‬ ‫اسکریپت‬
 
WSGI
‫های‬ ‫ماژول‬ ‫یا‬
Phusion
‫عنوان‬ ‫به‬ ‫استفاده‬ ‫همچنین‬ ‫و‬
 
load balancer
.‫نمود‬ ‫معرفی‬
‫سرور‬ ‫وب‬
Nginx
‫موثر‬ ‫‌سازی‬
‫ه‬‫یکپارچ‬ ‫قابلیت‬ ‫و‬ ‫باند‬ ‫پهنای‬ ‫و‬ ‫دسترسی‬ ‫کنترل‬ ،‫نهان‬ ‫حافظه‬ ،‫بارگذاری‬ ‫در‬ ‫توازن‬ ‫نظیر‬ ‫بیشتری‬ ‫های‬ ‫قابلیت‬
‫ها‬ ‫ویژگی‬ ‫همین‬ ‫که‬ ‫داده‬ ‫جای‬ ‫خود‬ ‫در‬ ‫را‬ ‫فراوان‬ ‫کاربردی‬ ‫‌های‬
‫ه‬‫برنام‬ ‫با‬
Nginx
‫کرد‬ ‫جهان‬ ‫مجبوب‬ ‫سرور‬ ‫وب‬ ‫دومین‬ ‫به‬ ‫تبدیل‬ ‫را‬
. ‫است‬ ‫ه‬
‫تاریخچه‬
 
Nginx
‫توسعه‬
 
Nginx
‫توسط‬
 
Igor Sysoev
‫سال‬ ‫در‬
2002
‫سال‬ ‫جوالی‬ ‫در‬ .‫گردید‬ ‫اغاز‬
2011
‫نام‬ ‫به‬ ‫شرکت‬
 
Nginx, Inc
‫در‬
 
،‫فرانسیسکو‬ ‫سان‬
‫کالیفرنیا‬
 
‫کمپانی‬ ‫یک‬ ‫واقع‬ ‫در‬ ‫شرکت‬ ‫این‬ .‫داد‬ ‫شکل‬ ‫تغییر‬
 
information technology
 
‫ارائه‬ ‫و‬ ‫تولید‬ ‫را‬ ‫سرور‬ ‫وب‬ ‫های‬ ‫افزار‬ ‫نرم‬ ‫که‬ ‫میباشد‬
‫های‬ ‫بررسی‬ ‫اساس‬ ‫بر‬ .‫میدهد‬
 
Netcraft
‫سال‬ ‫اگوست‬ ‫در‬
2014
،
 
nginx
‫شناخته‬ ‫فعال‬ ‫های‬ ‫سایت‬ ‫در‬ ‫پرطرفدار‬ ‫سرور‬ ‫وب‬ ‫دومین‬ ‫عنوان‬ ‫به‬
.‫شد‬
‫های‬ ‫ویژگی‬
 
Nginx
‫های‬ ‫قابلیت‬ ‫و‬ ‫ها‬ ‫ویژگی‬ ‫از‬ ‫برخی‬ ‫از‬
 
Nginx
: ‫نمود‬ ‫اشاره‬ ‫زیر‬ ‫موارد‬ ‫به‬ ‫میتوان‬
•
‫از‬ ‫بیش‬ ‫مدیریت‬ ‫و‬ ‫پشتیبانی‬ ‫قابلیت‬
 
10,000
(
10K
)
‫پایین‬ ‫بسیار‬ ‫رم‬ ‫مصرف‬ ‫با‬ ‫همزمان‬ ‫اتصال‬
•
‫ق‬
‫ابلیت‬
 
Load balancing
•
‫قابلیت‬
Fault tolerance
•
‫از‬ ‫پشتیبانی‬
 
OCSP
 
‫با‬
 
OpenSSL
•
‫از‬ ‫پشتیبانی‬
 
FastCGI, SCGI, uWSGI
‫همراه‬ ‫به‬
 
caching
•
‫با‬ ‫سازگار‬
 
IPv6
•
‫پروتکل‬ ‫از‬ ‫پشتبانی‬
 
SPDY
•
‫اکسترکت‬ ‫و‬ ‫سازی‬ ‫فشرده‬
 
gzip
•
‫نویسی‬ ‫باز‬
URL
‫یا‬
 
URL rewriting
•
‫قابلیت‬
 
Bandwidth throttling
•
‫های‬ ‫داده‬ ‫پردازش‬
 
XSLT
•
‫از‬ ‫پشتیبانی‬
 
TLS/SSL
•
‫از‬ ‫پشتیبانی‬
 
STARTTL
‫ها‬
•
‫سرور‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫هویت‬ ‫احراز‬
HTTP
‫خارجی‬
•
‫مختلف‬ ‫مصارف‬ ‫برای‬ ‫مختلف‬ ‫های‬ ‫ماژول‬ ‫دارای‬
‫مختلف‬ ‫های‬ ‫الیه‬ ‫در‬ ‫هکرها‬ ‫حمالت‬
OSI
،‫ها‬ ‫الیه‬ ‫این‬ ‫از‬ ‫یکی‬ ‫که‬ ‫‌گیرد‬
‫ی‬‫م‬ ‫صورت‬
Application
‫و‬ ‫است‬ ‫شبکه‬ ‫الیه‬ ‫هفتمین‬ ،‫کاربرد‬ ‫الیه‬ .‫دارد‬ ‫نام‬
.‫‌افتد‬
‫ی‬‫م‬ ‫اتفاق‬ ‫الیه‬ ‫این‬ ‫در‬ ‫حمالت‬ ‫ترین‬ ‫پیچیده‬
WAF
‫مخفف‬
Web Application Firewall
.‫‌دهد‬
‫ی‬‫م‬ ‫نشان‬ ‫العمل‬ ‫عکس‬ ‫ها‬ ‫آن‬ ‫برابر‬ ‫در‬ ‫و‬ ‫کرده‬ ‫شناسایی‬ ‫را‬ ‫حمالت‬ ‫نوع‬ ‫این‬ ‫که‬ ‫است‬ ‫فایروالی‬
:‫شامل‬ ‫حمالت‬ ‫این‬
SQL Injection
XSS
‫باگ‬
CSRF
Buffer Overflow
Malicious Robots
Information leakage
Malicious and Illegal Encoding
Web Server and OS Attacks
OS command injection
‫باگ‬
RFI
Session Hijacking
DOS
Protection against common attacks
Site Reconnaissance
Parameter Tampering
Directory Traversal
… ‫و‬
. ‫میباشد‬
WAF
‫‌کند؟‬
‫ی‬‫م‬ ‫کار‬ ‫چگونه‬
WAF
‫الیه‬ ‫روی‬ ‫بر‬ ‫که‬ ‫است‬ ‫شده‬ ‫طراحی‬ ‫ای‬ ‫گونه‬ ‫به‬
Application
‫بر‬ ‫مبتنی‬ ‫خروجی‬/‫ورودی‬ ‫ترافیک‬ ‫و‬ ‫‌گیرد‬
‫ی‬‫م‬ ‫قرار‬
HTTP/HTTPS
‫را‬
‫درخواست‬ ‫دو‬ ‫هر‬ ‫از‬ ‫مخربی‬ ‫ترافیک‬ ‫که‬ ‫زمان‬ ‫هر‬ .‫‌کند‬
‫ی‬‫م‬ ‫بررسی‬
GET
‫و‬
POST
‫برخالف‬ .‫‌دهد‬
‫ی‬‫م‬ ‫نشان‬ ‫العمل‬ ‫عکس‬ ‫سرعت‬ ‫به‬ ،‫کند‬ ‫شناسایی‬ ‫را‬
،‫‌کنند‬
‫ی‬‫م‬ ‫عمل‬ ‫سرورها‬ ‫از‬ ‫ایمن‬ ‫دروازه‬ ‫یک‬ ‫عنوان‬ ‫به‬ ‫فقط‬ ‫که‬ ‫معمولی‬ ‫های‬ ‫فایروال‬
WAF
( ‫گیرنده‬ ‫سرویس‬ ‫بین‬ ‫که‬ ‫است‬ ‫امنیتی‬ ‫اقدام‬ ‫یک‬
Client
‫سخت‬ ‫بسیار‬ ‫تهدیدات‬ ‫نوع‬ ‫این‬ ‫تشخیص‬ ‫که‬ ‫‌گیرند‬
‫ی‬‫م‬ ‫انجام‬ ‫خودکار‬ ‫صورت‬ ‫به‬ ‫معموال‬ ،‫مخرب‬ ‫حمالت‬ ‫بیشترین‬ .‫دارد‬ ‫قرار‬ ‫سرور‬ ‫وب‬ ‫و‬ )
.‫نیست‬ ‫شناسایی‬ ‫قابل‬ ‫و‬ ‫شده‬ ‫طراحی‬ ‫انسان‬ ‫ترافیک‬ ‫از‬ ‫تقلید‬ ‫برای‬ ‫غالبا‬ ‫زیرا‬ ‫است؛‬
WAF
‫همه‬ ‫برای‬ ‫را‬ ‫پاسخ‬ ‫و‬ ‫درخواست‬ ‫هر‬ ‫از‬ ‫عمیقی‬ ‫بازرسی‬
.‫‌دهد‬
‫ی‬‫م‬ ‫انجام‬ ‫وب‬ ‫ترافیک‬ ‫متداول‬ ‫اشکاالت‬
‫به‬ ‫بازرسی‬ ‫این‬
WAF
.‫کند‬ ‫جلوگیری‬ ‫سرور‬ ‫به‬ ‫ها‬ ‫آن‬ ‫رسیدن‬ ‫از‬ ‫و‬ ‫کند‬ ‫مسدود‬ ‫و‬ ‫شناسایی‬ ‫را‬ ‫تهدیدات‬ ‫تا‬ ‫‌کند‬
‫ی‬‫م‬ ‫کمک‬
‫های‬ ‫ماژول‬ ‫از‬ ‫مورد‬ ‫چند‬ ‫بررسی‬ ‫به‬ ‫زیر‬ ‫در‬
nginx
‌
: ‫پرداخت‬ ‫خواهم‬ ‫را‬
How Create Waf With Naxsi
How Create Waf With Naxsi
How Create Waf With Naxsi
How Create Waf With Naxsi
How Create Waf With Naxsi
How Create Waf With Naxsi
How Create Waf With Naxsi
How Create Waf With Naxsi
How Create Waf With Naxsi
How Create Waf With Naxsi
How Create Waf With Naxsi
‫کد‬ ‫سورس‬ ‫نیازمند‬ ‫کامپیایل‬ ‫جهت‬ ‫ادامه‬ ‫در‬
nginx
‫و‬
naxsi
. ‫مینماییم‬ ‫دانلود‬ ‫را‬ ‫نظر‬ ‫مد‬ ‫‌های‬
‫ل‬‫فای‬ . ‫هستیم‬
‫ماژول‬ ‫ساخت‬ ‫برای‬ ‫ها‬ ‫نیاز‬ ‫پیش‬
naxsi
‫ورژن‬ ‫به‬ ‫نسبت‬
nginx
‌
: ‫میباشد‬ ‫زیر‬ ‫شرح‬ ‫به‬
• Debian Base Distro
• GCC
• make
• nginx
• libpcre3-dev
‌
: ‫میکنیم‬ ‫نصب‬ ‫را‬ ‫خود‬ ‫نظر‬ ‫مد‬ ‫دبیان‬ ‫توزیع‬ ‫ادامه‬ ‫در‬
‫شکل‬
1
‫شکل‬
2
‫شکل‬
3
‫شکل‬
4
‫زبان‬ ‫انتخاب‬ -
‫شکل‬
5
‫شکل‬
6
‫شکل‬
7
‫دادن‬ -
hostname
‫شکل‬
8
‫شکل‬
9
‫شکل‬
10
‫جدید‬ ‫کاربر‬ ‫ساخت‬ -
‫شکل‬
11
‫کاربر‬ ‫ایجاد‬ -
‫شکل‬
12
‫شکل‬
13
‫کاربر‬ ‫برای‬ ‫رمز‬ ‫دادن‬ -
‫شکل‬
14
‫شکل‬
15
‫شکل‬
16
‫شکل‬
17
‫شکل‬
18
‫بندی‬ ‫پارتیشن‬ -
‫شکل‬
19
‫شکل‬
20
‫شکل‬
21
‫شکل‬
22
‫شکل‬
23
‫شکل‬
24
‫شکل‬
25
‫شکل‬
26
‫شکل‬
27
‫شکل‬
28
‫شکل‬
29
‫شکل‬
30
‫شکل‬
31
‫شکل‬
32
‫شکل‬
33
‫شکل‬
34
‫نصب‬ ‫مسیر‬ ‫انتخاب‬
grub
‫شکل‬
35
‫شکل‬
36
‫شکل‬
37
‫شکل‬
38
‌
: ‫نیاز‬ ‫مورد‬ ‫های‬ ‫بسته‬ ‫نصب‬
‫شکل‬
39
‫کامپایلر‬ ‫نصب‬ -
gcc
‫شکل‬
40
‫بسته‬ ‫نصب‬ -
libpcre3
‫شکل‬
41
‫کامپایل‬ :
nginx
‫ماژول‬ ‫‌با‬
naxsi
‫از‬ ‫را‬ ‫ها‬ ‫پارامتر‬ : ‫نکته‬
nginx -V
. ‫آوریم‬ ‫می‬ ‫بدست‬
‫مانند‬ . ‫باشد‬ ‫نصب‬ ‫باید‬ ‫میگیرد‬ ‫صورت‬ ‫کامپایل‬ ‫آن‬ ‫در‬ ‫که‬ ‫سیستم‬ ‫در‬ ‫ها‬ ‫پارامتر‬ ‫به‬ ‫نسبت‬ ‫نیاز‬ ‫مورد‬ ‫های‬ ‫‌پکیج‬
: ‫نکته‬
libssl , zlib
… ,
‫شکل‬
42
-
‫ماژول‬ ‫ساخت‬
‫شکل‬
43
-
‫شدن‬ ‫ساخته‬ ‫و‬ ‫شدن‬ ‫کامپایل‬ ‫شاهد‬ ‫ادامه‬ ‫در‬
ngx_http_naxsi_module.so
‫ورژن‬ ‫برای‬
1.16.1
nginx
. ‫هستیم‬
‫‌برای‬
: ‫نکته‬
compatibility
‫های‬ ‫پارامتر‬ ‫به‬ ‫مربوط‬ ‫های‬ ‫بسته‬ ‫هست‬ ‫نیاز‬
nginx
‫دستور‬ ‫از‬ ‫استفاده‬ ‫با‬ . ‫دهیم‬ ‫انجام‬ ‫را‬ ‫کامپایل‬ ‫و‬ ‫نصب‬ ‫را‬
nginx -V
. ‫میباشد‬ ‫‌پذیر‬
‫ن‬‫امکا‬ ‫نظر‬ ‫مد‬ ‫های‬ ‫ماژول‬ ‫و‬ ‫ها‬ ‫پارامتر‬ ‫مشاهده‬ ‫امکان‬
‫اگر‬ : ‫نکته‬
naxsi
‫در‬ ‫تست‬ ‫این‬ ‫در‬ ‫ما‬ . ‫است‬ ‫موجود‬ ‫‌ها‬
‫ن‬‫آ‬ ‫برای‬ ‫شده‬ ‫کامپایل‬ ‫بسته‬ ‫فدورا‬ ‫یا‬ ‫و‬ ‫باشد‬ ‫شده‬ ‫نصب‬ ‫ها‬ ‫بیس‬ ‫دبیان‬ ‫در‬
centos
‫کردیم‬ ‫نصب‬ ‫به‬ ‫اقدام‬
‫در‬ ‫ماژول‬ ‫این‬ ‫کردن‬ ‫فعال‬ ‫و‬ ‫کردن‬ ‫اضافه‬ ‫جهت‬ ‫این‬ ‫حال‬
nginx.conf
. ‫میکنیم‬ ‫اعمال‬ ‫را‬ ‫نظر‬ ‫مد‬ ‫کانفیق‬
‌
: ‫نمونه‬ ‫برای‬
: ‫داریم‬ ‫فایل‬ ‫دو‬ ‫‌ما‬
: ‫نکته‬
naxsi_core.rules
‫پروژه‬ ‫در‬ ‫(که‬
naxsi
) ‫است‬ ‫موجود‬
‫و‬
ngx_http_naxsi_module.so
.
) ‫ساختیم‬ ‫ما‬ ‫(که‬
‫فایل‬
ngx_http_naxsi_module.so
‫از‬ ‫استفاده‬ ‫با‬ ‫را‬
load_module
‫اقدام‬
‫به‬
. ‫میکنیم‬ ‫کردن‬ ‫لود‬
# Edit this 'include' directive to point to your naxsi_core.rules
file
include /etc/nginx/naxsi_core.rules;
server {
listen 80;
location / {
root /usr/share/nginx/html;
SecRulesEnabled; #enable naxsi
LearningMode; #enable learning mode
LibInjectionSql; #enable libinjection support for SQLI
LibInjectionXss; #enable libinjection support for XSS
# Define where blocked requests go
DeniedUrl "/50x.html";
# CheckRules, determining when NAXSI needs to take action
CheckRule "$SQL >= 8" BLOCK;
CheckRule "$RFI >= 8" BLOCK;
CheckRule "$TRAVERSAL >= 4" BLOCK;
CheckRule "$EVADE >= 4" BLOCK;
CheckRule "$XSS >= 8" BLOCK;
# Don’t forget the error_log, where blocked requests are logged
error_log /tmp/naxsi.log;
}
error_page 500 502 503 504 /50x.html;
}
‫کانفیق‬ ‫ساختار‬ ‫از‬ ‫قسمتی‬ ‫شرح‬
nginx
:
‫نود‬ ‫در‬ ‫موجود‬ ‫فایل‬ ‫کانفیق‬ ‫بررسی‬ ‫به‬ ‫سپس‬ ‫داده‬ ‫قرار‬ ‫بررسی‬ ‫مورد‬ ‫را‬ ‫فرضی‬ ‫سناروی‬ ‫یک‬ ‫زیر‬ ‫در‬
naxsi
. ‫نمود‬ ‫خواهیم‬ ‫بررسی‬ ‫را‬
‫ایجاد‬ ‫دیگر‬ ‫نکته‬
load balancer
‫ساختار‬ ‫مثال‬ ‫این‬ ‫در‬ ‫ما‬ . ‫است‬ ‫بیشتر‬ ‫اطمینان‬ ‫حصول‬ ‫برای‬
load balancing
. ‫کردیم‬ ‫بررسی‬ ‫نیز‬ ‫را‬
‫برای‬ ‫همچنین‬ . ‫گردد‬ ‫بسیار‬ ‫ها‬ ‫درخواست‬ ‫و‬ ‫ترافیک‬ ‫میزان‬ ‫و‬ ‫شود‬ ‫بیشتر‬ ‫سایت‬ ‫کاربران‬ ‫تعداد‬ ‫وقتی‬
HA
‫و‬
reliability
‫ایجاد‬ ‫به‬ ‫نیاز‬
loadbalancing
‫بین‬ ‫در‬ ‫را‬ ‫شده‬ ‫ارسال‬ ‫‌های‬
‫ت‬‫درخواس‬ ‫که‬ ‫هستیم‬ ‫سرور‬ ‫وب‬ ‫یک‬ ‫نیازمند‬ ‫حال‬ ‫این‬ ‫با‬ . ‫هستیم‬
instance
‫پخش‬ ‫موجود‬ ‫های‬
‫بین‬ ‫در‬ ‫‌ها‬
‫ت‬‫ریکوئس‬ ‫تعداد‬ ‫کار‬ ‫این‬ ‫انجام‬ ‫با‬ .‫کند‬
instance
‫از‬ ‫میتوانیم‬ ‫اینکار‬ ‫انجام‬ ‫برای‬ .‫میشوند‬ ‫تقسیم‬ ‫ها‬
nginx
.‫کنیم‬ ‫استفاده‬
‫مانند‬ ‫دیگر‬ ‫‌های‬
‫ه‬‫برنام‬ ‫از‬ ‫میتوانیم‬ ‫مفهوم‬ ‫این‬ ‫برای‬ ‫همچنین‬
squid , varnish , haproxy
. ‫کنیم‬ ‫استفاده‬ ‫نیز‬
nginx
‫قابلیت‬
load balancing
‫سازی‬ ‫پیاده‬ ‫برای‬ .‫دارد‬ ‫را‬
load balancing
‫در‬
nginx
‫فایل‬ ‫در‬ ‫باید‬
nginx.conf
‫نوع‬ ‫از‬ ‫گروه‬ ‫یک‬
upstream
‫کانتکست‬ ‫در‬ ‫کنید‬ ‫ایجاد‬
http
.
http {
upstream myserver {
server server1.example.com;
server server2.example.com;
server server3.example.com;
}
}
‫نام‬ ‫به‬ ‫گروه‬ ‫یک‬ ‫باال‬ ‫کانفیگ‬ ‫در‬
myserver
‫سه‬ ‫یعنی‬ .‫‌باشد‬
‫ی‬‫م‬ ‫سرور‬ ‫سه‬ ‫شامل‬ ‫که‬ ‫‌ایم‬
‫ه‬‫کرد‬ ‫ایجاد‬
instance
‫و‬ ‫هستند‬ ‫اجرا‬ ‫حال‬ ‫در‬ ‫برنامه‬ ‫از‬
‫کانتکس‬ ‫در‬ ‫باید‬ ‫سپس‬ .‫کنیم‬ ‫ارسال‬ ‫‌ها‬
‫ر‬‫سرو‬ ‫این‬ ‫روی‬ ‫بر‬ ‫را‬ ‫شده‬ ‫ارسال‬ ‫‌های‬
‫ت‬‫ریکوئس‬ ‫میتوانیم‬
server
‫کانتکست‬ ‫درون‬ ‫هم‬ ‫کانتکست‬ ‫این‬ (
http
‫نوع‬ ‫از‬ ‫بالک‬ ‫یک‬ ) ‫دارد‬ ‫قرار‬
location
‫کلمه‬ ‫از‬ ‫بعد‬ .‫کنیم‬ ‫ایجاد‬
location
‫را‬ ‫میشوند‬ ‫ارسال‬ ‫آن‬ ‫به‬ ‫‌ها‬
‫ت‬‫درخواس‬ ‫که‬ ‫را‬ ‫مسیری‬ ‫باید‬
‫از‬ ‫بعد‬ / ‫نوشتن‬ .) / ( ‫است‬ ‫شده‬ ‫نوشته‬ ‫سایت‬ ‫وب‬ ‫روت‬ ‫همان‬ ‫پایین‬ ‫مثال‬ ‫در‬ ‫که‬ ‫بنویسید‬
location
.‫میشود‬ ‫شامل‬ ‫را‬ ‫‌ها‬
‫ت‬‫درخواس‬ ‫تمامی‬
‫به‬ ‫که‬ ‫را‬ ‫‌هایی‬
‫ت‬‫درخواس‬ ‫فقط‬ ‫میتوانید‬ ‫همچنین‬
api
‫از‬ / ‫جای‬ ‫به‬ ‫میتوانید‬ ‫که‬ ‫کنید‬ ‫فیلتر‬ ،‫میشوند‬ ‫ارسال‬ ‫ها‬
api
‫کار‬ ‫این‬ ‫با‬ .‫کنید‬ ‫استفاده‬ /
‫که‬ ‫‌هایی‬
‫ت‬‫درخواس‬ ‫تمامی‬
url
‫با‬ ‫آنها‬
api
‫بالک‬ ‫وارد‬ ‫شود‬ ‫شروع‬ /
location
.‫میشوند‬
‫از‬ ‫باید‬ ‫اجرا‬ ‫حال‬ ‫در‬ ‫‌های‬
‫ه‬‫برنام‬ ‫بین‬ ‫در‬ ‫‌ها‬
‫ت‬‫درخواس‬ ‫کردن‬ ‫ارسال‬ ‫برای‬ ‫سپس‬
proxy_pass
‫کلمه‬ ‫از‬ ‫بعد‬ .‫کنیم‬ ‫استفاده‬
proxy_pass
‫نام‬ ‫باید‬
upstream
‫‌های‬
‫ر‬‫سرو‬ ‫بین‬ ‫در‬ / ‫به‬ ‫شده‬ ‫ارسال‬ ‫‌های‬
‫ت‬‫درخواس‬ ‫تمامی‬ ‫اینکار‬ ‫انجام‬ ‫با‬ .‫کنیم‬ ‫وارد‬ ،‫‌ایم‬
‫ه‬‫نوشت‬ ‫باال‬ ‫در‬ ‫که‬ ‫را‬ ‫ی‬
server
‫پخش‬
.‫میشوند‬
http {
upstream myserver {
server server1.example.com;
server server2.example.com;
server server3.example.com;
}
server {
location / {
proxy_pass http://server;
}
}
}
‫سرور‬ ‫وب‬
nginx
‫الگوریتم‬ ‫از‬ ‫پیشفرض‬ ‫طور‬ ‫به‬
Round robin
‫میتوانیم‬ ‫البته‬ .‫میکند‬ ‫استفاده‬ ‫‌ها‬
‫ر‬‫سرو‬ ‫بین‬ ‫در‬ ‫‌ها‬
‫ت‬‫درخواس‬ ‫کردن‬ ‫پخش‬ ‫برای‬
.‫بدهیم‬ ‫تغییر‬ ‫را‬ ‫الگوریتم‬ ‫این‬
.‫شود‬ ‫ارسال‬ ‫درخواست‬ ‫چند‬ ‫‌ها‬
‫ر‬‫سرو‬ ‫از‬ ‫هرکدام‬ ‫به‬ ‫که‬ ‫کنیم‬ ‫مشخص‬ ‫میتوانیم‬ ‫مثال‬ ‫طور‬ ‫به‬
‫افزودن‬ ‫با‬
weight
‫اگر‬ ‫مثال‬ ‫طور‬ ‫به‬ ‫که‬ ‫میکنم‬ ‫مشخص‬ ‫‌ها‬
‫ر‬‫سرو‬ ‫نام‬ ‫کنار‬ ‫در‬
7
،‫شود‬ ‫ارسال‬ ‫سرور‬ ‫به‬ ‫درخواست‬
5
‫به‬ ‫مورد‬
server1
‫ارسال‬
‫و‬ ‫میشود‬
2
‫به‬ ‫مورد‬
server2
‫سرور‬ ‫عنوان‬ ‫به‬ ‫سرور‬ ‫یک‬ ‫که‬ ‫کنیم‬ ‫مشخص‬ ‫میتوانیم‬ ‫همچنین‬ .
backup
‫مانند‬ ‫باشد‬
server4
.
‫کلمه‬ ‫کردن‬ ‫اضافه‬ ‫با‬ ‫میتوانید‬ ‫نباشد‬ ‫دسترس‬ ‫در‬ ‫سروری‬ ‫اگر‬
down
‫مانند‬ ‫کنید؛‬ ‫جلوگیری‬ ‫آن‬ ‫به‬ ‫درخواست‬ ‫ارسال‬ ‫از‬ ،‫سرور‬ ‫نام‬ ‫از‬ ‫بعد‬
server3
‫کلمه‬ ‫از‬ ‫قبل‬ ‫یا‬ ‫و‬
server
.‫دهید‬ ‫قرار‬ # ‫عالمت‬ ‫یک‬
upstream myserver {
server server1.example.com weight=5;
server server2.example.com weight=2;
server server3.example.com down;
server server4.example.com backup;
}
‫سرور‬ ‫کار‬ ‫این‬ ‫انجام‬ ‫با‬
server4
‫سرور‬ ‫عنوان‬ ‫به‬
backup
‫به‬ ‫ریکوئستی‬ ‫هیچ‬ ،‫باشند‬ ‫دسترس‬ ‫در‬ ‫سرورها‬ ‫بقی‬ ‫ما‬ ‫زمانیکه‬ ‫تا‬ ‫و‬ ‫است‬ ‫شده‬ ‫معرفی‬
‫سرور‬
server4
‫‌های‬
‫ر‬‫سرو‬ ‫تمامی‬ ‫اگر‬ .‫نمیشود‬ ‫ارسال‬
server1
‫و‬
server2
‫آنگاه‬ ،‫شوند‬ ‫خارج‬ ‫دسترس‬ ‫از‬
nginx
‫را‬ ‫شده‬ ‫ارسال‬ ‫‌های‬
‫ت‬‫درخواس‬
‫سرور‬ ‫به‬
backup
‫یعنی‬
server4
.‫میکند‬ ‫ارسال‬
‫پیشفرض‬ ‫طور‬ ‫به‬ ‫البته‬
nginx
‫به‬ ‫مربوط‬ ‫تنظیمات‬ ‫سری‬ ‫یک‬ ‫باید‬ ‫و‬ ‫نمیکند‬ ‫بررسی‬ ‫را‬ ‫سرورها‬ ‫سالمت‬
health_check
.‫کنیم‬ ‫ثبت‬ ‫را‬
‫دستور‬ ‫کردن‬ ‫اضافه‬ ‫با‬
health_check
‫پایین‬ ‫در‬
proxy_pass
‫سرور‬ ‫وب‬
nginx
‫هر‬
5
‫سرورهای‬ ‫به‬ ‫را‬ ‫ریکوئست‬ ‫یک‬ ‫بار‬ ‫یک‬ ‫ثانیه‬
server
‫کدهای‬ ‫از‬ ‫خارج‬ ‫کدی‬ ‫ریسپانس‬ ‫‌ها‬
‫ر‬‫سرو‬ ‫از‬ ‫هرکدام‬ ‫اگر‬ ‫و‬ ‫میکند‬ ‫ارسال‬
200
‫تا‬
399
‫سرورها‬ ‫آن‬ ‫به‬ ‫را‬ ‫بعدی‬ ‫‌های‬
‫ت‬‫درخواس‬ ،‫کنند‬ ‫ارسال‬ ‫را‬
.‫نمیکند‬ ‫ارسال‬
server {
location / {
proxy_pass http://server;
health_check;
}
}
‫دستور‬ ‫کنار‬ ‫در‬
health_check
‫درخواست‬ ‫که‬ ‫کنیم‬ ‫مشخص‬ ‫میتوانیم‬ ‫مثال‬ ‫طور‬ ‫به‬ .‫کنیم‬ ‫مشخص‬ ‫هم‬ ‫را‬ ‫پارامتر‬ ‫سری‬ ‫یک‬ ‫میتوانیم‬
health_check
‫چه‬ ‫به‬ ‫را‬
uri
.‫کند‬ ‫ارسال‬ ‫را‬ ‫درخواست‬ ‫پورتی‬ ‫چه‬ ‫به‬ ‫یا‬ ‫و‬ ‫کند‬ ‫ارسال‬ ‫ای‬
server {
location / {
proxy_pass http://server;
health_check port=8080;
#health_check uri=/healthcheck;
}
}
.)‫میشود‬ ‫استفاده‬ # ‫از‬ ‫دستور‬ ‫یک‬ ‫کردن‬ ‫کامنت‬ ‫(برای‬
‫کردن‬ ‫مشخص‬ ‫برای‬ ‫را‬ ‫سفارشی‬ ‫درخواست‬ ‫یک‬ ‫میتوانیم‬ ‫همچنین‬
health_check
:‫کنیم‬ ‫ایجاد‬
http {
#...
match welcome {
status 200;
header Content-Type = text/html;
body ~ "Welcome to nginx!";
}
server {
#...
location / {
proxy_pass http://server;
health_check match=welcome;
}
}
}
‫کد‬ ‫استتوس‬ ‫باید‬ ‫سرورها‬ ‫از‬ ‫هرکدام‬ ‫بودن‬ ‫دسترس‬ ‫در‬ ‫دادن‬ ‫نشان‬ ‫برای‬ ‫که‬ ‫‌ایم‬
‫ه‬‫کرد‬ ‫مشخص‬ ‫باال‬ ‫کانفیگ‬ ‫در‬
200
‫و‬ ‫شود‬ ‫برگردانده‬
body
! ‫حاوی‬ ‫شده‬ ‫دریافت‬
Welcome to nginx
.‫باشد‬
: ‫نکته‬
match
‫و‬
health_check
‫تجاری‬ ‫نسخه‬ ‫در‬
nginx
.‫‌باشند‬
‫ی‬‫م‬ ‫استفاده‬ ‫قابل‬
‫پورت‬ ‫از‬ ‫که‬ ‫هایی‬ ‫درخواست‬ ‫تمام‬ ‫مثال‬
۸۰
‫پورت‬ ‫از‬ ‫باید‬ ،‫رسد‬ ‫می‬ ‫سرور‬ ‫به‬
۳۰۰۰
.‫کنند‬ ‫گذر‬ ‫سرور‬ ‫داخل‬
‫کانفیگ‬ ‫فایل‬ ‫وارد‬ ‫ابتدا‬ ‫اینکار‬ ‫برای‬
nginx
: ‫دارد‬ ‫قرار‬ ‫زیر‬ ‫مسیر‬ ‫در‬ ‫فرض‬ ‫پیش‬ ‫صورت‬ ‫به‬ ‫فایل‬ ‫این‬ .‫شوید‬
/etc/nginx/sites-available/default
‫بالک‬ ‫با‬ ‫شما‬ ‫سرور‬ ‫هر‬
server
:‫کنید‬ ‫اضافه‬ ‫کد‬ ‫به‬ ‫سرور‬ ‫بالک‬ ‫یک‬ ‫ابتدا‬ ‫جدید‬ ‫سرور‬ ‫یک‬ ‫ساخت‬ ‫برای‬ ‫پس‬ .‫شود‬ ‫می‬ ‫مشخص‬
server {
listen 80;
listen [::]:80;
}
‫پورت‬ ‫از‬ ‫که‬ ‫هایی‬ ‫درخواست‬ ‫به‬ ‫حاضر‬ ‫حال‬ ‫در‬ ‫سرور‬ ‫کنید‬ ‫می‬ ‫مشاهده‬ ‫که‬ ‫همانطور‬
۸۰
‫در‬ ‫هم‬ .‫داد‬ ‫خواهد‬ ‫پاسخ‬ ‫شود‬ ‫می‬ ‫دریافت‬
ip
‫نسخه‬
۴
‫در‬ ‫هم‬ ‫و‬
ip
‫نسخه‬
۶
.
:‫شوند‬ ‫پردازش‬ ‫باید‬ ‫چگونه‬ ،‫شود‬ ‫می‬ ‫ارسال‬ ‫سرور‬ ‫ریشه‬ ‫به‬ ‫که‬ ‫هایی‬ ‫درخواست‬ ‫کنیم‬ ‫مشخص‬ ‫باید‬ ‫حال‬
location / {
proxy_pass http://127.0.0.1:3000;
}
‫پورت‬ ‫به‬ ‫را‬ ‫است‬ ‫شده‬ ‫ارسال‬ ‫سرور‬ ‫ریشه‬ ‫به‬ ‫که‬ ‫هایی‬ ‫درخواست‬ ‫تمام‬ ، ‫کنید‬ ‫می‬ ‫مشاهده‬ ‫که‬ ‫همانطور‬
۳۰۰۰
‫در‬
ip
.‫میکنیم‬ ‫منتقل‬ ‫لوکال‬
:‫کنید‬ ‫اضافه‬ ‫نیز‬ ‫را‬ ‫ها‬ ‫الگ‬ ، ‫کردن‬ ‫دیباگ‬ ‫برای‬ ، ‫حال‬
access_log /var/log/nginx/reverse-access.log;
error_log /var/log/nginx/reverse-error.log;
‫تنظیمات‬ ‫کامل‬ ‫کد‬
nginx
‌
:‫ببینید‬ ‫زیر‬ ‫در‬ ‫توانید‬ ‫می‬ ‫رو‬
server {
listen 80;
listen [::]:80;
access_log /var/log/nginx/reverse-access.log;
error_log /var/log/nginx/reverse-error.log;
location / {
proxy_pass http://127.0.0.1:3000;
}
}
: ‫نه‬ ‫یا‬ ‫است‬ ‫شده‬ ‫نوشته‬ ‫درستی‬ ‫به‬ ‫تنظیمات‬ ‫فایل‬ ‫آیا‬ ‫که‬ ‫کنید‬ ‫بررسی‬ ‫میتوانید‬ ‫زیر‬ ‫دستور‬ ‫اجرای‬ ‫با‬
nginx -t
‫سرویس‬ ‫آخر‬ ‫در‬ ‫و‬
nginx
:‫کنید‬ ‫استارت‬ ‫ری‬ ‫را‬
sudo systemctl restart nginx.service
‫برنامه‬ ‫اجرای‬ ‫از‬ ‫بعد‬
node
‫پورت‬ ‫در‬ )‫دیگری‬ ‫سرور‬ ‫هر‬ ‫(یا‬
۳۰۰۰
‫پورت‬ ‫های‬ ‫ریکویست‬ ‫تمام‬ ،
۸۰
‫این‬.‫شد‬ ‫خواهد‬ ‫پردازش‬ ‫سرور‬ ‫این‬ ‫توسط‬
‫توسط‬ ‫کار‬
Reverse Proxy
.‫شود‬ ‫می‬ ‫انجام‬
‫ساختار‬ ‫بهتر‬ ‫درک‬ ‫برای‬ ‫بیشتر‬ ‫تنظیمات‬
nginx
:
:‫کنید‬ ‫اضافه‬ ‫خود‬ ‫تنظیمات‬ ‫فایل‬ ‫به‬ ‫نیز‬ ‫بیشتری‬ ‫تنظیماتی‬ ‫توانید‬ ‫می‬ ‫شما‬ ‫همچنین‬
‫نسخه‬ ‫تنظیم‬
http
:
proxy_http_version 1.1;
: ‫کش‬ ‫کردن‬ ‫پس‬ ‫بای‬ ‫تنظیمات‬
proxy_cache_bypass $http_upgrade;
: ‫میکنید‬ ‫استفاده‬ ‫سوکت‬ ‫وب‬ ‫از‬ ‫اگه‬
proxy_set_header Upgrade $http_upgrade
‌
: ‫هاست‬ ‫هدر‬ ‫تنظیم‬
proxy_set_header Host $host;
: ‫ها‬ ‫پراکسی‬ ‫تمام‬ ‫آیپی‬ ‫لیست‬
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
‌
: ‫کننده‬ ‫بازدید‬ ‫آیپی‬ ‫آدرس‬ ‫هدر‬
proxy_set_header X-Real-IP $remote_addr;
:‌
‫ی‬‫اصل‬ ‫هاست‬ ‫آدرس‬ ‫هدر‬
proxy_set_header X-Forwarded-Host $host;
: ‌
‫ی‬‫اصل‬ ‫پورت‬ ‫آدرس‬ ‫هدر‬
proxy_set_header X-Forwarded-Port $server_port;
:‌‫تنظیمات‬ ‫فایل‬ ‫تر‬ ‫کامل‬ ‫نسخه‬
server {
listen 80;
listen [::]:80;
access_log /var/log/nginx/reverse-access.log;
error_log /var/log/nginx/reverse-error.log;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
proxy_cache_bypass $http_upgrade;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Port $server_port;
}
}

Recomendados

Ras in linux por
Ras in linuxRas in linux
Ras in linuxYashar Esmaildokht
71 visualizações5 slides
Zabbix monitoring website por
Zabbix monitoring websiteZabbix monitoring website
Zabbix monitoring websiteYashar Esmaildokht
677 visualizações30 slides
how config Naxsi por
how config Naxsi how config Naxsi
how config Naxsi Yashar Esmaildokht
631 visualizações32 slides
Osm por
OsmOsm
OsmYashar Esmaildokht
710 visualizações67 slides
Supervisor por
SupervisorSupervisor
SupervisorYashar Esmaildokht
227 visualizações26 slides
‫‪Wazuh‬‬ ‫و‬ ‫‪Ossec‬‬ ‫‪Wazuh‬‬ ‫به‬ ‫‪ossec‬‬ ‫از‬ ‫مهاجرت‬ ‫نحوه‬ ‫همچنین‬ por
‫‪Wazuh‬‬ ‫و‬ ‫‪Ossec‬‬ ‫‪Wazuh‬‬ ‫به‬ ‫‪ossec‬‬ ‫از‬ ‫مهاجرت‬ ‫نحوه‬ ‫همچنین‬‫‪Wazuh‬‬ ‫و‬ ‫‪Ossec‬‬ ‫‪Wazuh‬‬ ‫به‬ ‫‪ossec‬‬ ‫از‬ ‫مهاجرت‬ ‫نحوه‬ ‫همچنین‬
‫‪Wazuh‬‬ ‫و‬ ‫‪Ossec‬‬ ‫‪Wazuh‬‬ ‫به‬ ‫‪ossec‬‬ ‫از‬ ‫مهاجرت‬ ‫نحوه‬ ‫همچنین‬Yashar Esmaildokht
253 visualizações62 slides

Mais conteúdo relacionado

Mais procurados

کتاب Samba and Nfs por
کتاب Samba and Nfsکتاب Samba and Nfs
کتاب Samba and NfsYashar Esmaildokht
263 visualizações126 slides
how enable ceph dashboard por
how enable  ceph dashboardhow enable  ceph dashboard
how enable ceph dashboardYashar Esmaildokht
141 visualizações16 slides
Zfs and btrfs por
Zfs and btrfsZfs and btrfs
Zfs and btrfsYashar Esmaildokht
1K visualizações81 slides
Rbdmap ceph realease 0.2 por
Rbdmap ceph realease 0.2Rbdmap ceph realease 0.2
Rbdmap ceph realease 0.2Yashar Esmaildokht
64 visualizações17 slides
Ossec por
OssecOssec
OssecYashar Esmaildokht
258 visualizações25 slides
Recovery in gnu/linux por
Recovery in gnu/linux Recovery in gnu/linux
Recovery in gnu/linux Yashar Esmaildokht
313 visualizações28 slides

Mais procurados(20)

کتاب Samba and Nfs por Yashar Esmaildokht
کتاب Samba and Nfsکتاب Samba and Nfs
کتاب Samba and Nfs
Yashar Esmaildokht263 visualizações
how enable ceph dashboard por Yashar Esmaildokht
how enable  ceph dashboardhow enable  ceph dashboard
how enable ceph dashboard
Yashar Esmaildokht141 visualizações
Rbdmap ceph realease 0.2 por Yashar Esmaildokht
Rbdmap ceph realease 0.2Rbdmap ceph realease 0.2
Rbdmap ceph realease 0.2
Yashar Esmaildokht64 visualizações
Recovery in gnu/linux por Yashar Esmaildokht
Recovery in gnu/linux Recovery in gnu/linux
Recovery in gnu/linux
Yashar Esmaildokht313 visualizações
rbdmap in ceph por Yashar Esmaildokht
rbdmap in ceph rbdmap in ceph
rbdmap in ceph
Yashar Esmaildokht320 visualizações
Pg autoscaling in ceph por Yashar Esmaildokht
Pg autoscaling in  cephPg autoscaling in  ceph
Pg autoscaling in ceph
Yashar Esmaildokht288 visualizações
Partition in oracle mysql |Mariadb por Yashar Esmaildokht
Partition in oracle mysql |MariadbPartition in oracle mysql |Mariadb
Partition in oracle mysql |Mariadb
Yashar Esmaildokht122 visualizações
Network penetration por AhmadRahmanian1
Network penetrationNetwork penetration
Network penetration
AhmadRahmanian144 visualizações
کتاب امنیت por Yashar Esmaildokht
کتاب امنیتکتاب امنیت
کتاب امنیت
Yashar Esmaildokht321 visualizações
تجارت الکترونبکی با opencart por Yashar Esmaildokht
تجارت الکترونبکی با opencartتجارت الکترونبکی با opencart
تجارت الکترونبکی با opencart
Yashar Esmaildokht79 visualizações
‫سطح دسترسی و کنترل لیست و سهمیه بندی‬ ‫در گنو/لینوکس‬ por Yashar Esmaildokht
‫سطح دسترسی و کنترل لیست و سهمیه بندی‬ ‫در گنو/لینوکس‬‫سطح دسترسی و کنترل لیست و سهمیه بندی‬ ‫در گنو/لینوکس‬
‫سطح دسترسی و کنترل لیست و سهمیه بندی‬ ‫در گنو/لینوکس‬
Yashar Esmaildokht465 visualizações

Similar a How Create Waf With Naxsi

how upgrade ceph por
how upgrade cephhow upgrade ceph
how upgrade cephYashar Esmaildokht
118 visualizações22 slides
Proxmox por
ProxmoxProxmox
ProxmoxYashar Esmaildokht
309 visualizações91 slides
squid por
squidsquid
squidYashar Esmaildokht
62 visualizações23 slides
Node js-&-express-hassan-tafreshi-persian-lan por
Node js-&-express-hassan-tafreshi-persian-lanNode js-&-express-hassan-tafreshi-persian-lan
Node js-&-express-hassan-tafreshi-persian-lanHassan Tafreshi
1.1K visualizações42 slides
HotSpot por
HotSpotHotSpot
HotSpotMohammad Amin Amjadi
325 visualizações41 slides
Load Balancing-as-a-Service (LBaaS) with octavia in openstack por
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
193 visualizações32 slides

Similar a How Create Waf With Naxsi(20)

how upgrade ceph por Yashar Esmaildokht
how upgrade cephhow upgrade ceph
how upgrade ceph
Yashar Esmaildokht118 visualizações
Node js-&-express-hassan-tafreshi-persian-lan por Hassan Tafreshi
Node js-&-express-hassan-tafreshi-persian-lanNode js-&-express-hassan-tafreshi-persian-lan
Node js-&-express-hassan-tafreshi-persian-lan
Hassan Tafreshi1.1K visualizações
Load Balancing-as-a-Service (LBaaS) with octavia in openstack por Yashar Esmaildokht
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
Yashar Esmaildokht193 visualizações
how create linux image for cloud por Yashar Esmaildokht
how create linux image for cloud how create linux image for cloud
how create linux image for cloud
Yashar Esmaildokht118 visualizações
مرجع oracle mysql |mariadb por Yashar Esmaildokht
مرجع oracle mysql |mariadb مرجع oracle mysql |mariadb
مرجع oracle mysql |mariadb
Yashar Esmaildokht202 visualizações
Network Load Balancing (NLB) por ali torabi
Network Load Balancing (NLB)Network Load Balancing (NLB)
Network Load Balancing (NLB)
ali torabi177 visualizações
چرا نود.جی اس؟ por Masoud Sharifi
چرا نود.جی اس؟چرا نود.جی اس؟
چرا نود.جی اس؟
Masoud Sharifi1K visualizações
ارائه ابزار.pptx por aminnezarat
ارائه ابزار.pptxارائه ابزار.pptx
ارائه ابزار.pptx
aminnezarat10 visualizações
how use iptables por Yashar Esmaildokht
how use iptables how use iptables
how use iptables
Yashar Esmaildokht92 visualizações
OpenStack and its service por Yashar Esmaildokht
OpenStack and its serviceOpenStack and its service
OpenStack and its service
Yashar Esmaildokht119 visualizações
PHP Web service - وب سرویس por Parsa Kafi
PHP Web service - وب سرویسPHP Web service - وب سرویس
PHP Web service - وب سرویس
Parsa Kafi1.3K visualizações

Mais de Yashar Esmaildokht

openstack designate por
openstack designateopenstack designate
openstack designateYashar Esmaildokht
93 visualizações81 slides
bcache and cachefs its benefits. por
bcache and cachefs   its benefits. bcache and cachefs   its benefits.
bcache and cachefs its benefits. Yashar Esmaildokht
65 visualizações36 slides
Systemd and its various uses and capabilities. por
Systemd and its various uses and capabilities.Systemd and its various uses and capabilities.
Systemd and its various uses and capabilities.Yashar Esmaildokht
41 visualizações49 slides
radosgw por
radosgw radosgw
radosgw Yashar Esmaildokht
15 visualizações72 slides
cachefs por
cachefs cachefs
cachefs Yashar Esmaildokht
53 visualizações26 slides
how add and remove Mgr in ceph cluster por
how add and remove  Mgr in ceph  clusterhow add and remove  Mgr in ceph  cluster
how add and remove Mgr in ceph clusterYashar Esmaildokht
20 visualizações29 slides

Mais de Yashar Esmaildokht(12)

openstack designate por Yashar Esmaildokht
openstack designateopenstack designate
openstack designate
Yashar Esmaildokht93 visualizações
bcache and cachefs its benefits. por Yashar Esmaildokht
bcache and cachefs   its benefits. bcache and cachefs   its benefits.
bcache and cachefs its benefits.
Yashar Esmaildokht65 visualizações
Systemd and its various uses and capabilities. por Yashar Esmaildokht
Systemd and its various uses and capabilities.Systemd and its various uses and capabilities.
Systemd and its various uses and capabilities.
Yashar Esmaildokht41 visualizações
how add and remove Mgr in ceph cluster por Yashar Esmaildokht
how add and remove  Mgr in ceph  clusterhow add and remove  Mgr in ceph  cluster
how add and remove Mgr in ceph cluster
Yashar Esmaildokht20 visualizações
how add and delete new mon in ceph cluster por Yashar Esmaildokht
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
Yashar Esmaildokht7 visualizações
نحوه ایجاد snapshot و ایجاد point در سیستم‌های گنو/لینوکسی برای ایجاد sys... por Yashar Esmaildokht
 نحوه ایجاد snapshot  و ایجاد point  در سیستم‌های گنو/لینوکسی  برای ایجاد sys... نحوه ایجاد snapshot  و ایجاد point  در سیستم‌های گنو/لینوکسی  برای ایجاد sys...
نحوه ایجاد snapshot و ایجاد point در سیستم‌های گنو/لینوکسی برای ایجاد sys...
Yashar Esmaildokht83 visualizações
security book por Yashar Esmaildokht
security book security book
security book
Yashar Esmaildokht932 visualizações

How Create Waf With Naxsi

  • 1. ‫تعالی‬ ‫باسمه‬ nginx ‫آن‬ ‫های‬ ‫ژول‬ ‫ما‬ ‫و‬ ‫الخصوص‬ ‫علی‬ naxsi ‫(چگونه‬ WAF ) ‫کنیم‬ ‫‌سازی‬ ‫ه‬‫پیاد‬ : ‫نویسنده‬ ‫دخت‬ ‫اسمعیل‬ ‫یاشار‬ ‫مهندس‬ : ‫نسخه‬ 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. nginx . ‫میباشد‬ ‫قدرتمند‬ ‫سرور‬ ‫وب‬ ‫‌یک‬ ‫از‬ ‫بعد‬ ‫دنیا‬ ‫در‬ ‫مطرح‬ ‫سرور‬ ‫وب‬ ‫دومین‬ ‫سرور‬ ‫وب‬ ‫این‬ ‫‌واقع‬ ‫ر‬‫د‬ apache . ‫‌باشد‬ ‫ی‬‫م‬ . ‫برد‬ ‫بهره‬ ‫و‬ ‫کرد‬ ‫استفاده‬ ‫آن‬ ‫از‬ ‫‌توان‬ ‫ی‬‫م‬ ‫نیاز‬ ‫به‬ ‫نسبت‬ ‫که‬ ‫دارد‬ ‫زیادی‬ ‫فرد‬ ‫به‬ ‫منحصر‬ ‫ی‬ ‫‌ها‬ ‫ی‬‫ویژگ‬ ‫سرور‬ ‫وب‬ ‫این‬ ‫به‬ ‫میتوان‬ ‫‌های‬ ‫ت‬‫قابلی‬ ‫و‬ ‫مطرح‬ ‫های‬ ‫ماژول‬ ‫از‬ ‫یکی‬ . ‫نمود‬ ‫اشاره‬ ‫زیادی‬ ‫های‬ ‫ماژول‬ ‫از‬ ‫پشتیبانی‬ ‫به‬ ‫میتوان‬ ‫آن‬ ‫‌های‬ ‫ی‬‫ویژگ‬ ‫از‬ mod ‫پروکسی‬ ‫قابلیت‬ ‫همچنین‬ . ‫کرد‬ ‫اشاره‬ ‫آن‬ rtmp ‫یا‬ real time messaging protocol . ‫میباشد‬ ‫اهمیت‬ ‫حايز‬ ‫بسیار‬ ‫که‬ ‫بود‬ ‫نمی‬ ‫اشاره‬ ‫آن‬ ‫همچنین‬ ‫پروکسی‬ ‫انجنیکس‬ ‫سرور‬ ‫های‬ ‫پروتکل‬ ‫برای‬   HTTP, HTTPS, SMTP, POP3 ‫و‬   IMAP   ‫استفاده‬ ‫مورد‬ … ‫و‬ .‫باشد‬ ‫می‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫که‬ ‫نمود‬ ‫اشاره‬ ‫نکته‬ ‫این‬ ‫به‬ ‫‌توان‬ ‫ی‬‫م‬ ‫‌واقع‬ ‫ر‬‫د‬ Nginx ‫میتوان‬ ‫یا‬ ‫بار‬ ‫کننده‬ ‫متعادل‬ ‫عنوان‬ ‫به‬   load balancer ‫و‬ ‫سرور‬ ‫وب‬ ، HTTP cache   . ‫نمود‬ ‫استفاده‬ ‫پروژه‬ nginx ‫کم‬ ‫استفاده‬ ‫ی‬ ‫رو‬ ‫و‬ ‫شده‬ ‫متمرکز‬ ‫باال‬ ‫سرعت‬ ‫و‬ ‫رقابت‬ ‫و‬ ‫کارایی‬ ‫روی‬ ‫شده‬ ‫بهینه‬ ‫و‬ . ‫است‬ ‫گشته‬ ‫متمرکز‬ ‫رم‬ ‫از‬ ‫جمله‬ ‫از‬ ‫مختلفی‬ ‫های‬ ‫عامل‬ ‫سیستم‬ ‫روی‬ ‫بر‬ ‫ایکس‬ ‫جین‬ ‫ان‬   Linux, OS X, Solaris, AIX, HP-UX ‫انواع‬ ‫و‬   BSD ‫‌سازی‬ ‫ه‬‫پیاد‬ ‫قابل‬ . ‫میباشد‬ ‫توسعه‬ ‫اساس‬   Nginx ‫پویای‬ ‫صفحات‬ ‫محتوای‬ ‫به‬ ‫رسانی‬ ‫خدمت‬ ‫برای‬ ‫توان‬ ‫می‬ ‫را‬   HTTP ‫طریق‬ ‫از‬ ‫شبکه‬ ‫روی‬ ‫بر‬   FastCGI, SCGI ‫برای‬ ‫افزار‬ ‫نرم‬ ‫های‬ ‫دهنده‬ ‫سرویس‬ ‫و‬ ‫ها‬ ‫اسکریپت‬   WSGI ‫های‬ ‫ماژول‬ ‫یا‬ Phusion ‫عنوان‬ ‫به‬ ‫استفاده‬ ‫همچنین‬ ‫و‬   load balancer .‫نمود‬ ‫معرفی‬ ‫سرور‬ ‫وب‬ Nginx ‫موثر‬ ‫‌سازی‬ ‫ه‬‫یکپارچ‬ ‫قابلیت‬ ‫و‬ ‫باند‬ ‫پهنای‬ ‫و‬ ‫دسترسی‬ ‫کنترل‬ ،‫نهان‬ ‫حافظه‬ ،‫بارگذاری‬ ‫در‬ ‫توازن‬ ‫نظیر‬ ‫بیشتری‬ ‫های‬ ‫قابلیت‬ ‫ها‬ ‫ویژگی‬ ‫همین‬ ‫که‬ ‫داده‬ ‫جای‬ ‫خود‬ ‫در‬ ‫را‬ ‫فراوان‬ ‫کاربردی‬ ‫‌های‬ ‫ه‬‫برنام‬ ‫با‬ Nginx ‫کرد‬ ‫جهان‬ ‫مجبوب‬ ‫سرور‬ ‫وب‬ ‫دومین‬ ‫به‬ ‫تبدیل‬ ‫را‬ . ‫است‬ ‫ه‬ ‫تاریخچه‬   Nginx ‫توسعه‬   Nginx ‫توسط‬   Igor Sysoev ‫سال‬ ‫در‬ 2002 ‫سال‬ ‫جوالی‬ ‫در‬ .‫گردید‬ ‫اغاز‬ 2011 ‫نام‬ ‫به‬ ‫شرکت‬   Nginx, Inc ‫در‬   ،‫فرانسیسکو‬ ‫سان‬ ‫کالیفرنیا‬   ‫کمپانی‬ ‫یک‬ ‫واقع‬ ‫در‬ ‫شرکت‬ ‫این‬ .‫داد‬ ‫شکل‬ ‫تغییر‬   information technology   ‫ارائه‬ ‫و‬ ‫تولید‬ ‫را‬ ‫سرور‬ ‫وب‬ ‫های‬ ‫افزار‬ ‫نرم‬ ‫که‬ ‫میباشد‬ ‫های‬ ‫بررسی‬ ‫اساس‬ ‫بر‬ .‫میدهد‬   Netcraft ‫سال‬ ‫اگوست‬ ‫در‬ 2014 ،   nginx ‫شناخته‬ ‫فعال‬ ‫های‬ ‫سایت‬ ‫در‬ ‫پرطرفدار‬ ‫سرور‬ ‫وب‬ ‫دومین‬ ‫عنوان‬ ‫به‬ .‫شد‬
  • 5. ‫های‬ ‫ویژگی‬   Nginx ‫های‬ ‫قابلیت‬ ‫و‬ ‫ها‬ ‫ویژگی‬ ‫از‬ ‫برخی‬ ‫از‬   Nginx : ‫نمود‬ ‫اشاره‬ ‫زیر‬ ‫موارد‬ ‫به‬ ‫میتوان‬ • ‫از‬ ‫بیش‬ ‫مدیریت‬ ‫و‬ ‫پشتیبانی‬ ‫قابلیت‬   10,000 ( 10K ) ‫پایین‬ ‫بسیار‬ ‫رم‬ ‫مصرف‬ ‫با‬ ‫همزمان‬ ‫اتصال‬ • ‫ق‬ ‫ابلیت‬   Load balancing • ‫قابلیت‬ Fault tolerance • ‫از‬ ‫پشتیبانی‬   OCSP   ‫با‬   OpenSSL • ‫از‬ ‫پشتیبانی‬   FastCGI, SCGI, uWSGI ‫همراه‬ ‫به‬   caching • ‫با‬ ‫سازگار‬   IPv6 • ‫پروتکل‬ ‫از‬ ‫پشتبانی‬   SPDY • ‫اکسترکت‬ ‫و‬ ‫سازی‬ ‫فشرده‬   gzip • ‫نویسی‬ ‫باز‬ URL ‫یا‬   URL rewriting • ‫قابلیت‬   Bandwidth throttling • ‫های‬ ‫داده‬ ‫پردازش‬   XSLT • ‫از‬ ‫پشتیبانی‬   TLS/SSL • ‫از‬ ‫پشتیبانی‬   STARTTL ‫ها‬ • ‫سرور‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫هویت‬ ‫احراز‬ HTTP ‫خارجی‬ • ‫مختلف‬ ‫مصارف‬ ‫برای‬ ‫مختلف‬ ‫های‬ ‫ماژول‬ ‫دارای‬
  • 6. ‫مختلف‬ ‫های‬ ‫الیه‬ ‫در‬ ‫هکرها‬ ‫حمالت‬ OSI ،‫ها‬ ‫الیه‬ ‫این‬ ‫از‬ ‫یکی‬ ‫که‬ ‫‌گیرد‬ ‫ی‬‫م‬ ‫صورت‬ Application ‫و‬ ‫است‬ ‫شبکه‬ ‫الیه‬ ‫هفتمین‬ ،‫کاربرد‬ ‫الیه‬ .‫دارد‬ ‫نام‬ .‫‌افتد‬ ‫ی‬‫م‬ ‫اتفاق‬ ‫الیه‬ ‫این‬ ‫در‬ ‫حمالت‬ ‫ترین‬ ‫پیچیده‬ WAF ‫مخفف‬ Web Application Firewall .‫‌دهد‬ ‫ی‬‫م‬ ‫نشان‬ ‫العمل‬ ‫عکس‬ ‫ها‬ ‫آن‬ ‫برابر‬ ‫در‬ ‫و‬ ‫کرده‬ ‫شناسایی‬ ‫را‬ ‫حمالت‬ ‫نوع‬ ‫این‬ ‫که‬ ‫است‬ ‫فایروالی‬ :‫شامل‬ ‫حمالت‬ ‫این‬ SQL Injection XSS ‫باگ‬ CSRF Buffer Overflow Malicious Robots Information leakage Malicious and Illegal Encoding Web Server and OS Attacks OS command injection ‫باگ‬ RFI Session Hijacking DOS Protection against common attacks Site Reconnaissance Parameter Tampering Directory Traversal … ‫و‬ . ‫میباشد‬ WAF ‫‌کند؟‬ ‫ی‬‫م‬ ‫کار‬ ‫چگونه‬
  • 7. WAF ‫الیه‬ ‫روی‬ ‫بر‬ ‫که‬ ‫است‬ ‫شده‬ ‫طراحی‬ ‫ای‬ ‫گونه‬ ‫به‬ Application ‫بر‬ ‫مبتنی‬ ‫خروجی‬/‫ورودی‬ ‫ترافیک‬ ‫و‬ ‫‌گیرد‬ ‫ی‬‫م‬ ‫قرار‬ HTTP/HTTPS ‫را‬ ‫درخواست‬ ‫دو‬ ‫هر‬ ‫از‬ ‫مخربی‬ ‫ترافیک‬ ‫که‬ ‫زمان‬ ‫هر‬ .‫‌کند‬ ‫ی‬‫م‬ ‫بررسی‬ GET ‫و‬ POST ‫برخالف‬ .‫‌دهد‬ ‫ی‬‫م‬ ‫نشان‬ ‫العمل‬ ‫عکس‬ ‫سرعت‬ ‫به‬ ،‫کند‬ ‫شناسایی‬ ‫را‬ ،‫‌کنند‬ ‫ی‬‫م‬ ‫عمل‬ ‫سرورها‬ ‫از‬ ‫ایمن‬ ‫دروازه‬ ‫یک‬ ‫عنوان‬ ‫به‬ ‫فقط‬ ‫که‬ ‫معمولی‬ ‫های‬ ‫فایروال‬ WAF ( ‫گیرنده‬ ‫سرویس‬ ‫بین‬ ‫که‬ ‫است‬ ‫امنیتی‬ ‫اقدام‬ ‫یک‬ Client ‫سخت‬ ‫بسیار‬ ‫تهدیدات‬ ‫نوع‬ ‫این‬ ‫تشخیص‬ ‫که‬ ‫‌گیرند‬ ‫ی‬‫م‬ ‫انجام‬ ‫خودکار‬ ‫صورت‬ ‫به‬ ‫معموال‬ ،‫مخرب‬ ‫حمالت‬ ‫بیشترین‬ .‫دارد‬ ‫قرار‬ ‫سرور‬ ‫وب‬ ‫و‬ ) .‫نیست‬ ‫شناسایی‬ ‫قابل‬ ‫و‬ ‫شده‬ ‫طراحی‬ ‫انسان‬ ‫ترافیک‬ ‫از‬ ‫تقلید‬ ‫برای‬ ‫غالبا‬ ‫زیرا‬ ‫است؛‬ WAF ‫همه‬ ‫برای‬ ‫را‬ ‫پاسخ‬ ‫و‬ ‫درخواست‬ ‫هر‬ ‫از‬ ‫عمیقی‬ ‫بازرسی‬ .‫‌دهد‬ ‫ی‬‫م‬ ‫انجام‬ ‫وب‬ ‫ترافیک‬ ‫متداول‬ ‫اشکاالت‬ ‫به‬ ‫بازرسی‬ ‫این‬ WAF .‫کند‬ ‫جلوگیری‬ ‫سرور‬ ‫به‬ ‫ها‬ ‫آن‬ ‫رسیدن‬ ‫از‬ ‫و‬ ‫کند‬ ‫مسدود‬ ‫و‬ ‫شناسایی‬ ‫را‬ ‫تهدیدات‬ ‫تا‬ ‫‌کند‬ ‫ی‬‫م‬ ‫کمک‬ ‫های‬ ‫ماژول‬ ‫از‬ ‫مورد‬ ‫چند‬ ‫بررسی‬ ‫به‬ ‫زیر‬ ‫در‬ nginx ‌ : ‫پرداخت‬ ‫خواهم‬ ‫را‬
  • 19. ‫کد‬ ‫سورس‬ ‫نیازمند‬ ‫کامپیایل‬ ‫جهت‬ ‫ادامه‬ ‫در‬ nginx ‫و‬ naxsi . ‫مینماییم‬ ‫دانلود‬ ‫را‬ ‫نظر‬ ‫مد‬ ‫‌های‬ ‫ل‬‫فای‬ . ‫هستیم‬
  • 20. ‫ماژول‬ ‫ساخت‬ ‫برای‬ ‫ها‬ ‫نیاز‬ ‫پیش‬ naxsi ‫ورژن‬ ‫به‬ ‫نسبت‬ nginx ‌ : ‫میباشد‬ ‫زیر‬ ‫شرح‬ ‫به‬ • Debian Base Distro • GCC • make • nginx • libpcre3-dev ‌ : ‫میکنیم‬ ‫نصب‬ ‫را‬ ‫خود‬ ‫نظر‬ ‫مد‬ ‫دبیان‬ ‫توزیع‬ ‫ادامه‬ ‫در‬ ‫شکل‬ 1
  • 58. ‌ : ‫نیاز‬ ‫مورد‬ ‫های‬ ‫بسته‬ ‫نصب‬ ‫شکل‬ 39 ‫کامپایلر‬ ‫نصب‬ - gcc ‫شکل‬ 40 ‫بسته‬ ‫نصب‬ - libpcre3
  • 59. ‫شکل‬ 41 ‫کامپایل‬ : nginx ‫ماژول‬ ‫‌با‬ naxsi ‫از‬ ‫را‬ ‫ها‬ ‫پارامتر‬ : ‫نکته‬ nginx -V . ‫آوریم‬ ‫می‬ ‫بدست‬ ‫مانند‬ . ‫باشد‬ ‫نصب‬ ‫باید‬ ‫میگیرد‬ ‫صورت‬ ‫کامپایل‬ ‫آن‬ ‫در‬ ‫که‬ ‫سیستم‬ ‫در‬ ‫ها‬ ‫پارامتر‬ ‫به‬ ‫نسبت‬ ‫نیاز‬ ‫مورد‬ ‫های‬ ‫‌پکیج‬ : ‫نکته‬ libssl , zlib … , ‫شکل‬ 42 - ‫ماژول‬ ‫ساخت‬
  • 60. ‫شکل‬ 43 - ‫شدن‬ ‫ساخته‬ ‫و‬ ‫شدن‬ ‫کامپایل‬ ‫شاهد‬ ‫ادامه‬ ‫در‬ ngx_http_naxsi_module.so ‫ورژن‬ ‫برای‬ 1.16.1 nginx . ‫هستیم‬ ‫‌برای‬ : ‫نکته‬ compatibility ‫های‬ ‫پارامتر‬ ‫به‬ ‫مربوط‬ ‫های‬ ‫بسته‬ ‫هست‬ ‫نیاز‬ nginx ‫دستور‬ ‫از‬ ‫استفاده‬ ‫با‬ . ‫دهیم‬ ‫انجام‬ ‫را‬ ‫کامپایل‬ ‫و‬ ‫نصب‬ ‫را‬ nginx -V . ‫میباشد‬ ‫‌پذیر‬ ‫ن‬‫امکا‬ ‫نظر‬ ‫مد‬ ‫های‬ ‫ماژول‬ ‫و‬ ‫ها‬ ‫پارامتر‬ ‫مشاهده‬ ‫امکان‬ ‫اگر‬ : ‫نکته‬ naxsi ‫در‬ ‫تست‬ ‫این‬ ‫در‬ ‫ما‬ . ‫است‬ ‫موجود‬ ‫‌ها‬ ‫ن‬‫آ‬ ‫برای‬ ‫شده‬ ‫کامپایل‬ ‫بسته‬ ‫فدورا‬ ‫یا‬ ‫و‬ ‫باشد‬ ‫شده‬ ‫نصب‬ ‫ها‬ ‫بیس‬ ‫دبیان‬ ‫در‬ centos ‫کردیم‬ ‫نصب‬ ‫به‬ ‫اقدام‬ ‫در‬ ‫ماژول‬ ‫این‬ ‫کردن‬ ‫فعال‬ ‫و‬ ‫کردن‬ ‫اضافه‬ ‫جهت‬ ‫این‬ ‫حال‬ nginx.conf . ‫میکنیم‬ ‫اعمال‬ ‫را‬ ‫نظر‬ ‫مد‬ ‫کانفیق‬ ‌ : ‫نمونه‬ ‫برای‬ : ‫داریم‬ ‫فایل‬ ‫دو‬ ‫‌ما‬ : ‫نکته‬ naxsi_core.rules ‫پروژه‬ ‫در‬ ‫(که‬ naxsi ) ‫است‬ ‫موجود‬ ‫و‬ ngx_http_naxsi_module.so . ) ‫ساختیم‬ ‫ما‬ ‫(که‬ ‫فایل‬ ngx_http_naxsi_module.so ‫از‬ ‫استفاده‬ ‫با‬ ‫را‬ load_module ‫اقدام‬ ‫به‬ . ‫میکنیم‬ ‫کردن‬ ‫لود‬ # Edit this 'include' directive to point to your naxsi_core.rules file include /etc/nginx/naxsi_core.rules; server {
  • 61. listen 80; location / { root /usr/share/nginx/html; SecRulesEnabled; #enable naxsi LearningMode; #enable learning mode LibInjectionSql; #enable libinjection support for SQLI LibInjectionXss; #enable libinjection support for XSS # Define where blocked requests go DeniedUrl "/50x.html"; # CheckRules, determining when NAXSI needs to take action CheckRule "$SQL >= 8" BLOCK; CheckRule "$RFI >= 8" BLOCK; CheckRule "$TRAVERSAL >= 4" BLOCK; CheckRule "$EVADE >= 4" BLOCK; CheckRule "$XSS >= 8" BLOCK; # Don’t forget the error_log, where blocked requests are logged error_log /tmp/naxsi.log; } error_page 500 502 503 504 /50x.html; }
  • 62. ‫کانفیق‬ ‫ساختار‬ ‫از‬ ‫قسمتی‬ ‫شرح‬ nginx : ‫نود‬ ‫در‬ ‫موجود‬ ‫فایل‬ ‫کانفیق‬ ‫بررسی‬ ‫به‬ ‫سپس‬ ‫داده‬ ‫قرار‬ ‫بررسی‬ ‫مورد‬ ‫را‬ ‫فرضی‬ ‫سناروی‬ ‫یک‬ ‫زیر‬ ‫در‬ naxsi . ‫نمود‬ ‫خواهیم‬ ‫بررسی‬ ‫را‬ ‫ایجاد‬ ‫دیگر‬ ‫نکته‬ load balancer ‫ساختار‬ ‫مثال‬ ‫این‬ ‫در‬ ‫ما‬ . ‫است‬ ‫بیشتر‬ ‫اطمینان‬ ‫حصول‬ ‫برای‬ load balancing . ‫کردیم‬ ‫بررسی‬ ‫نیز‬ ‫را‬ ‫برای‬ ‫همچنین‬ . ‫گردد‬ ‫بسیار‬ ‫ها‬ ‫درخواست‬ ‫و‬ ‫ترافیک‬ ‫میزان‬ ‫و‬ ‫شود‬ ‫بیشتر‬ ‫سایت‬ ‫کاربران‬ ‫تعداد‬ ‫وقتی‬ HA ‫و‬ reliability ‫ایجاد‬ ‫به‬ ‫نیاز‬ loadbalancing ‫بین‬ ‫در‬ ‫را‬ ‫شده‬ ‫ارسال‬ ‫‌های‬ ‫ت‬‫درخواس‬ ‫که‬ ‫هستیم‬ ‫سرور‬ ‫وب‬ ‫یک‬ ‫نیازمند‬ ‫حال‬ ‫این‬ ‫با‬ . ‫هستیم‬ instance ‫پخش‬ ‫موجود‬ ‫های‬ ‫بین‬ ‫در‬ ‫‌ها‬ ‫ت‬‫ریکوئس‬ ‫تعداد‬ ‫کار‬ ‫این‬ ‫انجام‬ ‫با‬ .‫کند‬ instance ‫از‬ ‫میتوانیم‬ ‫اینکار‬ ‫انجام‬ ‫برای‬ .‫میشوند‬ ‫تقسیم‬ ‫ها‬ nginx .‫کنیم‬ ‫استفاده‬ ‫مانند‬ ‫دیگر‬ ‫‌های‬ ‫ه‬‫برنام‬ ‫از‬ ‫میتوانیم‬ ‫مفهوم‬ ‫این‬ ‫برای‬ ‫همچنین‬ squid , varnish , haproxy . ‫کنیم‬ ‫استفاده‬ ‫نیز‬ nginx ‫قابلیت‬ load balancing ‫سازی‬ ‫پیاده‬ ‫برای‬ .‫دارد‬ ‫را‬ load balancing ‫در‬ nginx ‫فایل‬ ‫در‬ ‫باید‬ nginx.conf ‫نوع‬ ‫از‬ ‫گروه‬ ‫یک‬ upstream ‫کانتکست‬ ‫در‬ ‫کنید‬ ‫ایجاد‬ http . http { upstream myserver { server server1.example.com; server server2.example.com; server server3.example.com; } }
  • 63. ‫نام‬ ‫به‬ ‫گروه‬ ‫یک‬ ‫باال‬ ‫کانفیگ‬ ‫در‬ myserver ‫سه‬ ‫یعنی‬ .‫‌باشد‬ ‫ی‬‫م‬ ‫سرور‬ ‫سه‬ ‫شامل‬ ‫که‬ ‫‌ایم‬ ‫ه‬‫کرد‬ ‫ایجاد‬ instance ‫و‬ ‫هستند‬ ‫اجرا‬ ‫حال‬ ‫در‬ ‫برنامه‬ ‫از‬ ‫کانتکس‬ ‫در‬ ‫باید‬ ‫سپس‬ .‫کنیم‬ ‫ارسال‬ ‫‌ها‬ ‫ر‬‫سرو‬ ‫این‬ ‫روی‬ ‫بر‬ ‫را‬ ‫شده‬ ‫ارسال‬ ‫‌های‬ ‫ت‬‫ریکوئس‬ ‫میتوانیم‬ server ‫کانتکست‬ ‫درون‬ ‫هم‬ ‫کانتکست‬ ‫این‬ ( http ‫نوع‬ ‫از‬ ‫بالک‬ ‫یک‬ ) ‫دارد‬ ‫قرار‬ location ‫کلمه‬ ‫از‬ ‫بعد‬ .‫کنیم‬ ‫ایجاد‬ location ‫را‬ ‫میشوند‬ ‫ارسال‬ ‫آن‬ ‫به‬ ‫‌ها‬ ‫ت‬‫درخواس‬ ‫که‬ ‫را‬ ‫مسیری‬ ‫باید‬ ‫از‬ ‫بعد‬ / ‫نوشتن‬ .) / ( ‫است‬ ‫شده‬ ‫نوشته‬ ‫سایت‬ ‫وب‬ ‫روت‬ ‫همان‬ ‫پایین‬ ‫مثال‬ ‫در‬ ‫که‬ ‫بنویسید‬ location .‫میشود‬ ‫شامل‬ ‫را‬ ‫‌ها‬ ‫ت‬‫درخواس‬ ‫تمامی‬ ‫به‬ ‫که‬ ‫را‬ ‫‌هایی‬ ‫ت‬‫درخواس‬ ‫فقط‬ ‫میتوانید‬ ‫همچنین‬ api ‫از‬ / ‫جای‬ ‫به‬ ‫میتوانید‬ ‫که‬ ‫کنید‬ ‫فیلتر‬ ،‫میشوند‬ ‫ارسال‬ ‫ها‬ api ‫کار‬ ‫این‬ ‫با‬ .‫کنید‬ ‫استفاده‬ / ‫که‬ ‫‌هایی‬ ‫ت‬‫درخواس‬ ‫تمامی‬ url ‫با‬ ‫آنها‬ api ‫بالک‬ ‫وارد‬ ‫شود‬ ‫شروع‬ / location .‫میشوند‬ ‫از‬ ‫باید‬ ‫اجرا‬ ‫حال‬ ‫در‬ ‫‌های‬ ‫ه‬‫برنام‬ ‫بین‬ ‫در‬ ‫‌ها‬ ‫ت‬‫درخواس‬ ‫کردن‬ ‫ارسال‬ ‫برای‬ ‫سپس‬ proxy_pass ‫کلمه‬ ‫از‬ ‫بعد‬ .‫کنیم‬ ‫استفاده‬ proxy_pass ‫نام‬ ‫باید‬ upstream ‫‌های‬ ‫ر‬‫سرو‬ ‫بین‬ ‫در‬ / ‫به‬ ‫شده‬ ‫ارسال‬ ‫‌های‬ ‫ت‬‫درخواس‬ ‫تمامی‬ ‫اینکار‬ ‫انجام‬ ‫با‬ .‫کنیم‬ ‫وارد‬ ،‫‌ایم‬ ‫ه‬‫نوشت‬ ‫باال‬ ‫در‬ ‫که‬ ‫را‬ ‫ی‬ server ‫پخش‬ .‫میشوند‬ http { upstream myserver { server server1.example.com; server server2.example.com; server server3.example.com; } server { location / { proxy_pass http://server; } } } ‫سرور‬ ‫وب‬ nginx ‫الگوریتم‬ ‫از‬ ‫پیشفرض‬ ‫طور‬ ‫به‬ Round robin ‫میتوانیم‬ ‫البته‬ .‫میکند‬ ‫استفاده‬ ‫‌ها‬ ‫ر‬‫سرو‬ ‫بین‬ ‫در‬ ‫‌ها‬ ‫ت‬‫درخواس‬ ‫کردن‬ ‫پخش‬ ‫برای‬ .‫بدهیم‬ ‫تغییر‬ ‫را‬ ‫الگوریتم‬ ‫این‬ .‫شود‬ ‫ارسال‬ ‫درخواست‬ ‫چند‬ ‫‌ها‬ ‫ر‬‫سرو‬ ‫از‬ ‫هرکدام‬ ‫به‬ ‫که‬ ‫کنیم‬ ‫مشخص‬ ‫میتوانیم‬ ‫مثال‬ ‫طور‬ ‫به‬ ‫افزودن‬ ‫با‬ weight ‫اگر‬ ‫مثال‬ ‫طور‬ ‫به‬ ‫که‬ ‫میکنم‬ ‫مشخص‬ ‫‌ها‬ ‫ر‬‫سرو‬ ‫نام‬ ‫کنار‬ ‫در‬ 7 ،‫شود‬ ‫ارسال‬ ‫سرور‬ ‫به‬ ‫درخواست‬ 5 ‫به‬ ‫مورد‬ server1 ‫ارسال‬ ‫و‬ ‫میشود‬ 2 ‫به‬ ‫مورد‬ server2 ‫سرور‬ ‫عنوان‬ ‫به‬ ‫سرور‬ ‫یک‬ ‫که‬ ‫کنیم‬ ‫مشخص‬ ‫میتوانیم‬ ‫همچنین‬ . backup ‫مانند‬ ‫باشد‬ server4 . ‫کلمه‬ ‫کردن‬ ‫اضافه‬ ‫با‬ ‫میتوانید‬ ‫نباشد‬ ‫دسترس‬ ‫در‬ ‫سروری‬ ‫اگر‬ down ‫مانند‬ ‫کنید؛‬ ‫جلوگیری‬ ‫آن‬ ‫به‬ ‫درخواست‬ ‫ارسال‬ ‫از‬ ،‫سرور‬ ‫نام‬ ‫از‬ ‫بعد‬ server3 ‫کلمه‬ ‫از‬ ‫قبل‬ ‫یا‬ ‫و‬ server .‫دهید‬ ‫قرار‬ # ‫عالمت‬ ‫یک‬ upstream myserver { server server1.example.com weight=5;
  • 64. server server2.example.com weight=2; server server3.example.com down; server server4.example.com backup; } ‫سرور‬ ‫کار‬ ‫این‬ ‫انجام‬ ‫با‬ server4 ‫سرور‬ ‫عنوان‬ ‫به‬ backup ‫به‬ ‫ریکوئستی‬ ‫هیچ‬ ،‫باشند‬ ‫دسترس‬ ‫در‬ ‫سرورها‬ ‫بقی‬ ‫ما‬ ‫زمانیکه‬ ‫تا‬ ‫و‬ ‫است‬ ‫شده‬ ‫معرفی‬ ‫سرور‬ server4 ‫‌های‬ ‫ر‬‫سرو‬ ‫تمامی‬ ‫اگر‬ .‫نمیشود‬ ‫ارسال‬ server1 ‫و‬ server2 ‫آنگاه‬ ،‫شوند‬ ‫خارج‬ ‫دسترس‬ ‫از‬ nginx ‫را‬ ‫شده‬ ‫ارسال‬ ‫‌های‬ ‫ت‬‫درخواس‬ ‫سرور‬ ‫به‬ backup ‫یعنی‬ server4 .‫میکند‬ ‫ارسال‬ ‫پیشفرض‬ ‫طور‬ ‫به‬ ‫البته‬ nginx ‫به‬ ‫مربوط‬ ‫تنظیمات‬ ‫سری‬ ‫یک‬ ‫باید‬ ‫و‬ ‫نمیکند‬ ‫بررسی‬ ‫را‬ ‫سرورها‬ ‫سالمت‬ health_check .‫کنیم‬ ‫ثبت‬ ‫را‬ ‫دستور‬ ‫کردن‬ ‫اضافه‬ ‫با‬ health_check ‫پایین‬ ‫در‬ proxy_pass ‫سرور‬ ‫وب‬ nginx ‫هر‬ 5 ‫سرورهای‬ ‫به‬ ‫را‬ ‫ریکوئست‬ ‫یک‬ ‫بار‬ ‫یک‬ ‫ثانیه‬ server ‫کدهای‬ ‫از‬ ‫خارج‬ ‫کدی‬ ‫ریسپانس‬ ‫‌ها‬ ‫ر‬‫سرو‬ ‫از‬ ‫هرکدام‬ ‫اگر‬ ‫و‬ ‫میکند‬ ‫ارسال‬ 200 ‫تا‬ 399 ‫سرورها‬ ‫آن‬ ‫به‬ ‫را‬ ‫بعدی‬ ‫‌های‬ ‫ت‬‫درخواس‬ ،‫کنند‬ ‫ارسال‬ ‫را‬ .‫نمیکند‬ ‫ارسال‬ server { location / { proxy_pass http://server; health_check; } } ‫دستور‬ ‫کنار‬ ‫در‬ health_check ‫درخواست‬ ‫که‬ ‫کنیم‬ ‫مشخص‬ ‫میتوانیم‬ ‫مثال‬ ‫طور‬ ‫به‬ .‫کنیم‬ ‫مشخص‬ ‫هم‬ ‫را‬ ‫پارامتر‬ ‫سری‬ ‫یک‬ ‫میتوانیم‬ health_check ‫چه‬ ‫به‬ ‫را‬ uri .‫کند‬ ‫ارسال‬ ‫را‬ ‫درخواست‬ ‫پورتی‬ ‫چه‬ ‫به‬ ‫یا‬ ‫و‬ ‫کند‬ ‫ارسال‬ ‫ای‬ server { location / { proxy_pass http://server;
  • 65. health_check port=8080; #health_check uri=/healthcheck; } } .)‫میشود‬ ‫استفاده‬ # ‫از‬ ‫دستور‬ ‫یک‬ ‫کردن‬ ‫کامنت‬ ‫(برای‬ ‫کردن‬ ‫مشخص‬ ‫برای‬ ‫را‬ ‫سفارشی‬ ‫درخواست‬ ‫یک‬ ‫میتوانیم‬ ‫همچنین‬ health_check :‫کنیم‬ ‫ایجاد‬ http { #... match welcome { status 200; header Content-Type = text/html; body ~ "Welcome to nginx!"; } server { #... location / { proxy_pass http://server; health_check match=welcome; } } } ‫کد‬ ‫استتوس‬ ‫باید‬ ‫سرورها‬ ‫از‬ ‫هرکدام‬ ‫بودن‬ ‫دسترس‬ ‫در‬ ‫دادن‬ ‫نشان‬ ‫برای‬ ‫که‬ ‫‌ایم‬ ‫ه‬‫کرد‬ ‫مشخص‬ ‫باال‬ ‫کانفیگ‬ ‫در‬ 200 ‫و‬ ‫شود‬ ‫برگردانده‬ body ! ‫حاوی‬ ‫شده‬ ‫دریافت‬ Welcome to nginx .‫باشد‬ : ‫نکته‬ match ‫و‬ health_check ‫تجاری‬ ‫نسخه‬ ‫در‬ nginx .‫‌باشند‬ ‫ی‬‫م‬ ‫استفاده‬ ‫قابل‬ ‫پورت‬ ‫از‬ ‫که‬ ‫هایی‬ ‫درخواست‬ ‫تمام‬ ‫مثال‬ ۸۰ ‫پورت‬ ‫از‬ ‫باید‬ ،‫رسد‬ ‫می‬ ‫سرور‬ ‫به‬ ۳۰۰۰ .‫کنند‬ ‫گذر‬ ‫سرور‬ ‫داخل‬ ‫کانفیگ‬ ‫فایل‬ ‫وارد‬ ‫ابتدا‬ ‫اینکار‬ ‫برای‬ nginx : ‫دارد‬ ‫قرار‬ ‫زیر‬ ‫مسیر‬ ‫در‬ ‫فرض‬ ‫پیش‬ ‫صورت‬ ‫به‬ ‫فایل‬ ‫این‬ .‫شوید‬ /etc/nginx/sites-available/default
  • 66. ‫بالک‬ ‫با‬ ‫شما‬ ‫سرور‬ ‫هر‬ server :‫کنید‬ ‫اضافه‬ ‫کد‬ ‫به‬ ‫سرور‬ ‫بالک‬ ‫یک‬ ‫ابتدا‬ ‫جدید‬ ‫سرور‬ ‫یک‬ ‫ساخت‬ ‫برای‬ ‫پس‬ .‫شود‬ ‫می‬ ‫مشخص‬ server { listen 80; listen [::]:80; } ‫پورت‬ ‫از‬ ‫که‬ ‫هایی‬ ‫درخواست‬ ‫به‬ ‫حاضر‬ ‫حال‬ ‫در‬ ‫سرور‬ ‫کنید‬ ‫می‬ ‫مشاهده‬ ‫که‬ ‫همانطور‬ ۸۰ ‫در‬ ‫هم‬ .‫داد‬ ‫خواهد‬ ‫پاسخ‬ ‫شود‬ ‫می‬ ‫دریافت‬ ip ‫نسخه‬ ۴ ‫در‬ ‫هم‬ ‫و‬ ip ‫نسخه‬ ۶ . :‫شوند‬ ‫پردازش‬ ‫باید‬ ‫چگونه‬ ،‫شود‬ ‫می‬ ‫ارسال‬ ‫سرور‬ ‫ریشه‬ ‫به‬ ‫که‬ ‫هایی‬ ‫درخواست‬ ‫کنیم‬ ‫مشخص‬ ‫باید‬ ‫حال‬ location / { proxy_pass http://127.0.0.1:3000; } ‫پورت‬ ‫به‬ ‫را‬ ‫است‬ ‫شده‬ ‫ارسال‬ ‫سرور‬ ‫ریشه‬ ‫به‬ ‫که‬ ‫هایی‬ ‫درخواست‬ ‫تمام‬ ، ‫کنید‬ ‫می‬ ‫مشاهده‬ ‫که‬ ‫همانطور‬ ۳۰۰۰ ‫در‬ ip .‫میکنیم‬ ‫منتقل‬ ‫لوکال‬ :‫کنید‬ ‫اضافه‬ ‫نیز‬ ‫را‬ ‫ها‬ ‫الگ‬ ، ‫کردن‬ ‫دیباگ‬ ‫برای‬ ، ‫حال‬ access_log /var/log/nginx/reverse-access.log; error_log /var/log/nginx/reverse-error.log; ‫تنظیمات‬ ‫کامل‬ ‫کد‬ nginx ‌ :‫ببینید‬ ‫زیر‬ ‫در‬ ‫توانید‬ ‫می‬ ‫رو‬ server { listen 80; listen [::]:80; access_log /var/log/nginx/reverse-access.log; error_log /var/log/nginx/reverse-error.log; location / { proxy_pass http://127.0.0.1:3000; } } : ‫نه‬ ‫یا‬ ‫است‬ ‫شده‬ ‫نوشته‬ ‫درستی‬ ‫به‬ ‫تنظیمات‬ ‫فایل‬ ‫آیا‬ ‫که‬ ‫کنید‬ ‫بررسی‬ ‫میتوانید‬ ‫زیر‬ ‫دستور‬ ‫اجرای‬ ‫با‬ nginx -t ‫سرویس‬ ‫آخر‬ ‫در‬ ‫و‬ nginx :‫کنید‬ ‫استارت‬ ‫ری‬ ‫را‬ sudo systemctl restart nginx.service
  • 67. ‫برنامه‬ ‫اجرای‬ ‫از‬ ‫بعد‬ node ‫پورت‬ ‫در‬ )‫دیگری‬ ‫سرور‬ ‫هر‬ ‫(یا‬ ۳۰۰۰ ‫پورت‬ ‫های‬ ‫ریکویست‬ ‫تمام‬ ، ۸۰ ‫این‬.‫شد‬ ‫خواهد‬ ‫پردازش‬ ‫سرور‬ ‫این‬ ‫توسط‬ ‫توسط‬ ‫کار‬ Reverse Proxy .‫شود‬ ‫می‬ ‫انجام‬ ‫ساختار‬ ‫بهتر‬ ‫درک‬ ‫برای‬ ‫بیشتر‬ ‫تنظیمات‬ nginx : :‫کنید‬ ‫اضافه‬ ‫خود‬ ‫تنظیمات‬ ‫فایل‬ ‫به‬ ‫نیز‬ ‫بیشتری‬ ‫تنظیماتی‬ ‫توانید‬ ‫می‬ ‫شما‬ ‫همچنین‬ ‫نسخه‬ ‫تنظیم‬ http : proxy_http_version 1.1; : ‫کش‬ ‫کردن‬ ‫پس‬ ‫بای‬ ‫تنظیمات‬ proxy_cache_bypass $http_upgrade; : ‫میکنید‬ ‫استفاده‬ ‫سوکت‬ ‫وب‬ ‫از‬ ‫اگه‬ proxy_set_header Upgrade $http_upgrade ‌ : ‫هاست‬ ‫هدر‬ ‫تنظیم‬ proxy_set_header Host $host; : ‫ها‬ ‫پراکسی‬ ‫تمام‬ ‫آیپی‬ ‫لیست‬ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; ‌ : ‫کننده‬ ‫بازدید‬ ‫آیپی‬ ‫آدرس‬ ‫هدر‬ proxy_set_header X-Real-IP $remote_addr; :‌ ‫ی‬‫اصل‬ ‫هاست‬ ‫آدرس‬ ‫هدر‬ proxy_set_header X-Forwarded-Host $host; : ‌ ‫ی‬‫اصل‬ ‫پورت‬ ‫آدرس‬ ‫هدر‬ proxy_set_header X-Forwarded-Port $server_port;
  • 68. :‌‫تنظیمات‬ ‫فایل‬ ‫تر‬ ‫کامل‬ ‫نسخه‬ server { listen 80; listen [::]:80; access_log /var/log/nginx/reverse-access.log; error_log /var/log/nginx/reverse-error.log; location / { proxy_pass http://127.0.0.1:3000; proxy_http_version 1.1; proxy_cache_bypass $http_upgrade; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Port $server_port; } }