CHƯƠNG 1 - TỔNG QUAN VỀ LOG TRUY NHẬP VÀ PHÂN TÍCH LOG 1. Tổng quan log truy nhập 1. Khái niệm log truy nhập Log truy cập hay nhật ký, hoặc vết truy cập (gọi tắt là log) là một danh sách các bản ghi mà một hệ thống ghi lại khi xuất hiện các yêu cầu truy cập các tài nguyên của hệ thống. Chẳng hạn, log truy cập web (gọi tắt là web log) chứa tất cả các yêu cầu truy nhập các tài nguyên của một website.
Các tài nguyên của một website như các file ảnh, các mẫu định dạng và file mã Javascript. Khi một người dùng thăm một trang web để tìm một sản phẩm, máy chủ web sẽ tải xuống thông tin và ảnh của sản phẩm và log truy cập sẽ ghi lại các yêu cầu của người dùng đến các tài nguyên thông tin và ảnh của sản phẩm.1: Xem Windows log sử dụng công cụ Event Viewer Có nhiều nguồn sinh log trong hệ thống như log sinh bởi hệ điều hành, log sinh bởi các máy chủ dịch vụ mạng, log sinh bởi các ứng dụng và log sinh bởi các thiết bị mạng và thiết bị đảm bảo an toàn thông tin. Log sinh bởi hệ điều hành thường 4 bao gồm các bản ghi các sự kiện khởi động hệ thống, sự kiện đăng nhập, đăng xuất của người dùng, yêu cầu truy cập các file, các thư mục, các yêu cầu kích hoạt ứng dụng, các yêu cầu truy cập phần cứng, các yêu cầu truy cập dịch vụ mạng, các lỗi xuất hiện trong quá trình hoạt động… Hệ điều hành Microsoft Windows sử dụng công cụ Event Viewer (hình 1.1), còn các hệ điều hành thuộc họ Unix/Linux sử dụng công cụ Syslog để quản lý và lưu trữ log do bản thân hệ điều hành và các mô-đun phụ trợ sinh ra. Nguồn log sinh bởi các máy chủ dịch vụ mạng, như máy chủ web, máy chủ DNS, máy chủ email và máy chủ cơ sở dữ liệu là một trong các nguồn log phổ biến nhất.
Máy chủ web có thể ghi log truy cập các trang web cho từng website dưới dạng các file văn bản thuần với mỗi dòng là một bản ghi log. Các thông tin trong mỗi bản ghi web log có thể khác nhau phụ thuộc vào phiên bản máy chủ web sử dụng.2 minh họa các bản ghi log tạo bởi máy chủ web Microsoft IIS. Các máy chủ tên miền DNS cũng sinh một lượng lớn log trong quá trình xử lý các yêu cầu phân giải tên miền sang địa chỉ IP và ngược lại từ người dùng. Tương tự, các máy chủ email và cơ sở dữ liệu cũng sinh rất nhiều bản ghi log trong quá trình xử lý các yêu cầu từ người dùng cũng như từ các ứng dụng.2: Các bản ghi log sinh ra bởi máy chủ web Microsoft IIS 5 Các thiết bị mạng và các hệ thống đảm bảo an toàn thông tin cũng là một trong các nguồn sinh nhiều log.
Các thiết bị mạng phổ biến như các bộ định tuyến (router), các bộ chuyển mạch (switch) và các hệ thống đảm bảo an toàn thông tin như tường lửa, các hệ thống điều khiển truy cập, các hệ thống phát hiện và ngăn chặn tấn công, xâm nhập cũng sinh nhiều bản ghi log trong quá trình xử lý các yêu cầu truy cập mạng. Log sinh từ các hệ thống này có thể được lưu tại chỗ hoặc xuất ra các hệ thống lưu trữ bên ngoài. Như vậy, có thể thấy có nhiều nguồn sinh dữ liệu log truy cập với nhiều dạng khác nhau. Tùy vào mục đích sử dụng, người quản trị có thể cấu hình hệ thống để lựa chọn thu thập, quản lý và lưu trữ các thông tin cần thiết cho mỗi dạng log.
Các dạng log truy nhập Log truy nhập sinh bởi hệ điều hành và các ứng dụng thường có định dạng riêng. Do phần thử nghiệm trong luận văn này được thực hiện trên web log nên mục này giới thiệu các định dạng web log được sử dụng phổ biến hiện nay bao gồm định dạng web log chuẩn của NCSA (NCSA Common Log Format), định dạng web log kết hợp (NCSA Combined Log Format), định dang web log mở rộng của W3C (W3C Extended Log Format) và định dạng web log của máy chủ web Microsoft IIS (Microsoft IIS Log Format). Trên thực tế hiện nay, mỗi máy chủ web đều hỗ trợ một số định dạng web log trong số các định dạng kể trên. Chẳng hạn, máy chủ web Microsoft IIS hỗ trợ 3 định dạng, bao gồm: NCSA Common Log Format, W3C Extended Log Format và Microsoft IIS Log Format.
Ngược lại, máy chủ web Apache hay Apache HTTP Server sử dụng các chuỗi định dạng để hỗ trợ 2 định dạng log bao gồm: NCSA Common Log Format và NCSA Combined Log Format. Người quản trị có thể lựa chọn định dạng web log sử dụng để máy chủ sinh các file web log. NCSA Common Log Format NCSA Common Log Format, hay thường được gọi tắt Common Log Format, là định dạng web log với trường cố định mà không thể tùy chỉnh. Dạng web log này ghi lại các thông tin cơ bản về yêu cầu người dùng, tên của máy khách, tên người dùng, ngày, giờ, loại yêu cầu, mã trạng thái HTTP trả về, số lượng byte gửi về server.
6 Các trường phân trong mỗi bản ghi log được phân cách bởi dấu trắng. Những trường không chứa dữ liệu sẽ được biểu diễn bằng dấu (-), các ký tự không in được sẽ biểu diễn bởi dấu (+). Với máy chủ Apache HTTP Server, định dạng Common Log Format có thể được cấu hình nhờ chuỗi định dạng như sau: LogFormat “%h %l %u %t \”%r\” %>s %b” common Ví dụ, với Common Log Format thì một đầu mục (entry) sẽ có dạng như sau: 127.1 – frank [10/Oct/2000:13:55:36 -0700] “GET /apache_pb.0” 200 2326 Trong đó, các trường thông tin của đầu mục này gồm: 127.1 (tương ứng kí hiệu %h): Địa chỉ IP của máy khách gửi yêu cầu đến máy chủ. Trống (-) (tương ứng kí hiệu %l): Định danh của máy khách.
frank (tương ứng kí hiệu %u): Định danh/tên của người dùng gửi yêu cầu được xác định nhờ thủ tục xác thực HTTP. [10/Oct/2000:13:55:36 -0700] (tương ứng kí hiệu %t): Thời gian máy chủ kết thúc xử lý yêu cầu, theo định dạng sau: [day/month/year:hour:minute:second zone], hay ngày/tháng/năm:giờ:phút:giây và múi giờ. Trong đó, day = 2*digit, month = 3*letter; year = 4*digit; hour = 2*digit; minute = 2*digit; second = 2*digit và zone = (‘+’ | ‘-‘) 4*digit. “Get /apache_pb.0” (tương ứng kí hiệu \”%r”\”): Yêu cầu của máy khách gửi lên máy chủ.
200 (tương ứng kí hiệu %>s): Mã trạng thái mà máy chủ gửi trả về cho máy khách. 2326 (tương ứng kí hiệu %b): Kích thước của gói tin trả về cho máy khách, không bao gồm header. NCSA Combined Log Format NCSA Combined Log Format gọi tắt là Combined Log Format về cơ bản tương tự Common Log Format, ngoại trừ việc nó bổ sung thêm hai trường thông tin ở cuối là Referrer (Liên kết tham chiếu) và User agent (Máy khách người dùng). Với Apache HTTP Server, định dạng này có thể được cấu hình nhờ chuỗi định dạng như sau: LogFormat “%h %l %u %t \”%r” %>s %b \”%{Referer}i\” \”%{User- agent}i\”” combined Ví dụ, với Combined Log Format, một đầu mục sẽ như sau: 127.1 - frank [10/Oct/2000:13:55:36 -0700] “GET /apache_pb.08 [en] (Win98;I;Nav)” Các trường được bổ sung bao gồm: http://www.html (tương ứng kí hiệu \”%{Referer}i\”): Cho biết trang web người dùng đã thăm trước khi đến trang hiện tại.08 [en] (Win98; I ;Nav)” (tương ứng kí hiệu \”%{User- agent}i\”): Cho biết thông tin về trình duyệt và hệ điều hành máy khách đang sử dụng.
W3C Extended Log Format Hiện nay, W3C Extended Log Format [6] đề xuất bởi The World Wide Web Consortium (W3C) là định dạng được sử dụng rộng rãi nhất và được hầu hết các máy chủ web hỗ trợ. Định dạng web log này có các khả năng: Hỗ trợ kiểm soát những thông tin sẽ được ghi trong web log. Hỗ trợ một định dạng web log chung cho cả proxy, máy khách và máy chủ web. Cung cấp một cơ chế mạnh mẽ xử lý các vấn đề và các ký tự thoát (character escaping).
Cho phép trao đổi dữ liệu nhân khẩu học (demographic). Hỗ trợ tổng hợp dữ liệu. 8 Một file log theo định dạng W3C Extended Log chứa một tập hợp các dòng văn bản thuần gồm các ký tự theo chuẩn ASCII (hoặc Unicode) được phân tách bởi ký tự xuống dòng (LF hoặc CRLF). Các file log khác nhau sẽ có ký tự kết thúc dòng khác nhau tùy thuộc vào quy ước kết thúc dòng của nền tảng hoạt động.
Trên mỗi dòng thường có một chỉ thị (directive) hoặc một đầu mục (entry). Phần tiếp theo mô tả chi tiết về 2 thành phần này. - Các chỉ thị: Các dòng bắt đầu bằng ký tự “#” thì sẽ chứa các chỉ thị. Chúng chứa các thông tin mô tả về file log.
Các chỉ thị với định dạng W3C Extended Log bao gồm: Version: <integer>.<integer>: Chỉ ra phiên bản của định dạng log được sử dụng. Fields: [<specifier>…]: Liệt kê danh sách các trường được ghi lại trong tệp log. Software: string: Chỉ ra phần mềm tạo ra log: Start-Date: <date> <time>: Ngày và giờ bắt đầu ghi log. End-Date: <date> <time>: Ngày và giờ kết thúc ghi log.
Date: <date> <time>: Ngày và giờ thêm vào các đầu mục trong log. Remark: <text>: Các thông tin chú thích. Thông thường, các công cụ phân tích log sẽ bỏ qua dữ liệu trong trường này. Các chỉ thị Version và Fields là bắt buộc và đứng trước tất cả các trường khác trong file log.
Chỉ thị Fields liệt kê một danh sách định danh của trường, xác định thông tin được ghi trong mỗi đầu mục. Các định danh trường có thể là một trong số các kiểu sau: Identifier (tên nhận dạng), Prefix-identifier (tiền tố tên nhận dạng) và Prefix (header) (tiền tố (đề mục)).1: Danh sách các tiền tố Tiền tố Ý nghĩa c Client s Server r Remote s Client đến Server 9 sc Server đến Client sr Server đến Remote Server (được dùng bởi proxy) rs Remote Server đến Server (được dùng bởi proxy) x Định danh riêng của ứng dụng Bảng 1.2: Các định danh không yêu cầu có tiền tố Định Ý nghĩa danh date Ngày giao dịch hoàn thành, kiểu <date> time Thời gian (giờ) giao dịch hoàn thành, kiểu <time> time- Thời gian để giao dịch được hoàn thành tính bằng taken giây, kiểu <fixed> bytes Số byte đã truyền, kiểu <integer> Ghi lại số lần cache hit, nếu bằng 0 thì tức là cache cached miss, kiểu <integer> Bảng 1.1 liệt kê danh sách các tiền tố (Prefix) cho các định danh, bảng 1.2 cung cấp danh sách các định danh không yêu cầu có tiền tố và bảng 1.3 liệt kê danh sách các định danh phải có tiền tố.