Hướng dẫn phân tích log web bằng lệnh tail và grep trên Ubuntu 22.04

shape
shape

1. Vì sao cần phân tích log?

Trong môi trường Linux, log là nơi phản ánh mọi hoạt động của hệ thống và website.
Khi website gặp sự cố (chậm, lỗi, nghi bị tấn công), quản trị viên không đoán mò, mà phải đọc log để tìm nguyên nhân.

Trong bài thực hành này, ta sẽ làm quen với cách:

  • Theo dõi log real-time
  • Lọc thông tin quan trọng khỏi hàng nghìn dòng log
  • Phát hiện lỗi, truy cập bất thường và dấu hiệu tấn công
  • Công cụ sử dụng: tailgrep

2. Theo dõi log Real-Time với tail

Log luôn được ghi ở cuối file, vì vậy tail là công cụ phù hợp nhất để quan sát những gì đang xảy ra ngay lúc này.

Các tùy chọn mà lệnh tail thường dùng kèm theo:

Tùy chọn Mô tả Ví dụ
-f Theo dõi file real-time tail -f file.log
-n [số] Hiển thị số dòng cuối tail -n 50 file.log
-F Theo dõi kể cả khi file bị rotate tail -F file.log
-c [bytes] Hiển thị số byte cuối tail -c 500 file.log
Ví dụ thực tế khi vận hành website:
  • Theo dõi access log Apache real-time
sudo tail -f /var/log/apache2/access.log
  • Theo dõi lỗi website:
sudo tail -f /var/log/apache2/error.log
  • Theo dõi nhiều file cùng lúc
sudo tail -f /var/log/apache2/access.log /var/log/apache2/error.log

→ Lúc này bà chỉ mới thấy dữ liệu thô, rất nhiều dòng không liên quan → chúng ta cần lọc log → gợi ý có thể kết hợp dùng grep cùng.

 

3. Lọc thông tin quan trọng với grep

grep cho phép chỉ giữ lại những dòng có ý nghĩa, ví dụ:

  • Lỗi HTTP
  • IP đáng ngờ
  • Request POST
  • Lỗi PHP
Các tùy chọn quan trọng:
Tùy chọn Mô tả Ví dụ
-i Không phân biệt hoa/thường grep -i "error" file.log
-E Sử dụng extended regex grep -E "4[0-9]{2}" file.log
-v Hiển thị dòng KHÔNG khớp grep -v "200" file.log
-c Đếm số dòng khớp grep -c "404" file.log
--color=auto Tô màu kết quả grep --color=auto "500" file.log

4. Kết hợp tail + grep để xử lý tình huống thực tế

  • Phát hiện lỗi HTTP ngay lập tức:
sudo tail -f /var/log/apache2/access.log | grep -E " 4[0-9]{2} | 5[0-9]{2} "
  • Theo dõi hoạt động của một IP cụ thể
sudo tail -f /var/log/apache2/access.log | grep "192.168.1.100"
  • Nhận diện request POST (highlight màu)
sudo tail -f /var/log/apache2/access.log | grep --color=auto "POST"
  • Theo dõi lỗi PHP
sudo tail -f /var/log/apache2/error.log | grep -i "php.*error"
  • Phát hiện truy cập đáng ngờ
sudo tail -f /var/log/nginx/access.log | grep -E "\.\./|\.env|config\.php"

5. Tình huống thực tế mà chúng ta hay gặp phải:

Tình huống 1: website bị chậm

  • Bật theo dõi real-time để xem request nào đang xử lý
sudo tail -f /var/log/nginx/access.log
  •  Tìm request có thời gian xử lý lâu
sudo tail -n 100 /var/log/nginx/access.log | awk '$NF > 2000 {print}'

 

Tình huống 2: Nghi ngờ bị DDoS
  • Xác định IP nào gửi nhiều request nhất
sudo tail -n 1000 /var/log/apache2/access.log | awk '{print $1}' | sort | uniq -c | sort -rn | head -10
  • Theo dõi real-time IP nghi ngờ
sudo tail -f /var/log/apache2/access.log | grep "203.0.113.100"
  • Kiểm tra user-agent của IP tấn công
sudo grep "203.0.113.100" /var/log/apache2/access.log | grep -o '"[^"]*"$' | sort | uniq -c

Bài viết liên quan

Hướng dẫn cài đặt CloudPanel trên Ubuntu

Hướng dẫn cấu hình CloudPanel trên Ubuntu 22.04

Thực hành Cloud qua Lab Trực Tuyến: Nâng Cao Kỹ Năng với QuickLab Long Vân

QuickLab của Long Vân mang đến môi trường lab trực tuyến giúp bạn thực hành Cloud một cách dễ dàng, nâng cao kỹ năng nhanh chóng và tiết kiệm chi phí.

QuickLab là gì? Giải pháp trải nghiệm Cloud trực tuyến miễn phí từ Long Vân

QuickLab là gì? Công cụ trải nghiệm Cloud miễn phí từ Long Vân, giúp doanh nghiệp và cá nhân dùng thử hạ tầng Cloud dễ dàng, nhanh chóng, không rào cản.