一、wazhu部署架構
1.服務器上運行的Agent端會將采集到的各種信息通過加密信道傳輸到管理端。
2.管理端負責分析從代理接收的數據,並在事件與告警規則匹配時觸發警報。
3.LogStash會將告警日志或者監控日志發送到Elasticsearch上面,最后通過Kibana可視化展示日志。
分布式部署:在不同主機上運行Wazuh服務器和Elastic Stack集群(一個或多個服務器)。
單主機架構:在同一主機上運行Wazuh服務器和Elastic Stack。
兩者的主要差別在於,前者需要使用FileBeat與Logstash進行日志傳輸,后者直接本機讀取日志文件


二、更新源配置
如果網速比較慢的可以更換為國內軟件源,默認情況下並不用
yum repolist #查看當前使用的源 cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak #備份原來的源 wget http://mirrors.aliyun.com/repo/Centos-7.repo #下載阿里雲centos7源 wget http://mirrors.163.com/.help/CentOS7-Base-163.repo #下載163 centos7源 mv 你下載的源 /etc/yum.repos.d/CentOS-Base.repo yum clean all && yum makecache #清理並重建yum緩存
yum -y install ntp ntpdate #安裝NTP和更新NTP ntpdate cn.ntp.org.cn #NTP設置 hwclock --systohc #系統時間寫入硬件時間 ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime #linux的時區設置為上海時區
三、安裝 Wazuh Manager
安裝環境為centos7.1X64系統
方法一:
cat > /etc/yum.repos.d/wazuh.repo <<\EOF [wazuh_repo] gpgcheck=1 gpgkey=https://packages.wazuh.com/key/GPG-KEY-WAZUH enabled=1 name=Wazuh repository baseurl=https://packages.wazuh.com/3.x/yum/ protect=1 EOF yum install wazuh-manager
方法二:
[root@wazhu-manage ~]# cd /opt [root@wazhu-manage opt]# wget https://packages.wazuh.com/3.x/yum/wazuh-manager-3.8.0-1.x86_64.rpm [root@wazhu-manage opt]# chmod +x wazuh-manager-3.8.0-1.x86_64.rpm [root@wazhu-manage opt]# rpm -ivh wazuh-manager-3.8.0-1.x86_64.rpm [root@wazhu-manage opt]# systemctl status wazuh-manager.service ● wazuh-manager.service - Wazuh manager Loaded: loaded (/etc/systemd/system/wazuh-manager.service; enabled; vendor preset: disabled) Active: active (running) since Mon 2019-01-21 09:58:45 UTC; 34s ago Process: 13789 ExecStart=/usr/bin/env ${DIRECTORY}/bin/ossec-control start (code=exited, status=0/SUCCESS) CGroup: /system.slice/wazuh-manager.service ├─13819 /var/ossec/bin/ossec-authd ├─13823 /var/ossec/bin/wazuh-db ├─13841 /var/ossec/bin/ossec-execd ├─13847 /var/ossec/bin/ossec-analysisd ├─13851 /var/ossec/bin/ossec-syscheckd ├─13859 /var/ossec/bin/ossec-remoted ├─13861 /var/ossec/bin/ossec-logcollector ├─13882 /var/ossec/bin/ossec-monitord └─13886 /var/ossec/bin/wazuh-modulesd
四、安裝 Wazuh API
要運行Wazuh API,需要NodeJS> = 4.6.1,如果您沒有安裝NodeJS或者您的版本低於4.6.1,我們建議您添加官方NodeJS存儲庫,如下所示:
[root@wazhu-manage bin]# curl --silent --location https://rpm.nodesource.com/setup_8.x | bash - [root@wazhu-manage bin]# yum install nodejs.x86_64 [root@wazhu-manage bin]# node -v #或者yum install nodejs v6.14
要運行Wazuh API,需要Python> = 2.7。它默認安裝或包含在大多數Linux發行版的官方存儲庫中。要確定系統上的python版本是否低於2.7,可以運行以下命令:
[root@wazhu-manage bin]# python --version #Centos7默認python2 Python 2.7.5 [root@wazhu-manage bin]# cd /opt [root@wazhu-manage opt]# wget https://packages.wazuh.com/3.x/yum/wazuh-api-3.8.0-1.x86_64.rpm [root@wazhu-manage opt]# ls wazuh-api-3.8.0-1.x86_64.rpm wazuh-manager-3.8.0-1.x86_64.rpm [root@wazhu-manage opt]# chmod +x wazuh-api-3.8.0-1.x86_64.rpm [root@wazhu-manage opt]# rpm -ivh wazuh-api-3.8.0-1.x86_64.rpm #或者yum install wazuh-api [root@wazhu-manage opt]# systemctl start wazuh-api [root@wazhu-manage opt]# systemctl status wazuh-api ● wazuh-api.service - Wazuh API daemon Loaded: loaded (/etc/systemd/system/wazuh-api.service; enabled; vendor preset: disabled) Active: active (running) since Mon 2019-01-21 10:25:30 UTC; 33s ago Docs: https://documentation.wazuh.com/current/user-manual/api/index.html Main PID: 15454 (node) CGroup: /system.slice/wazuh-api.service └─15454 /bin/node /var/ossec/api/app.js Jan 21 10:25:30 wazhu-manage systemd[1]: Started Wazuh API daemon.
防止自動升級:
# sed -i "s/^enabled=1/enabled=0/" /etc/yum.repos.d/wazuh.repo
五、安裝 Wazuh agent
1.centos下安裝agent:
1.1. 包安裝
[root@wazhu-manage opt]# ls wazuh-api-3.8.0-1.x86_64.rpm wazuh-manager-3.8.0-1.x86_64.rpm [root@wazhu-manage opt]# wget https://packages.wazuh.com/3.x/yum/wazuh-agent-3.8.0-1.x86_64.rpm [root@wazhu-manage opt]# chmod +x wazuh-agent-3.8.0-1.x86_64.rpm [root@wazhu-manage opt]# rpm -ivh wazuh-agent-3.8.0-1.x86_64.rpm warning: wazuh-agent-3.8.0-1.x86_64.rpm: Header V4 RSA/SHA1 Signature, key ID 29111145: NOKEY error: Failed dependencies: wazuh-manager conflicts with wazuh-agent-3.8.0-1.x86_64 wazuh-agent conflicts with (installed) wazuh-manager-3.8.0-1.x86_64 # 修改配置文件 vim /var/ossec/etc/ossec.conf # 導入密鑰 /var/ossec/bin/manage_agents # 啟動服務 /var/ossec/bin/ossec-control start
1.2. yum安裝:
cat > /etc/yum.repos.d/wazuh.repo <<\EOF [wazuh_repo] gpgcheck=1 gpgkey=https://packages.wazuh.com/key/GPG-KEY-WAZUH enabled=1 name=Wazuh repository baseurl=https://packages.wazuh.com/3.x/yum/ protect=1 EOF [root@wazhu-manage opt]# yum install wazuh-agent
2.ubuntu下安裝agent
2.1.包安裝
root@agent01:~# cd /opt root@agent01:/opt# wget https://packages.wazuh.com/3.x/apt/pool/main/w/wazuh-agent/wazuh-agent_3.8.0-1_amd64.deb root@agent01:/opt# dpkg -i wazuh-agent_3.8.0-1_amd64.deb Selecting previously unselected package wazuh-agent. (Reading database ... 92845 files and directories currently installed.) Preparing to unpack wazuh-agent_3.8.0-1_amd64.deb ... Unpacking wazuh-agent (3.8.0-1) ... Setting up wazuh-agent (3.8.0-1) ... Processing triggers for systemd (229-4ubuntu21.4) ... Processing triggers for ureadahead (0.100.0-19) ...
2.2. apt-get安裝
# apt-get install curl apt-transport-https lsb-release #安裝必要包 # curl -s https://packages.wazuh.com/key/GPG-KEY-WAZUH | apt-key add - #安裝Wazuh存儲庫GPG密鑰 #echo"deb https://packages.wazuh.com/3.x/apt/ stable main"| tee /etc/apt/sources.list.d/wazuh.list #添加存儲庫 # apt-get update #更新包信息 # apt-get install wazuh-agent #安裝Wazuh代理 #echo"wazuh-agent hold"| sudo dpkg --set-selections #禁用更新
3.windows下安裝agent
https://packages.wazuh.com/3.x/windows/wazuh-agent-3.8.0-1.msi agent-auth.exe -m 管理端ip -P "管理端密碼 agent-auth -m 管理端ip
六、安裝Elastic Stack
1.安裝elastic stack運行環境包
Logstash和Elasticsearch需要Oracle Java JRE 8
[root@wazhu-manage opt]# curl -Lo jre-8-linux-x64.rpm --header "Cookie: oraclelicense=accept-securebackup-cookie" "https://download.oracle.com/otn-pub/java/jdk/8u202-b08/1961070e4c9b4e26a04e7f5a083f551e/jre-8u202-linux-x64.rpm" [root@wazhu-manage opt]# rpm -qlp jre-8-linux-x64.rpm > /dev/null 2>&1 && echo "Java package downloaded successfully" || echo "Java package did not download successfully" Java package downloaded successfully [root@wazhu-manage opt]# yum -y install jre-8-linux-x64.rpm [root@wazhu-manage opt]# java -version java version "1.8.0_202"
安裝Elastic存儲庫及其GPG密鑰:
[root@wazhu-manage opt]# rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch [root@wazhu-manage opt]# cat > /etc/yum.repos.d/elastic.repo << EOF > [elasticsearch-6.x] > name=Elasticsearch repository for 6.x packages > baseurl=https://artifacts.elastic.co/packages/6.x/yum > gpgcheck=1 > gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch > enabled=1 > autorefresh=1 > type=rpm-md > EOF [root@wazhu-manage opt]# cat /etc/yum.repos.d/elastic.repo [elasticsearch-6.x] name=Elasticsearch repository for 6.x packages baseurl=https://artifacts.elastic.co/packages/6.x/yum gpgcheck=1 gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch enabled=1 autorefresh=1 type=rpm-md
2.安裝elasticsearch
[root@wazhu-manage opt]# yum install elasticsearch-6.5.4 [root@wazhu-manage opt]# systemctl daemon-reload [root@wazhu-manage opt]# systemctl enable elasticsearch.service Created symlink from /etc/systemd/system/multi-user.target.wants/elasticsearch.service to /usr/lib/systemd/system/elasticsearch.service. [root@wazhu-manage opt]# systemctl start elasticsearch.service [root@wazhu-manage opt]# systemctl status elasticsearch.service elasticsearch.service - Elasticsearch Loaded: loaded (/usr/lib/systemd/system/elasticsearch.service; enabled; vendor preset: disabled) Active: active (running) since Mon 2019-01-21 11:20:32 UTC; 12s ago Docs: http://www.elastic.co Main PID: 16541 (java) CGroup: /system.slice/elasticsearch.service ├─16541 /bin/java -Xms1g -Xmx1g -XX:+UseConcMarkSweepGC -XX:CMSInitia... └─16604 /usr/share/elasticsearch/modules/x-pack-ml/platform/linux-x86...
等待Elasticsearch服務器完成啟動非常重要。使用以下命令檢查當前狀態,該命令應該給出如下所示的響應:
[root@wazhu-manage opt]# curl "http://localhost:9200/?pretty" { "name" : "j2iH056", "cluster_name" : "elasticsearch", "cluster_uuid" : "iHTOPid4SR-EoZ5qX73-kw", "version" : { "number" : "6.5.4", "build_flavor" : "default", "build_type" : "rpm", "build_hash" : "d2ef93d", "build_date" : "2018-12-17T21:17:40.758843Z", "build_snapshot" : false, "lucene_version" : "7.5.0", "minimum_wire_compatibility_version" : "5.6.0", "minimum_index_compatibility_version" : "5.0.0" }, "tagline" : "You Know, for Search" }
為Elasticsearch加載Wazuh模板:(Kibana的Wazuh應用程序需要Elasticsearch模板才能正常工作,因此確保正確插入它非常重要。)
[root@wazhu-manage opt]# curl https://raw.githubusercontent.com/wazuh/wazuh/3.8/extensions/elasticsearch/wazuh-elastic6-template-alerts.json | curl -X PUT "http://localhost:9200/_template/wazuh" -H 'Content-Type: application/json' -d @- % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 19385 100 19385 0 0 96376 0 --:--:-- --:--:-- --:--:-- 96442
建議編輯默認配置以提高Elasticsearch的性能。為此,請參閱Elasticsearch調優。
七、Logstash
Logstash是收集,解析和轉發數據到Elasticsearch的工具,用於索引和存儲Wazuh服務器生成的所有日志。有關更多信息,請參閱Logstash。
1.安裝Logstash包:
[root@wazhu-manage opt]# yum install logstash-6.5.4
2.下載Logstash的Wazuh配置文件:
本地配置(僅在單主機架構中):
[root@wazhu-manage opt]# curl -so /etc/logstash/conf.d/01-wazuh.conf https://raw.githubusercontent.com/wazuh/wazuh/3.8/extensions/logstash/01-wazuh-local.conf
由於Logstash用戶需要讀取alerts.json文件,請運行以下命令將其添加到OSSEC組:
[root@wazhu-manage opt]# usermod -a -G ossec logstash
遠程配置(僅在分布式架構中):
curl -so /etc/logstash/conf.d/01-wazuh.conf https://raw.githubusercontent.com/wazuh/wazuh/3.8/extensions/logstash/01-wazuh-remote.con
啟用並啟動Logstash服務:
[root@wazhu-manage opt]# systemctl daemon-reload [root@wazhu-manage opt]# systemctl enable logstash.service Created symlink from /etc/systemd/system/multi-user.target.wants/logstash.service to /etc/systemd/system/logstash.service. [root@wazhu-manage opt]# systemctl start logstash.service [root@wazhu-manage opt]# systemctl status logstash.service logstash.service - logstash Loaded: loaded (/etc/systemd/system/logstash.service; enabled; vendor preset: disabled) Active: active (running) since Mon 2019-01-21 11:33:40 UTC; 10s ago Main PID: 17525 (java) CGroup: /system.slice/logstash.service └─17525 /bin/java -Xms1g -Xmx1g -XX:+UseParNewGC -XX:+UseConcMarkSwee...
八、安裝Kibana
Kibana是一個靈活,直觀的Web界面,用於搜索和可視化在Elasticsearch中。在Kibana上查找更多信息。
1.安裝Kibana包:
[root@wazhu-manage opt]# yum install kibana-6.5.4
2.為Kibana安裝Wazuh應用程序插件:(Kibana插件安裝過程可能需要幾分鍾。請耐心等待)
[root@wazhu-manage opt]# sudo -u kibana NODE_OPTIONS="--max-old-space-size=3072" /usr/share/kibana/bin/kibana-plugin install https://packages.wazuh.com/wazuhapp/wazuhapp-3.8.0_6.5.4.zip Attempting to transfer from https://packages.wazuh.com/wazuhapp/wazuhapp-3.8.0_6.5.4.zip Transferring 17809056 bytes.................... Transfer complete Retrieving metadata from plugin archive Extracting plugin archive Extraction complete Optimizing and caching browser bundles... Plugin installation complete
3.Kibana默認只監聽環回接口(localhost)。要將Kibana設置為偵聽所有接口,請編輯該文件以/etc/kibana/kibana.yml取消注釋該設置server.host。將值更改為:
[root@wazhu-manage opt]# vi /etc/kibana/kibana.yml server.host: "0.0.0.0"
建議為Kibana設置Nginx代理,以便使用SSL加密並啟用身份驗證。可以在為Kibana設置SSL和身份驗證中找到設置代理的說明。
4.啟用並啟動Kibana服務:
[root@wazhu-manage opt]# systemctl daemon-reload [root@wazhu-manage opt]# systemctl enable kibana.service Created symlink from /etc/systemd/system/multi-user.target.wants/kibana.service to /etc/systemd/system/kibana.service. [root@wazhu-manage opt]# systemctl start kibana.service [root@wazhu-manage opt]# systemctl status kibana.service kibana.service - Kibana Loaded: loaded (/etc/systemd/system/kibana.service; enabled; vendor preset: disabled) Active: active (running) since Mon 2019-01-21 11:51:54 UTC; 7s ago Main PID: 18638 (node) CGroup: /system.slice/kibana.service └─18638 /usr/share/kibana/bin/../node/bin/node --no-warnings /usr/sha...
5.(可選)禁用Elasticsearch存儲庫:
建議禁用Elasticsearch存儲庫,以防止升級到較新的Elastic Stack版本,因為可能會撤消應用程序的更改。為此,請使用以下命令:
sed -i "s/^enabled=1/enabled=0/" /etc/yum.repos.d/elastic.repo
九、通過API連接Wazuh App
通過149.248.9.0:5601訪問 Kibana,無法訪問,查看本地端口已經監聽在0.0.0.0:5601,所以關閉防火牆
[root@wazhu-manage opt]# yum install net-tools [root@wazhu-manage opt]# netstat -ntlp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:1515 0.0.0.0:* LISTEN 13819/ossec-authd tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 3140/sshd tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 6246/master tcp 0 0 0.0.0.0:5601 0.0.0.0:* LISTEN 18638/node tcp6 0 0 127.0.0.1:9200 :::* LISTEN 16541/java tcp6 0 0 ::1:9200 :::* LISTEN 16541/java tcp6 0 0 127.0.0.1:9300 :::* LISTEN 16541/java tcp6 0 0 ::1:9300 :::* LISTEN 16541/java tcp6 0 0 :::22 :::* LISTEN 3140/sshd tcp6 0 0 :::55000 :::* LISTEN 15454/node tcp6 0 0 ::1:25 :::* LISTEN 6246/master tcp6 0 0 127.0.0.1:9600 :::* LISTEN 17525/java
1515端口是給agent來獲取認證key的,還有1514/udp管理端監聽端口,5601/tcp Kibana端口,55000/tcp Wazuh-api 端口看情況開放
[root@wazhu-manage opt]# systemctl disable firewalld [root@wazhu-manage opt]# systemctl stop firewalld [root@wazhu-manage opt]# systemctl status firewalld
訪問界面:

