Thống kê số lần truy cập của các IP vào website

Các tấn công DoS/DDoS bất ngờ vào trang web có thể gây ra thiệt hại với trang web của bạn. Ở bài viết này mình hướng dẫn các bạn cách sử dụng lệnh grep để hiển thị các địa chỉ truy cập vào trang web. Đây cũng là 1 phần giúp các bạn phần nào xác định nguyên nhân gây ra lỗi đồi với trang web của mình.

1. Hiển thị tất cả địa chỉ IP có trong file access log

Đối với Apache :

grep -o "[0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+" /var/log/httpd/access_log | sort | uniq

Đối với Nginx :

grep -o "[0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+" /var/log/nginx/access.log | sort | uniq

2. Hiển thị các địa chỉ có trong file access log và số lần xuất hiện của chúng

Cách 1 :

Đối với cách này sẽ hiển thị tất các các địa chỉ có trong file access log bao gồm cả các địa chỉ có trong User-Agent

Sắp xếp các địa chỉ theo thứ tự tăng dần

Đối với Apache :

grep -o "[0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+" /var/log/httpd/access_log | sort | uniq -c | sort -n

Đối với Nginx :

grep -o "[0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+" /var/log/nginx/access.log | sort | uniq -c | sort -n

Sắp xếp các địa chỉ theo thứ tự giảm dần

Đối với Apache :

grep -o "[0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+" /var/log/httpd/access_log | sort | uniq -c | sort -nr

Đối với Nginx :

grep -o "[0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+" /var/log/nginx/access.log | sort | uniq -c | sort -nr

Cách 2 :

Còn đối với cách này sẽ chỉ hiển thị những địa chỉ IP có ở phần đầu của access log (X-FORWARDED_FOR)

Đối với apache :

awk '{print $1}' /var/log/httpd/access_log | sort | uniq -c | sort -nr

Đối với Nginx :

awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr

Leave a Reply