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}" # 从环境变量读取密码