Thứ năm, 04/02/2016 | 00:00 GMT+7

Cách bảo vệ WordPress khỏi các cuộc tấn công XML-RPC trên Ubuntu 14.04

WordPress là một nền tảng CMS (hệ thống quản lý nội dung) phổ biến và mạnh mẽ. Sự phổ biến của nó có thể gây ra sự chú ý không mong muốn dưới dạng lưu lượng độc hại được nhắm đến đặc biệt vào một trang web WordPress.

Có nhiều trường hợp server chưa được bảo vệ hoặc tối ưu hóa có thể gặp sự cố hoặc lỗi sau khi nhận được một lượng nhỏ lưu lượng truy cập độc hại. Các cuộc tấn công này dẫn đến cạn kiệt tài nguyên hệ thống khiến các dịch vụ như MySQL không phản hồi. Dấu hiệu trực quan phổ biến nhất của điều này sẽ là Error connecting to database thông báo Error connecting to database . Control panel web cũng có thể hiển thị lỗi Out of Memory .

Hướng dẫn này sẽ chỉ cho bạn cách bảo vệ WordPress khỏi các cuộc tấn công XML-RPC trên hệ thống Ubuntu 14.04.

Yêu cầu

Đối với hướng dẫn này, bạn cần những điều sau:

Ta giả sử bạn đã cài đặt WordPress trên Ubuntu 14.04 Server. Có nhiều cách để cài đặt WordPress, nhưng đây là hai phương pháp phổ biến:

Tất cả các lệnh trong hướng dẫn này phải được chạy với quyền user không phải root. Nếu cần có quyền truy cập root cho lệnh, nó sẽ được đặt trước sudo . Cài đặt server ban đầu với Ubuntu 14.04 giải thích cách thêm user và cấp cho họ quyền truy cập sudo.

XML-RPC là gì?

WordPress sử dụng XML-RPC để thực thi các chức năng từ xa. Plugin phổ biến JetPack và ứng dụng di động WordPress là hai ví dụ tuyệt vời về cách WordPress sử dụng XML-RPC. Chức năng tương tự này cũng có thể được khai thác để gửi hàng nghìn yêu cầu đến WordPress trong một khoảng thời gian ngắn. Kịch bản này thực sự là một cuộc tấn công vũ phu.

Nhận dạng một cuộc tấn công XML-RPC

Hai cách chính để nhận ra một cuộc tấn công XML-RPC như sau:

1) Thấy thông báo "Lỗi kết nối với database " khi trang web WordPress của bạn không hoạt động
2) Tìm nhiều mục nhập tương tự như "POST /xmlrpc.php HTTP/1.0” trong log web server của bạn

Vị trí của file log web server của bạn phụ thuộc vào bản phân phối Linux bạn đang chạy và web server bạn đang chạy.

Đối với Apache trên Ubuntu 14.04, hãy sử dụng lệnh này để tìm kiếm các cuộc tấn công XML-RPC:

  • grep xmlrpc /var/log/apache2/access.log

Đối với Nginx trên Ubuntu 14.04, hãy sử dụng lệnh này để tìm kiếm các cuộc tấn công XML-RPC:

  • grep xmlrpc /var/log/nginx/access.log

Trang web WordPress của bạn đang nhận các cuộc tấn công XML-RPC nếu các lệnh trên dẫn đến nhiều dòng kết quả , tương tự như ví dụ sau:

access.log
111.222.333.444:80 555.666.777.888 - - [01/Jan/2016:16:33:50 -0500] "POST /xmlrpc.php HTTP/1.0" 200 674 "-" "Mozilla/4.0 (compatible: MSIE 7.0; Windows NT 6.0)" 

Phần còn lại của bài viết này tập trung vào ba phương pháp khác nhau để ngăn chặn các cuộc tấn công XML-RPC tiếp theo.

Phương pháp 1: Cài đặt Plugin Jetpack

