# 目錄 * [開放原始碼日誌集中平台 - Graylog安裝(一)](https://hackmd.io/@-RUDICxLQWeepKhTffJeBQ/rJQ4r_gjp) * [開放原始碼日誌集中平台 - Graylog Sidecar 安裝/介紹(二)](https://hackmd.io/@-RUDICxLQWeepKhTffJeBQ/Hybfp1pia) # Graylog介紹 Graylog是一個開源的事件紀錄分析系統,它的主要功能包括: 1. Web操作介面:提供一個可視化的網頁介面,方便使用者操作和管理 2. 收集多種格式與主機記錄:來自多台不同設備機器的Log檔彙整一處集中管理分析 3. 支援叢集運作機制:可以在多個Graylog節點前增加負載平衡,除了能夠分流大量的Log紀錄外,更能檢查節點是否正常,將連線異常的節點去除 4. 資料內容即時剖析:可以即時分析收到的Log紀錄,並提供各種搜尋語法與分析功能 5. 自訂欄位解析方式:提供多種方式讓使用者自己增加Extractor,例如JSON、Regular expression、Substring等 6. 自訂資訊看板內容:將重要的關鍵資訊找出,並將這些常用的結果數據集中在資訊看板上,以便日後快速查看趨勢或問題所在 7. 警報發送機制:特別注意的事件以相關系統發出警報,或是丟進SOC或SIEM等的資安機制進行反應 ## 心智圖 ![image](https://hackmd.io/_uploads/SycSB6msp.png) # Graylog 架構 * Graylog :接收、處理和顯示日誌數據 * Elasticsearch :存儲Graylog處理的日誌數據 * MongoDB :存儲Graylog配置數據和資訊 ![image](https://hackmd.io/_uploads/HJNiYPy6a.png) [圖片來自如 Graylog官網] ## Graylog叢集 Graylog 提供了叢集環境,可以在多個 Graylog 節點之間實現負載平衡,並檢查節點是否正常,確認系統是否穩定運作 ![image](https://hackmd.io/_uploads/rJrgqvyTa.png) [圖片來自如 Graylog官網] # Garylog 安裝 ### **環境介紹** 作業系統 ubuntu 22.04 **環境準備** 更新系統 ``` sudo apt-get update && sudo apt-get upgrade ``` 更改時間為台灣 ``` timedatectl set-timezone Asia/Taipei ``` 安裝Java11 ``` sudo apt-get install apt-transport-https openjdk-11-jre-headless uuid-runtime pwgen ``` ## 安裝 MongoDB 注意Ubuntu 版本 * 22.04 LTS ("Jammy") * 20.04 LTS ("Focal") MongoDB 僅支援這些平台的 64 位元版本。若要確定您的主機正在執行哪個 Ubuntu 版本,請在主機的終端機上執行下列命令: ``` cat /etc/lsb-release ``` ![image](https://hackmd.io/_uploads/r1Eilmbsa.png) MongoDB 系統使用的公鑰 ``` sudo apt-get install gnupg curl ``` MongoDB 公用 GPG 金鑰 `curl -fsSL https://www.mongodb.org/static/pgp/server-7.0.asc | \ sudo gpg -o /usr/share/keyrings/mongodb-server-7.0.gpg \ --dearmor` MongoDB 建立列表文件 ``` /etc/apt/sources.list.d/mongodb-org-7.0.list ``` 建立檔案 ``` 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-get update ``` 可以指定 MongoDB 的任何可用版本, apt-get但當有新版本可用時將升級套件。為了防止意外升級,您可以將軟體包固定在目前安裝的版本上 ``` echo "mongodb-org hold" | sudo dpkg --set-selections echo "mongodb-org-database hold" | sudo dpkg --set-selections echo "mongodb-org-server hold" | sudo dpkg --set-selections echo "mongodb-mongosh hold" | sudo dpkg --set-selections echo "mongodb-org-mongos hold" | sudo dpkg --set-selections echo "mongodb-org-tools hold" | sudo dpkg --set-selections ``` 初始化系統 如果您不確定您的平台使用哪個 init 系統,請執行以下命令: ``` ps --no-headers -o comm 1 ``` 然後根據結果選擇下面適當的選項卡: * systemd- 選擇下方的systemd (systemctl)標籤。 * init- 選擇下面的System V Init(服務)標籤。 **本文章使用systemd安裝** 啟動 MongoDB ``` sudo systemctl start mongod sudo systemctl enable mongod ``` 驗證 MongoDB 是否已成功啟動 ``` sudo systemctl status mongod ``` ![image](https://hackmd.io/_uploads/BJonOQZo6.png) ## 安裝 Elasticsearch Elasticsearch 是一個開源的分佈式搜尋和分析引擎,用於全文檢索、結構化搜尋和分析,建立在 Apache Lucene 搜尋引擎的基礎上,提供了一個快速、即時的搜索和分析解決方案 ``` # GPG 金鑰 wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add - # Elasticsearch 存儲庫 echo "deb [signed-by=/usr/share/keyrings/elasticsearch-archive-keyring.gpg] https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-7.x.list > /dev/null # 更新 APT 存儲庫 sudo apt-get update # 安裝 Elasticsearch sudo apt-get install -y elasticsearch # 啟動 Elasticsearch 服務 sudo systemctl start elasticsearch # 設置 Elasticsearch 開機啟動 sudo systemctl enable elasticsearch # 設置 Elasticsearch 查看服務 sudo systemctl status elasticsearch ``` ![image](https://hackmd.io/_uploads/r17EFbrja.png) Elasticsearch 7.x 目前需要 Java 11,Java版本過舊會導致無法正常使用,可以使用以下命令檢查 Java 版本 ``` java -version ``` ## 安裝 Graylog ``` # 安裝軟體包 sudo apt-get update sudo apt-get install -y apt-transport-https openjdk-11-jre-headless uuid-runtime pwgen # Graylog 存儲庫 sudo sh -c 'echo "deb [ arch=amd64 ] https://packages.graylog2.org/repo/debian/ stable 5.2" > /etc/apt/sources.list.d/graylog.list' # Graylog GPG 金鑰 wget https://packages.graylog2.org/repo/packages/graylog-5.2-repository_latest.deb sudo dpkg -i graylog-5.2-repository_latest.deb # 更新 APT 存儲庫信息 sudo apt-get update # 安裝 Graylog sudo apt-get install -y graylog-server # 啟動 Graylog 服務 sudo systemctl daemon-reload sudo systemctl enable graylog-server sudo systemctl start graylog-server ``` **注意** 目前階段看到Graylog 無法啟動是因為密碼(passwd)為空值 ### Garylog Web設定 1. 打開 Graylog 配置文件 /etc/graylog/server/server.conf 進行編輯: ``` sudo vim /etc/graylog/server/server.conf ``` 2. **server.conf** 尋找 http_bind_address 參數,默認情況下,它可能被設置為 **http_bind_address = 127.0.0.1:9000**,將其修改為您伺服器的外部 IP 地址或 **0.0.0.0:9000** ``` http_bind_address = 0.0.0.0:9000 ``` ![image](https://hackmd.io/_uploads/HywwLv0ia.png) 3. 更改時區UTC改為Asia/Taipei ``` root_timezone =Asia/Taipei ``` ![image](https://hackmd.io/_uploads/BJ4RHDRj6.png) 4. 保存文件 5. 重新啟動 Graylog 服務以應用更改: ``` sudo systemctl restart graylog-server sudo systemctl status graylog-server ``` 使用 **systemctl status graylog-serve**會看到發現錯誤,查看Graylog的日誌獲取錯誤信息 ``` sudo vim /etc/graylog/server/server.conf ``` ![image](https://hackmd.io/_uploads/HJMcccjs6.png) 以下圖片log錯誤 原因是: password_secret 此參數被設置為一個非空的字符串,下面文章會介紹該如何新增和修改password_secret ![image](https://hackmd.io/_uploads/HJLvKqjoa.png) 5. Graylog 應該在外部 IP 地址的 9000 端口上聽取連接,可以使用 **netstat** 命令確認服務正在監聽所需的 IP 和端口 ``` sudo netstat -tulpn | grep 9000 ``` ### Garylog密碼設置 因密碼是空值,導致無法正常運作Garylog,需要將password_secret 參數值添加到 Graylog 配置server.conf文件中 1. 生成一個安全的密碼,把他紀錄起來 ``` pwgen -N 1 -s 96 ``` 2. 生產sha256_hash值,把他紀錄起來 ``` echo -n "Enter Password: " && head -1 </dev/stdin | tr -d '\n' | sha256sum | cut -d" " -f1 ``` ![image](https://hackmd.io/_uploads/SJou2ZHsT.png) 3. 在 /etc/graylog/server/server.conf 中,找到 password_secret 和root_password_sha2,將其設置為生成的安全密碼 <aside> 💡 不能將 root_password_sha2 和 password_secret 貼錯,這可能導致後續無法正確登入 Graylog </aside> ``` sudo vim /etc/graylog/server/server.conf ``` ![image](https://hackmd.io/_uploads/rJwh_GriT.png) 4. 保存文件 5. 重新啟動 Graylog 服務 ``` sudo systemctl restart graylog-server sudo systemctl status graylog-server ``` ![image](https://hackmd.io/_uploads/r1Hx5-HsT.png) 使用瀏覽器開啟「000.000.000.000:9000」(請代換為您的IP),帳號/密碼預設為**admin** ![image](https://hackmd.io/_uploads/By_qQGSsp.png) **恭喜!您現在已經成功實現登入後顯示功能 在下一篇文章中,我們將深入介紹 GaryLog 的更多功能和用 敬請期待!** # 參考文件 * [MongoDB Ubuntu 安裝 ](https://www.mongodb.com/docs/manual/tutorial/install-mongodb-on-ubuntu/) * [Garylog官網](https://graylog.org/) * [Garylog-Planning Your Deployment](https://go2docs.graylog.org/5-2/planning_your_deployment/planning_your_deployment.html?tocpath=Planning%20Your%20Deployment%7C_____0) ****