Nhiều yêu cầu POST đến /xmlrpc.php từ GoogleBot gỡ xuống máy chủ?


9

Tôi có một số blog wordpress được lưu trữ và tôi đã cố gắng truy cập chúng và chúng rất chậm. Tôi nhìn vào nhật ký máy chủ của tôi và tôi thấy điều này

stanfordflipside.com:80 188.138.33.149 - - [17/Aug/2013:17:14:28 -0700] "POST /xmlrpc.php HTTP/1.1" 200 595 "-" "GoogleBot/1.0"
stanfordflipside.com:80 188.138.33.149 - - [17/Aug/2013:17:14:28 -0700] "POST /xmlrpc.php HTTP/1.1" 200 595 "-" "GoogleBot/1.0"
stanfordflipside.com:80 188.138.33.149 - - [17/Aug/2013:17:14:28 -0700] "POST /xmlrpc.php HTTP/1.1" 200 595 "-" "GoogleBot/1.0"
stanfordflipside.com:80 188.138.33.149 - - [17/Aug/2013:17:14:28 -0700] "POST /xmlrpc.php HTTP/1.1" 200 595 "-" "GoogleBot/1.0"
stanfordflipside.com:80 188.138.33.149 - - [17/Aug/2013:17:14:29 -0700] "POST /xmlrpc.php HTTP/1.1" 200 595 "-" "GoogleBot/1.0"
stanfordflipside.com:80 188.138.33.149 - - [17/Aug/2013:17:14:29 -0700] "POST /xmlrpc.php HTTP/1.1" 200 595 "-" "GoogleBot/1.0"
stanfordflipside.com:80 188.138.33.149 - - [17/Aug/2013:17:14:29 -0700] "POST /xmlrpc.php HTTP/1.1" 200 595 "-" "GoogleBot/1.0"
stanfordflipside.com:80 188.138.33.149 - - [17/Aug/2013:17:14:29 -0700] "POST /xmlrpc.php HTTP/1.1" 200 595 "-" "GoogleBot/1.0"
stanfordflipside.com:80 188.138.33.149 - - [17/Aug/2013:17:14:31 -0700] "POST /xmlrpc.php HTTP/1.1" 200 595 "-" "GoogleBot/1.0"
stanfordflipside.com:80 188.138.33.149 - - [17/Aug/2013:17:14:31 -0700] "POST /xmlrpc.php HTTP/1.1" 200 595 "-" "GoogleBot/1.0"
stanfordflipside.com:80 188.138.33.149 - - [17/Aug/2013:17:14:31 -0700] "POST /xmlrpc.php HTTP/1.1" 200 595 "-" "GoogleBot/1.0"

Tôi nhận được ~ 10 lượt truy cập mỗi giây vào tệp /xmlrpc.php từ GoogleBot đến một số trang web và điều này dường như đang làm chậm máy chủ. tôi đang chạy

tail -f 

trên tệp nhật ký và chỉ có thể thấy các yêu cầu này tiếp tục. Có ai biết tại sao điều này có thể xảy ra hoặc bạn có thể làm gì để ngăn chặn nó?


2
Tôi phải tìm IP và địa chỉ nhưng tôi cá rằng đó không thực sự là trình thu thập dữ liệu của Google , chỉ là một bot độc hại (rất có thể) giả vờ.
s_ha_dum


vâng tôi không nghĩ đó là một googlebot - tôi đoán điều đó không rõ ràng trong câu hỏi của tôi. trong mọi trường hợp, bạn làm gì về điều này? tôi có nên chặn ips không?
jkeesh

Câu trả lời:


7

Tôi sẽ chặn IP iptablesnếu đó là tôi và nếu bạn có quyền truy cập cấp máy chủ đó.

Bạn cũng có thể vô hiệu hóa xmlrpc. Thật không may, vì 3,5 tùy chọn màn hình quản trị để tắt tính năng đó đã bị xóa. Một dòng mã sẽ vô hiệu hóa nó mặc dù: add_filter( 'xmlrpc_enabled', '__return_false' );Điều đó có thể tiết kiệm một số chi phí từ các yêu cầu, mặc dù nó sẽ không loại bỏ tất cả.


Cảm ơn. Tôi cuối cùng đã chặn nó bằng iptables, và điều đó dường như có ích.
jkeesh

5

"Googlebot" không có lý do để truy cập xmlrpc.php Bạn có thể thêm phần này vào đầu xmlrpc.php của bạn

