随着企业对安全合规要求的提升,日志审计已成为信息系统不可或缺的一环。本实践指南将带你从零搭建一个高性能、可视化的集中日志审计系统,基于:
o Rsyslog:高性能日志收集转发器
o Elasticsearch:日志索引和存储引擎
o Grafana:日志审计与可视化界面
o Logstash(可选):日志解析与过滤处理器
二、系统架构设计图
(生成图见后方)
系统采用以下架构:
o 所有 Linux 服务器通过 Rsyslog 将日志发送至日志中心
o 日志中心通过 Rsyslog + Elasticsearch 存储日志
o Grafana 对接 Elasticsearch,提供图形化界面进行日志检索和告警
三、部署环境准备
组件 | 说明 |
操作系统 | CentOS 7 或 Ubuntu 20+ |
Rsyslog | >= 8.2001 |
Elasticsearch | 7.x / 8.x |
Grafana | >= 8.x |
1. 关闭防火墙与 SELinux(仅测试环境)
# CentOS 示例
systemctl stop firewalld && systemctl disable firewalld
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
四、安装 Rsyslog 服务(客户端与服务器)
1. 安装 Rsyslog
yum install rsyslog -y
# 或 Ubuntu
apt-get install rsyslog -y
2. 启用远程日志发送(客户端)
编辑 /etc/rsyslog.conf,添加:
*.* @192.168.10.10:514 # UDP 方式
# 或
*.* @@192.168.10.10:514 # TCP 方式
重启服务:
systemctl restart rsyslog
五、Rsyslog 服务端配置
1. 启用 Rsyslog 监听端口
编辑 /etc/rsyslog.conf:
# 启用 UDP/TCP 接收功能
module(load="imudp")
input(type="imudp" port="514")
module(load="imtcp")
input(type="imtcp" port="514")
2. 将日志输出到文件或 Elasticsearch(推荐)
使用文件方式:
$template RemoteLogs,"/var/log/remote/%HOSTNAME%/%PROGRAMNAME%.log"
*.* ?RemoteLogs
使用 Elasticsearch:
module(load="omelasticsearch")
action(type="omelasticsearch"
server="127.0.0.1"
serverport="9200"
template="RSYSLOG_Elasticsearch"
dynSearchIndex="on"
searchIndex="syslog-%$YEAR%-%$MONTH%"
)
六、部署 Elasticsearch
# 安装 OpenJDK
yum install java-1.8.0-openjdk -y
# 下载并安装 Elasticsearch
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.17.0-x86_64.rpm
rpm -ivh elasticsearch-7.17.0-x86_64.rpm
# 修改配置文件
vim /etc/elasticsearch/elasticsearch.yml
# 配置监听地址、集群名称等
systemctl enable elasticsearch --now
七、部署 Grafana 进行日志可视化
# 安装
yum install grafana -y
systemctl enable grafana-server --now
# 浏览器访问 http://<IP>:3000
# 默认用户:admin / admin
在 Grafana 添加 Elasticsearch 作为数据源,创建日志仪表盘。
八、实战演示:查看某台服务器登录日志
使用如下 Kibana 查询语法(或在 Grafana 设置查询):
programname:sshd AND message:"Accepted password"
可视化登录日志次数、IP 分布等安全事件。
九、总结与加分项
o 支持多租户、日志归档、鉴权认证可进一步集成 Graylog
o 可结合 Filebeat 进一步优化性能
o 可配合 OSS、Ceph、MinIO 进行长期日志归档