如何在Ubuntu上利用Filebeat进行安全审计
首先在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
为防止日志在传输过程中被窃取或篡改,需配置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 # 严格验证证书
启用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!"
仅采集必要的安全日志(如认证失败、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
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
)等结构化数据,提升审计效率。
配置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 # 实时查看日志
保持Filebeat及依赖组件(如Elasticsearch、Kibana)为最新版本,及时修复安全漏洞:
sudo apt-get update && sudo apt-get upgrade filebeat
定期审查Filebeat配置(如输入路径、输出认证信息),确保符合安全策略;同时监控Elasticsearch中的安全索引(security-audit-*
),设置异常告警(如频繁的登录失败、sudo滥用)。
通过Kibana创建安全审计仪表板,展示关键指标(如每日登录失败次数、SSH登录来源分布、sudo使用频率),并设置告警规则(如“1小时内登录失败超过5次”触发邮件/Slack通知)。这一步需安装Kibana并配置索引模式(匹配security-audit-*
),此处不再展开详细步骤。