跳到主內容

Graylog 5 安裝及設定 - Debian 12

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

2024.01.11 系統升為 Debian12、MongoDB升為 7

運行環境


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

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

更新系統


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

安裝MongoDB


  • 新增加 MongoDB 金鑰
curl -fsSL https://pgp.mongodb.com/server-7.0.asc | \
   sudo gpg -o /usr/share/keyrings/mongodb-server-7.0.gpg \
   --dearmor
  • 新增加 MongoDB 來源庫
echo "deb [ signed-by=/usr/share/keyrings/mongodb-server-7.0.gpg ] http://repo.mongodb.org/apt/debian bookworm/mongodb-org/7.0 main" | sudo tee /etc/apt/sources.list.d/mongodb-org-7.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


  • 新增加 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 -y
  • 修改 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
  • 選擇性修改 vim /etc/opensearch/opensearch.yml
# 如果您有修改資料存放路徑要修改該目錄的權限為 `opensearch` 和 `777`
path.data: /opt/opensearch_data
path.logs: /var/log/opensearch

# 把以下的設定都註解基本上社群版是使用不到
######## Start OpenSearch Security Demo Configuration ########
# WARNING: revise all the lines below before you go into production
#plugins.security.ssl.transport.pemcert_filepath: esnode.pem
#plugins.security.ssl.transport.pemkey_filepath: esnode-key.pem
#plugins.security.ssl.transport.pemtrustedcas_filepath: root-ca.pem
#plugins.security.ssl.transport.enforce_hostname_verification: false
#plugins.security.ssl.http.enabled: true
#plugins.security.ssl.http.pemcert_filepath: esnode.pem
#plugins.security.ssl.http.pemkey_filepath: esnode-key.pem
#plugins.security.ssl.http.pemtrustedcas_filepath: root-ca.pem
#plugins.security.allow_unsafe_democertificates: true
#plugins.security.allow_default_init_securityindex: true
#plugins.security.authcz.admin_dn:
#  - CN=kirk,OU=client,O=client,L=test, C=de

#plugins.security.audit.type: internal_opensearch
#plugins.security.enable_snapshot_restore_privilege: true
#plugins.security.check_snapshot_restore_write_privileges: true
#plugins.security.restapi.roles_enabled: ["all_access", "security_rest_api_access"]
#plugins.security.system_indices.enabled: true
#plugins.security.system_indices.indices: [".plugins-ml-config", ".plugins-ml-connector", ".plugins-ml-model-group", ".plugins-ml-model", ".plugins-ml-task", ".plugins-ml-conversation-meta", ".plugins-ml-conversation-interactions", ".opendistro-alerting-config", ".opendistro-alerting-alert*", ".opendistro-anomaly-results*", ".opendistro-anomaly-detector*", ".opendistro-anomaly-checkpoints", ".opendistro-anomaly-detection-state", ".opendistro-reports-*", ".opensearch-notifications-*", ".opensearch-notebooks", ".opensearch-observability", ".ql-datasources", ".opendistro-asynchronous-search-response*", ".replication-metadata-store", ".opensearch-knn-models", ".geospatial-ip2geo-data*"]
#node.max_local_storage_nodes: 3
######## End OpenSearch Security Demo Configuration ########
  • 調整 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
  • 檢查 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 = Asia/Taipei # 重要,若不設定為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

登入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



參考相關網頁