۱۰ قانون Nginx برای افزایش امنیت وردپرس
افزایش امنیت وردپرس – با نزدیک به ۳۰ درصد از سهم بازار وب، وردپرس محبوب ترین سیستم مدیریت محتوا میباشد. با وجود این سهم بزرگ از مارکت وب، گاهی اوقات سایت های وردپرسی هدف تهدیدات امنیتی قرار میگیرند. بنابراین مدیر یک وبسایت وردپرسی، بهتر است برخی اقدامات را برای تشدید امنیت سایت انجام دهد.
از آنجایی که هزاران وبسایت روی Nginx اجرا میشوند، در این مقاله برخی از نکات یا قوانین Nginx برای افزایش امنیت سایت وردپرسی، را فراهم کردم. با من همراه باشید.
مطلب پیشنهادی :: ۱۰ افزونه برای افزایش امنیت وبسایت وردپرسی
پیشنهاد شگفت انگیز کدفرند،دسترسی به تمامی دوره های آموزشی کدفرند تنها با ۹۹ هزار تومان
افزایش امنیت وردپرس
۱ − محدود کردن دسترسی XMLRPC
XMLRPC endpoint در وردپرس برای اجازه به دسترسی یک اپلیکیشن اکسترنال جهت تعامل با داده های وردپرس بکار میرود. برای مثال، میتواند اجازه افزودن، ویرایش و یا حذف کردن یک پست را بدهد. با وجود اینکه XMLRPC همچنین یک روش حمله معمول میباشد که در آن ممکن است هکر توانایی انجام این عملیات را بدون اهراز هویت داشته باشد. بنابراین بهتر است اجازه request به XMLRPC را از طریق آدرس IP مجاز که به آن اعتماد دارید، بدهید. برای مثال:
location ~* /xmlrpc.php$ { allow 172.0.1.1; deny all; }
پس از افزودن دستورات فوق، باید هنگام بارگذاری xmlrpc.php در مرورگر با خطای ۴۰۳ مواجه شوید.
۲ − محدود کردن انواع Request
معمولا وبسایت شما ممکن است تنها از دو درخواست HTTP استفاده کند. GET برای دریافت اطلاعات از وبسایت شما و POST برای آپلود اطلاعات به سایت تان. پس محدود کردن Request Type ها برای هندلینگ این دو درخواست HTTP میتواند ایده خوبی باشد.
if ($request_method !~ ^(GET|POST)$ ) { return 444; }
۳ − دسترسی مستقیم به فایل PHP
اگر به هر طریقی یک هکر موفق به استفاده از یک فایل PHP از وبسایت شما شود، و بتواند از طریق لود کردن این فایل، آن را اجرا کند، به سادگی میتواند به سایت شما نفوذ کند. بنابراین باید دسترسی مستقیم به فایلهای PHP را از طریق افزدون دستورات زیر، غیرفعال کنیم:
location ~* /(?:uploads|files|wp-content|wp-includes|akismet)/.*.php$ { deny all; access_log off; log_not_found off; }
۴ − Dotfiles
همانند فایل PHP، یک dotfile از جمله .htaccess و .user.ini و .git میتواند اطلاعات حساسی را داشته باشند. برای افزایش امنیت، بهتر است دسترسی مستقیم به این فایل ها را نیز غیر فعال کنیم.
location ~ /\.(svn|git)/* { deny all; access_log off; log_not_found off; } location ~ /\.ht { deny all; access_log off; log_not_found off; } location ~ /\.user.ini { deny all; access_log off; log_not_found off; }
۵ − مخفی کردن ورژن Nginx و PHP
بهتر اطلاعات مشخصی از جمله نسخه Nginx و همچنین نسخه PHP مخفی بمانند. هرچند که این مورد از حملات امنیتی جلوگیری نخواهد کرد. با این حال، با فرض اینکه در نسخه خاصی از PHP یا Nginx آسیب پذیری کشف شود، در صورت مخفی بودن اطلاعات این موارد در سایت شما، کسب اطلاعات از سایت شما برای هکر ساده نخواهد بود. برای مخفی کردن نسخه PHP و Nginx از دستورات زیر استفاده میکنیم:
#Hide the nginx version. server_tokens off;
#Hide the PHP version. fastcgi_hide_header X-Powered-By; proxy_hide_header X-Powered-By;
پیشنهاد شگفت انگیز کدفرند،دسترسی به تمامی دوره های آموزشی کدفرند تنها با ۹۹ هزار تومان
۶ − هدر های امنیتی
header های امنیتی یک لایه امنیتی بیشتر فراهم میکند. برای مثال X-Frame-Options سایت شما را از بارگذاری از یک iFrame باز میدارد. مگر اینکه آن iFrame از وبسایت شما باشد. همجنین Strict-Transport-Security مرورگر را به بارگذاری وبسایت تان از HTTPS وادار میکند.
add_header X-Frame-Options SAMEORIGIN; add_header Strict-Transport-Security "max-age=31536000"; add_header X-Content-Type-Options nosniff; add_header X-XSS-Protection "1; mode=block";
مطلب پیشنهادی :: ۱۰ نکته برای افزایش امنیت وبسایت وردپرس
۷ − بلاک کردن دسترسی به Subdirectory
یکی از دیگر از نکات مهم امنیت وردپرس، بلاک کردن دسترسی به Subdirectory میباشد. اگر سایت شما روی یک ساب دایرکتوری مانند /blog اجرا میشود، بهتر است به این Sub−directory اجازه دسترسی دهید. به این معنی که دسترسی به سایر ساب دایرکتوری ها را که هکر ها همیشه به آنها نگاه میکنند، بلاک کنید.
location ~ ^/(?!(blog)/?) { deny all; access_log off; log_not_found off; }
۸ – کاهش اسپم
کامنت های اسپم، هرچند که سایت شما را به خطر نمیندازند اما دیتابیس شما را پر از اطلاعات نا لازم و یا اطلاعات مخرب میکنند. برای کاهش ورودی های اسپم، میتوانید قوانین زیر را به فایل کانفیگ Nginx خود اضافه کنید و همچنین از پلاگین های ضد اسپم مثل Akismet استفاده کنید.
set $comment_flagged 0; set $comment_request_method 0; set $comment_request_uri 0; set $comment_referrer 1; if ($request_method ~ "POST"){ set $comment_request_method 1; } if ($request_uri ~ "/wp-comments-post\.php$"){ set $comment_request_method 1; } if ($http_referer !~ "^https?://(([^/]+\.)?site\.com|jetpack\.wordpress\.com/jetpack-comment)(/|$)"){ set $comment_referrer 0; } set $comment_flagged "${comment_request_method}${comment_request_uri}${comment_referrer}"; if ($comment_flagged = "111") { return 403; }
۹ – محدود کردن Request ها
صفحه لاگین وردپرس، wp-login.php یکی از روش های معمول حملات امنیتی مانند dos هستند. هکر سعی خواهد کرد که سایت شما را با وارد کردن اطلاعات بیشمار نام کاربری و پسورد در هر ثانیه، شکست دهد. برای جلوگیری از این موضوع، میتوانیم حداکثر درخواست های قابل هندل شدن توسط این صفحه را مشخص کنیم. در کد زیر، حداکثر ۲ request را در ثانیه برای این صفحه قابل پردازش میکنیم و در غیر اینصورت، درخواست بلاک خواهد شد.
limit_req_zone $binary_remote_addr zone=WPRATELIMIT:10m rate=2r/s; location ~ \wp-login.php$ { limit_req zone=WPRATELIMIT; }
۱۰ – غیرفعال کردن Directory Listing
در نهایت برای افزایش امنیت وردپرس، باید Directory Listing را در وبسایت خود غیرفعال کنید تا هکر نفهمد چه چیزی در دایرکتوری شما وجود دارد.
autoindex off;
پیشنهاد شگفت انگیز کدفرند،دسترسی به تمامی دوره های آموزشی کدفرند تنها با ۹۹ هزار تومان
2 نظر
سلام، این موارد رو باید خودمون انجام بدیم یا هاستینگ خودش انجام میده؟
سلام وقت بخیر
این موضوع بستگی داره به شرکت هاستینگ که از خدماتش استفاده میکنید. برخی از شرکت ها این موارد رو رعایت میکنند و برخی دیگر خیر. در صورت امکان و تا جایی که دسترسی دارید بررسی کنید فایلهای وبسایت تان را و همچنین در این خصوص به پشتیبانی هاستینگ تان تیکت بزنید.
موفق و پیروز باشید