آذرسیس

10 security methods for Nginx web server
5/5 - (4 امتیاز)

Nginx یک وب سرور قدرمند با طیف وسیعی از ویژگی ها است، این وب سرور سریع، سبک و با کارآیی بالا کار می کند و می تواند بر روی بسیاری از سیستم عامل ها مثل Microsoft Windows ،Unix ،Mac و … اجرا شود.

کاربران از Ngnix به عنوان یک پروکسی معکوس، حافظه کش HTTP و برای Load Balancing در سرورها استفاده می شود، Nginx در مقایسه با سایر وب سرور ها به دلیل داشتن سرعت زیاد و قابلیت مدیریت هزاران اتصال هم زمان بین کاربران محبوب است.

ممکن است این سوال برایتان پیش آید که کدامیک از روش های امنیتی، برای وب سرور Nginx مناسب است؟ اما پیش از آن که جواب سوال تان را بدهیم، باید ذکر کنم که Nginx به گونه ای ساخته شده که ایمن و پایدار می باشد، ولی امنیت آن به میزان پیکربندی کاربر نیز بستگی دارد.

فایروال وب Modsecurity در Nginx از تمامی برنامه ها در برابر حملات پیچیده لایه 7 محافظت می کند، همچنین می توانید در صورت احساس نیاز به SSL آن را بر روی Nginx نصب کنید.

ما در ادامه این آموزش قصد داریم 10 روش امنیتی برای وب سرور Nginx معرفی کنیم که می توانید با استفاده از این روش ها، وضعیت امنیتی این وب سرور را بهبود بخشید.

همچنین می توانید برای مطالعه بیشتر به وبلاگ های آذرسیس سر بزنید، اما هم اکنون از شما دعوت می کنم که تا آخر این آموزش همراه باشید.

بهترین روش های امنیتی برای وب سرور Nginx

پس از توضیح مختصر در مورد این وب سرور، اکنون می خواهیم در ادامه 10 روش برای بهبود وضعیت امنیتی این وب سرور به شما کاربران عزیز آموزش دهیم، شما می توانید از هر روشی که در این مقاله ذکر شده برای برقراری امنیت وب سرور خود استفاده نمایید.

معرفی بهترین روش های امنیتی برای وب سرور Nginx

روش 1: حذف ماژول های استفاده نشده در Nginx

باید توجه داشته باشید که وب سرور Nginx نیز مانند سایر پلتفرم های وب سرور، با مجموعه ای از ماژول ها نصب می شود که بسیاری از آن ها برای کاربران غیر ضروری می باشند.

بنابراین شما باید برای جلوگیری از حملات احتمالی این ماژول ها را غیر فعال کنید، همچنین شما می توانید وب سرور Nginx را تنها با ماژول های مورد نیاز پیکربندی و نصب کنید.

به عنوان مثال شما می توانید با استفاده از دستور زیر ماژول SSI و Autoindex را غیر فعال کنید:

configure --without-http_autoindex_module --without-http_ssi_module
make
make install

دستور زیر را می توانید در حین کامپایل سرور اجرا کنید تا متوجه این موضوع شوید که کدام یک از ماژول ها را می توان روشن یا خاموش کرد:

configure --help | less
  • تغییر هدر نسخه Nginx

پس از ویرایش src/http/ngx_http_header_filter_module.c، روی Enter کلیک کنید:

vi +48 src/http/ngx_http_header_filter_module.c

خط دستوری زیر را پیدا کنید:

static char ngx_http_server_string[] = "Server: nginx" CRLF;
static char ngx_http_server_full_string[] = "Server: " NGINX_VER CRLF;

سپس آن ها را به صورت زیر تغییر دهید:

static char ngx_http_server_string[] = "Server: Ninja Web Server" CRLF;
static char ngx_http_server_full_string[] = "Server: Ninja Web Server" CRLF;

در این قسمت فایل را ذخیره کرده و ببندید، شما می توانید با انجام دادن مراحل توضیح داده شده وب سرور را کامپایل کنید، اکنون موارد زیر را با اجرای دستور زیر در Nginx.conf اضافه کنید تا بتوانید شماره نسخه نمایش داده شده Nginx را در تمام صفحات خطا خودکار را خاموش و غیر فعال کنید:

server_tokens off;

روش 2: استفاده از یک رمز عبور قوی

