#!/bin/bash # Wazuh App Copyright (C) 2019 Wazuh Inc. (License GPLv2) set -e ############################################################################## # Set Elasticsearch API url. ############################################################################## if [ "x${ELASTICSEARCH_URL}" = "x" ]; then el_url="http://elasticsearch:9200" else el_url="${ELASTICSEARCH_URL}" fi echo "ENTRYPOINT - Set Elasticsearc url:${ELASTICSEARCH_URL}" ############################################################################## # If there are credentials for Kibana they are obtained. ############################################################################## KIBANA_USER="" KIBANA_PASS="" if [[ "x${SECURITY_CREDENTIALS_FILE}" == "x" ]]; then KIBANA_USER=${SECURITY_KIBANA_USER} KIBANA_PASS=${SECURITY_KIBANA_PASS} else input=${SECURITY_CREDENTIALS_FILE} while IFS= read -r line do if [[ $line == *"KIBANA_PASSWORD"* ]]; then arrIN=(${line//:/ }) KIBANA_PASS=${arrIN[1]} elif [[ $line == *"KIBANA_USER"* ]]; then arrIN=(${line//:/ }) KIBANA_USER=${arrIN[1]} fi done < "$input" fi echo "ENTRYPOINT - Kibana credentials obtained." ############################################################################## # Establish the way to run the curl command, with or without authentication. ############################################################################## if [ ${SECURITY_ENABLED} != "no" ]; then auth="-u ${KIBANA_USER}:${KIBANA_PASS} -k" elif [ ${ENABLED_XPACK} != "true" || "x${ELASTICSEARCH_USERNAME}" = "x" || "x${ELASTICSEARCH_PASSWORD}" = "x" ]; then auth="" else auth="--user ${ELASTICSEARCH_USERNAME}:${ELASTICSEARCH_PASSWORD}" fi echo "ENTRYPOINT - Kibana authentication established." ############################################################################## # Waiting for elasticsearch. ############################################################################## until curl -XGET $el_url ${auth}; do >&2 echo "ENTRYPOINT - Elastic is unavailable: sleeping" sleep 5 done sleep 2 >&2 echo "ENTRYPOINT - Elasticsearch is up." ############################################################################## # Waiting for wazuh alerts template. ############################################################################## strlen=0 while [[ $strlen -eq 0 ]] do template=$(curl $auth $el_url/_cat/templates/wazuh -s) strlen=${#template} >&2 echo "ENTRYPOINT - Wazuh alerts template not loaded - sleeping." sleep 2 done sleep 2 >&2 echo "ENTRYPOINT - Wazuh alerts template is loaded." ############################################################################## # Create keystore if security is enabled. ############################################################################## if [[ $SECURITY_ENABLED == "yes" ]]; then echo "ENTRYPOINT - Create Keystore." /usr/share/kibana/bin/kibana-keystore create # Add keys to keystore echo -e "$KIBANA_PASS" | /usr/share/kibana/bin/kibana-keystore add elasticsearch.password --stdin echo -e "$KIBANA_USER" | /usr/share/kibana/bin/kibana-keystore add elasticsearch.username --stdin echo "ENTRYPOINT - Keystore created." fi ############################################################################## # If security is enabled set Kibana configuration. # Create the ssl certificate. ############################################################################## if [[ $SECURITY_ENABLED == "yes" ]]; then bash /usr/share/kibana/20-entrypoint_certs_management.sh fi ############################################################################## # Run kibana_settings.sh script. ############################################################################## bash /usr/share/kibana/20-entrypoint_kibana_settings.sh & /usr/local/bin/kibana-docker