Weitere ähnliche Inhalte
Ähnlich wie How Create Waf With Naxsi (20)
Mehr von Yashar Esmaildokht (16)
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;
}
}