[root]# rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch
打開 CentOS 防火牆 9004 port
[root]# vi /etc/yum.repos.d/filebeat.repo # 寫入下列內容 [elastic-8.x] name=Elastic repository for 8.x packages baseurl=https://artifacts.elastic.co/packages/8.x/yum gpgcheck=1 gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch enabled=1 autorefresh=1 type=rpm-md # 存檔離開
安裝 filebeat
[root]# yum install -y filebeat # 安裝後, 建議關閉 filebeat.repo 自動更新功能 # enabled=0
設定為開機啟動
[root]# systemctl enable filebeat
啟用收集 Fortinet 防火牆 Fortigate 的 log 功能
[root]# filebeat modules enable fortinet
切換到 /etc/filebeat/modules.d/ 下,會看到 fortinet.yml,其他模組因為未啟用,所以會看到其他的檔名皆為 《模組名.yml.disabled》
修改設定檔 /etc/filebeat/modules.d/fortinet.yml
- module: fortinet firewall: enabled: true 改成 true var.input: udp 解除註解 var.syslog_host: 0.0.0.0 或 localhost var.syslog_port: 9004 解除註解 var.internal_interfaces: [ "LAN" ] 解除註解 # 存檔離開
由於 Filebeat 屬於 ELK 系統的其中一個套件,預設是將收集到的 log 再往 Elasticsearch 或 Logstash 送,所以要修改 /etc/filebeat/filebeat.yml, 將 log 存成檔案
[root]# vi /etc/filebeat/filebeat.yml # 必須將其他 output 的設定註解 # 亦即同一時間只能有一個 output 設定 output.file: path: "/var/log/filebeat" filename: filebeat # 檔名規則, 在本例:filebeat-西元年月日.ndjson, 內容為 json 格式 rotate_every_kb: 10240 # 每個 log 檔的 size, 若達設定值, # 則換存新的 log 檔, 在本例, 產生的檔名依序為 filebeat-西元年月日.ndjson, filebeat-西元年月日-1.ndjson, filebeat-西元年月日-2.ndjson, ... # 預設為 10240 KB number_of_files: 7 # 保留的檔案數, 若達設定值, 則刪除最舊的檔案, 預設值為 7, 設定值範圍為 2~1024 permissions: 0600 # 檔案權限, 設定值 0600 rotate_on_startup: true # 是否啟動時就存新的 log 檔, 預設值 true # 存檔離開要注意檔名雖然為 filebeat-西元年月日.ndjson,但換檔的規則是當檔案達設定值才換,並不會每天生出一個新的檔,
所以我想到變通的做法 -- 在 crontab 指定每天重啟 filebeat
只是若同一天重啟 filebeat 一次以上,仍會產生 filebeat-西元年月日-1.ndjson, ...
立即啟動
[root]# systemctl start filebeat
確認 filebeat 在運行中
[root]# systemctl status filebeat
切換到 /var/log/filebeat/ 目錄下, 發現已生出檔案 filebeat-西元年月日.ndjson,打開檔案觀察,格式 json
到 Fortigate 防火牆,設定將 log 往 CentOS 送,由於防火牆不歸老人家管,只聽說此功能為進階設定,在 Fortigate 的圖形界面達不到此目的,必須下指令,陽春的指令如下:
config log syslogd setting set status enable set format default set server <安裝 Filebeat 的 CentOS 主機的 IP> set port 9004
防火牆的 log 數量非常驚人,不到 1 小時就超過 1G 了!!
管防火牆的高手夥伴還啟用了過濾條件,只將 critical、alert、emergency 三個等級的 log 往 CentOS 送,這樣 log 的數量大幅減少。
log 的等級如下:
沒有留言:
張貼留言