2024-01-20

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

參考資料 ----

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

打開 CentOS 防火牆 9004 port


編寫 filebeat repo
 
[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 防火牆 Fortigatelog 功能
 
[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 再往 ElasticsearchLogstash 送,所以要修改 /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 的等級如下:










沒有留言:

張貼留言