// Block fake Googlebot
if ( strpos($_SERVER['HTTP_USER_AGENT'], "Googlebot") === true ) { exit(); }

Tôi đoán đó là một tệp WordPress cốt lõi. Vì vậy, nó có thể gây phiền nhiễu để giữ cập nhật này. Sẽ rất tuyệt nếu Automattic sử dụng Akismet để đưa vào danh sách đen các IP này từ tất cả các tập lệnh WP, ở mọi nơi.

Cập nhật: Tôi đã kết thúc việc xóa quyền với chmod 0 xmlrpc.php(xem bình luận của tôi) sau khi DDoS bắt đầu đánh thuế máy chủ của tôi. Nói cách khác, mã PHP có điều kiện này có thể không ngăn được kẻ tấn công hung hăng tạm thời vô hiệu hóa blog của bạn. Trong mọi trường hợp, họ thường bỏ cuộc khá nhanh.


Ngoài ra, nếu bạn là một blogger không sử dụng ứng dụng khách trên máy tính để bàn hoặc thiết bị di động riêng biệt, bạn không cần xmlrpc.php và bạn có thể xóa nó một cách an toàn. Nói cách khác, nếu bạn viết bài đăng trên blog của mình bên trong bảng điều khiển WordPress, trên web, bạn không cần xmlrpc.php. Gần đây, xmlrpc.php thực sự đang bị tấn công bởi tin tặc và cá nhân, tôi khuyên bạn chỉ nên xóa tệp này.
PJ Brunet

Để sửa lại nhận xét của tôi ở trên: thay vì xóa xmlrpc.php, bạn có thể "chmod 0" tệp và đưa nó trở lại cuộc sống khi cần, bởi vì bạn có thể cần xmlrpc.php cho một số thứ nhất định, như tôi mơ hồ nhớ bạn cần xmlrpc.php để kích hoạt Jetpack.
PJ Brunet

Cảm ơn vì tiền hỗ trợ. Tôi chỉ đặt một exit()tệp ở đầu tệp vì chúng tôi luôn sử dụng wp-admin để chỉnh sửa trang. Tôi thấy đây là một điểm yếu tương đối trên Wordpress khiến tôi lo lắng khi triển khai WP cho một tổ chức lớn. Với xmlrpc bị vô hiệu hóa, tôi sẽ không phải lo lắng, phải không?
Mattijs

1

chặn IP bằng iptables:

for ip in $(grep xmlrpc /var/log/apache2/access.log | cut -d' ' -f1 | sort | uniq -c | sort -rn | head -n8 | awk '{print $2}'); do \
iptables -A INPUT -s $ip -j DROP; \
done

Sẽ rất tốt để xem một số giải thích về lệnh shell này.
David

@David IMO tự phụ và vụng về của nó. Về cơ bản những gì nó sẽ làm là quét tệp access.log và tìm kiếm bất kỳ yêu cầu nào đến xmlrpc.php. Sau đó, nó đếm các địa chỉ IP trùng lặp, sắp xếp chúng từ cao nhất đến thấp nhất và trả về 8 IP hàng đầu (IP có nhiều yêu cầu trùng lặp nhất). Đối với mỗi địa chỉ IP này, nó báo cho tường lửa giảm tất cả lưu lượng truy cập khỏi chúng. Trên máy chủ của tôi, có hơn 8 IP thực hiện công cụ này và điều này cũng có thể chặn các yêu cầu hợp pháp, vì nó không xem xét kỹ xem ai đang thực hiện.
tdk2fe

0

Nếu điều này xảy ra gần đây và nó đã giết chết máy chủ và chúng tôi hiện đang sử dụng fail2ban để giảm thiểu vấn đề.

Đã thêm cấu hình này vào jail.local :

[apache-xmlrpc]

enabled = true
port = http,https
filter = xmlrpc
logpath = /var/log/apache2/*access.log
maxretry = 30
findtime = 300
bantime = -1

Và tạo bộ lọc trong bộ lọc.d / apache-xmlrpc.conf :

[Definition]
failregex = ^<HOST> -.*"(GET|POST) .*xmlrpc.php
ignoreregex =

Trong trường hợp của tôi, các cuộc tấn công không phải lúc nào cũng đến từ googlebot, vì vậy làm cho regex rộng hơn một chút nhưng với mục đích của tôi, hầu như không có lý do chính đáng nào để bất kỳ IP nào đạt được xmlrpc hơn 30 lần trong 5 phút.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.