Lý tưởng nhất là bạn muốn ngăn chặn các cuộc tấn công XML-RPC trước khi chúng xảy ra. Plugin Jetpack dành cho WordPress có thể chặn các yêu cầu phương thức đa kênh XML-RPC bằng chức năng Bảo vệ của nó. Bạn vẫn sẽ thấy các mục nhập XML-RPC trong log web server của bạn khi bật Jetpack. Tuy nhiên, Jetpack sẽ giảm tải cho database từ những nỗ lực đăng nhập độc hại này gần 90%.

Lưu ý: Cần có account WordPress.com để kích hoạt plugin Jetpack.

Jetpack cài đặt dễ dàng từ chương trình backend WordPress. Đầu tiên, đăng nhập vào console WordPress của bạn và chọn Plugins-> Add New ở menu bên trái.

Menu Plugin WordPress

Jetpack sẽ tự động được liệt kê trong phần Plugin nổi bật của trang Thêm mới . Nếu bạn không thấy nó, bạn có thể tìm kiếm Jetpack bằng cách sử dụng hộp tìm kiếm.

Trang cài đặt Jetpack

Nhấp vào nút Install Now để download , extract và cài đặt Jetpack. Khi nó được cài đặt thành công, sẽ có liên kết Kích hoạt Plugin trên trang. Nhấp vào liên kết Kích hoạt Plugin đó . Bạn sẽ được quay lại trang Plugin và một tiêu đề màu xanh lá cây sẽ ở trên cùng cho biết Jetpack của bạn gần như đã sẵn sàng! . Nhấn vào nút Connect to Wordpress.com để hoàn tất việc kích hoạt Jetpack.

Nút kết nối với Wordpress.com

Bây giờ, đăng nhập bằng account WordPress.com. Bạn cũng có thể tạo một account nếu cần.

Đăng nhập vào mẫu Wordpress.com

Sau khi bạn đăng nhập vào account WordPress.com, Jetpack sẽ được kích hoạt. Bạn sẽ thấy một tùy chọn để chạy Jump Start , tùy chọn này sẽ tự động kích hoạt các tính năng phổ biến của Jetpack. Nhấp vào liên kết Bỏ qua ở bước này.

Nhảy màn hình bắt đầu .

Chức năng Bảo vệ được bật tự động, ngay cả khi bạn bỏ qua quá trình Khởi động. Đến đây bạn có thể thấy console Jetpack cũng hiển thị chức năng Bảo vệ khi đang Hoạt động. Danh sách trắng các địa chỉ IP có khả năng bị Bảo vệ chặn bằng cách nhấp vào bánh răng bên cạnh tên Bảo vệ .

 Control panel  Jetpack

Nhập địa chỉ IPv4 hoặc IPv6 mà bạn muốn đưa vào danh sách trắng và nhấp vào nút Lưu để cập nhật danh sách trắng Bảo vệ .

Bảo vệ cài đặt

Phương pháp 2: Bật block-xmlrpc với a2enconf

Tính năng a2enconf block-xmlrpc đã được thêm vào hình ảnh một cú nhấp chuột của DigitalOcean WordPress vào tháng 12 năm 2015. Với nó, bạn có thể chặn tất cả các yêu cầu XML-RPC ở cấp web server .

Lưu ý: Phương pháp này chỉ khả dụng trên Cài đặt WordPress một lần nhấp DigitalOcean được tạo vào tháng 12 năm 2015 trở lên.

Để bật tập lệnh khối XML-RPC, hãy chạy lệnh sau trên Server với hình ảnh DO WordPress bằng một cú nhấp chuột được cài đặt:

  • sudo a2enconf block-xmlrpc

Khởi động lại Apache để kích hoạt thay đổi:

  • sudo service apache2 restart

Cảnh báo: Phương pháp này sẽ ngăn bất kỳ thứ gì sử dụng XML-RPC hoạt động, kể cả Jetpack hoặc ứng dụng di động WordPress.

Phương pháp 3: Chặn tất cả lưu lượng truy cập XML-RPC theo cách thủ công

Ngoài ra, khối XML-RPC có thể được áp dụng theo cách thủ công cho cấu hình Apache hoặc Nginx của bạn.

Đối với Apache trên Ubuntu 14.04, hãy chỉnh sửa file cấu hình bằng lệnh sau:

  • sudo nano /etc/apache2/sites-available/000-default.conf

