ubuntu

如何利用Ubuntu Filebeat进行安全审计

小樊
42
2025-10-08 11:57:23
栏目: 智能运维

如何在Ubuntu上利用Filebeat进行安全审计

1. 安装与基础配置

首先在Ubuntu系统上安装Filebeat(推荐通过Elastic APT仓库安装以确保版本最新):

# 添加Elastic APT仓库
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
echo "deb https://artifacts.elastic.co/packages/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-8.x.list
sudo apt-get update
sudo apt-get install filebeat

安装完成后,编辑主配置文件/etc/filebeat/filebeat.yml,配置输入源(指定安全日志路径)和输出目标(如Elasticsearch):

filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /var/log/auth.log    # Ubuntu系统认证日志(Debian系)
    - /var/log/secure      # RHEL系系统认证日志(若适用)
    - /var/log/syslog      # 系统通用日志(可选,包含部分安全事件)

output.elasticsearch:
  hosts: ["localhost:9200"]  # 替换为实际的Elasticsearch地址
  index: "security-audit-%{+yyyy.MM.dd}"  # 安全审计专用索引

保存配置后,启动Filebeat并设置开机自启:

sudo systemctl start filebeat
sudo systemctl enable filebeat

2. 关键安全设置

2.1 启用TLS/SSL加密传输

为防止日志在传输过程中被窃取或篡改,需配置TLS加密。首先生成自签名证书(或使用Let’s Encrypt获取正式证书):

sudo mkdir -p /etc/filebeat/certs
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
  -keyout /etc/filebeat/certs/filebeat.key \
  -out /etc/filebeat/certs/filebeat.crt

然后在filebeat.yml中配置证书路径:

output.elasticsearch:
  hosts: ["localhost:9200"]
  ssl.certificate_authorities: ["/etc/filebeat/certs/filebeat.crt"]  # CA证书路径
  ssl.certificate: "/etc/filebeat/certs/filebeat.crt"                # 客户端证书
  ssl.key: "/etc/filebeat/certs/filebeat.key"                        # 客户端私钥
  ssl.verify_mode: full                                              # 严格验证证书

2.2 配置认证与权限控制

启用Elasticsearch的X-Pack安全功能(默认开启),创建专用用户并分配最小权限:

# 进入Elasticsearch容器(若使用Docker)或直接操作
curl -X POST "localhost:9200/_security/user/filebeat_audit?pretty" -H 'Content-Type: application/json' -d'
{
  "password" : "StrongPassword123!",
  "roles" : [ "security_audit" ],
  "full_name" : "Filebeat Audit User"
}'

security_audit角色分配仅能读取安全日志的权限(通过Kibana的Dev Tools或Elasticsearch API):

POST /_security/role/security_audit
{
  "cluster": [],
  "indices": [
    {
      "names": ["security-audit-*"],
      "privileges": ["read", "view_index_metadata"]
    }
  ]
}

最后在filebeat.yml中配置认证信息:

output.elasticsearch:
  hosts: ["localhost:9200"]
  username: "filebeat_audit"
  password: "StrongPassword123!"

2.3 最小化数据采集与权限隔离

仅采集必要的安全日志(如认证失败、sudo使用、SSH登录等),减少数据传输量和攻击面:

filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /var/log/auth.log
  include_lines: ['(?i)fail|error|invalid|denied|sudo|ssh']  # 正则匹配安全相关行
  exclude_lines: ['dbg', 'verbose']                          # 排除调试信息

非特权用户(如elkuser)运行Filebeat,降低权限风险:

sudo useradd -r -s /usr/sbin/nologin elkuser
sudo chown -R elkuser:elkuser /etc/filebeat /var/lib/filebeat /var/log/filebeat
sudo systemctl edit filebeat

在编辑器中添加(强制以elkuser身份运行):

[Service]
User=elkuser
Group=elkuser

3. 利用Filebeat模块增强安全审计

Filebeat内置Auditd模块(Linux审计框架),可解析结构化的安全事件(如用户命令执行、文件访问、网络连接),无需手动编写正则:

sudo filebeat modules enable auditd

编辑/etc/filebeat/modules.d/auditd.yml,配置Auditd日志路径和字段映射:

- module: auditd
  log:
    enabled: true
    var.paths: ["/var/log/audit/audit.log"]
    var.tags: ["security", "auditd"]

加载模块配置并重启Filebeat:

sudo filebeat setup --modules auditd
sudo systemctl restart filebeat

通过Auditd模块,可在Kibana中查看用户登录事件user_login)、文件权限变更file_modify)、sudo使用记录command_exec)等结构化数据,提升审计效率。

4. 监控与维护

4.1 监控Filebeat自身状态

配置Filebeat日志记录(便于排查故障),编辑/etc/filebeat/filebeat.yml

logging.level: info
logging.to_files: true
logging.files:
  path: /var/log/filebeat
  name: filebeat.log
  keepfiles: 7  # 保留7天日志
  permissions: 0640

启动后,通过以下命令查看Filebeat运行状态:

sudo systemctl status filebeat
sudo journalctl -u filebeat -f  # 实时查看日志

4.2 定期更新与安全审计

保持Filebeat及依赖组件(如Elasticsearch、Kibana)为最新版本,及时修复安全漏洞:

sudo apt-get update && sudo apt-get upgrade filebeat

定期审查Filebeat配置(如输入路径、输出认证信息),确保符合安全策略;同时监控Elasticsearch中的安全索引(security-audit-*),设置异常告警(如频繁的登录失败、sudo滥用)。

5. 可视化与告警(可选)

通过Kibana创建安全审计仪表板,展示关键指标(如每日登录失败次数、SSH登录来源分布、sudo使用频率),并设置告警规则(如“1小时内登录失败超过5次”触发邮件/Slack通知)。这一步需安装Kibana并配置索引模式(匹配security-audit-*),此处不再展开详细步骤。

0
看了该问题的人还看了