Skip to main content

Graylog 5 安裝及設定 - Debian 11

  BUBU 因最近都在忙著處理公司的事情,沒有時間測試新的系統,那今日有空就將 Graylog 最新版重新安裝並且測試,雖然過程中有讓我卡關但是後來還是有處理好了。

  本篇就是安裝目前官方最新版本記錄下來。

運行環境


本工作室環境都是在 「Proxmox VE 」 虛擬系統上架設,都是以 「 LXC 」模式為主,除非有特殊狀況會告知使用 「 VM 」 模式

  • 系統環境: Debian 11
  • Web 服務: Nginx 1.24

更新系統


  • 更新系統
sudo apt update && sudo apt upgrade -y
  • 安裝必要的套件服務
sudo apt install uuid-runtime pwgen dirmngr gnupg wget net-tools htop iftop iotop python3-pip nano curl -y

安裝MongoDB


  • 新增加 MongoDB 來源庫
wget -qO - https://www.mongodb.org/static/pgp/server-6.0.asc | sudo apt-key add -
echo "deb http://repo.mongodb.org/apt/debian bullseye/mongodb-org/6.0 main" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list
  • 安裝 MongoDB 服務
sudo apt-get update && sudo apt-get install -y mongodb-org
  • 設定 MongoDB 啟動服務
# 重新載入系統設定檔
sudo systemctl daemon-reload

# 開機時自動啟動
sudo systemctl enable mongod.service
or
sudo systemctl enable --now mongod.service

# 啟動 MongoDB 服務
sudo systemctl restart mongod.service

# 查看目前該服務狀態
sudo systemctl --type=service --state=active | grep mongod
or
sudo systemctl status mongod.service

安裝 OpenSearch


112.09.03 BUBU 官方已有公告未來會用 OpenSearch 替換掉 Elasticsearch 這個服務,今日有安裝的 OpenSearch 最新版本的時候會有一些異常的狀況,因 BUBU 是有查到有人在提問此問題,官方有回應這是 BUG 雖然最下面是有說明怎麼處理,但是我目前還沒有查到怎麼處理此問題,那會建議如果要安裝的話先暫時不要用最新版 2.9 待官方看下一版是否會修補此問題,那 BUBU 今日會用上一個版本的來進行安裝。

112.09.20 BUBU 已找到有人怎麼處理 2.9 的問題,以下會做修正怎麼排除 2.9 在檢查狀態出現 yellow 訊息。

112.09.30 BUBU 重新安裝新的 Graylog 時發現官方已釋出新的 2.10 版本,在此版本正常安裝後檢查狀態是 green 訊息。

  • 新增加 OpenSearch 金鑰
curl -o- https://artifacts.opensearch.org/publickeys/opensearch.pgp | sudo gpg --dearmor --batch --yes -o /usr/share/keyrings/opensearch-keyring
  • 新增加 OpenSearch 來源庫
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
  • 安裝 OpenSearch
sudo apt update && sudo apt install opensearch
  • 修改 OpenSearch 設定檔
sudo tee -a /etc/opensearch/opensearch.yml > /dev/null <<EOT
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
EOT
  • 調整 java 記憶體 vim /etc/opensearch/jvm.options ,假設您本機的記憶體是設定 8G 那會建議先拿 4G 提供給服務使用
-Xms4g
-Xmx4g
  • 由於我是在 LXC 上運行的關係,此指參數無法正常執行,這需在 PVE 環境上執行該指令
sudo sysctl -w vm.max_map_count=262144

# 確認是否有修改成功
sysctl -a|grep vm.max_map_count
  • 設定內核參數
sudo echo 'vm.max_map_count=262144' >> /etc/sysctl.conf
  • 設定 OpenSearch 啟動服務
# 重新載入系統設定檔
sudo systemctl daemon-reload

# 開機自動啟動服務
sudo systemctl enable opensearch.service

# 啟動 OpenSearch 服務
sudo systemctl restart opensearch.service
or
sudo systemctl enable --now opensearch.service

# 查檢目前該服務狀態
sudo systemctl --type=service --state=active | grep opensearch.service
or
sudo systemctl status opensearch.service
  • 因在安裝 2.9 版在 status 會出現 yellow 這個問題,因為在新版的有安裝關於資安的套件但對於 graylog 來說是沒有什麼作用因此此套件是可以刪除並且刪除相關的記錄以下是如怎排除非狀況。
# 檢查失敗狀態
curl -X GET http://localhost:9200/_cat/shards?v  | grep UNASSIGNED

# 刪除有關於資安套件
/usr/share/opensearch/bin/opensearch-plugin remove opensearch-security-analytics
/usr/share/opensearch/bin/opensearch-plugin remove opensearch-ml

# 刪除資安記錄
curl -X DELETE http://localhost:9200/.opensearch-sap-log-types-config
curl -X DELETE http://localhost:9200/.opensearch-sap-pre-packaged-rules-config?pretty=true
curl -X DELETE http://localhost:9200/.plugins-ml-config?pretty=true
  • 檢查失敗結果如圖示

  • 檢查 OpenSearch 健康狀況
curl –XGET localhost:9200/_cluster/health?pretty=true

若一切正常,應該會得到以下訊息內容

curl: (3) Failed to convert –XGET to ACE; string contains a disallowed character