添加api之前准備工作:
在填用戶名、密碼、url、端口之前,要先到Wazuh server主機上,使用命令生成非默認的認證來保護Wazuh API。
[root@wazhu-manage opt]# cd /var/ossec/api/configuration/auth/ [root@wazhu-manage auth]# ls htpasswd user [root@wazhu-manage auth]# [root@wazhu-manage auth]# node htpasswd -c user wazuh-api New password: Re-type new password: Adding password for user wazuh-api. [root@wazhu-manage auth]# ll total 4 lrwxrwxrwx 1 root root 49 Jan 21 10:25 htpasswd -> /var/ossec/api/node_modules/htpasswd/bin/htpasswd -rw-rw---- 1 root root 48 Jan 21 12:38 user [root@wazhu-manage auth]# service wazuh-api restart
可以先訪問一下web,看認證是否成功:



十、為Kibana設置SSL和身份驗證
默認情況下,Kibana(包括Wazuh應用程序)與最終用戶系統上的Web瀏覽器之間的通信未加密。強烈建議將Kibana配置為使用SSL加密並啟用身份驗證。在本節中,我們將介紹如何使用NGINX設置完成此操作。
NGINX是一種流行的開源Web服務器和反向代理,以其高性能,穩定性,豐富的功能集,簡單的配置和低資源消耗而着稱。在此示例中,我們將其用作反向代理,以向最終用戶提供對Kibana的加密和經過身份驗證的訪問。
注意:1.下面描述的許多命令都需要以root用戶權限執行。2.Kibana Web界面的默認端口是5601。本例將使80和443端口可用於HTTP / HTTPS訪問。
1.1.安裝NGINX
對於CentOS:
[root@wazhu-manage ~]# cat >/etc/yum.repos.d/nginx.repo <<\EOF [nginx] name=nginx repo baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=0 enabled=1 EOF [root@wazhu-manage ~]# cat /etc/yum.repos.d/nginx.repo [nginx] name=nginx repo baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=0 enabled=1 [root@wazhu-manage ~]# yum install nginx
注意:有關更多信息,請參閱NGINX:官方Red Hat / CentOS軟件包。
1.2.安裝SSL證書和私鑰
a.如果您擁有有效的簽名證書,請將密鑰文件<ssl_key>和證書文件復制<ssl_pem>到適當的位置:
# mkdir -p /etc/pki/tls/certs /etc/pki/tls/private # cp <ssl_pem> /etc/pki/tls/certs/kibana-access.pem # cp <ssl_key> /etc/pki/tls/private/kibana-access.key
b.如果您沒有有效的簽名證書,請按如下方式創建自簽名證書。請記住將字段設置為您的服務器名稱。例如,如果您的服務器是,您將執行以下操作:
[root@wazhu-manage ~]# mkdir -p /etc/pki/tls/certs /etc/pki/tls/private [root@wazhu-manage ~]# openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/pki/tls/private/kibana-access.key -out /etc/pki/tls/certs/kibana-access.pem Generating a 2048 bit RSA private key ......................................................................................+++ ..........+++ writing new private key to '/etc/pki/tls/private/kibana-access.key' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [XX]:CN State or Province Name (full name) []:sichuan Locality Name (eg, city) [Default City]:chengdu Organization Name (eg, company) [Default Company Ltd]:hcb Organizational Unit Name (eg, section) []:56qq Common Name (eg, your name or your server's hostname) []:56qq.com Email Address []:root@backlion.org
1.3.將NGINX配置為Kibana的HTTPS反向代理
[root@wazhu-manage ~]#cat > /etc/nginx/conf.d/default.conf <<\EOF server { listen 80; listen [::]:80; return 301 https://$host$request_uri; } server { listen 443 default_server; listen [::]:443; ssl on; ssl_certificate /etc/pki/tls/certs/kibana-access.pem; ssl_certificate_key /etc/pki/tls/private/kibana-access.key; access_log /var/log/nginx/nginx.access.log; error_log /var/log/nginx/nginx.error.log; location / { auth_basic "Restricted"; auth_basic_user_file /etc/nginx/conf.d/kibana.htpasswd; proxy_pass http://kibana-server-ip:5601/; } } EOF [root@wazhu-manage ~]# cat /etc/nginx/conf.d/default.conf server { listen 80; listen [::]:80; return 301 https://$host$request_uri; } server { listen 443 default_server; listen [::]:443; ssl on; ssl_certificate /etc/pki/tls/certs/kibana-access.pem; ssl_certificate_key /etc/pki/tls/private/kibana-access.key; access_log /var/log/nginx/nginx.access.log; error_log /var/log/nginx/nginx.error.log; location / { auth_basic "Restricted"; auth_basic_user_file /etc/nginx/conf.d/kibana.htpasswd; proxy_pass http://localhost:5601/; } } [root@wazhu-manage ~]#vi /etc/kibana/kibana.yml server.host: "localhost" [root@wazhu-manage opt]# systemctl restart kibana.service
注意:我們配置Nginx以封裝Kibana服務器的IP地址。此配置允許將Kibana請求重定向到HTTPS。使用此配置時,建議/etc/kibana/kibana.yml編輯文件以將字段設置server.host為localhost。必須重新啟動Kibana服務才能應用此更改。auth_basic_user_file是一個存儲用戶名密碼的文件。需要htpasswd命令來生成
1.如果正在使用SELinux,則允許NGINX連接到Kibana端口:
# semanage port -a -t http_port_t -p tcp 5601
這假設您已policycoreutils-python安裝以管理SELinux。
[root@wazhu-manage conf.d]# yum install httpd-tools
[root@wazhu-manage conf.d]# htpasswd -c /etc/nginx/conf.d/kibana.htpasswd wazuh New password: Re-type new password: Adding password for user wazuh
3.重啟NGINX:
[root@wazhu-manage conf.d]# systemctl restart nginx [root@wazhu-manage conf.d]# systemctl status nginx ● nginx.service - nginx - high performance web server Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled) Active: active (running) since Tue 2019-01-22 05:11:32 UTC; 12s ago Docs: http://nginx.org/en/docs/ Process: 10934 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS) Main PID: 10935 (nginx) CGroup: /system.slice/nginx.service ├─10935 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf └─10936 nginx: worker process Jan 22 05:11:32 wazhu-manage systemd[1]: Starting nginx - high performance web server... Jan 22 05:11:32 wazhu-manage systemd[1]: Started nginx - high performance web server.
現在,通過HTTPS訪問Kibana Web界面。它將提示您輸入在上述步驟中創建的用戶名和密碼。
警告:如果您遇到權限問題或獲得502代碼錯誤,請嘗試執行以下命令: setsebool -P httpd_can_network_connect 1
其中的wazuh可以更換為自己想要的用戶名(上面的路徑需要和nginx里配置的密碼路徑一致)。回車后,會提示輸入密碼倆次。輸入一致后就完成用戶的創建,這是我們可以vim下
kibana.htpasswd 看看,里面是加密過后的密碼。
十、注冊agent
1.注冊過程
每個Wazuh代理都通過稱為OSSEC消息協議的安全方式將數據發送到Wazuh Manager。這使用預共享密鑰加密消息。最初,當您成功安裝新的Wazuh代理時,由於缺少預共享密鑰,因此無法與Wazuh Manager通信。
注冊過程包括在Manager和代理之間創建信任關系的機制。此過程可以在Manager本身或注冊服務中完成。此服務在Manager上運行,代理可以使用某些憑據請求預共享密鑰。管理器將使用密鑰進行回復,並將新代理存儲在本地數據庫中。
另一種方法是使用RESTful API,這只是Wazuh Manager上本地注冊的包裝器。
2.agent key
管理器使用該文件/var/ossec/etc/client.keys存儲每個代理的注冊記錄,其中包括ID,名稱,IP和密鑰。例:
001Server1anye20e0394dca71bacdea57d4ca25d203f836eca12eeca1ec150c2e5f4309a653a
002ServerProd192.246.247.247b0c5548beda537daddb4da698424d0856c3d4e760eaced803d58c07ad1a95f4c
003DBServer192.168.0.1/248ec4843da9e61647d1ec3facab542acc26bd0e08ffc010086bb3a6fc22f6f65b
代理還具有/var/ossec/etc/client.keys僅包含其自己的注冊記錄的文件。Server1代理示例:
001 Server1 any e20e0394dca71bacdea57d4ca25d203f836eca12eeca1ec150c2e5f4309a653a
注冊代理的基本數據
要注冊代理,必須提供代理的名稱和IP。
有幾種方法可以設置代理IP:
- 任何IP:允許代理從任何IP地址進行連接。示例:Server1有anyIP。
- 固定IP:允許代理僅從指定的IP連接。示例:ServerProd擁有IP 192.246.247.247。
- 范圍IP:允許代理從指定的IP范圍進行連接。示例:DBServer具有IP范圍192.168.0.1/24。
一些注冊方法在注冊過程中自動檢測代理的IP。
3.注冊方法
類型 | 方法 | 描述 |
---|---|---|
手動 | 使用命令行 | 使用manage_agents二進制文件手動注冊代理。 |
自動 | 使用注冊服務 | 使用ossec-authd二進制文件自動注冊代理。 |
使用RESTful API | 通過腳本(bash,python,powershell)和API注冊代理。 |
3.1.手動命令注冊
要注冊代理,請按照下列步驟操作:
1.在 manager上,運行manage_agents
[root@wazhu-manage bin]# /var/ossec/bin/manage_agents
2.選擇A以添加代理。系統將要求您提供代理的名稱(使用代理主機名或其他任意名稱),IP地址和代理ID(此字段可以留空以自動分配ID)。
在此示例中,我們將添加名為“Example”的代理,動態IP(任意)和自動ID:
**************************************** * Wazuh v3.8.0 Agent manager. * * The following options are available: * **************************************** (A)dd an agent (A). (E)xtract key for an agent (E). (L)ist already added agents (L). (R)emove an agent (R). (Q)uit. Choose your action: A,E,L,R or Q: A - Adding a new agent (use '\q' to return to the main menu). Please provide the following: * A name for the new agent: agent01 * The IP Address of the new agent: 45.77.105.194 Confirm adding it?(y/n): y Agent added with ID 001.
3.提取新代理的密鑰。您將需要 agent:
**************************************** * Wazuh v3.8.0 Agent manager. * * The following options are available: * **************************************** (A)dd an agent (A). (E)xtract key for an agent (E). (L)ist already added agents (L). (R)emove an agent (R). (Q)uit. Choose your action: A,E,L,R or Q: E Available agents: ID: 001, Name: agent01, IP: 45.77.105.194 Provide the ID of the agent to extract the key (or '\q' to quit): 001 Agent key information for '001' is: MDAxIGFnZW50MDEgNDUuNzcuMTA1LjE5NCBjOWNkZjNhNzBmN2YyNDRlNTFkNGZkOWI5MGZhNTUxZGIwMDZhYTA2YWZkNzdmMzExMDZhYjg3ZTk4YjkyNmY0
4.選擇Q退出manage_agents
**************************************** * Wazuh v3.8.0 Agent manager. * * The following options are available: * **************************************** (A)dd an agent (A). (E)xtract key for an agent (E). (L)ist already added agents (L). (R)emove an agent (R). (Q)uit. Choose your action: A,E,L,R or Q: Q manage_agents: Exiting. 5.在agent上執行manage_agents: root@agent01:/# /var/ossec/bin/manage_agents **************************************** * Wazuh v3.8.0 Agent manager. * * The following options are available: * **************************************** (I)mport key from the server (I). (Q)uit. Choose your action: I or Q:
6.選擇我以導入密鑰並粘貼您在管理器上提取的密鑰
**************************************** * Wazuh v3.8.0 Agent manager. * * The following options are available: * **************************************** (I)mport key from the server (I). (Q)uit. Choose your action: I or Q: I * Provide the Key generated by the server. * The best approach is to cut and paste it. *** OBS: Do not include spaces or new lines. Paste it here (or '\q' to quit): MDAxIGFnZW50MDEgNDUuNzcuMTA1LjE5NCBjOWNkZjNhNzBmN2YyNDRlNTFkNGZkOWI5MGZhNTUxZGIwMDZhYTA2YWZkNzdmMzExMDZhYjg3ZTk4YjkyNmY0 Agent information: ID:001 Name:agent01 IP Address:45.77.105.194 Confirm adding it?(y/n): Y Added. **************************************** * Wazuh v3.8.0 Agent manager. * * The following options are available: * **************************************** (I)mport key from the server (I). (Q)uit. Choose your action: I or Q: q manage_agents: Exiting.
7.選擇“Q”退出manage_agents。
8.編輯Wazuh代理配置/var/ossec/etc/ossec.conf以添加Wazuh管理器IP地址。在該<client><server>部分中,將MANAGER_IP值更改為Wazuh經理地址
root@agent01:/# vi /var/ossec/etc/ossec.conf

