1. 安裝Filebeat(Debian默認倉庫)
在Debian系統上,推薦通過官方或Elastic APT倉庫安裝Filebeat,確保軟件包的安全性和可更新性。若使用Elastic APT倉庫,需先導入GPG密鑰并添加倉庫源:
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
echo "deb https://artifacts.elastic.co/packages/8.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-8.x.list
sudo apt-get update && sudo apt-get install filebeat
安裝完成后,Filebeat主配置文件位于/etc/filebeat/filebeat.yml
。
2. 配置文件權限(最小權限原則)
限制Filebeat配置文件和日志文件的訪問權限,防止未經授權的讀取或篡改:
# 創建專用用戶(若未創建)
sudo useradd -r -s /sbin/nologin filebeat
# 設置目錄和文件所有權
sudo chown -R filebeat:filebeat /etc/filebeat
sudo chown -R filebeat:filebeat /var/log/filebeat
# 設置文件權限(配置文件僅root可寫,其他用戶只讀;日志文件僅filebeat可寫)
sudo chmod -R 750 /etc/filebeat
sudo chmod -R 750 /var/log/filebeat
確保Filebeat以專用用戶(如filebeat
)運行,而非root用戶。
3. 啟用TLS/SSL加密(傳輸層安全)
為防止日志數據在傳輸過程中被竊取或篡改,需配置Filebeat與目標服務器(如Elasticsearch、Logstash)之間的TLS加密:
mkdir -p /etc/filebeat/pki/tls/{certs,private}
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/filebeat/pki/tls/private/filebeat.key -out /etc/filebeat/pki/tls/certs/filebeat.crt -subj "/CN=filebeat.example.com"
openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/filebeat/pki/tls/private/ca.key -out /etc/filebeat/pki/tls/certs/ca.crt -subj "/CN=Elastic CA"
filebeat.yml
中指定證書路徑,啟用SSL驗證:output.elasticsearch:
hosts: ["https://elasticsearch.example.com:9200"]
ssl.enabled: true
ssl.certificate_authorities: ["/etc/filebeat/pki/tls/certs/ca.crt"]
ssl.certificate: "/etc/filebeat/pki/tls/certs/filebeat.crt"
ssl.key: "/etc/filebeat/pki/tls/private/filebeat.key"
若連接Logstash,需在對應輸出模塊中添加相同的SSL配置。4. 使用安全認證機制(身份驗證)
結合Elasticsearch的X-Pack安全功能,通過用戶名/密碼或API密鑰認證,確保只有授權的Filebeat實例可發送數據:
output.elasticsearch:
hosts: ["https://elasticsearch.example.com:9200"]
username: "filebeat_user" # 需在Elasticsearch中創建專用用戶并分配最小權限
password: "secure_password"
ssl.enabled: true
ssl.certificate_authorities: ["/etc/filebeat/pki/tls/certs/ca.crt"]
或使用API密鑰(更安全,避免密碼泄露):
output.elasticsearch:
hosts: ["https://elasticsearch.example.com:9200"]
api_key: "id:api_key_value" # 在Elasticsearch中生成API密鑰
ssl.enabled: true
ssl.certificate_authorities: ["/etc/filebeat/pki/tls/certs/ca.crt"]
確保Elasticsearch已啟用X-Pack安全功能(xpack.security.enabled: true
)。
5. 限制網絡訪問(防火墻配置)
通過防火墻(如ufw
或iptables
)限制Filebeat的網絡訪問,僅允許必要的端口和IP地址:
sudo ufw allow from 192.168.1.0/24 to any port 5044 # 僅允許內網IP訪問Logstash端口
sudo ufw allow from 127.0.0.1 to any port 9200 # 僅允許本地訪問Elasticsearch
sudo ufw enable
sudo iptables -A INPUT -p tcp --dport 9200 -s 192.168.1.0/24 -j ACCEPT # 允許內網訪問Elasticsearch
sudo iptables -A INPUT -p tcp --dport 5044 -s 10.0.0.0/8 -j ACCEPT # 允許特定網段訪問Logstash
sudo iptables -A INPUT -p tcp --dport 9200 -j DROP # 拒絕其他IP訪問Elasticsearch
sudo iptables-save > /etc/iptables/rules.v4
限制Filebeat僅能向信任的目標服務器發送數據,避免暴露給公網。
6. 禁用不必要的模塊和功能
減少Filebeat的攻擊面,禁用不需要的輸入模塊、處理器或功能:
filebeat.yml
中注釋或刪除對應模塊配置:filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/app/*.log # 僅保留必要的日志路徑
setup.ilm.enabled: false
add_cloud_metadata
若不需要云環境信息)。7. 監控與審計(及時發現異常)
啟用Filebeat的日志記錄和監控功能,定期檢查日志以發現潛在的安全問題:
filebeat.yml
中設置日志級別和路徑:logging.level: info
logging.to_files: true
logging.files:
path: /var/log/filebeat
name: filebeat.log
keepfiles: 7
permissions: 0640
8. 定期更新與配置審計
保持Filebeat及依賴組件(如Elasticsearch、操作系統)的最新版本,及時修補安全漏洞:
sudo apt-get update && sudo apt-get upgrade filebeat
定期審查filebeat.yml
配置文件,確保未添加不必要的配置項(如測試后未刪除的調試參數),并確認證書有效期(提前更新即將過期的證書)。