2024-01-20

【CentOS 7.x】安裝 Filebeat 集中收集 防火牆 Fortigate 的 log

參考資料 ----

  1.  
  2. [root]# rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch
  3.  

打開 CentOS 防火牆 9004 port


編寫 filebeat repo
  1.  
  2. [root]# vi /etc/yum.repos.d/filebeat.repo
  3. # 寫入下列內容
  4. [elastic-8.x]
  5. name=Elastic repository for 8.x packages
  6. baseurl=https://artifacts.elastic.co/packages/8.x/yum
  7. gpgcheck=1
  8. gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
  9. enabled=1
  10. autorefresh=1
  11. type=rpm-md
  12. # 存檔離開
  13.  


安裝 filebeat
  1.  
  2. [root]# yum install -y filebeat
  3.  
  4. # 安裝後, 建議關閉 filebeat.repo 自動更新功能
  5. # enabled=0
  6.  


設定為開機啟動
  1.  
  2. [root]# systemctl enable filebeat
  3.  


啟用收集 Fortinet 防火牆 Fortigatelog 功能
  1.  
  2. [root]# filebeat modules enable fortinet
  3.  
切換到 /etc/filebeat/modules.d/ 下,會看到 fortinet.yml,其他模組因為未啟用,所以會看到其他的檔名皆為 《模組名.yml.disabled》


修改設定檔 /etc/filebeat/modules.d/fortinet.yml
  1.  
  2. - module: fortinet
  3. firewall:
  4. enabled: true 改成 true
  5. var.input: udp 解除註解
  6. var.syslog_host: 0.0.0.0 localhost
  7. var.syslog_port: 9004 解除註解
  8. var.internal_interfaces: [ "LAN" ] 解除註解
  9. # 存檔離開
  10.  


由於 Filebeat 屬於 ELK 系統的其中一個套件,預設是將收集到的 log 再往 ElasticsearchLogstash 送,所以要修改 /etc/filebeat/filebeat.yml, 將 log 存成檔案
  1.  
  2. [root]# vi /etc/filebeat/filebeat.yml
  3. # 必須將其他 output 的設定註解
  4. # 亦即同一時間只能有一個 output 設定
  5. output.file:
  6. path: "/var/log/filebeat"
  7. filename: filebeat # 檔名規則, 在本例:filebeat-西元年月日.ndjson, 內容為 json 格式
  8. rotate_every_kb: 10240 # 每個 log 檔的 size, 若達設定值,
  9. # 則換存新的 log 檔, 在本例, 產生的檔名依序為 filebeat-西元年月日.ndjson, filebeat-西元年月日-1.ndjson, filebeat-西元年月日-2.ndjson, ...
  10. # 預設為 10240 KB
  11. number_of_files: 7 # 保留的檔案數, 若達設定值, 則刪除最舊的檔案, 預設值為 7, 設定值範圍為 2~1024
  12. permissions: 0600 # 檔案權限, 設定值 0600
  13. rotate_on_startup: true # 是否啟動時就存新的 log 檔, 預設值 true
  14. # 存檔離開
  15.  
要注意檔名雖然為 filebeat-西元年月日.ndjson,但換檔的規則是當檔案達設定值才換,並不會每天生出一個新的檔,
所以我想到變通的做法 -- 在 crontab 指定每天重啟 filebeat
只是若同一天重啟 filebeat 一次以上,仍會產生 filebeat-西元年月日-1.ndjson, ...


立即啟動
  1.  
  2. [root]# systemctl start filebeat
  3.  


確認 filebeat 在運行中
  1.  
  2. [root]# systemctl status filebeat
  3.  
切換到 /var/log/filebeat/ 目錄下, 發現已生出檔案 filebeat-西元年月日.ndjson,打開檔案觀察,格式 json


Fortigate 防火牆,設定將 log 往 CentOS 送,由於防火牆不歸老人家管,只聽說此功能為進階設定,在 Fortigate 的圖形界面達不到此目的,必須下指令,陽春的指令如下:
  1.  
  2. config log syslogd setting
  3. set status enable
  4. set format default
  5. set server <安裝 Filebeat CentOS 主機的 IP>
  6. set port 9004
  7.  
  8.  
防火牆的 log 數量非常驚人,不到 1 小時就超過 1G 了!!
管防火牆的高手夥伴還啟用了過濾條件,只將 critical、alert、emergency 三個等級的 log 往 CentOS 送,這樣 log 的數量大幅減少。

log 的等級如下:










沒有留言:

張貼留言