如何通过Filebeat检测CentOS系统异常
导读:通过 Filebeat 检测 CentOS 系统异常 一 架构与思路 使用 Filebeat 采集 /var/log/ 下的系统与安全日志,统一发送到 Elasticsearch 或 Logstash;在 Kibana 中做可视化与告警。...
通过 Filebeat 检测 CentOS 系统异常
一 架构与思路
- 使用 Filebeat 采集 /var/log/ 下的系统与安全日志,统一发送到 Elasticsearch 或 Logstash;在 Kibana 中做可视化与告警。
- 建议同时部署 Metricbeat 采集系统指标(CPU、内存、磁盘、网络),与日志联动判断“异常行为+异常指标”的复合场景。
- 在 Elasticsearch/Kibana 中配置告警规则(如 X-Pack Alerting/Watcher 或 Kibana 告警),对关键事件进行实时通知。
二 安装与最小配置
- 安装 Filebeat(以 yum 为例)
- 导入 Elastic GPG 并安装:sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
- 创建 repo 文件 /etc/yum.repos.d/elastic.repo,内容:
- [elastic-8.x]
- name=Elastic repository for 8.x packages
- baseurl=https://artifacts.elastic.co/packages/8.x/yum
- gpgcheck=1
- enabled=1
- autorefresh=1
- type=rpm-md
- 安装:sudo yum install -y filebeat
- 最小配置示例(/etc/filebeat/filebeat.yml)
- filebeat.inputs:
- type: filestream
id: system
enabled: true
paths:
- /var/log/messages
- /var/log/secure
- /var/log/audit/audit.log
- type: filestream
id: system
enabled: true
paths:
- output.elasticsearch:
- hosts: [“es.example.com:9200”]
- setup.kibana:
- host: “kibana.example.com:5601”
- 启动与开机自启:sudo systemctl enable --now filebeat
- filebeat.inputs:
- 验证
- 查看服务:sudo systemctl status filebeat
- 查看采集日志:sudo tail -f /var/log/filebeat/filebeat
三 关键异常场景与检测规则
| 异常场景 | 采集与解析 | 检测逻辑(Kibana/ES 查询或 Watcher 条件) | 建议动作 |
|---|---|---|---|
| 多次登录失败(暴力破解) | 采集 /var/log/secure;用 Ingest Pipeline 或 Logstash grok 解析出 user、src_ip、result | 统计每 5 分钟同一 src_ip 的失败次数 > 5 | 触发告警,封禁来源 IP,记录工单 |
| sudo 提权滥用 | 解析 secure 中 sudo 执行记录 | 出现 root 执行的 sudo 且 success=failed 或异常命令 | 告警并核查是否为合法维护 |
| SSH 异常登录 | 解析 secure 中 sshd 日志 | 非常用端口登录、非常用用户登录、来源地异常 | 告警并联动防火墙 |
| 关键服务崩溃 | 采集 messages 中 systemd 单元状态 | 出现 Failed、Stopped 且服务为 sshd/nginx/mysql 等 | 告警并自动重启或切换备机 |
| 审计规则被篡改 | 采集 audit/audit.log | 删除/修改审计规则(如 -D/-w) | 高优先级告警,立即核查 |
| 可疑内核/系统调用 | 采集 audit/audit.log(syscall) | 非常见系统调用突增、权限提升调用异常 | 告警并取证 |
- 示例 Watcher(每分钟检查 filebeat-* 中 ERROR 日志并告警)
- PUT _watcher/watch/error_log_monitor
- trigger: { schedule: { interval: “1m” } }
- input: { search: { indices: [“filebeat-*”], body: { query: { bool: { must: [ { match: { “log.level”: “error” } } ] } } } }
- condition: { compare: { “ctx.payload.hits.total.value”: { gt: 0 } } }
- actions: { email: { to: “sec-team@example.com”, subject: “Error log alert”, body: “New error logs detected.” } }
- PUT _watcher/watch/error_log_monitor
- 也可在 Kibana > Stack Management > Alerts 中创建规则,条件如:KQL 搜索 “log.level: error”,阈值计数 > 10/1m,动作发送邮件/Slack。
四 可视化与告警落地
- 在 Kibana 创建 Dashboard,使用字段如 host.name、log.level、source.ip、user.name、systemd.unit 构建图表与表格。
- 建立 Index Pattern(如 filebeat-*),在 Discover 中验证字段解析是否正确。
- 配置 告警规则:选择数据视图(filebeat-*)、设置阈值与评估窗口、绑定通知渠道(Email/Slack/Webhook)。
五 故障排查与安全加固
- 排查要点
- 查看 Filebeat 自身日志:tail -f /var/log/filebeat/filebeat;服务状态:systemctl status filebeat
- 校验配置与路径:确认 inputs 路径(如 /var/log/messages、/var/log/secure、/var/log/audit/audit.log)与输出地址正确
- 权限与资源:确保 Filebeat 对日志有读权限,系统资源充足
- 网络与防火墙:开放到 Elasticsearch/Kibana/Logstash 的端口(如 9200/5601/5044)
- 安全加固
- 以 非 root 用户运行 Filebeat,最小化权限
- 限制配置文件与日志文件的访问权限(如 600/644)
- 定期更新 Filebeat 版本,修补安全漏洞
- 通过防火墙仅允许受信任网段访问输出目标
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 如何通过Filebeat检测CentOS系统异常
本文地址: https://pptw.com/jishu/751997.html
