Install Elastic Stack with RPM packages

The RPM packages are suitable for installation on Red Hat, CentOS and other RPM-based systems.


Many of the commands described below need to be executed with root user privileges.


  1. Oracle Java JRE 8 is required by Logstash and Elasticsearch.


The following command accepts the necessary cookies to download Oracle Java JRE. Please, visit Oracle Java 8 JRE Download Page for more information.

# curl -Lo jre-8-linux-x64.rpm --header "Cookie: oraclelicense=accept-securebackup-cookie" ""

Now, check if the package was download successfully:

# rpm -qlp jre-8-linux-x64.rpm > /dev/null 2>&1 && echo "Java package downloaded successfully" || echo "Java package did not download successfully"

Finally, install the RPM package using yum:

# yum -y install jre-8-linux-x64.rpm
# rm -f jre-8-linux-x64.rpm
  1. Install the Elastic repository and its GPG key:

# rpm --import

# cat > /etc/yum.repos.d/elastic.repo << EOF
name=Elasticsearch repository for 6.x packages


Elasticsearch is a highly scalable full-text search and analytics engine. For more information, please see Elasticsearch.

  1. Install the Elasticsearch package:

# yum install elasticsearch-6.3.2
  1. Enable and start the Elasticsearch service:

  1. For Systemd:

# systemctl daemon-reload
# systemctl enable elasticsearch.service
# systemctl start elasticsearch.service
  1. For SysV Init:

# chkconfig --add elasticsearch
# service elasticsearch start

It's important to wait until the Elasticsearch server finishes starting. Check the current status with the following command, which should give you a response like the shown below:

# curl localhost:9200/?pretty

  "name" : "Zr2Shu_",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "M-W_RznZRA-CXykh_oJsCQ",
  "version" : {
    "number" : "6.3.2",
    "build_flavor" : "default",
    "build_type" : "rpm",
    "build_hash" : "053779d",
    "build_date" : "2018-07-20T05:20:23.451332Z",
    "build_snapshot" : false,
    "lucene_version" : "7.3.1",
    "minimum_wire_compatibility_version" : "5.6.0",
    "minimum_index_compatibility_version" : "5.0.0"
  "tagline" : "You Know, for Search"
  1. Load the Wazuh template for Elasticsearch:

# curl | curl -XPUT 'http://localhost:9200/_template/wazuh' -H 'Content-Type: application/json' -d @-


It is recommended that the default configuration be edited to improve the performance of Elasticsearch. To do so, please see Elasticsearch tuning.


Logstash is the tool that collects, parses, and forwards data to Elasticsearch for indexing and storage of all logs generated by the Wazuh server. For more information, please see Logstash.

  1. Install the Logstash package:

# yum install logstash-6.3.2
  1. Download the Wazuh configuration file for Logstash:

  • Local configuration (only in a single-host architecture):

    # curl -so /etc/logstash/conf.d/01-wazuh.conf

    Because the Logstash user needs to read the alerts.json file, please add it to OSSEC group by running:

    # usermod -a -G ossec logstash
  • Remote configuration (only in a distributed architecture):

    # curl -so /etc/logstash/conf.d/01-wazuh.conf


Follow the next steps if you use CentOS-6/RHEL-6 or Amazon AMI (logstash uses Upstart like a service manager and needs to be fixed, see this bug):

  1. Edit the file /etc/logstash/startup.options changing line 30 from LS_GROUP=logstash to LS_GROUP=ossec.

  2. Update the service with the new parameters by running the command /usr/share/logstash/bin/system-install

  3. Restart Logstash.

  1. Enable and start the Logstash service:

  1. For Systemd:

# systemctl daemon-reload
# systemctl enable logstash.service
# systemctl start logstash.service
  1. For SysV Init:

# chkconfig --add logstash
# service logstash start


If you are running the Wazuh server and the Elastic Stack server on separate systems (distributed architecture), it is important to configure encryption between Filebeat and Logstash. To do so, please see Setting up SSL for Filebeat and Logstash.


Kibana is a flexible and intuitive web interface for mining and visualizing the events and archives stored in Elasticsearch. Find more information at Kibana.

  1. Install the Kibana package:

# yum install kibana-6.3.2
  1. Install the Wazuh App plugin for Kibana:

  1. Increase the default Node.js heap memory limit to prevent out of memory errors when installing the Wazuh App. Set the limit as follows:

# export NODE_OPTIONS="--max-old-space-size=3072"
  1. Install the Wazuh App:

# /usr/share/kibana/bin/kibana-plugin install


The Kibana plugin installation process may take several minutes. Please wait patiently.


If you want to download a different Wazuh App plugin for another version of Wazuh or Elastic Stack, check the table available at GitHub and use the appropriate installation command.

  1. Optional. Kibana will only listen on the loopback interface (localhost) by default. To set up Kibana to listen on all interfaces, edit the file /etc/kibana/kibana.yml uncommenting the setting Change the value to: ""


It is recommended that an Nginx proxy be set up for Kibana in order to use SSL encryption and to enable authentication. Instructions to set up the proxy can be found at Setting up SSL and authentication for Kibana.

  1. Enable and start the Kibana service:

  1. For Systemd:

# systemctl daemon-reload
# systemctl enable kibana.service
# systemctl start kibana.service
  1. For SysV Init:

# chkconfig --add kibana
# service kibana start
  1. Disable the Elasticsearch repository:

It is recommended that the Elasticsearch repository be disabled in order to prevent an upgrade to a newer Elastic Stack version due to the possibility of undoing changes with the App. To do this, use the following command:

# sed -i "s/^enabled=1/enabled=0/" /etc/yum.repos.d/elastic.repo

Connecting the Wazuh App with the API

Follow the next guide in order to connect the Wazuh App with the API: