1. 使用非特权用户运行Filebeat
避免以root用户运行Filebeat,降低潜在安全风险。创建专用用户(如filebeat),并设置其权限:
sudo useradd -r -s /sbin/nologin filebeat # 创建无登录权限的系统用户
sudo chown -R filebeat:filebeat /etc/filebeat # 将配置文件所有权转移给该用户
sudo chmod -R 750 /etc/filebeat # 限制配置文件访问权限(所有者可读写执行,组用户可读执行,其他用户无权限)
sudo -u filebeat /usr/share/filebeat/bin/filebeat -e # 以非root用户启动Filebeat
2. 配置TLS/SSL加密传输
通过TLS/SSL加密Filebeat与Elasticsearch之间的数据传输,防止日志数据被窃取或篡改。
sudo mkdir -p /etc/ssl/certs/filebeat
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/certs/filebeat.key -out /etc/ssl/certs/filebeat.crt
/etc/filebeat/filebeat.yml中启用TLS并指定证书路径:output.elasticsearch:
hosts: ["elasticsearch-secure:9200"]
username: "elastic"
password: "your_secure_password"
ssl.enabled: true
ssl.certificate_authorities: ["/etc/ssl/certs/filebeat.crt"] # CA证书路径(验证服务端证书)
ssl.certificate: "/etc/ssl/certs/filebeat.crt" # 客户端证书(可选,双向TLS需配置)
ssl.key: "/etc/ssl/certs/filebeat.key" # 客户端私钥(可选,双向TLS需配置)
3. 严格限制配置文件与日志文件权限
确保Filebeat配置文件(/etc/filebeat/filebeat.yml)和日志文件(/var/log/filebeat/)仅能被授权用户访问:
sudo chmod 600 /etc/filebeat/filebeat.yml # 配置文件仅所有者可读写
sudo chown filebeat:filebeat /etc/filebeat/filebeat.yml
sudo mkdir -p /var/log/filebeat
sudo chown filebeat:filebeat /var/log/filebeat
sudo chmod 750 /var/log/filebeat # 日志目录仅所有者及组用户可访问
4. 配置防火墙限制网络访问
通过防火墙(如ufw或iptables)限制Filebeat的网络访问,仅允许必要的流量:
sudo ufw allow from 127.0.0.1 to any port 9200 # 仅允许本地访问Elasticsearch
sudo ufw allow out to elasticsearch-secure port 9200 proto tcp # 允许Filebeat出站访问Elasticsearch
sudo ufw enable # 启用防火墙
sudo iptables -A INPUT -p tcp --dport 9200 -s 127.0.0.1 -j ACCEPT # 允许本地访问
sudo iptables -A INPUT -p tcp --dport 9200 -j DROP # 拒绝其他IP访问
sudo iptables-save > /etc/iptables/rules.v4 # 保存规则
5. 启用Filebeat内置安全功能
seccomp.default_action: deny # 默认拒绝所有系统调用
seccomp.allowed_syscalls: # 仅允许必要系统调用(根据实际需求调整)
- read
- write
- open
- close
- stat
- fstat
- lseek
- mmap
- mprotect
- munmap
- brk
- rt_sigaction
- rt_sigreturn
mysql、postgresql),减少潜在漏洞:sudo rm -f /etc/filebeat/modules.d/mysql.yml # 示例:删除MySQL模块
6. 定期更新与监控
sudo apt update && sudo apt upgrade filebeat -y
logging.level: info # 日志级别设置为info(或debug用于调试)
logging.to_files: true # 输出日志到文件
logging.files:
path: /var/log/filebeat/filebeat.log
name: filebeat
keepfiles: 7 # 保留7天日志
permissions: 0644 # 日志文件权限
使用监控工具(如Prometheus+Grafana)监控Filebeat的CPU、内存使用情况及连接状态,及时发现异常。7. 证书与密钥安全管理
filebeat.crt)、私钥(filebeat.key)存储在加密分区或密钥管理服务(如HashiCorp Vault)中,避免明文存储。sudo chmod 600 /etc/ssl/certs/filebeat.key # 私钥仅所有者可读
sudo chown filebeat:filebeat /etc/ssl/certs/filebeat.key
8. 认证与授权配置
elastic用户)和角色权限(如filebeat_writer角色),确保只有授权用户能发送日志:output.elasticsearch:
hosts: ["elasticsearch-secure:9200"]
username: "elastic" # 替换为实际用户名
password: "your_secure_password" # 替换为实际密码
ssl.enabled: true
output.elasticsearch:
password: "${ELASTIC_PASSWORD}" # 从环境变量读取密码