Please Note: This article is part of our historical archive. Because it was published a while ago, some of the information, links, or context may now be outdated.
Wondering how to Install Wazuh Server on CentOS 7? We will help you with it.
Wazuh is a free, open-source and enterprise-ready security monitoring solution for threat detection, integrity monitoring, incident response and compliance.
Here at Bobcares, we handle requests from our customers to Install Wazuh Server on CentOS 7 as a part of Server Management Services.
Today, let us see how our Support techs resolve this issue for our customers.
Install Wazuh Server on CentOS 7
In this article, let us see Distributed architecture installation.
Wazuh manager and Elastic Stack are managed on the same platform by single-host implementations.
* Wazuh server: Runs the API and Wazuh Manager. The data from deployed agents are collected and analyzed.
* Elastic Stack: Runs Elasticsearch, Filebeat and Kibana (including Wazuh). It reads, parses, indexes and stores Wazuh manager alert data.
* Wazuh agent: Runs on the host monitored, collecting log and configuration data, and detecting intrusions and anomalies.
Today, let us see how our support Techs install Wazuh.
1. Installing Wazuh Server
Let us set the hostname first. Launch Terminal and enter the following command:
# hostnamectl set-hostname wazuh-serverFirstly, update CentOS and packages:
# yum update -yNext, install NTP and check its service status.
# yum install ntp # systemctl status ntpdIf the service is not started, start it using below command:
# systemctl start ntpdThen, enable NTP on system boot:
# systemctl enable ntpdNext, modify firewall rules to allow NTP service. Run the following commands to enable service.
# firewall-cmd –add-service=ntp –zone=public –permanent # firewall-cmd –reloadInstalling Wazuh Manager
Let us add key:
# rpm –import https://packages.wazuh.com/key/GPG-KEY-WAZUHEdit the Wazuh repository:
# vim /etc/yum.repos.d/wazuh.repoAdd the following content to the file.
[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=1Save and exit the file.
List the repositories using the repolist command.
# yum repolistFirstly, install the Wazuh manager using the below command:
# yum install wazuh-manager -yThen, install Wazuh Manager and check the status of it.
# systemctl status wazuh-managerInstalling the Wazuh API
NodeJS >= 4.6.1 is required to run the Wazuh API.Then, add the official NodeJS repository:
# curl –silent –location https://rpm.nodesource.com/setup_8.x | bash – install NodeJS: # yum install nodejs -yInstall the Wazuh API. It will update NodeJS if it is required:
# yum install wazuh-apiThen, check the status of wazuh-api.
# systemctl status wazuh-apiChange the default credentials manually using the following commands:
# cd /var/ossec/api/configuration/authSet a password for the user.
# node htpasswd -Bc -C 10 user bobRestart API.
# systemctl restart wazuh-apiIf we need it, we can change the port manually. The file /var/ossec/api/configuration/config.js contains the parameter:
// TCP Port used by the API. config.port = “55000”;We are not changing the default port.
Installing Filebeat
Filebeat is the tool on the Wazuh server that securely forwards alerts and archived events to Elasticsearch. To install it, run the following command:
# rpm –import https://packages.elastic.co/GPG-KEY-elasticsearchSetup repository:
# vim /etc/yum.repos.d/elastic.repoAdd the following contents to the server:
[elasticsearch-7.x] name=Elasticsearch repository for 7.x packages baseurl=https://artifacts.elastic.co/packages/7.x/yum gpgcheck=1 gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch enabled=1 autorefresh=1 type=rpm-mdInstall Filebeat:
# yum install filebeat-7.5.1Download the Filebeat configuration file from the Wazuh repository. This is pre-configured to forward Wazuh alerts to Elasticsearch:
# curl -so /etc/filebeat/filebeat.yml https://raw.githubusercontent.com/wazuh/wazuh/v3.11.0/extensions/filebeat/7.x/filebeat.ymlChange file Permissions:
# chmod go+r /etc/filebeat/filebeat.ymlDownload the alerts template for Elasticsearch:
# curl -so /etc/filebeat/wazuh-template.json https://raw.githubusercontent.com/wazuh/wazuh/v3.11.0/extensions/elasticsearch/7.x/wazuh-template.json # chmod go+r /etc/filebeat/wazuh-template.jsonDownload the Wazuh module for Filebeat:
# curl -s https://packages.wazuh.com/3.x/filebeat/wazuh-filebeat-0.1.tar.gz | sudo tar -xvz -C /usr/share/filebeat/moduleAdd Elasticsearch server IP. Edit “filebeat.yml.”
# vim /etc/filebeat/filebeat.ymlThen, modify the following line.
output.elasticsearch.hosts: [‘http://ELASTIC_SERVER_IP:9200′]Next, enable and start the Filebeat service:
# systemctl daemon-reload # systemctl enable filebeat.service # systemctl start filebeat.service2. Installing Elastic Stack
We can configure second CentOS server with ELK.
Do the configurations on elastic stack server.
Firstly, let us set hostname.
# hostnamectl set-hostname elkThen, update the system:
# yum update -yInstalling ELK
Install Elastic Stack with RPM packages and then add the Elastic repository and its GPG key:
# rpm –import https://packages.elastic.co/GPG-KEY-elasticsearchLater, create a repository file:
# vim /etc/yum.repos.d/elastic.repoThen, add the following content to the file:
[elasticsearch-7.x] name=Elasticsearch repository for 7.x packages baseurl=https://artifacts.elastic.co/packages/7.x/yum gpgcheck=1 gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch enabled=1 autorefresh=1 type=rpm-mdInstalling Elasticsearch
Firstly, Install the Elasticsearch package:
# yum install elasticsearch-7.5.1Elasticsearch listens by default on the loopback interface (localhost). Configure Elasticsearch to listen to a non-loopback address by editing /etc/elasticsearch/elasticsearch.yml and uncommenting network.host configuration. Adjust the IP value we want to connect to:
network.host: 0.0.0.0
Change firewall rules.
# firewall-cmd –permanent –zone=public –add-rich-rule=’ rule family=”ipv4″ source address=”34.232.210.23/32″ port protocol=”tcp” port=”9200″ accept’Next, reload firewall rules:
# firewall-cmd –reloadThe further configuration will be necessary for the elastic search configuration file.
Edit the “elasticsearch.yml” file.
# vim /etc/elasticsearch/elasticsearch.ymlChange or edit “node.name” and “cluster.initial_master_nodes”.
node.name: <node_name> cluster.initial_master_nodes: [“<node_name>”]Enable and start the Elasticsearch service:
# systemctl daemon-reloadFirstly, enable on system boot.
# systemctl enable elasticsearch.serviceThen, start elastic search service.
# systemctl start elasticsearch.service Check the status of the elastic search.systemctl status elasticsearch.service
Next, check the log file for any issues.
# tail -f /var/log/elasticsearch/elasticsearch.logOnce Elasticsearch is up and running, we need to load the Filebeat template. Run the following command on the Wazuh server:
filebeat setup –index-management -E setup.template.json.enabled=falseInstalling Kibana
Firstly, Install the Kibana package:
# yum install kibana-7.5.1Install the Wazuh app plugin for Kibana:
# sudo -u kibana /usr/share/kibana/bin/kibana-plugin install https://packages.wazuh.com/wazuhapp/wazuhapp-3.11.0_7.5.1.zipKibana Plugin is needed to modify Kibana configurations to access Kibana from the outside.
Edit the Kibana configuration file.
#vim /etc/kibana/kibana.ymlChange the following line.
server.host: “0.0.0.0”
Configure the URLs of the Elasticsearch instances.
elasticsearch.hosts: [“http://localhost:9200”]Then, enable and start the Kibana service:
# systemctl daemon-reload # systemctl enable kibana.service # systemctl start kibana.serviceAdding Wazuh API to Kibana Configurations
Edit “wazuh.yml.”
# vim /usr/share/kibana/plugins/wazuh/wazuh.ymlThen, edit hostname, username and password.
Finally, save and exit the file and restart the Kibana service.
# systemctl restart kibana.serviceWe installed the Wazuh server and the ELK server. Now we are going to add hosts using an agent.
3. Installing Wazuh agent
I. Adding Ubuntu Server
a. Firstly, nstalling needed packages
# apt-get install curl apt-transport-https lsb-release gnupg2Install the Wazuh repository GPG key:
# curl -s https://packages.wazuh.com/key/GPG-KEY-WAZUH | apt-key add –Add the repository and then update repositories.
# echo “deb https://packages.wazuh.com/3.x/apt/ stable main” | tee /etc/apt/sources.list.d/wazuh.list # apt-get updateb. Then, installing the Wazuh agent
Below command adds “WAZUH_MANAGER” IP to wazuh-agent configuration automatically when installing it.
WAZUH_MANAGER=”52.91.79.65″ apt-get install wazuh-agentII. Adding CentOS host
Add the Wazuh repository.
# rpm –import http://packages.wazuh.com/key/GPG-KEY-WAZUHNext, edit and add to the repository:
vim /etc/yum.repos.d/wazuh.repThen, add the following contents:
[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=1Then, install the agent.
WAZUH_MANAGER=”52.91.79.65″ yum install wazuh-agent4. Accessing Wazuh Dashboard
Firstly, browse Kibana using the IP.
http://IP or hostname:5601/Then, you will see the interface.
Then, click on “Wazuh” Icon to go to its Dashboard. We will see “Wazuh” Dashboard.
Finally, here we can see connected agents, security information management, etc. When we click on security events; we can see a graphical view of events.
Common error: Install Wazuh Server on CentOS 7
While compiling Wazuh server, it results in the error given below:
CC libwazuhext.so cc: error: external/libffi/server/.libs/libffi.a: No such file or directory make: *** [libwazuhext.so] Error 1
Cause for Error while Installing Wazuh Server on CentOS 7
The installer is compiling the libffi library, but the Wazuh’s Makefile is defining a parameter that conflicts with the libffi’s Makefile.
Solution
Replace this line:
LIBFFI_LIB = $(EXTERNAL_LIBFFI)server/.libs/libffi.aWith:
LIBFFI_LIB = $(EXTERNAL_LIBFFI)$(TARGET)/.libs/libffi.aThis script should fix the issue and recompile:
cd src sed -i ‘s,LIBFFI_LIB = $(EXTERNAL_LIBFFI)server/.libs/libffi.a,LIBFFI_LIB = $(EXTERNAL_LIBFFI)$(TARGET)/.libs/libffi.a,’ Makefile make clean cd .. sudo ./install.sh
[ Need any further assistance in analyzing logs with Nagios Log Server? – We’re available 24*7]
Conclusion
In short, Wazuh is a free, open-source and enterprise-ready security monitoring solution for threat detection, integrity monitoring, incident response and compliance. Today, we saw how our Support Engineers install it.