اگر سرور Nginx شما را مورد تهاجم قرار دهند افراد دیگر به راحتی می توانند وب سایت شما را تحت کنترل داشته باشند و حتی وب سایت شما را خراب کنند.

همچنین بازدیدکنندگان وب سایت شما را به سایت های مخرب هدایت کنند و یا حتی اطلاعات شخصی و حساس تان را سرقت کنند! طبیعتاً هیچکس همچین چیزی را نمی خواهد! پس باید رمز عبور قوی برای خود بسازید.

رمز عبور قوی رمزی است که حداقل 8 کارکتر، حروف بزرگ و کوچک، اعداد و کاراکتر های خاص داشته باشد، نکته قابل توجه این است که به هنگام تنظیم رمز عبور، از انتخاب رمز عبوری که به راحتی قابل حدس زدن باشد، مثل اطلاعات شخصی شما یا تاریخ تولدتان خودداری کنید!

روش 3: پیکربندی صحیح SSL و TLS

SSH و TLS یکی از استاندارد های صنعتی برای ایمن سازی ارتباطات بین مرورگر های وب سرور هستند که می توانند با استفاده از ایجاد رمز حین انتقال داده از به سرقت رفتن اطلاعات و نیز دستکاری داده ها جلوگیری کنند.

نکته ای که باید توجه داشته باشید این است که هنگام پیکربندی استاندارد های صنعتی، مراقب این موضوع باشید که به درستی پیکربندی شوند چرا که پیکربندی ناقص و یا اشتباه آن ها وب سایت شما را در برابر حملات احتمالی آسیب پذیر می کند.

برای پیکربندی صحیح SSl و TLS باید یک گروه Diffie-Hellman پر قدرت و قوی ایجاد کرده و از رمز هایی با امنیت بالا استفاده کنید و در پایان پروتکل OCSP را فعال کنید.

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

روش 4: بروز رسانی وب سرور Nginx 

نسخه های جدید وب سرور Nginx شامل موارد امنیتی است، دقیقاً همان مواردی که برای رفع آسیب پذیری نسخه های قبلی وب سایت ها کشف و بررسی شده اند.

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

برای بروز رسانی Nginx، آخرین نسخه این وب سرور را از وب سایت رسمی آن دانلود کرده و نصب کنید، همچنین می توانید از یک مدیر بسته Apt یا Yum برای بروز رسانی در سیستم‌های Debian یا CentOS استفاده کنید.

روش 5: محدود کردن متد های غیر ضروری HTTP در Nginx

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

شما با اجرای دستور زیر فقط می توانید متد های ذکر شده را فعال کنید و سایر متد های موجود را غیر فعال نگه دارید:

 Only allow these request methods ##
if ($request_method !~ ^(GET|HEAD|POST)$ ) {
return 444;
}
 Do not accept DELETE, SEARCH and other methods ##

روش 6: تنظیم محدودیت سایز Buffer در Nginx

برای جلوگیری از حملات احتمالی در وب سرور، Nginx.conf را ویرایش کرده و یک فایل در مسیر زیر ایجاد کنید، همچنین می توانید اندازه Buffer را با استفاده از دستور زیر برای همه مشتریان تنظیم کنید:

vi /usr/local/nginx/conf/nginx.conf

با اجرای دستور زیر محدودیت های اندازه Buffer را برای همه مشتریان ویرایش کرده و تنظیم کنید:

Start: Size Limits & Buffer Overflows ##
client_body_buffer_size 1K;
client_header_buffer_size 1k;
client_max_body_size 1k;
large_client_header_buffers 2 1k;
END: Size Limits & Buffer Overflows ##

علاوه بر آن برای بهبود عملکرد سرور، کنترل تعداد مشتریان و زمان بندی بازه زمانی دستور زیر را اجرا کنید:

Start: Timeouts ##
client_body_timeout 10;
client_header_timeout 10;
keepalive_timeout 5 5;
send_timeout 10;
 End: Timeouts ##

شما با انجام این مراحل مطمئن خواهید شد که درخواست های ارسالی توسط کاربران، باعث ایجاد حملات بافر نخواهد شد.

روش 7: کنترل اتصالات همزمان

شما می توانید با استفاده از ماژول NginxHttpLimitZone برای محدود کردن تعداد اتصالات همزمان Session اختصاص داده شده و یا در موارد خاص، از یک آدرس IP استفاده کنید.

  • ویرایش Nginx.conf
