مقدمه
امنیت سرورهای وب یکی از مهمترین جنبههای مدیریت زیرساختهای اینترنتی است. با افزایش حملات سایبری و تهدیدات امنیتی، تقویت پیکربندی سرورها به یک ضرورت تبدیل شده است. انجینایکس (Nginx) به عنوان یکی از محبوبترین وب سرورها و پروکسیهای معکوس، نیازمند تنظیمات امنیتی دقیق برای جلوگیری از دسترسیهای غیرمجاز و حملات مخرب است. در این مقاله، به بررسی روشهای تقویت امنیت انجینایکس و محافظت از سرور شما میپردازیم.
۱. بهروزرسانی منظم انجینایکس
یکی از سادهترین و مؤثرترین راهها برای افزایش امنیت، استفاده از آخرین نسخهی انجینایکس است. نسخههای جدیدتر معمولاً شامل رفع آسیبپذیریها و بهبودهای امنیتی هستند. برای بهروزرسانی انجینایکس، میتوانید از دستورات زیر استفاده کنید:
sudo apt update sudo apt upgrade nginx
۲. غیرفعال کردن اطلاعات سرور (Server Tokens)
بهطور پیشفرض، انجینایکس اطلاعاتی مانند نسخهی سرور را در هدرهای HTTP ارسال میکند. این اطلاعات میتواند به مهاجمان کمک کند تا از آسیبپذیریهای خاص نسخهی شما سوءاستفاده کنند. برای غیرفعال کردن این ویژگی، خط زیر را به فایل پیکربندی انجینایکس اضافه کنید:
server_tokens off;
این تنظیم باعث میشود که اطلاعات نسخهی سرور در هدرهای HTTP نمایش داده نشود.
۳. محدود کردن دسترسی به دایرکتوریها و فایلهای حساس
برخی از دایرکتوریها و فایلها (مانند فایلهای پیکربندی یا لاگها) نباید از طریق وب در دسترس باشند. برای محدود کردن دسترسی به این فایلها، میتوانید از بلوکهای location در پیکربندی انجینایکس استفاده کنید. به عنوان مثال:
location /admin { deny all; return 403; } location ~* \.(htaccess|htpasswd|ini|log|sh)$ { deny all; return 403; }
این تنظیمات دسترسی به دایرکتوری /admin و فایلهای حساس با پسوندهای مشخص را مسدود میکند.
۴. استفاده از HTTPS و پیکربندی SSL/TLS
استفاده از پروتکل HTTPS برای رمزنگاری ارتباطات بین کاربران و سرور ضروری است. برای فعالسازی HTTPS، باید گواهی SSL/TLS را نصب و پیکربندی کنید. میتوانید از گواهیهای رایگان Let's Encrypt استفاده کنید. یک پیکربندی نمونه برای HTTPS به شرح زیر است:
server { listen 443 ssl; server_name example.com; ssl_certificate /etc/nginx/ssl/example.com.crt; ssl_certificate_key /etc/nginx/ssl/example.com.key; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; # سایر تنظیمات سرور }
این تنظیمات از پروتکلهای امن TLSv1.2 و TLSv1.3 استفاده میکند و الگوریتمهای رمزنگاری قوی را فعال میکند.
۵. محدود کردن روشهای درخواست HTTP
برخی از روشهای HTTP (مانند DELETE یا PUT) ممکن است برای برنامههای شما ضروری نباشند و خطر امنیتی ایجاد کنند. میتوانید با استفاده از دستور limit_except، روشهای مجاز را محدود کنید:
location /api { limit_except GET POST { deny all; } }
این تنظیمات فقط اجازهی استفاده از روشهای GET و POST را در مسیر /api میدهد.
۶. جلوگیری از حملات DDoS و Brute Force
برای مقابله با حملات DDoS و Brute Force، میتوانید از ماژول limit_req و limit_conn در انجینایکس استفاده کنید. این ماژولها تعداد درخواستها و اتصالات همزمان را محدود میکنند. به عنوان مثال:
http { limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s; server { location /login { limit_req zone=one burst=5; } } }
این تنظیمات تعداد درخواستها به مسیر /login را به ۱۰ درخواست در ثانیه محدود میکند.
۷. فعالسازی فایروال و محدود کردن دسترسی به پورتها
استفاده از فایروال (مانند UFW یا iptables) برای محدود کردن دسترسی به پورتهای سرور ضروری است. به عنوان مثال، فقط پورتهای 80 (HTTP) و 443 (HTTPS) را باز کنید و دسترسی به سایر پورتها را مسدود نمایید:
sudo ufw allow 80/tcp sudo ufw allow 443/tcp sudo ufw enable
۸. بررسی منظم فایلهای لاگ
فایلهای لاگ انجینایکس (access.log و error.log) میتوانند اطلاعات ارزشمندی درباره فعالیتهای مشکوک یا حملات احتمالی ارائه دهند. بررسی منظم این فایلها به شما کمک میکند تا تهدیدات را سریعتر شناسایی و پاسخ دهید.
۹. استفاده از ماژولهای امنیتی
انجینایکس از ماژولهای امنیتی مختلفی پشتیبانی میکند که میتوانند امنیت سرور را افزایش دهند. به عنوان مثال، ماژول ModSecurity یک فایروال برنامهی کاربردی وب (WAF) است که میتواند حملات رایج مانند تزریق SQL یا XSS را شناسایی و مسدود کند.
۱۰. تست امنیتی و اسکن آسیبپذیریها
پس از اعمال تغییرات امنیتی، انجام تستهای امنیتی و اسکن آسیبپذیریها ضروری است. ابزارهایی مانند Nmap، Nikto و OpenVAS میتوانند به شما در شناسایی نقاط ضعف پیکربندی کمک کنند.
نتیجهگیری
تقویت امنیت انجینایکس یک فرآیند مستمر است که نیازمند توجه به جزئیات و بهروزرسانی مداوم است. با اعمال تنظیمات امنیتی مناسب، مانند غیرفعال کردن اطلاعات سرور، استفاده از HTTPS، محدود کردن دسترسی و نظارت بر فعالیتها، میتوانید سرور خود را در برابر تهدیدات سایبری محافظت کنید. امنیت سرور نه تنها از دادههای شما محافظت میکند، بلکه اعتماد کاربران را نیز افزایش میدهد.