Cảnh hệ thống sập, hoặc có dấu hiệu bị tấn công, và bạn phải lặn ngụp mở từng máy chủ từ Linux, Windows cho đến mò mẫm trên Firewall chỉ để đọc log,đó là một cơn ác mộng thực sự. Hôm nay tôi sẽ chia sẽ một bài Lab/bài viết để giải quyết bài toán đó, hôm nay mình sẽ chia sẻ trọn bộ bí kíp xây dựng một Hệ thống Quản lý Log Tập trung (Centralized Logging) cực kỳ mạnh mẽ. Bài viết này không chỉ là lý thuyết, mà là từng bước thực chiến để tạo ra một "đường ống" hoàn hảo: Thu thập log từ máy chủ Linux (Filebeat), gom log bảo mật từ Windows (Winlogbeat), hứng log thiết bị mạng (Syslog) -> Đẩy qua "trạm trung chuyển" Logstash -> Lưu trữ và trực quan hóa bằng OpenSearch & Dashboards.
Đặc biệt, hệ thống này còn được cấu hình tự động dọn dẹp log cũ sau 30 ngày để bạn hoàn toàn yên tâm.
Đăng nhập với tài khoản và mật khẩu mà bạn đã đặt trước đó, ở đây tôi đang chạy trang OpenSearch trên localhost với tài khoản mật khẩu là admin trên hệ điều hành Ubuntu.
Bí kíp tránh bẫy:Trước khi chạy docker-compose up, bạn bắt buộc phải tạo sẵn file cấu hình để hệ điều hành hiểu đó là tập tin:
Bash
sudo touch ./logstash/pipeline/logstash.conf<br>
Sau đó, cấu hình file logstash.conf để mở 2 cổng quan trọng: Cổng 5044 cho hệ sinh thái Beats (Filebeat/Winlogbeat) và cổng UDP 514 cho Syslog thiết bị mạng.
Để chắc chắn đường ống đã thông, hãy dùng lệnh thần thánh này:
sudo filebeat <span>test</span> output<br>
PowerShell.exe <span>-ExecutionPolicy</span> UnRestricted <span>-File</span> .\<span>install-service</span><span>-winlogbeat</span>.ps1<br><span>Start-Service</span> winlogbeat<br>
Để nghiệm thu xem log từ mọi nơi đã thực sự hội tụ về OpenSearch chưa, hãy vào tab Dev Tools trên Dashboards và chạy:
JSON
GET _cat/indices?v<br>
Với hệ thống OpenSearch & Logstash này, giờ đây dù bạn quản lý 5 máy hay 500 máy chủ/thiết bị mạng, mọi sự kiện bảo mật, mọi lỗi hệ thống đều nằm gọn trong tầm mắt và có thể truy vấn chỉ trong vài mili-giây.
Đặc biệt, hệ thống này còn được cấu hình tự động dọn dẹp log cũ sau 30 ngày để bạn hoàn toàn yên tâm.
Mạng Lưới Logging
Phần 1: Khởi tạo "Trái tim" Hệ thống - OpenSearch & Dashboards
Thay vì cài đặt thủ công phức tạp, chúng ta sẽ dùng Docker Compose để đóng gói toàn bộ hạ tầng lõi.Chỉ cần chuẩn bị một file docker-compose.yml định nghĩa cụm OpenSearch (bảo mật SSL) và giao diện Dashboards.Đăng nhập với tài khoản và mật khẩu mà bạn đã đặt trước đó, ở đây tôi đang chạy trang OpenSearch trên localhost với tài khoản mật khẩu là admin trên hệ điều hành Ubuntu.
Phần 2: Cấu hình Logstash và cái bẫy của Docker
Logstash đóng vai trò nhận toàn bộ log, nhào nặn rồi mới đẩy vào OpenSearch. Ở bước này, có một "cú lừa" kinh điển mà nhiều người mắc phải: Lỗi mount nhầm file thành thư mục trong Docker.Bí kíp tránh bẫy:Trước khi chạy docker-compose up, bạn bắt buộc phải tạo sẵn file cấu hình để hệ điều hành hiểu đó là tập tin:
Bash
sudo touch ./logstash/pipeline/logstash.conf<br>
Sau đó, cấu hình file logstash.conf để mở 2 cổng quan trọng: Cổng 5044 cho hệ sinh thái Beats (Filebeat/Winlogbeat) và cổng UDP 514 cho Syslog thiết bị mạng.
Phần 3: Thu thập Log Linux bằng Filebeat
Trên máy chủ Linux, cài đặt Filebeat cực kỳ nhẹ nhàng. Bạn chỉ cần chỉnh sửa file filebeat.yml, tắt phần output ra Elasticsearch đi và trỏ nó về địa chỉ IP của máy chủ Logstash qua cổng 5044.Để chắc chắn đường ống đã thông, hãy dùng lệnh thần thánh này:
sudo filebeat <span>test</span> output<br>
Phần 4: Chinh phục Windows với Winlogbeat
Việc thu thập Event Logs của Windows (đăng nhập, thay đổi chính sách...) cần dùng Winlogbeat. Quá trình cấu hình winlogbeat.yml tương tự Filebeat, nhưng khâu cài đặt Service hay gặp 2 lỗi kinh điển:- Lỗi không thấy file .yml: Do Notepad mặc định chỉ hiện file .txt. Phải đổi sang All Files mới thấy.
- Lỗi chạy script: Tuyệt đối không dùng CMD. Phải mở PowerShell (Run as Administrator) và dùng lệnh vượt quyền hạn chế để cài đặt:
PowerShell.exe <span>-ExecutionPolicy</span> UnRestricted <span>-File</span> .\<span>install-service</span><span>-winlogbeat</span>.ps1<br><span>Start-Service</span> winlogbeat<br>
[Ảnh minh họa 4: Chụp màn hình cửa sổ PowerShell nền xanh]Mẹo chụp ảnh: Chụp lúc bạn gõ lệnh Start-Service winlogbeat thành công (không có dòng chữ báo lỗi màu đỏ nào).
Phần 5: Bắn Log thiết bị mạng qua cổng Syslog (UDP 514)
Với Switch, Router hay Firewall, chúng ta không thể cài Filebeat. Thay vào đó, thiết bị sẽ bắn thẳng log qua giao thức Syslog (UDP 514) mà Logstash đã mở sẵn ở Phần 2.Để nghiệm thu xem log từ mọi nơi đã thực sự hội tụ về OpenSearch chưa, hãy vào tab Dev Tools trên Dashboards và chạy:
JSON
GET _cat/indices?v<br>
Phần 6: Trực quan hóa và Quản lý Vòng đời Dữ liệu (ILM/ISM)
Hệ thống sẽ sập nếu log đầy ổ cứng. Do đó, thiết lập chính sách tự động dọn dẹp là bắt buộc.- Tạo Index Pattern: Gom tất cả log thành một mối bằng pattern logs-* với time field là @timestamp.
- Thiết lập ISM Policy: Viết một chính sách (Policy) trong Dev Tools để giữ trạng thái dữ liệu (Hot) và tự động xóa (Delete) đối với các index min_index_age: "30d" (quá 30 ngày).
Kết bài
Việc xây dựng một hệ thống Centralized Logging nghe có vẻ đồ sộ, nhưng khi chia nhỏ thành từng mảnh ghép (Hạ tầng lõi - Thu thập - Trực quan & Quản trị), mọi thứ trở nên cực kỳ rõ ràng và logic.Với hệ thống OpenSearch & Logstash này, giờ đây dù bạn quản lý 5 máy hay 500 máy chủ/thiết bị mạng, mọi sự kiện bảo mật, mọi lỗi hệ thống đều nằm gọn trong tầm mắt và có thể truy vấn chỉ trong vài mili-giây.