Filebeat检测CentOS系统异常的实践指南
工作原理与总体思路
- Filebeat是轻量级日志采集器,负责从CentOS的系统与业务日志中读取事件并输出到Elasticsearch或Logstash进行集中化存储与处理。它本身不做复杂检测,但配合Kibana的检索、可视化与告警,可快速发现异常模式(如暴力登录、权限变更、服务异常等)。通过集中管理与实时分析,能显著缩短从发现到响应的时间。
部署与关键配置
- 安装与启动(示例)
- 安装:sudo yum install filebeat
- 启动与自启:sudo systemctl start filebeat && sudo systemctl enable filebeat
- 状态与日志:sudo systemctl status filebeat;sudo tail -f /var/log/filebeat/filebeat
- 最小可用配置(采集系统日志并输出到ES)
- filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/messages
- /var/log/secure
- output.elasticsearch:
hosts: [“your-es-host:9200”]
- 解析与丰富
- 使用Ingest Pipelines或Logstash将非结构化消息解析为结构化字段(如timestamp、host、user、process、ip),便于后续规则匹配与聚合。
- 安全与运行
- 建议以非root用户运行,限制配置文件与日志的访问权限,定期更新版本,并通过防火墙仅开放必要端口(如到Elasticsearch/Logstash的通信端口)。
常见异常的检测方法与示例规则
- 暴力登录与失败认证
- 关注日志源:/var/log/secure
- 关键线索:Failed password、invalid user、repeated failed login
- 检测思路:按source.ip与user统计失败次数,设定阈值触发告警(如5分钟内≥5次失败)。
- 提权与关键权限变更
- 线索:sudo、su、pam_unix(sudo:session): session opened/closed、useradd/usermod/groupadd
- 检测思路:匹配命令与返回状态,对root切换与新增高权限账户发出告警。
- 可疑Shell与后门
- 线索:/bin/bash、/bin/sh从非常规路径启动、交互式shell出现在非交互服务中
- 检测思路:对process.executable与cwd异常组合建立基线并告警。
- 服务异常与崩溃
- 线索:systemd单元failed、restarting,segfault、OOM(Out of Memory)
- 检测思路:按unit与host聚合失败次数,结合重启频率与时间段进行异常判定。
- 防火墙与端口异常
- 线索:iptables/nftables拒绝、firewalld策略变更
- 检测思路:对REJECT/DROP与策略变更事件建立规则,关注短时间内大量拒绝事件。
- 数据外泄与异常外连
- 线索:应用或脚本向外网IP异常连接(需与网络侧日志/流量分析联动)
- 检测思路:对destination.ip与bytes进行基线建模,识别突发大流量外连。
- 规则落地方式
- 在Kibana中创建Index Patterns(如 filebeat-*),使用Discover/Lens构建可视化图表,并在Stack Management → Alerts中配置阈值或异常检测规则,触发邮件、Webhook等通知。
告警与可视化落地
- 在Kibana中完成数据接入与解析后,进入Stack Management → Alerts创建规则:
- 条件示例:KQL查询“message: Failed password and event.dataset: system.secure”,统计source.ip在5m窗口内次数,阈值**> 5**。
- 动作示例:发送Email/Slack/Webhook;必要时联动工单或阻断策略。
- 建议同时构建Dashboard,展示:按host与service划分的错误趋势、TOP失败来源IP、提权事件时间线、服务失败排行等,便于日常巡检与根因分析。
故障排查与稳定运行要点
- 查看Filebeat自身日志:tail -f /var/log/filebeat/filebeat,定位启动、采集、输出阶段的报错。
- 校验配置与权限:确认**/etc/filebeat/filebeat.yml**路径、输出地址与协议正确;确保Filebeat对日志文件具备读取权限。
- 资源与端口:用top/htop检查CPU/内存;用netstat/ss排查端口占用与连通性;必要时调整采集批次与队列大小。
- 解析错误定位:若使用Ingest/Logstash解析失败,回退到原始消息,逐步修正grok/ dissect规则,确保字段类型与映射正确。
- 日志轮转与句柄:对logrotate场景开启close_removed: true,避免文件被轮转后句柄未释放导致采集异常或磁盘占满。