利用 Filebeat 在 CentOS 上开展安全审计
一 架构与准备
- 组件选型:在受控的 Elastic Stack 中,使用 Filebeat 采集 CentOS 安全相关日志,发送至 Elasticsearch 存储与检索,通过 Kibana 进行审计分析与可视化。
- 采集范围:优先覆盖认证与系统关键事件,包括 /var/log/secure(SSH 登录、sudo 等)与 /var/log/messages(系统级安全事件)。
- 版本建议:选择与 Elasticsearch/Kibana 版本一致的 Filebeat,避免兼容性问题;本文示例以 7.x 配置为例,8.x 在模块与安全配置上名称略有差异但思路一致。
二 安装与最小化采集配置
- 安装 Filebeat(YUM 或 RPM):
- YUM 安装:sudo yum install -y filebeat
- RPM 安装:wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.14.0-x86_64.rpm && sudo rpm -ivh filebeat-7.14.0-x86_64.rpm
- 编辑主配置 /etc/filebeat/filebeat.yml,仅采集安全相关日志并添加审计标识字段:
- 最小化输入配置:
filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/secure
- /var/log/messages
exclude_lines: [“DBG”]
exclude_files: [“.gz”]
fields:
type: “system_audit”
log_topic: “security”
fields_under_root: true
- 输出到 Elasticsearch(测试环境示例):
output.elasticsearch:
hosts: [“localhost:9200”]
index: “system-audit-%{yyyy.MM.dd}”
- 生产环境启用认证(如启用 X-Pack 安全):
output.elasticsearch:
hosts: [“https://elasticsearch-host:9200”]
username: “elastic”
password: “your_password”
- 启动与验证:
- 启动服务:sudo systemctl daemon-reload && sudo systemctl enable --now filebeat
- 查看自身日志:tail -f /var/log/filebeat/filebeat,出现 “Successfully sent log lines” 或 “Publish event” 表示已成功发送。
三 启用模块与日志解析增强
- 启用系统与安全模块(推荐):
- 系统模块:sudo filebeat modules enable system
- 审计模块:sudo filebeat modules enable auditd
- 按需调整模块配置(/etc/filebeat/modules.d/system.yml、/etc/filebeat/modules.d/auditd.yml),例如仅采集与安全相关的事件子集。
- 解析与丰富处理(processors):
- 结构化解析示例(对 secure 日志进行字段拆解,便于检索与聚合):
filebeat.inputs:
- type: log
paths: [“/var/log/secure”]
processors:
- dissect:
tokenizer: “%{timestamp} %{host} %{process}[%{pid}]: %{message}”
field: “message”
target_prefix: “”
- 可结合 grok、rename、drop_fields 等处理器,提取 user、ip、tty、sudo 等关键字段,降低噪音、提升检索效率。
四 输出到 Elasticsearch 与 Kibana 审计分析
- 索引与权限:
- 使用按日滚动索引(如 system-audit-%{yyyy.MM.dd}),便于生命周期管理与合规留存。
- 为 Filebeat 创建 最小权限 专用用户与角色(仅授予目标索引的读权限与元数据查看权限),遵循最小权限原则。
- Kibana 侧配置:
- 创建索引模式:Stack Management > Index Patterns > 新建 system-audit-*。
- 构建审计仪表盘与可视化:如 “SSH 登录失败次数”“sudo 使用频率”“关键服务异常告警趋势”等;在 Discover 中使用关键词过滤(如 Failed password、sudo、invalid user)快速定位安全事件。
五 安全加固与运维要点
- 运行身份与文件权限:
- 以非特权用户运行:创建 elkuser 等专用用户,并在 systemd 单元中设置 User/Group;配置文件 /etc/filebeat/filebeat.yml 权限设为 600,日志与数据目录(如 /var/log/filebeat、/var/lib/filebeat)权限设为 750 并归属运行用户。
- 传输加密与认证:
- 启用 TLS/SSL:在 Filebeat 输出中配置 ssl.enabled: true、证书路径与 ssl.verification_mode(建议 certificate 或 full),确保与 Elasticsearch/Logstash 之间的链路加密与证书校验。
- 网络与最小采集面:
- 通过 firewalld 仅允许可信网段访问下游端口(如 9200/5044);采集侧仅启用必要日志路径与模块,避免采集无关数据扩大攻击面。
- 高可用与监控:
- 配置 Elasticsearch 集群与副本分片,保障审计数据可靠性;启用 Filebeat Monitoring 或外部告警,对进程异常、连接失败、队列积压等进行及时处置。
- 持续更新与基线核查:
- 定期执行 yum update filebeat 获取安全补丁;结合基线检查与审计规则定期复盘,持续优化检测与告警策略。