Hôm naynên mình chia sẻ một TIP mình dùng để chặn wpscan website wordpress để tránh bị hack dạo. tuy không chống được hack nhưng làm bạn sẽ an toàn hơn chí ít trước những công cụ scan website trên mạng.

Đầu tiên wpscan sẽ dùng Method http là HEAD để tiến hành kiểm tra các file của website.

Cấu hình cloudflare các bạn xem bài viết tại đây

Cho nên điều cần làm của chúng ta là chặn Method HEAD bạn có thể dùng firewall trên cloudflare để chặn loại Method này

Để phát hiện được version của website đang dùng thì nó dùng cách phát hiện version của css jss…. nên chúng ta cần thay đổi file function của theme thêm đoạn sau vào cuối.

// Remove Query Strings from enqueue scripts
add_filter( 'style_loader_src', 'remove_query_string' );
add_filter( 'script_loader_src', 'remove_query_string' );
function remove_query_string( $url )
{
return remove_query_arg( 'ver', $url );
}
view raw Strings hosted with ❤ by GitHub

Tiếp theo chúng ta cần loại bỏ đoạn code như sau ra khỏi mã nguồn trên trang chủ để tránh nó phát hiện ra xmlrpc

<link rel="pingback" href="https://domain.com/vn/xmlrpc.php">
view raw pingback hosted with ❤ by GitHub

Chúng ta thêm tiếp vào file function đoạn sau:

// Alternatively use this to just remove the url or use it together with the above
add_filter('bloginfo_url', function($output, $property){
return ($property == 'pingback_url') ? null : $output;
}, 11, 2);
view raw fix hosted with ❤ by GitHub

Một vấn đề nữa trong việc phát hiện version của worpress là công này sẽ trích xuất dữ liệu từ wp-admin/install.php và /wp-admin/upgrade.phpcủa web

Ở đây mình khuyển các bạn nên xóa file này tuy nhiên khi update nó lại có việc xóa mât công thì bạn có thể chặn trên cloudflare hoặc với nginx thì đoạn code sau đây sẽ làm việc:

location = /wp-admin/install.php {
if ($request_method = GET) {
return 444;
}
}
location = /wp-admin/upgrade.php {
if ($request_method = GET) {
return 444;
}
}
view raw nginx hosted with ❤ by GitHub

với cloudflare

(http.request.uri.path contains "/wp-admin/install.php")
view raw wp hosted with ❤ by GitHub

Các bạn sau khi làm hết thao tác trên thì có thể tự thử scan và sẽ thấy nó bị treo và không thể scan được website.

Và đây là kết quả

Lưu ý: sau khi cấu hình nginx thì các bạn nhớ restart lại nginx để hoạt động được chấp nhận

Update: Sau khi lang thang trên mạng thấy trang wpsec.com cho phép scan online thì mình thấy mặc dù chặn bước trên nhưng cái này thì không bị chặn nên mình cập nhập thêm đoạn code sau vào nginx để chặn nó scan

# chan cong cu scan mang
if ($http_user_agent ~* (https://wpsec.com)) {
return 444;
}
# ket thuc chan scan mang
view raw wpsec hosted with ❤ by GitHub

Các bạn thêm nó vào sau phần server_name của nginx nhé.

ví dụ của mình sẽ là:

server {
listen 443 ssl http2;
# access_log off;
# error_log off;
server_name manhtuong.net;
# chan cong cu scan mang
if ($http_user_agent ~* (https://wpsec.com)) {
return 444;
}
# ket thuc chan scan mang
view raw mt hosted with ❤ by GitHub

kết quả:

Mình cũng xem trên một số công cụ phổ biến thì thấy khá ok

Leave a Reply

avatar
  Subscribe  
Notify of