{
  "cluster_name" : "graylog",
  "status" : "green",
  "timed_out" : false,
  "number_of_nodes" : 1,
  "number_of_data_nodes" : 1,
  "discovered_master" : true,
  "discovered_cluster_manager" : true,
  "active_primary_shards" : 3,
  "active_shards" : 3,
  "relocating_shards" : 0,
  "initializing_shards" : 0,
  "unassigned_shards" : 0,
  "delayed_unassigned_shards" : 0,
  "number_of_pending_tasks" : 0,
  "number_of_in_flight_fetch" : 0,
  "task_max_waiting_in_queue_millis" : 0,
  "active_shards_percent_as_number" : 100.0
}

安裝 Graylog Server


  • 新增加 Graylog 來源庫
wget https://packages.graylog2.org/repo/packages/graylog-5.2-repository_latest.deb
sudo dpkg -i graylog-5.2-repository_latest.deb
  • 安裝 Graylog 服務
sudo apt-get update && sudo apt-get install graylog-server
  • 設置Graylog管理員的密鑰

利用pwgen輔助工具產生密碼for server.conf中的password_secret

SECRET=$(pwgen -s 96 1)

sudo -E sed -i -e 's/password_secret =.*/password_secret = '$SECRET'/' /etc/graylog/server/server.conf
  • 查看 /etc/graylog/server/server.conf 內容,password_secret 參數如下

graylog-password_secret-01.png

  • 設定 Graylog 管理員 admin 的密碼,由於密碼使用 SHA 雜湊演算法,我們需要把明文密碼轉換為 hash 值,然後賦值給 root_password_sha2 參數。

例如:以下列命令產生密碼為 test1234hash 值。

echo -n test1234 | sha256sum | awk '{print $1}'

  • 以下是產生出來的畫面

graylog-hash-02.png

  • 將以上命令產出之 Hash 值,填入到 server.confroot_password_sha2 參數。 vim /etc/graylog/server/server.conf

graylog-hash-03.png

  • 設定 Graylog 服務,開啟設定檔 vim /etc/graylog/server/server.conf
這是設定 http 
http_bind_address = 0.0.0.0:9000 (192.168.x.x為Graylog Server IP)
http_publish_uri = http://0.0.0.0:9000

設定郵件
root_email = "[email protected]"

設定時區,不然收到的記錄會是國際標準時區
root_timezone = ROC # 重要,若不設定為ROC,則進來Log的timestamp會變成以UTC時間紀錄,

# 允許wildcard搜尋語法
allow_leading_wildcard_searches = true

# 安裝 5.2 會無法正常登入到 Graylog 系統,需增加下面的參數
elasticsearch_hosts = http://127.0.0.1:9200
  • 設定 Graylog 啟動服務
啟重 Graylog 服務
systemctl start graylog-server.service

開機時自動啟重 Graylog 服務
systemctl enable graylog-server.service
or
sudo systemctl enable --now graylog-server.service

登錄 Graylog Web


  • 使用瀏覽器訪問 http://graylog_public_IP_domain:9000/,你應該可以看到一個登錄介面,使用帳號 admin 和前面設置的密碼登入。

graylog-new.png

設定rsyslog設定檔


  • 如果是使用syslog回報的話,那這個設定檔要做個小設定,不然會無法正常回其他台設備回報先進到 rsyslog設定檔
vim /etc/rsyslog.conf
  • 新增加內容如下
移到最下面增加一行
這是用 TPC 來接收
#*.* @@remote-host:514
這是用 UDP 來接收
#*.* @127.0.0.1:10514 Prot號要跟Graylog裡面設定的要一樣
*.* @127.0.0.1:10514;RSYSLOG_SyslogProtocol23Format
  • 重新啟動 rsyslog 服務
systemctl restart rsyslog

登入Graylog設定syslog服務


  1. 增加syslog服務

graylog-05.png

  1. 選擇你想要接收的服務,例:Syslog UDP

graylog-06.png

  1. 新增畫面,接收的名稱及Port號,填完之後存檔,就可以開始接收記錄了。

graylog-07.png

使用 NGINX 代理方式來連線


server {
    listen 80;
    server_name 你的ip或網址;
    #
    access_log /var/log/nginx/graylog_access.log;
    error_log /var/log/nginx/graylog_error.log;
    #
    fastcgi_buffers 64 4K;
    #
    location / {
        proxy_set_header Host $http_host;
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Server $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Graylog-Server-URL http://$server_name/;
        proxy_pass http://127.0.0.1:9000;
    }
    #
    # location /graylog/ {
    #     proxy_set_header Host $http_host;
    #     proxy_set_header X-Forwarded-Host $host;
    #     proxy_set_header X-Forwarded-Server $host;
    #     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    #     proxy_set_header X-Graylog-Server-URL http://$server_name/graylog/;
    #     rewrite ^/graylog/(.*)$ /$1 break;
    #     proxy_pass http://127.0.0.1:9000;
    # }
}
  • 啟動及自動啟動服務
systemctl start nginx ; systemctl enable nginx
or
sudo systemctl enable --now nginx
  • 再到 Graylog vim /etc/graylog/server/server.conf 設定
http_publish_uri = http://192.168.x.x:9000/
  • 重啟 Graylog
systemctl restart graylog-server



參考相關網頁