۱۲ راه‌کار برای افزایش امنیت nginx و خنثی کردن حملات هکرها

تامین امنیت nginxشاید بعد از شنیدن مزایای Nginx نسبت به Apache شما  همتصمیم گرفته‌ باشید که وب سرور خودتان را با Nginx جایگزین کنید و آن را تست نمایید، در این صورت آموزش تأمین امنیت nginx به طور حتم برای شما مفید خواهد بود.

در این آموزش ۱۲ راه‌کار عملی برای امن کردن وب سرور nginx را به شما آموزش خواهیم داد که بعضی از آن‌ها به وب سرور Apache نیز شباهت خواهند داشت.

این آموزش‌ها را از دست ندهید:

چرا nginx در عمل بهتر از apache عمل می‌کند

آموزش نصب nginx در cpanel به طور کامل جهت افزایش سرعت هاست لینوکس

 

۱۲ راه‌کار برای افزایش امنیت nginx

۱- Nginx را همیشه آپدیت کنید

در این لحظه که این آموزش را برای شما می‌نویسم ورژن آخر Nginx نسخه استیبل ۱٫۱۴ می‌باشد. سعی کنید به طور مداوم نسبت به آپدیت سرویس‌های سرور مخصوصاً وب سرور اقدامات لازم و سریع را داشته باشید.

از دو طریق مخزن لینوکس و سورس کد می‌توانید برای نصب و آپدیت nginx اقدام کنید. نصب از طریق مخزن بسیار راحت‌تر و بی‌دردسرتر است ولی نصب از طریق سورس هم دارای مزایای خاص خود از جمله بروزتر بودن و قابلیت Optimize کردن ماژول‌ها می‌باشد.

 

۲- حذف ماژول‌های غیر ضروری در Nginx

اگر بر روی وب سرور Nginx شما ماژول‌های غیر ضروری وجود دارد که از آن‌ها استفاده نمی‌کنید می‌توانید به صورت زیر آن‌ها را حذف کنید.

./configure --without-module1 --without-module2 --without-module3

در این حالت به جای *module نام ماژول را قرار دهید و دوباره Nginx را کامپایل کنید. مثال عملی این دستور به شکل زیر خواهد بود.

./configure  --without-http_dav_module –without-http_spdy_module

 

۳- غیرفعال کردن گزینه server_tokens

گزینه server_tokens به هنگام بروز خطا در nginx ورژن آن را به کاربر نمایش خواهد داد. با آگاهی هکر از ورژن Nginx و در صورت وجود حفره امنیتی به راحتی با اکسپلویت کردن حفره مهاجم می‌تواند به سرور شما نفوذ کند.

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

server {   
listen       192.168.0.25:80;   
Server_tokens        off;   
server_name  modireserver.com www.modireserver.com;   
access_log  /var/www/logs/modireserver.access.log;   
error_log  /var/www/logs/modireserver.error.log error;       
root   /var/www/modireserver.com/public_html;
index  index.html index.htm;
}

برای غیرفعال کردن server_tokens مقدار آن را برابر off قرار دهید و بعد از ذخیره فایل برای اعمال تغییرات سرویس nginx را ریست کنید.

مخفی کردن ورژن nginx

 

۴– مسدودسازی HTTP User Agents در Nginx

توسط این برنامه بدافزارها و اسپمرها می‌توانند به وب سرور nginx حمله کرده و منابع سرور شما را از بین ببرند.

برای غیرفعال کردن لیست user agent های مخرب، یک فایل در مسیر زیر بسازید و درون آن به شکل گفته شده لیست agent ها را قرار دهید.

/etc/nginx/blockuseragents.rules
map $http_user_agent $blockedagent {       

        default         0;
        ~*malicious     1; 
        ~*bot           1;
        ~*backdoor      1; 
        ~*crawler       1;
        ~*bandit        1;
}

سپس خط زیر را قبل بلاک server قرار دهید.

include /etc/nginx/blockuseragents.rules;

disable user agentsحالا سرویس nginx را ریست کنید. در صورتی که هر user agent با بلک لیست تعیین شده مطابقت داشته باشد دسترسی آن به سرور مسدود خواهد شد و این مورد تاثیر قابل توجهی در امنیت nginx خواهد داشت.

برای تست عملکرد این مورد کافی است هر یک از کدهای زیر که مربوط به دستورات لینوکس هستند را در ترمینال وارد کنید.

wget http://192.168.0.25/index.htmlwget --user-agent "I am a bandit haha" http://192.168.0.25/index.html

آی پی ۱۹۲٫۱۶۸٫۰٫۲۵ در این مثال شناسه IP سرور ماست این عدد را با آی پی سرور خود جایگزین کنید.

در دستور اول خروجی Response Code 200 را بر خواهد گرداند ولی دستور دوم به دلیل اینکه string تعریف شده در فایل blacklist ما یعنی bandit آمده وب سرور دسترسی کاربر را به وب سرور مسدود خواهد کرد و کد ۴۰۳ Forbidden نمایش داده خواهد شد.

block user agents in nginx

 

۵- غیرفعال کردن متدهای غیر ضروری HTTP در NGINX

برای عملکرد مناسب یک وب سرور و پاسخ به درخواست‌های ارسالی سمت سایت ها کار کردن متدهای HEAD,GET,POST کافی خواهد بود و بهتر است مابقی متدها جهت افزایش امنیت nginx غیرفعال شوند.

با قرار دادن کد زیر درون بلاک server هر درخواستی به سمت متدهای غیر مجاز بلاک شده و پیام ۴۴۴ برگردانده خواهد شد.