9.重啟代理:
root@agent01:#/var/ossec/bin/ossec-control restart root@agent01:/# systemctl restart wazuh-agent root@agent01:/# systemctl status wazuh-agent wazuh-agent.service - Wazuh agent Loaded: loaded (/etc/systemd/system/wazuh-agent.service; enabled; vendor preset: Active: active (running) since Tue 2019-01-22 07:25:47 UTC; 11s ago Process: 4466 ExecStart=/usr/bin/env ${DIRECTORY}/bin/ossec-control start (code=e Tasks: 20 Memory: 8.0M CPU: 682ms CGroup: /system.slice/wazuh-agent.service ├─4492 /var/ossec/bin/ossec-execd ├─4497 /var/ossec/bin/ossec-agentd ├─4504 /var/ossec/bin/ossec-syscheckd ├─4509 /var/ossec/bin/ossec-logcollector └─4519 /var/ossec/bin/wazuh-modulesd Jan 22 07:25:45 agent01 systemd[1]: Starting Wazuh agent... Jan 22 07:25:45 agent01 env[4466]: Starting Wazuh v3.8.0... Jan 22 07:25:45 agent01 env[4466]: Started ossec-execd... Jan 22 07:25:45 agent01 env[4466]: Started ossec-agentd... Jan 22 07:25:45 agent01 env[4466]: Started ossec-syscheckd... Jan 22 07:25:45 agent01 env[4466]: Started ossec-logcollector... Jan 22 07:25:45 agent01 env[4466]: Started wazuh-modulesd... Jan 22 07:25:47 agent01 env[4466]: Completed. Jan 22 07:25:47 agent01 systemd[1]: Started Wazuh agent
4.強制插入注冊
/var/ossec/bin/manage_agents-nServer1-a10.10.10.10-F0
5.ossec-authd服務自動注冊aegnt
該ossec-authd服務允許客服端自動注冊agent.
- 在管理服務器(manage)上使用ossec-authd啟動注冊服務。
- 在代理主機(agent)上使用agent-auth用於連接到注冊服務。
使用默認選項配置在管理服務器上啟動守護程序將允許任何代理自行注冊,然后連接到它。下面提供了一些授權連接的機制的表格如下:
類型 |
方法 |
描述 |
||
---|---|---|---|---|
不安全 |
最簡單的方法。沒有身份驗證或主機驗證。 |
|||
安全 |
允許代理通過共享密碼進行身份驗證。此方法很簡單,但不執行主機驗證。 |
|||
管理員的證書由代理用於驗證服務器的CA簽名。這可能包括主機檢查。 |
||||
通過主機驗證 |
與上述相同,但管理服務器驗證代理主機的證書和地址。每個代理主機應該有一個證書。 |
|||
沒有主機驗證 |
管理服務器通過CA驗證代理主機,但不驗證主機地址。此方法允許使用共享代理證書。 |
注意:可以通過組合方式在注冊代理過程中提供更合理的安全注冊方法。
5.1. 先決條件
注冊服務需要管理服務器上的SSL證書才能工作。如果系統已有openssl包,則在安裝過程中將自動生成一個新包(cenos7默認生成)。證書及其密鑰將在/var/ossec/etc/目錄下生成。可以將有效證書與其密鑰一起使用,只需將它們復制到同一路徑即可:
# CP <ssl_cert> /var/ossec/etc/sslmanager.cert # CP <ssl_key> /var/ossec/etc/sslmanager.key
否則,您可以使用以下命令創建自簽名證書:
openssl req -x509 -batch -nodes -days 365 -newkey rsa:2048 -out /var/ossec/etc/sslmanager.cert -keyout /var/ossec/etc/sslmanager.key
5.2.簡單的方法注冊
這是注冊代理的最簡單方法,它不需要任何類型的授權或主機驗證。為此,請按照下列步驟操作之一:
1.在服務器上啟動注冊服務:
[root@wazhu-manage etc]# /var/ossec/bin/ossec-authd
2.在代理主機上使用agent-auth命令然后加上管理器的IP地址運行程序:
a.對於Linux系統:
root@agent01:~# cd /opt root@agent01:/opt# wget https://packages.wazuh.com/3.x/apt/pool/main/w/wazuh-agent/wazuh-agent_3.8.0-1_amd64.deb root@agent01:/opt# dpkg -i wazuh-agent_3.8.0-1_amd64.deb Selecting previously unselected package wazuh-agent. (Reading database ... 92845 files and directories currently installed.) Preparing to unpack wazuh-agent_3.8.0-1_amd64.deb ... Unpacking wazuh-agent (3.8.0-1) ... Setting up wazuh-agent (3.8.0-1) ... Processing triggers for systemd (229-4ubuntu21.4) ... Processing triggers for ureadahead (0.100.0-19) .. root@agent01:/# vi /var/ossec/etc/ossec.conf <server> <address>149.248.9.0</address> <port>1514</port> <protocol>udp</protocol> </server> root@agent02:/var/ossec/bin# /var/ossec/bin/agent-auth -m 149.248.9.0 2019/01/22 09:29:20 agent-auth: INFO: Started (pid: 4277). INFO: No authentication password provided. INFO: Connected to 149.248.9.0:1515 INFO: Using agent name as: agent02 INFO: Send request to manager. Waiting for reply. INFO: Received response with agent key INFO: Valid key created. Finished. INFO: Connection closed. root@agent02:#/var/ossec/bin/ossec-control restart
b.對於Windows系統:(其他條件要啟動代理和配置好代理的服務器IP地址)
# C:\Program Files (x86)\ossec-agent\agent-auth.exe -m <MANAGER_IP_ADDRESS>
您可以使用密碼保護管理服務器免受未經授權的代理注冊。自己選擇一個或讓注冊服務生成一個隨機密碼。要啟用密碼授權,請使用-P參數來運行注冊服務。
1.在管理服務器上執行以下步驟:
a.要使用自定義密碼,請編輯/var/ossec/etc/authd.pass文件進行修改。例如,如果我們想使用passw0rd作為密碼:
[root@wazhu-manage etc]# echo "passw0rdt=" > /var/ossec/etc/authd.pass [root@wazhu-manage etc]# /var/ossec/bin/ossec-authd -P
接受端口1515上的連接並使用文件中指定的密碼:/var/ossec/etc/authd.pas
b.如果未指定密碼,則注冊服務將自行創建密碼並將在命令控制終端輸出密碼:
[root@wazhu-manage etc]# /var/ossec/bin/ossec-authd -P
接受端口1515上的連接並為代理驗證輸出隨機密碼:abdc1234
2.代理可以通過將密碼存儲在文件中或通過命令行參數來使用密碼。請執行以下步驟之一:
(1).將密碼寫下到/var/ossec/etc/authd.pass下並運行agent-auth程序:
a.Linux系統:
# echo "abcd1234" > /var/ossec/etc/authd.pass # /var/ossec/bin/agent-auth -m <MANAGER_IP_ADDRESS>
b.Windows系統:
# echo abcd1234 > C:\Program Files (x86)\ossec-agent\authd.pass
# C:\Program Files (x86)\ossec-agent\agent-auth.exe -m <MANAGER_IP_ADDRESS>
(2).使用-P參數然后輸入密碼:
a.Linux系統:
# /var/ossec/bin/agent-auth -m <MANAGER_IP_ADDRESS> -P "abcd1234"
b.Windows系統:
# C:\Program Files (x86)\ossec-agent\agent-auth.exe -m <MANAGER_IP_ADDRESS> -P "abcd1234"
5.4.使用SSL進行主機驗證注冊
要使用具有SSL認證的注冊服務,您必須創建一個授權證書,用於為管理服務器和代理簽署證書。主機將收到此CA的副本以驗證遠程證書:
[root@wazhu-manage bin]# cd /var/ossec/etc [root@wazhu-manage etc]# cp sslmanager.cert sslmanager.cert.bak [root@wazhu-manage etc]# cp sslmanager.key sslmanager.key.bak [root@wazhu-manage etc]# rm sslmanager.cert sslmanager.key [root@wazhu-manage etc]#cd /opt [root@wazhu-manage opt]# openssl req -x509 -new -nodes -newkey rsa:2048 -keyout rootCA.key -out rootCA.pem -batch -subj "/C=US/ST=CA/O=Manager" Generating a 2048 bit RSA private key ...............................................+++ ............................................................+++ writing new private key to 'rootCA.key' ----- [root@wazhu-manage opt]# ls jre-8-linux-x64.rpm wazuh-agent-3.8.0-1.x86_64.rpm rootCA.key wazuh-api-3.8.0-1.x86_64.rpm rootCA.pem wazuh-manager-3.8.0-1.x86_64.rpm [root@wazhu-manage opt]#
注意:我們剛剛創建的文件rootCA.key是CA 的私鑰。需要簽署其他證書,保證其安全的重要性。請注意,我們永遠不會將此文件復制到其他主機上。
2.使用SSL簽署管理服務器證書
(1).為管理服務器頒發並簽署證書,它是將用於連接服務器的主機名或IP地址。例如,如果管理服務器的IP是192.168.1.2:
[root@wazhu-manage opt]# openssl req -new -nodes -newkey rsa:2048 -keyout sslmanager.key -out sslmanager.csr -subj '/C=US/CN=149.248.9.0' Generating a 2048 bit RSA private key .................................................+++ ..........................................................................................................................................................................................+++ writing new private key to 'sslmanager.key' ----- [root@wazhu-manage opt]# ls jre-8-linux-x64.rpm sslmanager.key rootCA.key wazuh-agent-3.8.0-1.x86_64.rpm rootCA.pem wazuh-api-3.8.0-1.x86_64.rpm sslmanager.csr wazuh-manager-3.8.0-1.x86_64.rpm [root@wazhu-manage opt]# openssl x509 -req -days 365 -in sslmanager.csr -CA rootCA.pem -CAkey rootCA.key -out sslmanager.cert -CAcreateserial Signature ok subject=/C=US/CN=149.248.9.0 Getting CA Private Key [root@wazhu-manage opt]# python -m SimpleHTTPServer 81
(2).將新創建的證書(及其密鑰)復制到管理服務器上/var/ossec/etc的文件夾中,然后啟動注冊服務:
[root@wazhu-manage opt]# cp sslmanager.cert sslmanager.key /var/ossec/etc [root@wazhu-manage opt]# systemctl restart wazuh-manager.service [root@wazhu-manage opt]# /var/ossec/bin/ossec-authd
(3).將CA(但不是密鑰復制到代理主機上/var/ossec/etc的文件夾中,然后運行agent-auth程序:
a.Linux系統:
root@agent03:/opt# wget http://149.248.9.0:81/rootCA.pem root@agent03:/opt# cp rootCA.pem /var/ossec/etc root@agent03:/opt# /var/ossec/bin/ossec-control restart
b.對於Windows系統,必須將CA復制到:C:\Program Files (x86)\ossec-agent
# cp rootCA.pem C:\Program Files (x86)\ossec-agent # C:\Program Files (x86)\ossec-agent\agent-auth.exe -m 149.248.9.0 -v C:\Program Files (x86)\ossec-agent\rootCA.pem
5.5.使用SSL驗證代理
1.代理驗證(無主機驗證)
在此示例中,我們將為代理創建證書而不指定其主機名,以便許多代理可以使用相同的證書。無論他們從何處進行連接,這將驗證代理是否具有由CA簽署的證書.
(1).為代理簽發證書並簽名。請注意,我們不會輸入公共名稱字段:
# openssl req -new -nodes -newkey rsa:2048 -keyout sslagent.key -out sslagent.csr -batch # openssl x509 -req -days 365 -in sslagent.csr -CA rootCA.pem -CAkey rootCA.key -out sslagent.cert -CAcreateserial
(2).將CA(但不是密鑰)復制到管理服務器上/var/ossec/etc的文件夾中(如果它尚未存在)並啟動注冊服務:
# cp rootCA.pem /var/ossec/etc # /var/ossec/bin/ossec-authd -v /var/ossec/etc/rootCA.pem
(3).將新創建的證書(及其密鑰)復制到代理主機/var/ossec/etc的文件夾內,然后運行agent-auth程序。例如,如果管理服務器的IP地址是192.168.1.2:
a.Linux系統:
# cp sslagent.cert sslagent.key /var/ossec/etc # /var/ossec/bin/agent-auth -m 192.168.1.2 -x /var/ossec/etc/sslagent.cert -k /var/ossec/etc/sslagent.key
b.對於Windows系統,必須將CA復制到:C:\Program Files (x86)\ossec-agent
# cp sslagent.cert sslagent.key C:\Program Files (x86)\ossec-agent # C:\Program Files (x86)\ossec-agent\agent-auth.exe -m 192.168.1.2 -x C:\Program Files (x86)\ossec-agent\sslagent.cert -k C:\Program Files (x86)\ossec-agent\sslagent.key
2.代理驗證(帶主機驗證)
這是前一種替代的方法。在這種情況下,我們將代理的證書綁定到管理服務器的IP地址。
(1).為代理頒發並簽署證書,將其主機名或IP地址輸入公共名稱字段。例如,如果代理的IP是192.168.1.3:
# OpenSSL的REQ -new -nodes -newkey RSA:2048 -keyout sslagent.key退房手續sslagent.csr -subj '/C=US/CN=192.168.1.3' # OpenSSL的X509 -req -days 365 -in sslagent.csr - CA rootCA.pem -CAkey rootCA.key -out sslagent.cert -CAcreateserial
(2).將CA(但不是密鑰)復制到管理器上/var/ossec/etc的文件夾中(如果它尚未存在)並啟動注冊服務。請注意,我們使用該-s參數來啟用代理主機驗證:
# cp rootCA.pem /var/ossec/etc # /var/ossec/bin/ossec-authd -v /var/ossec/etc/rootCA.pem
(3).將新創建的證書(及其密鑰)復制到代理上/var/ossec/etc的文件夾中,然后運行agent-auth程序。例如,如果管理服務器的IP地址是192.168.1.2:
a.Linux系統:
# cp sslagent.cert sslagent.key /var/ossec/etc # /var/ossec/bin/agent-auth -m 192.168.1.2 -x /var/ossec/etc/sslagent.cert -k /var/ossec/etc/sslagent.key
b.對於Windows系統,必須將CA復制到:C:\Program Files (x86)\ossec-agent
# cp sslagent.cert sslagent.key C:\Program Files (x86)\ossec-agent # C:\Program Files (x86)\ossec-agent\agent-auth.exe -m 192.168.1.2 -x C:\Program Files (x86)\ossec-agent\sslagent.cert -k C:\Program Files (x86)\ossec-agent\sslagent.key
5.6.其他配置
-
默認情況下,注冊服務會使用其靜態IP地址添加代理。如果要使用動態IP添加它們(如any在manage_agents工具上使用),則必須更改管理器的配置文件
<auth> <use_source_ip>no</use_source_ip> </auth>ls
-
不允許重復的IP,因此如果已經有另一個使用相同IP注冊的代理,則不會添加代理。通過更改配置文件,如果找到具有相同IP地址的舊代理,ossec-authd則可以告知強制注冊。這將使舊代理的注冊被刪除:
<auth> <force_insert>yes</force_insert> <force_time>0</force_time> </auth>
0參數表示最小時間(秒),因為舊的代理是最后一個連接(一個要被刪除的代理)。在這種情況下,它意味着刪除舊代理的注冊,無論它最近被接入
6.腳本化自動注冊agent:
使用API注冊代理需要兩個請求:
我們准備了一些不同編程語言的腳本來幫助完成使用API注冊代理的任務:
6.1 使用shell腳本自動注冊代理
root@agent04:~# cd /opt root@agent04:/opt# wget https://packages.wazuh.com/3.x/apt/pool/main/w/wazuh-agent/wazuh-agent_3.8.0-1_amd64.de root@agent04:/opt# chmod +x wazuh-agent_3.8.0-1_amd64.deb root@agent04:/opt# vi /var/ossec/etc/ossec.conf <server> <address>149.248.9.0</address> <port>1514</port> <protocol>udp</protocol> </server> root@agent04:/opt# vi api-register-agent.sh root@agent04:/opt# sh api-register-agent.sh
6.2.使用API注冊代理
基本上,腳本執行以下步驟:
第1步:將代理添加到管理器。
# curl -u foo:bar -X POST -d 'name=NewAgent&ip=10.0.0.8'"http://localhost:55000/agents" {"error":0,"data":"001"}
第2步:獲取代理密鑰。
# curl -u foo:bar -X GET "http://localhost:55000/agents/001/key" {"error":0,"data":"MDAxIE5ld0FnZW50IDEwLjAuMC44IDM0MGQ1NjNkODQyNjcxMWIyYzUzZTE1MGIzYjEyYWVlMTU1ODgxMzVhNDE3MWQ1Y2IzZDY4M2Y0YjA0ZWVjYzM="}
第3步:將密鑰復制到代理。
# /var/ossec/bin/manage_agents -i MDAxIE5ld0FnZW50IDEwLjAuMC44IDM0MGQ1NjNkODQyNjcxMWIyYzUzZTE1MGIzYjEyYWVlMTU1ODgxMzVhNDE3MWQ1Y2IzZDY4M2Y0YjA0ZWVjYzM=
注意:如果將命令直接粘貼到終端中,則代理密鑰將保存在bash歷史記錄中。使用manage_agents不帶參數或腳本。
第4步:重新啟動代理
systemctl restart wazuh-agent