1. Rsyslog là gì?
- Rsyslog ( The rocket-fast System for log processing) là một phần mềm mã nguồn mở được sử dụng để chuyển tiếp các log message đến một máy chủ lưu trữ log tập trung.
- Rsyslog sử dụng một trong 2 giao thức UDP hoặc TCP cho việc truyền tải log từ client tới server tùy theo admin cấu hình.
- Bên cạnh đó Rsyslog đã được cài đặt sẵn trên các hệ điều hành Unix - Linux.
2. Hướng dẫn cài đặt và cấu hình Rsyslog Server trên CentOS:
- Như đã đề cập ở trên Rsyslog đã được cài đặt sẵn trên các hệ điều hành Linux và CentOS là một trong các hệ điều hành đó.
- Chúng ta cùng tiến vào bước tiếp theo đó là cấu hình Rsyslog Server.
- Bước 1: Chỉnh sửa file cấu hình Rsyslog
nano /etc/rsyslog.conf
- Bỏ dấu # 2 dòng sau tại mục Provides TCP syslog reception vì chúng ta sẽ sử dụng giao thức TCP
# Provides TCP syslog reception
$ModLoad imtcp
$InputTCPServerRun 514
- Để có thể dễ dàng hơn trong việc quản lý log chúng ta sẽ tạo các thư mục lưu riêng đối với từng máy client bằng cách thêm đoạn code sau vào cuối file rsyslog.conf
- Trường hợp 1: Nếu muốn lưu tên thư mục là IP của Client thì sử dụng câu lệnh sau:
$template RemoteServer,
"/var/log/%fromhost-ip%/%SYSLOGFACILITY-TEXT%.log"
*.* ?RemoteServer
- Trường hợp 2: Nếu muốn lưu tên thư mục là tên máy Client (hostname) thì sử dụng các câu lệnh sau:
$template RemoteServer,
"/var/log/%HOSTNAME%/%SYSLOGFACILITY-TEXT%.log"
*.* ?RemoteServer
- Ở ví dụ này mình sẽ sử dụng Lưu tên thư mục theo Hostname:
- Nhấn tổ hợp phím Ctrl + O và Enter sau đó nhấn Ctrl + X để thoát chỉnh sửa file.
- Bước 2: Mở port 514 là port của Rsyslog trên firewall CentOS Server.
firewall-cmd --permanent --add-port=514/udp
firewall-cmd --permanent --add-port=514/tcp
firewall-cmd --reload
- Bước 3: Khởi động lại Rsyslog Server và kiểm tra xem Server có đang lắng nghe trên cổng 514 hay chưa.
systemctl restart rsyslog
- Để kiểm tra Rsyslog có đang lắng nghe trên cổng 514 qua giao thức UDP hay không ta sử dụng câu lệnh sau:
netstat -una | grep 514
- Do chúng ta không mở nhận log qua giao thức UDP nên không có kết quả trả về.
- Để kiểm tra Rsyslog có đang lắng nghe trên cổng 514 qua giao thức TCP hay không ta sử dụng câu lệnh sau:
netstat -tna | grep 514
- Ta có thể thấy được netstat đã trả về kết quả cho thấy Server đang lắng nghe trên port 514.
3. Cấu hình Rsyslog Client:
- Ta có sơ đồ sau:
- Thêm 1 trong 2 dòng sau tùy vào sử dụng giao thức UDP hoặc TCP vào file /etc/rsyslog.conf để khai báo Rsyslog Server.
- Đối với giao thức UDP:
*.* @IP_Rsyslog_Server
- Đối với giao thức TCP:
*.* @@IP_Rsyslog_Server
- Đối với CentOS-Client:
- Do ở trên chúng ta đã cấu hình Rsyslog Server nhận log message qua giao thức TCP nên trên client chúng ta cũng sẽ cấu hình sử dụng giao thức TCP.
- Bước 1: Tiến hành mở file rsyslog.conf để khai báo IP của Rsyslog Server:
nano /etc/rsyslog.conf
- Như sơ đồ ở trên chúng ta sẽ thêm câu lệnh sau để khai báo địa chỉ IP của Rsyslog Server. Lưu ý thêm tại mục RULE.
*.* @@192.168.1.28
- Nhấn tổ hợp phím Ctrl + O và Enter sau đó nhấn Ctrl + X để thoát chỉnh sửa file.
- Bước 2: Khởi động lại dịch vụ Rsyslog bằng câu lệnh sau:
systemctl restart rsyslog
- Đối với Ubuntu:
- Bước 1: Tiến hành mở file rsyslog.conf để khai báo IP của Rsyslog Server:
sudo nano /etc/rsyslog.d/50-default.conf
- Thêm câu lệnh sau vào file:
*.* @@192.168.1.28
- Nhấn tổ hợp phím Ctrl + O và Enter sau đó nhấn Ctrl + X để thoát chỉnh sửa file.
- Bước 2: Khởi động lại dịch vụ Rsyslog bằng câu lệnh sau:
systemctl restart rsyslog
4. Kiểm tra log đã được đẩy lên Rsyslog Server
- Để kiểm tra session giữa Rsyslog Server và Client đã thiết lập chưa chúng ta sử dụng câu lệnh sau:
netstat -tna |grep 514
- Cài đặt tcpdump để bắt gói tin log từ CentOS-Client và Ubuntu
sudo yum -y install tcpdump
- Sau khi cài đặt xong chạy câu lệnh sau:
tcpdump -nni <ten_card_mang> port 514
- Kiểm tra tại thư mục /var/log để xem các thư mục log đã được tạo hay chưa:
cd /var/log
ls
- Trên đây là hướng dẫn cấu hình Rsyslog Server trên CentOS và cách gửi log từ các client lên Rsyslog Server. Chúc các bạn thành công.
Author: Trí Tạ
Đăng nhận xét