10 quy tắc Nginx để tăng cường bảo mật WordPress
Cho đến nay, WordPress là CMS phổ biến 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ủ sở hữu trang web WordPress, tốt hơn hết là bạn nên thực hiện 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 Quantrimang.com xem xét ngay sau đây!
10 quy tắc Nginx giúp bảo mật WordPress
1. Hạn chế quyền truy cập XMLRPC
Điểm cuối XMLRPC trong WordPress được sử dụng để cho phép một ứng dụng bên ngoài tương tác với dữ liệu WordPress. Ví dụ, nó có thể cho 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ó thể thực hiện 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 loại yêu cầu
Hầu hết thời gian trang web chỉ có thể thực hiện hai loại yêu cầu, tức 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 yêu cầu mà trang web có thể xử lý chỉ hai điều nà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 cách 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 tiếp 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 và .git có thể chứa thông tin nhạy cảm. Để an toàn hơn, tốt hơn hết là bạn nên vô hiệu hóa quyền truy cập trực tiếp 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ố thông tin tốt nhất không nên được tiết lộ như phiên bản Nginx cũng như phiên bản PHP. Bản thân điều này không ngăn chặn 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 biết 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 cách 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ó nghĩa là mọi quyền truy cập mờ ám vào các thư mục khác mà kẻ tấ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ẽ làm tràn ngập 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ư một 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 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 yêu cầu
Trang đăng nhập WordPress, wp-login.php, là điểm cuối chung cho một cuộc tấn công brute-force. Kẻ tấn công sẽ cố gắng “hạ gục” trang web bằng cách gửi nhiều kết hợp tên người dùng và mật khẩu. Điều này thường được thực hiện 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 số lượng yêu cầu mà trang có thể xử lý mỗi giây. Ở đây, ví dụ đặt giới hạn là 2 yêu cầu mỗi giây. Nếu không, yêu cầu 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 danh sách thư mục để kẻ tấn công không nhận biết được những gì trong thư mục. Có rất ít lý do mà việc lập danh sách thư mục hữu ích trên trang web WordPress.
autoindex off;
Bạn nên đọc
-
3 phương pháp dễ dàng tùy chỉnh trang web WordPress bằng CSS
-
Hướng dẫn tìm hoặc tạo một RSS feed cho trang web
-
Cách đánh số trang trong Word 2019
-
Cách thêm Shopify vào WordPress
-
Cách tạo trường tùy chỉnh WordPress để thêm siêu dữ liệu
-
Cách hủy kích hoạt plugin khi không thể truy cập WP-Admin
-
Các cách gỡ thông báo Read only trong Word
-
Mất bao nhiêu chi phí để xây dựng một website WordPress?
-
Cách xóa cache WordPress
Cũ vẫn chất
-
Hướng dẫn chèn link vào nội dung trên Canva
Hôm qua -
CD Key CS các phiên bản, CD Key CS 1.1, Key CS 1.3, Key CS 1.6
Hôm qua -
Bitcoin là gì? Tại sao Bitcoin không phải là "tiền ảo"?
Hôm qua -
Cách sửa lỗi âm thanh trên Windows 10, khắc phục lỗi âm thanh Win 10
Hôm qua -
15 cách chỉnh độ sáng màn hình máy tính, laptop
Hôm qua -
8 cách mở bàn phím ảo trên Windows 10
Hôm qua -
Code Alo Chủ Tướng mới nhất 12/2024
Hôm qua -
Cách kích hoạt Dynamic Lighting trên Windows 11
Hôm qua -
Cách đếm ô checkbox trong Google Sheets
Hôm qua -
Cách xóa Header và Footer trong Word
Hôm qua