Graylog 是一套成熟且功能強大的記錄收集與分析系統,近幾年來我已經分享過許多經驗,例如:
開源記錄集中管理系統:Graylog (一)
https://ithelp.ithome.com.tw/articles/10222725
開源記錄集中管理系統:Graylog (二)
https://ithelp.ithome.com.tw/articles/10223191
Graylog Open 打造資安戰情中心經驗分享 [2024/05/16] @台灣資安大會
https://www.slideshare.net/slideshow/graylog-open/268616850
節省工具箱 Jason Tools: Graylog 相關文章
http://blog.jason.tools/search/label/Graylog
延續我過去的傳統,為了以快速上線使用為目標,本系列將直接以先實作後詳解的方式,協助各位朋友儘快導入 Graylog 的應用。
在本次的系列文章中,將會採用 Graylog Open 版本進行實作,它是 Graylog 方案中唯一開源的版本,也是最容易入手與上手自建的版本。
Graylog 採用 Java 開發,可以運作在多種 Linux 發行版本,以下是官方列舉的支援清單:
本系列文章將以 Ubuntu 22.04 做為教學範例。
補充:
Graylog 也支援 Docker 容器形式部署,不過這未在本系列文章的討論範圍。
Graylog 可以安裝在實體機、虛擬機或者容器,對於資源的需求取決於應用場景的記錄數量,在進入使用的初期,我們可以先從以下規格入門:
Graylog 除了自身以外,採用了多種成熟的開源軟體套件搭配應用,深度整合後提供強大的系統能力。下圖是它的相關軟體架構圖。
Graylog 軟體架構圖
圖中灰色的區塊是指安裝 Graylog 伺服器的主機,裡面包含以下主要三大套件:
題外話:
網路上有部份文章提到 Graylog 搜尋記錄快的原因在於
它將所有 Log 存放至 MongoDB
,這是不正確的資訊。
在安裝這三大套件時,需要留意 Graylog 官方所列出的 Graylog 相容性清單:
Graylog 版本與套件相容性清單
請準備一部事先安裝好的 Ubuntu Server 22.04 版本,設定好網路可連通後,接著即可進行以下初始設定作業。
檢查處理器是否支援 AVX 指令集
lscpu | grep avx
執行後如有出現 Flags 資訊即表示支援,若無任何資訊顯示,則需要檢視硬體規格或虛擬機的處理器設定是否正確。
檢視處理器 AVX 指令集能力
技巧:
若是搭配 Proxmox VE 虛擬機,可將客體機的 CPU 類型選擇 Haswell、Skylake,或直接選用 Host。
設定正確時區 (台北時區)
sudo timedatectl set-timezone Asia/Taipei
將所有套件升級至最新版本
sudo apt update
sudo apt ugprade
安裝相關工具
sudo apt install -y net-tools htop iftop python3-pip glances nano vim curl gnupg
上述作業全部完成後,建議重新開機。
準備軟體套件金鑰
sudo wget -qO- 'http://keyserver.ubuntu.com/pks/lookup?op=get&search=0xf5679a222c647c87527c2f8cb00a0bd1e2c63c11' | sudo apt-key add -
curl -fsSL https://pgp.mongodb.com/server-7.0.asc | sudo gpg -o /usr/share/keyrings/mongodb-server-7.0.gpg --dearmor
準備 MongoDB 套件來源
# 設定套件庫來源
sudo echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-7.0.gpg ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/7.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-7.0.list
# 更新套件庫清單
sudo apt update
安裝 MongoDB 套件
sudo apt install mongodb-org
設為開機啟動與立即啟動 MongoDB 服務
sudo systemctl daemon-reload
sudo systemctl enable mongod.service
sudo systemctl restart mongod.service
檢視 MongoDB 服務執行狀況
sudo systemctl status mongod.service
當服務顯示為 active (running)
時,即表示正常運作。
檢視 OpenSearch 服務狀況
準備軟體套件金鑰
sudo curl -o- https://artifacts.opensearch.org/publickeys/opensearch.pgp | sudo gpg --dearmor --batch --yes -o /usr/share/keyrings/opensearch-keyring
準備 OpenSearch 套件來源
# 設定套件庫來源
sudo echo "deb [signed-by=/usr/share/keyrings/opensearch-keyring] https://artifacts.opensearch.org/releases/bundle/opensearch/2.x/apt stable main" | sudo tee /etc/apt/sources.list.d/opensearch-2.x.list
# 更新套件庫清單
sudo apt update
安裝 OpenSearch 指定版本套件與指定管理者密碼
sudo env OPENSEARCH_INITIAL_ADMIN_PASSWORD='Y0urP@$$w0rd****' apt install opensearch=2.15.0
說明一:
目前在相容性清單上所列,Graylog 6.x 最新支援到 OpenSearch 2.15.x,因此我們需要特別限定版本以免過高。
說明二:
自 OpenSearch 2.12 版本開始,要求需要指定 ADMIN PASSWORD 且密碼還需要滿足複雜性要求,否則無法正確完成安裝程序。
固定 OpenSearch 版本
sudo apt-mark hold opensearch
設定 OpenSearch 當中提供 Graylog 所需部份
# 編輯設定檔
sudo nano /etc/opensearch/opensearch.yml
# 將檔案內的內容以註解掉,增加下面內容
cluster.name: graylog
node.name: ${HOSTNAME}
discovery.type: single-node
network.host: 0.0.0.0
action.auto_create_index: false
plugins.security.disabled: true
path.data: /var/lib/opensearch
path.logs: /var/log/opensearch
設定 OpenSearch 記憶體配置
# 編輯設定檔
sudo nano /etc/opensearch/jvm.options
# 找到 Xms 與 Xmx 設定值,將它修改為這台主機記憶體的 50%
# 例如這台主機有 8GB,Xms 與 Xmx 就設定為 4g
-Xms4g
-Xmx4g
調整處理大量索引時效能參數
sudo sysctl -w vm.max_map_count=262144
echo 'vm.max_map_count=262144' | sudo tee -a /etc/sysctl.conf > /dev/null
設為開機啟動與立即啟動 OpenSearch 服務
sudo systemctl daemon-reload
sudo systemctl enable opensearch.service
sudo systemctl start opensearch.service
檢視 OpenSearch 服務執行狀況
sudo systemctl status opensearch.service
下載並執行 Graylog 套件庫設定程式安裝檔
# 下載套件庫設定程式
wget https://packages.graylog2.org/repo/packages/graylog-6.0-repository_latest.deb
# 安裝執行套件庫設定程式
sudo dpkg -i graylog-6.0-repository_latest.deb
# 更新套件庫清單
sudo apt update
安裝 Graylog 套件
sudo apt install graylog-server
產生管理者密碼雜湊值
echo -n "Enter Password: " && head -1 </dev/stdin | tr -d '\n' | sha256sum | cut -d" " -f1
執行後,請輸入要使用的管理密碼並按下 Enter,再將出現的編碼後結果先複製起來,稍候將會使用。
產生管理者密碼雜湊值
產生伺服器金鑰
< /dev/urandom tr -dc A-Z-a-z-0-9 | head -c${1:-96};echo;
執行後會隨機產生一組金鑰,請將它複製起來,稍候會用。
產生伺服器金鑰
修改 Graylog 伺服器設定檔
# 編輯 Graylog 伺服器設定檔
sudo nano /etc/graylog/server/server.conf
# 設定伺服器金鑰,填入稍早隨機產出的金鑰值
password_secret = XnjmzBOkFCtoRqlfISRxV9jGHY6jD2Ln3CMoxP00GBdkFtTGIUVxMvoXtplfI8p3K3Sdv0ooxodwVwAfRGTDgTIxh6b8cVpm
# 設定管理者密碼,填入稍早設定好的管理者密碼雜湊值
root_password_sha2 = 90ecc336d6200b1389eb49c4b557ee42892345c2f727453ae82c96e6de94098e
# 設定管理者時區
root_timezone = Asia/Taipei
# 設定網頁伺服器監聽位址
http_bind_address = 0.0.0.0:9000
# 設定 OpenSearch 連接帳號密碼與位址
# 注意:若 OpenSearch 密碼設定時有特殊符號,記得要將它做 URL 編碼,例如
# @ 改為 %40 | $ 改為 %24 | # 改為 %23 | * 改為 %2A
elasticsearch_hosts = http://admin:Y0urP%40%24%24w0rd%2A%2A%2A%2A@127.0.0.1:9200
修改 Graylog 伺服器設定檔一
修改 Graylog 伺服器設定檔二
修改 Graylog 伺服器設定檔三
設為開機啟動與立即啟動 Graylog 服務
sudo systemctl daemon-reload
sudo systemctl enable graylog-server.service
sudo systemctl start graylog-server.service
檢視 Graylog 服務執行狀況
sudo systemctl status graylog-server.service
檢視必要服務連接埠是否已在監聽
sudo watch netstat -tnpl
執行後會每兩秒更新一次最新的連接埠監聽狀況,直到看見 27017, 9300, 9200, 9000 這四個連接埠均已在監聽,即表示安裝與啟動正確無誤,可按下 Ctrl + C
離開列表。
檢視連接埠監聽狀況
請用瀏覽器開啟 Graylog 主機網址,以範例主機 IP 為 192.168.1.51,其格式為 http://192.168.1.51:9000
。
在登入畫面中輸入預設管理員帳戶 admin,並請輸入稍早所設定的密碼,即可登入。
Graylog 登入介面
登入完成後,可看見 Graylog 系統首頁。從下一篇開始,我們將會介紹 Graylog 的畫面基本配置與使用方式。
Graylog 系統首頁
Graylog Open 打造資安戰情中心經驗分享 [2024/05/16] @台灣資安大會
https://www.slideshare.net/slideshow/graylog-open/268616850
Operating System Packages
https://go2docs.graylog.org/current/downloading_and_installing_graylog/operating_system_packages.htm?tocpath=Installing%20Graylog%7COperating%20System%20Packages%7C_____0
Ubuntu Installation
https://go2docs.graylog.org/current/downloading_and_installing_graylog/ubuntu_installation.html
Docker Installation
https://go2docs.graylog.org/current/downloading_and_installing_graylog/docker_installation.htm?tocpath=Installing%20Graylog%7C_____2