Hướng dẫn chặn tấn công Pingback cho website WordPress

Nguyễn Thành Luân 6 phút đọc

Pingback là một dạng tấn công DDoS, kẻ tấn công sẽ lợi dụng cơ chế Pingback của website WordPress để tiến hành một cuộc tấn công từ chối dịch vụ vào nạn nhân đã được xác định từ trước.

Thông thường cơ chế Pingback được dùng khi bạn đăng một bài viết trên blog của mình, sau đó một người khác vào bình luận bài viết, kết nối ngược lại vào bài viết ban đầu của bạn. Nhờ cơ chế Pingback, bạn sẽ được thông báo đã có một người bình luận trên bài viết của mình.

Tuy nhiên khi kẻ tấn công lợi dụng cơ chế Pingback, hắn sẽ cẩn thận chọn một đường dẫn chứa thật nhiều thông tin trong nó, sau đó kẻ tấn công gửi đến cho chủ blog một kết nối thông báo, chủ blog sẽ gửi lại cho nạn nhân một kết nối để tải xuống nội dung của bài viết dẫn đến tình trạng nạn nhân sẽ hứng chịu một lượng truy cập khổng lồ.

Để ngăn chặn việc lợi dụng cơ chế Pingback, bạn cần thực hiện trong các cách sau:

  • Đơn giản chỉ cần xóa hoặc đổi tên Xmlrpc.Php

Nếu bạn chắc chắn rằng bạn sẽ không yêu cầu XML-RPC thông qua trình cắm hoặc bất kỳ loại tương tác bên thứ ba nào khác với trang web của mình, bạn có thể loại bỏ hoàn toàn tệp bằng cách xóa hoặc đổi tên tệp đó. Nó nằm trong thư mục gốc của WordPress .

Tuy nhiên, đây chỉ là giải pháp tạm thời vì các bản cập nhật trong tương lai cho các tệp WordPress cốt lõi sẽ đơn giản khôi phục nó. Do bạn không bao giờ có thể biết liệu plugin hoặc hiệu suất trong tương lai trên trang web của mình có yêu cầu xmlrpc.php hay không, vì vậy không khuyến khích sử dụng cách này.

  • Từ chối bằng cách sử dụng .htaccess

Vào tập tin .htaccess trong thư mục gốc của WordPress và thêm các dòng lệnh sau:

<files xmlrpc.php>
Order allow,deny
Deny from all
</files>

Việc này sẽ đơn giản chặn tất cả quyền truy cập vào xmlrpc.php. Bất cứ ai cố gắng sử dụng nó sẽ nhận được một thông báo lỗi 403 bị cấm. Lợi ích của giải pháp này so với giải pháp trước đó là các bản cập nhật WordPress tiếp theo sẽ không sửa đổi nó.

Tuy nhiên, nó vẫn sẽ phá vỡ tất cả chức năng XML-RPC trên trang web của bạn bao gồm cả Jetpack plugin.

  • Vô hiệu hóa bằng tập tin Functions.Php

Điều này tương tự như giải pháp thứ hai ngoại trừ việc bạn thực hiện thay đổi trong functions.php thay vì .htaccess. Mở functions.php của themes trên website WordPress và dán phần sau đây trước khi đóng “?>” thẻ Php:

add_filter(‘xmlrpc_enabled’,’__return_false’);

nó không hiệu quả hơn giải pháp trước bởi vì nó được đưa vào tầng application chứ không phải tầng web server. Ngược lại, vì functions.php là nơi bạn đặt hầu hết mã tùy chỉnh của mình, bạn có nhiều khả năng được nhắc nhở về những gì bạn đã làm. Và điều này vẫn không giải quyết được vấn đề mất tất cả các dịch vụ XML-RPC.

  • Chỉ vô hiệu hóa Pingback

Đây là giải pháp tiện lợi nhất cho vấn đề. Thay vì loại bỏ tất cả hiệu suất XML-RPC, bạn chỉ vô hiệu hóa dịch vụ pingback thứ gây ra tất cả các vấn đề về bảo mật trên website WordPress của bạn. Như trên, chèn phần sau vào tệp functions.php của bạn:

function disable_xmlrpc_ping ($methods) {
unset( $methods[‘pingback.ping’] );
return $methods;
}
add_filter( ‘xmlrpc_methods’, ‘disable_xmlrpc_ping’);

Quy tắc này loại bỏ tham số pingback từ đối số $method được truyền cho hàm tùy chỉnh của bạn. Nó sẽ duy trì trang web của bạn không thể được sử dụng như một phần của mạng botnet lớn đang thực hiện một cuộc tấn công DDoS.

Giải pháp này là giải pháp tốt nhất, bạn nên sử dụng nó vì các chức năng của XML-RPC vẫn sẽ được giữ lại mà không bị mất đi như các biện pháp trên.

  • Ngoài ra bạn có thể chặn tùy theo nginx hoặc apache

Đối với Apache, thêm đoạn sau vào .htaccess:

RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} WordPress
RewriteRule . – [F,L]

Với Nginx:

if ($http_user_agent ~ WordPress) {
return 403;
}

Lưu ý thay thế chữ “WordPress” bằng tên của USER_AGENT tùy theo website của bạn.

 

Chúc bạn thành công !