Graylog Server 安裝及設定
日期: 2018/3/7
建立Graylog Server集中管理網路裝置Log,並建立相關監控機制,以增進公司資訊安全。
一. CentOS
7.3 安裝
(VM on vSphere 6.0)
1.
Taking a minimal server setup
因自動配置partition會將空間分配給 /home,/ 僅50G,造成Elasticsearch Indice空間不夠使用,故建議自行配置硬碟空間。
因自動配置partition會將空間分配給 /home,/ 僅50G,造成Elasticsearch Indice空間不夠使用,故建議自行配置硬碟空間。
2.
系統更新
# yum update -y
# yum update -y
3.
安裝 VMware Tools (安裝開源 open-vm-tools 即可)
# yum install open-vm-tools -y
# yum install open-vm-tools -y
4.
安裝pwgen、perl-Digest-SHA輔助工具,設定Graylog時用來生成密碼
# yum
install epel-release -y
# yum
install pwgen perl-Digest-SHA -y
二. 安裝Java
Elasticsearch執行於JVM上,因此需安裝Java 7 update 55或以上版本,並設定有JAVA_HOME環境變數。
l 早期的Java 7版本存在造成資料毀損與遺失的bug,Elasticsearch在啟動時會檢查過期的Java版本並無法成功啟動。
l 建議使用Java 1.8.0_131以上,因最近Java的重要update會提升JVM的記憶體使用效能。
(Elasticsearch官方建議不要使用JDK9,請使用JDK8)
(Elasticsearch官方建議不要使用JDK9,請使用JDK8)
l 使用JVM Server mode (x64版本為server mode),將更加有效的利用記憶體
安裝指令如下--
# yum install java-1.8.0-openjdk-headless.x86_64
# yum install java-1.8.0-openjdk-headless.x86_64
三. 安裝MongoDB
1.
建立MongoDB源
# touch
/etc/yum.repos.d/mongodb-org-3.6.repo
加入以下內容—
[mongodb-org-3.6]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.6/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.6.asc
|
2.
安裝MongoDB
# yum
install -y mongodb-org
3.
啟動MongoDB
# systemctl
start mongod
4.
設定開機啟動MongoDB
# systemctl
enable mongod
四. 安裝Elasticsearch
Graylog 2.4不支援Elasticsearch 6.x版,故安裝5.x版。
1.
安裝Elasticsearch GPG密鑰
# rpm
--import https://artifacts.elastic.co/GPG-KEY-elasticsearch
2.
建立Elasticsearch源
# touch
/etc/yum.repos.d/elasticsearch.repo
加入以下內容—
[elasticsearch-5.x]
name=Elasticsearch repository for 5.x
packages
baseurl=https://artifacts.elastic.co/packages/5.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
|
3.
安裝Elasticsearch
# yum
install -y elasticsearch
4.
修改elasticsearch設定檔
#
vi /etc/elasticsearch/elasticsearch.yml
### 設定cluster.name為garylog ###
cluster.name:
graylog
|
5.
啟動elasticsearch
# systemctl
start elasticsearch
6.
設定開機啟動elasticsearch
# systemctl
enable elasticsearch
7.
檢查Elasticsearch健康狀況
# curl
–XGET localhost:9200/_cluster/health?pretty=true
若一切正常,應該會得到以下訊息內容--
{
"cluster_name" : "graylog",
"status" : "green",
"timed_out" : false,
"number_of_nodes" : 1,
"number_of_data_nodes" : 1,
"active_primary_shards" : 0,
"active_shards" : 0,
"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
1.
下載Graylog RPM軟件包
# rpm
-Uvh
https://packages.graylog2.org/repo/packages/graylog-2.4-repository_latest.rpm
2.
安裝graylog-server
# yum
install -y graylog-server
3.
設置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參數如下
4.
設定Graylog管理員admin的密碼
由於密碼使用SHA雜湊演算法,我們需要把明文密碼轉換為hash值,然後賦值給root_password_sha2參數。
例如,以下列命令產生密碼為test1234的hash值。
# echo
-n test1234 | sha256sum | awk '{print $1}'
將以上命令產出之Hash值,填入到server.conf中root_password_sha2參數.
# vi
/etc/graylog/server/server.conf
5.
設定Graylog Web接口和Server的溝通方式
預設Graylog只聽localhost,故若需以Web介面進行管理,須設定以下參數---
# vi
/etc/graylog/server/server.conf
rest_listen_uri = http://192.168.x.x:9000/api/ (192.168.x.x為Graylog
Server IP)
web_listen_uri = http://192.168.x.x:9000/
elasticsearch_cluster_name = graylog
(需與elasticsearch設定檔的cluster.name參數同)
|
6.
設定Graylog其他參數
# vi
/etc/graylog/server/server.conf
# The email address of the root user.
# Default is empty
#root_email = ""
root_email = "cyp@test.com.tw"
# The time zone setting of the root user.
See http://www.joda.org/joda-time/timezones.html for a list of valid time
zones.
# Default is UTC
#root_timezone = UTC
# 重要,若不設定為ROC,則進來Log的timestamp會變成以UTC時間紀錄,
# 會影響到搜尋結果
root_timezone
= ROC
# 允許wildcard搜尋語法
# 例如 AND EventID:4771 AND NOT TargetUserName:*?
# 新增下列設定
allow_leading_wildcard_searches
= true |
7.
設定防火牆
# sudo
firewall-cmd --permanent --zone=public --add-port=9000/tcp
# sudo
firewall-cmd --permanent --zone=public --add-port=12201/udp
# sudo
firewall-cmd --reload
8.
啟動graylog-server
# systemctl
start graylog-server.service
9.
設定開機啟動graylog-server
# systemctl
enable graylog-server.service
10. 設定SELinux
安裝SELinux管理工具
# yum
install -y policycoreutils-python
允許Web Server存取網路
# sudo
setsebool -P httpd_can_network_connect 1
若沒有設定上列policy,可以下列命令針對需求對不同http port設定存取規則。
Graylog REST API and web interface:
# sudo semanage port -a -t http_port_t -p tcp 9000
Elasticsearch (only if the HTTP API is
being used):
# sudo semanage port -a -t http_port_t -p tcp 9200
|
允取使用MongoDB default port (27017/tcp):
# sudo
semanage port -a -t mongod_port_t -p tcp 27017
六. 登錄Graylog Web
使用瀏覽器訪問 http://graylog_public_IP_domain:9000/
你應該可以看到一個登錄介面,使用帳號 admin 和前面設置的密碼登入。
七. 設定INPUT接收Windows Log
Windows端選擇以NXLog協助發送Log至Graylog Server,請至下載網頁下載安裝。
NXLog download: https://nxlog.co/products/nxlog-community-edition/download
NXLog設定檔 (C:\Program Files
(x86)\nxlog\conf\nxlog.conf) 修改如下---
設定後啟動nxlog服務。
回到Graylog Web介面---
1.
點擊下拉 System / Inputs 功能選單,選擇 Inputs
2.
選擇 GELF UDP後,點擊 Launch new input
3.
填入相關設定值,完成後按 Save
Node: 下拉選擇Node
Title: Windows Event - UDP
Bind address: Graylog Server IP
Port: 12201 (default value)
設定完成後,即可看到一個Local Inputs開始接收messages
2 則留言:
Throughput / Metrics
1 minute average rate: 0 msg/s
Network IO: 0B 0B (total: 0B 0B )
Empty messages discarded: 0
我依照您的步驟全部做完,過程也都無錯誤,可是client就是無法回報log,有方法可以除錯嗎
抱歉!! 這個Blogger真的就是我的筆記,沒時常上來看,不知有留言,今天才發現!
根據訊息,您的Graylog並沒有收到Client來的log,您先確認一下,client是否有發送log成功,
我們可以在graylog查看tcpdump,例如client ip為192.168.1.1,那麼,我們就下---
# tcpdump | grep 192.168.1.1
張貼留言