Directive describes the zone, in which the session states are stored i.e. store in limits. ###
1m can handle 32000 sessions with 32 bytes/session, set to 5m x 32000 session ###
limit_zone limits $binary_remote_addr 5m;
 Control maximum number of simultaneous connections for one session i.e. ###
 restricts the amount of connections from a single ip address ###
limit_conn limits 5;

موارد بالا می تواند کلاینت را به بیش از 5 اتصال “Open” همزمان در هر آدرس IP ای که قرار دارد را محدود کند.

روش 8: غیر فعال کردن TRACE و TRACK

روش‌های TRACE و TRACK HTTP برای اشکال‌ زدایی اتصالات استفاده می‌شوند اما می توانند برای رهگیری داده های حساس بازدیدکنندگان نیز مورد استفاده قرار گیرند.

بنابراین TRACE و TRACK HTTP روش های مناسبی برای امنیت وب سرور نیستند، کاربران می توانند با غیر فعال کردن TRACE و TRACK HTTP از این اتفاق جلوگیری کنند.

روش 9: محدود کردن اتصالات خروجی Nginx

Cracker ها با استفاده از ابزارهایی مانند Wget فایل را به صورت محلی روی سرور شما دانلود می کنند و شما قادر خواهید بود از Iptables برای مسدود کردن اتصالات خروجی از کاربر Nginx استفاده کنید.

اتصالات iptables در nginx

ماژول ipt_owner می تواند ویژگی‌های سازنده بسته را برای بسته‌های محلی تولید شده را مطابقت دهد، اما این ماژول فقط در زنجیره OUTPUT معتبر است.

با اجرای دستور زیر به کاربر Admin این امکان را می دهید تا با استفاده از پورت 80 بتواند به اتصالات Outside دسترسی داشته باشد: 

/sbin/iptables -A OUTPUT -o eth0 -m owner --uid-owner admin -p tcp --dport 80 -m state --state NEW, ESTABLISHED -j ACCEPT

شما می توانید با اضافه کردن دستور بالا در Shell Script که براساس Iptables است، اتصالات کاربران وب سرور Nginx به خارج را متوقف کنید.

روش 10: جلوگیری از Hotlinking تصاویر در Nginx

Hotlinking تصاویر یا HTML زمانی اتفاق می افتد که کاربری از سایت دیگر قصد ایجاد لینکی برای یکی از عکس های سایت شما را داشته باشد و بخواهد آن را در سایت خود برای کاربران به نمایش بگذارد.

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

Hotlinking تصاویر معمولاً در وبلاگ و انجمن ها انجام می شود و برای جلوگیری از این کار پیشنهاد می کنیم که اتصال تصاویر را در سطح سرور خود قطع کنید.

Stop deep linking or hot linking
location /images/ {
valid_referers none blocked www.example.com example.com;
if ($invalid_referer) {
return 403;
}
}

Nginx یکی از وب سرورهای محبوب است قبلاً نیز درباره آن در وبلاگ های آذرسیس توضیحات زیادی داده شده ولی شما برای استفاده از این وب سرور کاربردی باید از سرورهای لینوکس استفاده کنید.

سایت آذرسیس در راستای نیازهای شما کاربران عزیز، سرورهای مجازی و سرورهای اختصاصی را ارائه می دهد و شما می توانید جهت تهیه به سایت مراجعه کنید.

درصورتی که در مورد هر کدام از سرویس های آذرسیس به راهنمایی بیشتر نیاز داشته باشید، می توانید به صورت رایگان با کارشناسان فنی و متخصص آذرسیس مشاوره داشته باشید.

سخن آخر

امروزه افزایش امنیت وب سرور برای جلوگیری از حملات احتمالی، از اهمیت بالایی برخوردار است، پس اگر شما هم به دنبال روشی برای افزایش امنیت وب سرورتان هستید، می توانید از روش های توضیح داده شده در متن این آموزش استفاده کنید.

ممنون که تا آخر این آموزش از آذرسیس با ما همراه بودید، برای حمایت بیشتر از ما می توانید به قسمت ارسال دیدگاه ها مراجعه کرده و ما را از نظرات و پیشنهادات خود بهره مند سازید.

دیدگاهتان را بنویسید

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