Thông qua việc phân tích access log, bạn có thể phát hiện ra nhiều hành vi bất thường như bot quét, tấn công brute-force, truy cập các URL lạ hoặc truy vấn bất hợp pháp vào API. Bài viết này sẽ hướng dẫn bạn cách kiểm tra access log trên các hệ thống phổ biến như Apache hoặc Nginx, sử dụng các lệnh dòng lệnh đơn giản để phát hiện kịp thời những dấu hiệu đáng ngờ mà không cần đến bất kỳ plugin hay phần mềm giám sát nào.
1. Log truy cập nằm ở đâu?
Vị trí log phụ thuộc vào webserver bạn dùng:
- Apache:
/var/log/apache2/access.log - Nginx:
/var/log/nginx/access.log - Có thể thay đổi tùy theo cấu hình
access_loghoặc nếu dùng hosting control panel.
2. Đọc nhanh access log
# Xem 100 dòng mới nhất
tail -n 100 /var/log/nginx/access.log
# Xem realtime
tail -f /var/log/nginx/access.log
3. Phân tích hành vi bất thường bằng command line
3.1. Kiểm tra IP truy cập nhiều nhất
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head -20
Nếu có IP xuất hiện quá nhiều lần trong thời gian ngắn, đó có thể là bot hoặc hacker.
3.2. Xem các URL bị truy cập nhiều
awk '{print $7}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head -20
Phát hiện các URL đang bị dò quét (ví dụ: wp-login.php, xmlrpc.php, file admin ẩn, API riêng…)
3.3. Lọc theo user-agent
awk -F\" '{print $6}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head
Giúp phát hiện bot spam giả dạng Chrome, Firefox hoặc bot không khai báo rõ ràng.
4. Một số dấu hiệu cảnh báo
- IP lặp lại với tần suất quá cao (vài trăm truy cập/phút)
- Truy cập liên tục vào
wp-login.php,xmlrpc.php - Truy cập theo pattern kỳ lạ như
?author=1,/wp-content/themes/.../ajax.php - Truy cập từ các user-agent lạ hoặc không khai báo
- Số lượng lỗi 404 đột biến
5. Gợi ý phản ứng
- Chặn IP đáng ngờ bằng
fail2banhoặc cấu hìnhdenytrong Nginx/Apache. - Dùng Cloudflare để chặn bot layer 7, hoặc bật Under Attack Mode nếu bị quét hàng loạt.
- Cập nhật và giới hạn các file dễ bị dò tìm (ẩn wp-login.php, tắt XML-RPC nếu không dùng…)
6. Tự động hóa với script phân tích
Bạn có thể viết shell script chạy cron 5 phút một lần để lọc IP đáng ngờ và gửi cảnh báo Telegram hoặc email.
#!/bin/bash
LOG="/var/log/nginx/access.log"
IP_LIST=$(awk '{print $1}' $LOG | sort | uniq -c | sort -nr | awk '$1 > 100 {print $2}')
for ip in $IP_LIST; do
echo "Cảnh báo: IP $ip truy cập quá nhiều"
# Gửi về Telegram, email, hoặc block ngay tại đây
done
Kết luận
Phân tích log server là kỹ năng cần thiết cho mọi quản trị viên. Dù bạn dùng WordPress hay bất kỳ nền tảng nào, hãy tận dụng access log để theo dõi và bảo vệ hệ thống. Không cần dùng đến plugin nặng nề, chỉ vài lệnh Linux cơ bản là đủ để nắm bắt tình hình.
Bình luận