if ($request_method !~ ^(GET|HEAD|POST)$) {   return 444;}

برای تست می توانید توسط ابزار CURL دستور زیر را به سمت سرور ارسال کنید. در این روش از متد DELETE استفاده شده که جز متدهای غیر مجاز محسوب می‌شود.

curl -X DELETE http://192.168.0.25/index.htmlcurl -X POST http://192.168.0.25/index.html

 

۶- تعیین محدودیت سایز بافر در Nginx

برای جلوگیری از حملات buffer overflow در وب سرور nginx کافی است یک فایل در مسیر زیر ایجاد کنید.

/etc/nginx/conf.d/buffer.conf

سپس درون این فایل خطوط زیر را قرار دهید.

client_body_buffer_size  1k;
client_header_buffer_size 1k;
client_max_body_size 1k;
large_client_header_buffers 2 1k;

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

حالا برای اینکه این فایل به فایل کانفیگ nginx شناسانده شود باید خط زیر را درون فایل کانفیگ قرار دهید.

include /etc/nginx/conf.d/*.conf;

 

۷- محدودسازی تعداد IP متصل شده به Nginx

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

limit_conn_zone $binary_remote_addr zone=addr:5m;
limit_conn addr 1;

محدود کردن درخواست ها توسط هر آی پی

توسط دستور زیر می‌توانید بعد از اعمال تغییرات بر روی وب سرور تستی را پیاده‌سازی کنید.

ab -n 10 -c 2 http://192.168.0.25/index.html

 

۸- فعال کردن Log در Nginx

در روش قبلی برای امنیت nginx ما توسط ابزار ab یک تست بر روی سرور انجام دادیم ولی نتیجه را نتوانستیم مشاهده کنیم برای اینکار می توانید از مسیر فایل لاگ که درون بلاک server تعریف شده لاگ را مورد ارزیابی دقیق قرار دهید.

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

grep addr /var/www/logs/modireserver.error.log --color=auto

 

۹- جلوگیری از Image Hotlinking در Nginx

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

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

اگر به طور مثال شما در یک دایرکتوری با نام img عکس‌های خود را قرار می‌دهید می‌توانید با قرار دادن قطعه کد زیر در بخش virtual host فایل کانفیگ Nginx هر دسترسی خارج از localhost به عکس‌ها را غیرفعال کنید.

location /img/ { 
valid_referers none blocked 192.168.0.25;
   if ($invalid_referer) {
     return   403;   
    }
}

 

۱۰- غیرفعال کردن SSL و فقط فعال‌سازی TLS در Nginx

در هر زمانی که توانستید استفاده SSL بر روی سرور را غیرفعال و به جای آن از TLS استفاده کنید.

با قرار دادن کد زیر در بلاک های server و یا http می‌توانید TLS را فعال کنید.

ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;

disable ssl and enable tls on nginx

 

۱۱- ساخت Certificate در Nginx

برای شروع یک key و یک Certificate بسازید. اگر بخواهید می‌توانید از رمزنگاری‌های دیگر هم استفاده کنید.

openssl genrsa -aes256 -out modireserver.key 1024
openssl req -new -key modireserver.key -out modireserver.csr
cp modireserver.key modireserver.key.org
openssl rsa -in modireserver.key.org -out modireserver.key
openssl x509 -req -days 365 -in modireserver.csr -signkey modireserver.key -out modireserver.crt

حالا کد زیر را درون یک بلاک مجزای server قرار دهید.

server {
    listen 192.168.0.25:443 ssl;
    server_tokens off;
    server_name  modireserver.com www.modireserver.com;
    root   /var/www/modireserver.com/public_html;
    ssl_certificate /etc/nginx/sites-enabled/certs/modireserver.crt;
    ssl_certificate_key /etc/nginx/sites-enabled/certs/modireserver.key;
    ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
}

 

۱۲- ریدایرکت HTTP به HTTPS

بعد از تغییرات مرحله قبل نوبت آن است با ریدایرکت HTTP به HTTPS ترافیک های ارسالی را فقط به سمت یک پروتکل ارجاع دهیم.

خط زیر را درون اولین بلاک server قرار دهید.

return 301 https://$server_name$request_uri;

این کد ترافیک های ارسالی به سمت پروتکل HTTP را به صورت ریدایرکت ۳۰۱ به پروتکل HTTPS هدایت خواهد کرد.

آموزش چقدر برای شما مفید بود؟
[مجموع: 0 میانگین: 0]

پاسخی بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دانلود رایگان آموزش تکنیک های جادویی سئو در سال 2019

روش‌هایی که سئوکاران نمی‌خواهند شما بدانید!
فقط یک گام تا آشکار شدن راز سئوکارها فاصله دارید
دانلود رایگان کتاب
نگران نباشید، ایمیل مزاحم نمیفرستیم
close-link

افزایش ترافیک سایت تا ۶۰۰% فقط در ۷ روز

تکنیک های جدید سئو در سال 98
تکنیک‌های کارآمدی که در سایت مدیر سرور آزموده شده‌اند
دنلود ویدیو
نگران نباشید، ایمیل مزاحم ارسال نمی کنیم
close-link

دانلود رایگان دوره صوتی سئو سایت

9 تکنیک افزایش بازدید سایت تا 1000% بدون تولید محتوای جدید
دانلود دوره
ایمیل شما نزد ما یک امانت بزرگ است
close-link

دانلود رایگان فایل PDF آموزش

همین حالا فایل این آموزش را بر روی کامپیوتر خود دانلود کنید
دانلود فایل
ایمیل شما نزد ما امانت بزرگی است.
close-link