6 Câu Lệnh Linux Hay Dùng Trong Phân Tích Log | TopDev
Bài viết được sự cho phép của tác giả Ngo Thang
Hôm nay mình chia sẻ cho mọi người 1 số câu lệnh linux mình hay dùng trong phân tích log trên server.
14 khóa học Tech miễn phí chất lượng từ MIT, Harvard, Linux... Console không chỉ có phương thức log!1. Các usecase hay dùng
- Muốn điều tra nguyên nhân khi số lượng access đến server tăng dột biến
- Đã phát hiện trên server có lỗ hổng và muốn điều tra xem đã có ai xâm nhập vào hay chưa
2. Các câu lệnh linux hay dùng
| Command line | Giải thích |
|---|---|
| grep | Tìm các dòng chứa chuỗi được chỉ định |
| awk | Phân tách cột và tìm kiếm hàng có điều kiện |
| sort | Sắp xếp dòng |
| uniq | Loại bỏ các hàng trùng lặp và đếm |
| wc | Đếm số ký tự, số dòng |
| sed | Thay thế điều kiện quy định |
3. Đối tượng phân tích
# access_log 203.0.113.1 - - [03/May/2020:12:00:00 +0900] "GET /index.html HTTP/1.1" 200 1000 "http://example.com/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64)" 203.0.113.1 - - [03/May/2020:12:10:00 +0900] "GET /index.html HTTP/1.1" 200 1000 "http://example.com/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64)" 203.0.113.2 - - [03/May/2020:12:20:00 +0900] "GET /index.html HTTP/1.1" 200 1000 "http://example.com/" "Mozilla/5.0 (Windows NT 6.3; Win64; x64)" 203.0.113.2 - - [03/May/2020:12:30:00 +0900] "GET /index.html HTTP/1.1" 200 1000 "http://example.com/" "Mozilla/5.0 (Windows NT 6.3; Win64; x64)" 203.0.113.2 - - [03/May/2020:12:40:00 +0900] "GET /index.html HTTP/1.1" 200 1000 "http://example.com/" "Mozilla/5.0 (Windows NT 6.3; Win64; x64)" 198.51.100.3 - - [03/May/2020:12:50:00 +0900] "GET /index.cgi?page=<Script>alert('Evil')</Script> HTTP/1.1" 200 3000 "-" "Evil User Agent" 198.51.100.3 - - [03/May/2020:13:00:00 +0900] "GET /../../../../../etc/shadow HTTP/1.1" 200 3000 "-" "Evil User Agent"Trong đó:
- 203.0.113.0/24 là địa chỉ ip đúng từ người dùng
- 198.51.100.0/24 là địa chỉ ip từ nguồn đáng ngờ
4. Áp dụng
4.1. Tìm kiếm đặc biệt (grep)
・Điều tra cuộc tấn công vào thư mục
$ grep -n ".." access_log 7:198.51.100.3 - - [03/May/2020:13:00:00 +0900] "GET /../../../../../etc/shadow HTTP/1.1" 200 3000 "-" "Evil User Agent"・Điều tra chèn script đáng ngờ
$ grep -i "<script>" --color access_log 198.51.100.3 - - [03/May/2020:12:50:00 +0900] "GET /index.cgi?page=<Script>alert('Evil')</Script> HTTP/1.1" 200 3000 "-" "Evil User Agent"・Điều tra chèn thẻ tag html đáng ngờ
$ grep -E "<[^>]+>[^<]+<[^>]+>" -o access_log <Script>alert('Evil')</Script>Giải thích về option trong grep:
| option | Giải thích |
|---|---|
| -n | Hiển thị số dòng của dòng match |
| -i | Không phân biệt chữ hoa và chữ thường |
| —color | Hiển thị màu đối với từ đã match |
| -o | Hiển thị phần đã match |
| -E | Sử dụng biểu thức regex |
4.2. Loại bỏ log không cần thiết
・Loại bỏ log từ nguồn chuẩn
$ grep -v "203.0.113." access_log 198.51.100.3 - - [03/May/2020:12:50:00 +0900] "GET /index.cgi?page=<Script>alert('Evil')</Script> HTTP/1.1" 200 3000 "-" "Evil User Agent" 198.51.100.3 - - [03/May/2020:13:00:00 +0900] "GET /../../../../../etc/shadow HTTP/1.1" 200 3000 "-" "Evil User Agent"Giải thích về option trong grep:
| option | Giải thích |
|---|---|
| -v | Không hiển thị dòng match |
4.3. Trích xuất phần tử(awk)
・Trích xuất ra địa chỉ ip client
$ awk '{print $1}' access_log 203.0.113.1 203.0.113.1 203.0.113.2 203.0.113.2 203.0.113.2 198.51.100.3 198.51.100.3・Trích xuất ra User Agent của client
$ awk -F["] '{print $6}' access_log Mozilla/5.0 (Windows NT 10.0; Win64; x64) Mozilla/5.0 (Windows NT 10.0; Win64; x64) Mozilla/5.0 (Windows NT 6.3; Win64; x64) Mozilla/5.0 (Windows NT 6.3; Win64; x64) Mozilla/5.0 (Windows NT 6.3; Win64; x64) Evil User Agent Evil User AgentGiải thích về option trong awk:
| option | Giải thích |
|---|---|
| {print $1} | Hiển thị ra cột đầu tiên được phân tách bằng dấu phân cách |
| -F | Chỉ định dấu phân cách (mặc định là khoảng trắng) |
4.4. Thống kê và sắp xếp (sort/uniq/wc)
・Hiển thị ra số lượng của mỗi địa chỉ ip client
$ awk '{print $1}' access_log | sort | uniq -c | sort -rn 3 203.0.113.2 2 203.0.113.1 2 198.51.100.3・Tổng số lượng của địa chỉ duy nhất ip client
$ awk '{print $1}' access_log | sort | uniq | wc -l 3Giải thích:
| command line, option | Giải thích |
|---|---|
| uniq -c | Hiển thị số trùng lặp (yêu cầu sắp xếp để so sánh trước và sau) |
| sort -n | Sắp xếp các trường số theo giá trị số học |
| sort -r | Sắp xếp theo thứ tự giảm dần (mặc định là thứ tự tăng dần) |
| wc -l | Hiển thị ra số dòng |
4.5. Thay thế (sed)
・Ẩn danh địa chỉ IP nguồn để truy cập bình thường
$ sed "s/203.0.113.[0-9]{1,3}/xxx.xxx.xxx.xxx/g" access_log xxx.xxx.xxx.xxx - - [03/May/2020:12:00:00 +0900] "GET /index.html HTTP/1.1" 200 1000 "http://example.com/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64)" xxx.xxx.xxx.xxx - - [03/May/2020:12:10:00 +0900] "GET /index.html HTTP/1.1" 200 1000 "http://example.com/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64)" xxx.xxx.xxx.xxx - - [03/May/2020:12:20:00 +0900] "GET /index.html HTTP/1.1" 200 1000 "http://example.com/" "Mozilla/5.0 (Windows NT 6.3; Win64; x64)" xxx.xxx.xxx.xxx - - [03/May/2020:12:30:00 +0900] "GET /index.html HTTP/1.1" 200 1000 "http://example.com/" "Mozilla/5.0 (Windows NT 6.3; Win64; x64)" xxx.xxx.xxx.xxx - - [03/May/2020:12:40:00 +0900] "GET /index.html HTTP/1.1" 200 1000 "http://example.com/" "Mozilla/5.0 (Windows NT 6.3; Win64; x64)" 198.51.100.3 - - [03/May/2020:12:50:00 +0900] "GET /index.cgi?page=<Script>alert('Evil')</Script> HTTP/1.1" 200 3000 "-" "Evil User Agent" 198.51.100.3 - - [03/May/2020:13:00:00 +0900] "GET /../../../../../etc/shadow HTTP/1.1" 200 3000 "-" "Evil User Agent"Giải thích:
| option | Giải thích |
|---|---|
| s/string A/string B/g | Thay chuỗi A bằng chuỗi B. Thay thế tất cả bằng cách thêm g. |
Kết luận
Nếu sử dụng 6 câu lệnh mình bảo bên trên thì chúng ta có thể phân tích log 1 cách dễ dàng.
Hơn nữa, thông thường hay sử dụng kí tự pipe line | để phân tích log 1 cách hiệu quả hơn.
Ví dụ:
$ grep -v "203.0.113." access_log | awk '{print $1}' | sort | uniq -c | sort -rn 2 198.51.100.3==============
Bài viết gốc được đăng tải tại nghethuatcoding.com
Có thể bạn quan tâm:
- Biến Git và GitHub trở thành công cụ đắc lực cho Software Engineer
- Phân tích con người – Chiến lược quan trọng trong ngành Nhân sự năm 2020
- Cách viết “Hello World” với 28 Ngôn ngữ Lập trình
Xem thêm các việc làm Developer hấp dẫn tại TopDev
Từ khóa » Tích Log
-
Bảng Tóm Tắt Các Công Thức Lôgarít - Toán Học Việt Nam
-
Công Thức Log - Trung Tâm Gia Sư Tâm Tài Đức
-
Bảng Công Thức Logarit Chuẩn để Giải Bài Tập
-
Logarit – Wikipedia Tiếng Việt
-
9+ Các Công Thức Logarit đầy đủ - .vn
-
Logarit Là Gì? Tổng Hợp Các Công Thức Logarit đẩy đủ Nhất
-
[ Công Thức Logarit ] Cơ Bản, Nâng Cao, Định Nghĩa
-
Phân Tích Log File IISW3C - Trung Tâm Hỗ Trợ Kỹ Thuật | MATBAO.NET
-
Bảng Công Thức Logarit Bản Đầy Đủ| .vn
-
Lý Thuyết Lôgarit | SGK Toán Lớp 12
-
Tài Liệu Phân Tích Log - Tài Liệu Text - 123doc
-
Cách Bấm Máy Tính Giải Phương Trình Logarit Trắc Nghiệm Cực Nhanh