Thêm các dòng được đánh dấu bên dưới giữa các <VirtualHost> .

Cấu hình Apache VirtualHost
<VirtualHost> …         <files xmlrpc.php>       order allow,deny       deny from all     </files> </VirtualHost> 

Lưu file này khi bạn hoàn tất.

Khởi động lại web server để bật các thay đổi:

  • sudo service apache2 restart

Đối với Nginx trên Ubuntu 14.04, hãy chỉnh sửa file cấu hình bằng lệnh sau ( thay đổi đường dẫn để phản ánh file cấu hình của bạn ):

  • sudo nano /etc/nginx/sites-available/example.com

Thêm các dòng được đánh dấu bên dưới trong khối server :

Tệp khối server Nginx
server { …  location /xmlrpc.php {       deny all;     } } 

Lưu file này khi bạn hoàn tất.

Khởi động lại web server để bật các thay đổi:

  • sudo service nginx restart

Cảnh báo: Phương pháp này sẽ ngăn bất kỳ thứ gì sử dụng XML-RPC hoạt động, kể cả Jetpack hoặc ứng dụng di động WordPress.

Xác minh các bước giảm thiểu tấn công

Dù bạn đã chọn phương pháp nào để ngăn chặn các cuộc tấn công, bạn nên xác minh nó đang hoạt động.

Nếu bạn bật chức năng Jetpack Protect, bạn sẽ thấy các yêu cầu XML-RPC tiếp tục trong log web server của bạn. Tần suất phải thấp hơn và Jetpack sẽ giảm tải một cuộc tấn công có thể đặt ra trên tiến trình server database . Jetpack cũng sẽ dần dần chặn các địa chỉ IP tấn công.

Nếu bạn chặn tất cả lưu lượng truy cập XML-RPC theo cách thủ công, log của bạn sẽ vẫn hiển thị các lần thử, nhưng mã lỗi kết quả là một cái gì đó khác 200. Ví dụ: các mục nhập trong file access.log Apache có thể trông giống như sau:

access.log
111.222.333.444:80 555.666.777.888 - - [01/Jan/2016:16:33:50 -0500] "POST /xmlrpc.php HTTP/1.0" 500 674 "-" "Mozilla/4.0 (compatible: MSIE 7.0; Windows NT 6.0)" 

Kết luận

Bằng cách thực hiện các bước để giảm thiểu lưu lượng XML-RPC độc hại, trang web WordPress của bạn sẽ tiêu tốn ít tài nguyên hệ thống hơn. Sử dụng hết tài nguyên hệ thống là lý do phổ biến nhất khiến một trang WordPress chuyển sang chế độ offline trên VPS. Các phương pháp ngăn chặn các cuộc tấn công XML-RPC được đề cập trong bài viết này cùng với sẽ đảm bảo trang web WordPress của bạn luôn trực tuyến.

Để tìm hiểu thêm về các cuộc tấn công brute force trên WordPress XML-RPC, hãy đọc Sucuri.net - Các cuộc tấn công khuếch đại Brute Force chống lại WordPress XMLRPC .


Tags:

Các tin liên quan

Cách tạo blog với Hexo trên Ubuntu 14.04
2016-02-04
Cách cài đặt Graylog 1.x trên Ubuntu 14.04
2016-02-04
Cách bảo mật HAProxy bằng Let's Encrypt trên Ubuntu 14.04
2016-01-22
Cách backup database OrientDB của bạn trên Ubuntu 14.04
2015-12-19
Cách cài đặt và cấu hình OrientDB trên Ubuntu 14.04
2015-12-19
Cách cài đặt và cấu hình Naxsi trên Ubuntu 14.04
2015-12-19
Cách cài đặt VestaCP và thiết lập trang web trên Ubuntu 14.04
2015-12-16
Cách cài đặt Go 1.6 trên Ubuntu 14.04
2015-12-04
Cách cài đặt Go 1.6 trên Ubuntu 14.04
2015-12-04
Cách triển khai ứng dụng Symfony sang sản xuất trên Ubuntu 14.04
2015-11-24