10 Quy Tắc Nginx để Tăng Cường Bảo Mật WordPress

Cho đến nay, WordPress là CMS thông dụng nhất với hơn 30% thị phần web. Với số lượng thị phần như vậy, WordPress thường trở thành mục tiêu của các mối đe dọa bảo mật. Vì vậy, đối với chủ nắm giữ trang web WordPress, tốt hơn cả là bạn nên thi hành một số biện pháp để thắt chặt bảo mật cho trang web của mình.

Khi hàng ngàn trang web chạy trên Nginx, một số mẹo cơ bản hoặc quy tắc Nginx đã được thu thập để tăng cường bảo mật trang web WordPress. Hãy cùng Truongthinh.info xem xét ngay sau đây!

Tăng cường bảo mật WordPress với 10 quy tắc Nginx sau đây

  • 1. Hạn chế quyền truy cập XMLRPC
  • 2. Giới hạn các dòng đòi hỏi
  • 3. Truy cập file PHP trực diện
  • 4. Dotfiles
  • 5. Ẩn phiên bản Nginx và PHP
  • 6. Tiêu đề bảo mật
  • 7. Chặn quyền truy cập thư mục con
  • 8. Giảm spam
  • 9. Giới hạn yêu cầu
  • 10. Vô hiệu hóa việc lập bản kê thư mục

1. Hạn chế quyền truy cập XMLRPC

Điểm cuối XMLRPC trong WordPress được dùng để làm cấp phép một phần mềm bên phía ngoài tương tác với dữ liệu WordPress. Ví dụ, nó cũng có thể có thể cấp phép thêm, tạo hoặc xóa một bài đăng. Tuy nhiên, XMLRPC cũng là một vectơ tấn công phổ biến, nơi kẻ tấn công cũng có thể thực hành các hoạt động đó mà không cần sự cho phép. Tốt hơn hết là cho phép yêu cầu XMLRPC từ IP được ủy quyền mà bạn tin tưởng, như sau:

   location ~* /xmlrpc.php$ {    allow 172.0.1.1;    deny all;    }   

Sau khi thêm đoạn code trên, bạn sẽ thấy phản hồi mã lỗi 403 khi load xmlrpc.php trong trình duyệt.

2. Giới hạn các dòng yêu cầu

Hầu hết thời gian trang web chỉ có thể thực hành hai loại yêu cầu, nghĩa là GET để lấy dữ liệu từ trang web và POST để tải dữ liệu lên trang web. Giới hạn loại đòi hỏi mà trang web có thể xử lý chỉ hai điều đây là một ý tưởng tốt.

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

3. Truy cập file PHP trực tiếp

Nếu bằng cách nào đó, một hacker đã thành công trong việc truy cập file PHP vào trang web, thì chúng sẽ được thể chạy file này bằng phương pháp load file, có hiệu quả trở thành backdoor để xâm nhập vào trang web đó. Bạn nên vô hiệu hóa quyền truy cập trực diện vào bất kỳ file PHP nào bằng cách thêm các quy tắc sau:

   location ~* /(?:uploads|files|wp-content|wp-includes|akismet)/.*.php$ {    deny all;    access_log off;    log_not_found off;    }   

4. Dotfiles

Tương tự như file PHP, một dotfile như .htaccess, .user.ini .git cũng có thể chứa tin tức nhạy cảm. Để an toàn hơn, tốt hơn cả là bạn nên vô hiệu hóa quyền truy cập trực diện vào các file này.

   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;    }   

5. Ẩn phiên bản Nginx và PHP

Một số tin tức tốt nhất không nên được bật mí như phiên bản Nginx cũng giống phiên bản PHP. Bản thân điều ấy sẽ không chống lại cuộc tấn công. Tuy nhiên, giả sử phiên bản Ningx hoặc PHP cụ thể có lỗ hổng bị lộ, kẻ tấn công sẽ không nhận ra dễ dàng từ trang web. Để ẩn phiên bản Nginx, hãy làm như sau:

   #Hide the nginx version.    server_tokens off;    #Hide the PHP version.    fastcgi_hide_header X-Powered-By;    proxy_hide_header X-Powered-By;   

6. Tiêu đề bảo mật

Các tiêu đề bảo mật cung cấp thêm một lớp bảo mật bằng phương pháp ra lệnh cho hành vi của trình duyệt. Ví dụ, X-Frame-Options sẽ ngăn trang web load từ một iframe, trừ khi nó xuất phát từ trang web của chính bạn. Strict-Transport-Security sẽ buộc trình duyệt load trang web từ 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";   

7. Chặn quyền truy cập thư mục con

Nếu trang web chạy trên một thư mục con như /blog, thì tốt hơn là cho phép truy cập vào thư mục con này. Điều đó có tức là mọi quyền truy cập mờ ám vào các thư mục khác mà kẻ tiến công luôn tìm kiếm, ví dụ, /82jdkj/?.php đều bị chặn.

   location ~ ^/(?!(blog)/?) {    deny all;    access_log off;    log_not_found off;    }   

8. Giảm spam

Bình luận spam, mặc dù có thể không phá vỡ trang web của bạn, nhưng sẽ khiến tràn lan cơ sở dữ liệu với nội dung rác hoặc nội dung độc hại, có thể tận dụng như 1 vectơ. Để giảm các mục spam, bạn có thể thêm những quy tắc sau vào cấu hình Nginx cùng theo với plugin bảo vệ Spam như 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;    }   

9. Giới hạn đòi hỏi

Trang đăng nhập WordPress, wp-login.php, là điểm cuối chung cho 1 cuộc tấn công brute-force. Kẻ tiến công sẽ gắng gượng “hạ gục” trang web bằng cách gửi nhiều phối hợp tên người sử dụng và mật khẩu. Điều này thường được thực hành nhiều lần trong một giây.

Đối với điều này, bạn có thể áp dụng quy tắc giới hạn con số đòi hỏi mà trang cũng có thể xử lý mỗi giây. Ở đây, tỉ dụ đặt giới hạn là 2 yêu cầu mỗi giây. Nếu không, đòi hỏi sẽ bị chặn.

   limit_req_zone $binary_remote_addr zone=WPRATELIMIT:10m rate=2r/s;    location ~ wp-login.php$ {    limit_req zone=WPRATELIMIT;    }   

10. Vô hiệu hóa việc lập danh sách thư mục

Cuối cùng nhưng không kém phần quan trọng, bạn nên vô hiệu hóa việc lập bản kê thư mục để kẻ tiến công không nhận hiểu rằng những gì trong thư mục. Có rất ít nguyên do mà việc lập bản kê thư mục có ích trên trang web WordPress.

   autoindex off;   

Sưu Tầm: Internet – Kênh Tin: TT39