NỘI DUNG
Vừa rồi có một khách sử dụng VPS sau đó nhờ mình setup FastPanel để phục vụ cho việc chạy web. Sử dụng ổn định một thời gian thì đột nhiên VPS lag kinh khủng, không thể thao tác gì được cả.
Mình thực hiện SSH vào VPS và kiểm tra tình trạng thì thấy load avg cực cao. Khi đọc access log thì mình nhận thấy như sau.
Đọc access log trên FastPanel
Việc đầu tiên bạn hãy đọc access.log của webiste để xác định chính xác. Bên dưới là vị trí của file log và bạn cần thay đổi username và mydomain.com
tail -f /var/www/username/data/logs/mydomain.com-frontend.access.log
Ảnh đầu tiên bị tấn công xmlrpc.php
Dạng tấn công này khá phổ biến
Ảnh 2 là bị Bot scan
Thoạt nhìn qua thì mình thấy con bot có tên Amazonbot/0.1
. Ban đầu cứ tưởng đây là bot của AWS nhưng mà không nhé, bạn có thể xem qua bài post này
Cách ngăn chặn
Trong bài viết này thì ở đầu bài tôi đã xác định được web bị tấn công theo 2 kiểu này. Đây là 2 kiểu đơn giản và có thể chặn. Tôi sẽ tạo một file cấu hình và đặt tên nó là deny.conf
vi /etc/nginx/fastpanel2-includes/deny.conf
Tiếp theo tôi sẽ dán nội dung sau vào file deny.conf
. Trong đoạn này tôi đã thêm cấu hình chặn truy cập vào xmlrpc.php
và một số badbot mà tôi thấy nó có rủi ro. Bạn có thể thêm hoặc xoá các bot trong cấu hình của tôi nếu các bot này bạn cần sử dụng để thu thập web.
#Block xmlrpc
location = /xmlrpc.php {
deny all;
access_log off;
log_not_found off;
}
#Block badbot
# case sensitive matching
if ($http_user_agent ~ (Bytespider|Amazonbot/0.1|MJ12bot/v1.4.8|MJ12bot/v1.4.4|SemrushBot/6~bl|SemrushBot/7~bl|SemrushBot-BM/1.0|DotBot/1.1|DotBot/1.2|MegaIndex.ru/2.0|AspiegelBot|PetalBot|BLEXBot/1.0|serpstatbot/2.1|proximic|Barkrowler/0.9|SeekportBot|YandexBot/3.0|Pinterestbot/1.0|DataForSeoBot/1.0|GrapeshotCrawler/2.0|curl/8.1.2|AhrefsBot/7.0|Barkrowler/0.9)) {
return 403;
}
Sau khi thêm xong bạn lưu lại và kiểm tra cấu hình nginx bằng lệnh nginx -t
. Nếu kết quả trả về như sau thì không có lỗi.
[root@root ~]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Thực hiện khởi động lại nginx để áp dụng cấu hình mới bằng lệnh
service nginx restart
Thực hiện kiểm tra lại thì HTTP trả về mã 403 tức đã bị từ chối truy cập. Như vậy đã thành công trong việc ngăn chặn.