Trong bài viết này mình sẽ hướng dẫn các bạn dùng command line trong linux để đếm số lượng địa chỉ IP duy nhất trong file log (web server bất kỳ như nginx hay apache) và sắp xếp chúng lại dựa trên số lượng request HTTP. Đây là một cách rất hữu ích để kiểm tra xem địa chỉ IP nào là nguồn tạo request nhiều nhất – có thể là nguồn tấn công flood hoặc DDoS vào website của bạn.
Để lấy danh sách tất cả địa chỉ IP trong file log, các bạn có thể sử dụng câu lệnh sau:
cat access.log | awk '{print $1}'
Để lấy danh sách các địa chỉ IP duy nhất từ file log
cat access.log | awk '{print $1}' | sort | uniq
Để lấy danh sách địa chỉ IP duy nhất, sau đó đếm số lượng địa chỉ IP này
cat access.log | awk '{print $1}' | sort | uniq -c | sort -nr
Hoặc bạn cũng có thể sử dụng câu lệnh sau:
cat access.log | cut -f1 -d ' ' | sort | uniq -c | sort -nr
Sau đó bạn sẽ nhận được output có dạng như sau:
38473 222.255.239.XXX
3322 222.255.239.XXX
345 222.255.239.XXX
22 118.102.1.XXX
4 118.102.1.XXX