Change services names and build certs generator

This commit is contained in:
vcerenu
2022-02-07 17:48:26 -03:00
parent efed32f997
commit d5bda0896a
38 changed files with 1396 additions and 1338 deletions
+4 -4
View File
@@ -3,8 +3,8 @@ version: '3'
services:
generator:
image: wazuh/opendistro-certs-generator:0.1
hostname: opendistro-certs-generator
image: wazuh/wazuh-certs-generator:0.0.1
hostname: wazuh-certs-generator
volumes:
- ./production_cluster/wazuh_indexer_ssl_certs/certs.yml:/usr/src/config/myconf.yml
- ./production_cluster/wazuh_indexer_ssl_certs/:/usr/src/certs/out/
- ./production_cluster/wazuh_indexer_ssl_certs/certs.yml:/unattended_installer/install_functions/config.yml
- ./production_cluster/wazuh_indexer_ssl_certs/:/unattended_installer/install_functions/certificates/
+8 -13
View File
@@ -1,21 +1,16 @@
# Wazuh Docker Copyright (C) 2021 Wazuh Inc. (License GPLv2)
FROM ubuntu:20.04
FROM wazuh/wazuh-indexer:4.3.0
ARG WAZUH_VERSION=4.3.0-1
RUN apt-get update && apt-get install openssl -y
RUN apt-get update && apt install curl -y
WORKDIR /
RUN curl https://packages-dev.wazuh.com/pre-release/apt/pool/main/w/wazuh-indexer/wazuh-indexer_${WAZUH_VERSION}_amd64.deb --output wazuh-indexer_${WAZUH_VERSION}_amd64.deb && \
dpkg -i wazuh-indexer_${WAZUH_VERSION}_amd64.deb
WORKDIR /usr/share/wazuh-indexer/plugins/opensearch-security/tools/
RUN rm wazuh-cert-tool.sh && \
curl -sO https://packages-dev.wazuh.com/resources/4.3/install_functions/opendistro/wazuh-cert-tool.sh &&\
chmod 750 wazuh-cert-tool.sh
COPY config/unattended_installer.tar.gz /
COPY config/entrypoint.sh /
RUN chmod 700 /entrypoint.sh
RUN tar -xzvf /unattended_installer.tar.gz
ENTRYPOINT [ "/entrypoint.sh" ]
RUN chmod 700 /entrypoint.sh && chmod -R 700 unattended_installer
ENTRYPOINT ["/entrypoint.sh"]
+4 -1
View File
@@ -5,4 +5,7 @@
# Start Wazuh indexer
##############################################################################
/usr/share/wazuh-indexer/plugins/opensearch-security/tools/wazuh-cert-tool.sh
/unattended_installer/install_functions/wazuh-cert-tool.sh
mkdir -p /unattended_installer/install_functions/certificates/
cp /unattended_installer/install_functions/certs/* /unattended_installer/install_functions/certificates/
chmod -R 664 /unattended_installer/install_functions/certificates/*
@@ -0,0 +1,10 @@
nodes:
elasticsearch:
name: elasticsearch
ip: 127.0.0.1
wazuh_servers:
name: filebeat
ip: 127.0.0.1
kibana:
name: kibana
ip: 127.0.0.1
@@ -0,0 +1,74 @@
---
# This is the internal user database
# The hash value is a bcrypt hash and can be generated with plugin/tools/hash.sh
_meta:
type: "internalusers"
config_version: 2
# Define your internal users here
## Demo users
admin:
hash: "$2a$12$VcCDgh2NDk07JGN0rjGbM.Ad41qVR/YFJcgHp0UGns5JDymv..TOG"
reserved: true
backend_roles:
- "admin"
description: "Demo admin user"
kibanaserver:
hash: "$2a$12$4AcgAt3xwOWadA5s5blL6ev39OXDNhmOesEoo33eZtrq2N0YrU3H."
reserved: true
description: "Demo kibanaserver user"
kibanaro:
hash: "$2a$12$JJSXNfTowz7Uu5ttXfeYpeYE0arACvcwlPBStB1F.MI7f0U9Z4DGC"
reserved: false
backend_roles:
- "kibanauser"
- "readall"
attributes:
attribute1: "value1"
attribute2: "value2"
attribute3: "value3"
description: "Demo kibanaro user"
logstash:
hash: "$2a$12$u1ShR4l4uBS3Uv59Pa2y5.1uQuZBrZtmNfqB3iM/.jL0XoV9sghS2"
reserved: false
backend_roles:
- "logstash"
description: "Demo logstash user"
readall:
hash: "$2a$12$ae4ycwzwvLtZxwZ82RmiEunBbIPiAmGZduBAjKN0TXdwQFtCwARz2"
reserved: false
backend_roles:
- "readall"
description: "Demo readall user"
snapshotrestore:
hash: "$2y$12$DpwmetHKwgYnorbgdvORCenv4NAK8cPUg8AI6pxLCuWf/ALc0.v7W"
reserved: false
backend_roles:
- "snapshotrestore"
description: "Demo snapshotrestore user"
wazuh_admin:
hash: "$2y$12$d2awHiOYvZjI88VfsDON.u6buoBol0gYPJEgdG1ArKVE0OMxViFfu"
reserved: true
hidden: false
backend_roles: []
attributes: {}
opendistro_security_roles: []
static: false
wazuh_user:
hash: "$2y$12$BQixeoQdRubZdVf/7sq1suHwiVRnSst1.lPI2M0.GPZms4bq2D9vO"
reserved: true
hidden: false
backend_roles: []
attributes: {}
opendistro_security_roles: []
static: false
@@ -0,0 +1,163 @@
_meta:
type: "roles"
config_version: 2
# Restrict users so they can only view visualization and dashboard on kibana
kibana_read_only:
reserved: true
# The security REST API access role is used to assign specific users access to change the security settings through the REST API.
security_rest_api_access:
reserved: true
# Allows users to view monitors, destinations and alerts
alerting_read_access:
reserved: true
cluster_permissions:
- 'cluster:admin/opendistro/alerting/alerts/get'
- 'cluster:admin/opendistro/alerting/destination/get'
- 'cluster:admin/opendistro/alerting/monitor/get'
- 'cluster:admin/opendistro/alerting/monitor/search'
# Allows users to view and acknowledge alerts
alerting_ack_alerts:
reserved: true
cluster_permissions:
- 'cluster:admin/opendistro/alerting/alerts/*'
# Allows users to use all alerting functionality
alerting_full_access:
reserved: true
cluster_permissions:
- 'cluster_monitor'
- 'cluster:admin/opendistro/alerting/*'
index_permissions:
- index_patterns:
- '*'
allowed_actions:
- 'indices_monitor'
- 'indices:admin/aliases/get'
- 'indices:admin/mappings/get'
# Allow users to read Anomaly Detection detectors and results
anomaly_read_access:
reserved: true
cluster_permissions:
- 'cluster:admin/opendistro/ad/detector/info'
- 'cluster:admin/opendistro/ad/detector/search'
- 'cluster:admin/opendistro/ad/detectors/get'
- 'cluster:admin/opendistro/ad/result/search'
- 'cluster:admin/opendistro/ad/tasks/search'
# Allows users to use all Anomaly Detection functionality
anomaly_full_access:
reserved: true
cluster_permissions:
- 'cluster_monitor'
- 'cluster:admin/opendistro/ad/*'
index_permissions:
- index_patterns:
- '*'
allowed_actions:
- 'indices_monitor'
- 'indices:admin/aliases/get'
- 'indices:admin/mappings/get'
# Allows users to read Notebooks
notebooks_read_access:
reserved: true
cluster_permissions:
- 'cluster:admin/opendistro/notebooks/list'
- 'cluster:admin/opendistro/notebooks/get'
# Allows users to all Notebooks functionality
notebooks_full_access:
reserved: true
cluster_permissions:
- 'cluster:admin/opendistro/notebooks/create'
- 'cluster:admin/opendistro/notebooks/update'
- 'cluster:admin/opendistro/notebooks/delete'
- 'cluster:admin/opendistro/notebooks/get'
- 'cluster:admin/opendistro/notebooks/list'
# Allows users to read and download Reports
reports_instances_read_access:
reserved: true
cluster_permissions:
- 'cluster:admin/opendistro/reports/instance/list'
- 'cluster:admin/opendistro/reports/instance/get'
- 'cluster:admin/opendistro/reports/menu/download'
# Allows users to read and download Reports and Report-definitions
reports_read_access:
reserved: true
cluster_permissions:
- 'cluster:admin/opendistro/reports/definition/get'
- 'cluster:admin/opendistro/reports/definition/list'
- 'cluster:admin/opendistro/reports/instance/list'
- 'cluster:admin/opendistro/reports/instance/get'
- 'cluster:admin/opendistro/reports/menu/download'
# Allows users to all Reports functionality
reports_full_access:
reserved: true
cluster_permissions:
- 'cluster:admin/opendistro/reports/definition/create'
- 'cluster:admin/opendistro/reports/definition/update'
- 'cluster:admin/opendistro/reports/definition/on_demand'
- 'cluster:admin/opendistro/reports/definition/delete'
- 'cluster:admin/opendistro/reports/definition/get'
- 'cluster:admin/opendistro/reports/definition/list'
- 'cluster:admin/opendistro/reports/instance/list'
- 'cluster:admin/opendistro/reports/instance/get'
- 'cluster:admin/opendistro/reports/menu/download'
# Allows users to use all asynchronous-search functionality
asynchronous_search_full_access:
reserved: true
cluster_permissions:
- 'cluster:admin/opendistro/asynchronous_search/*'
index_permissions:
- index_patterns:
- '*'
allowed_actions:
- 'indices:data/read/search*'
# Allows users to read stored asynchronous-search results
asynchronous_search_read_access:
reserved: true
cluster_permissions:
- 'cluster:admin/opendistro/asynchronous_search/get'
wazuh_ui_user:
reserved: true
hidden: false
cluster_permissions: []
index_permissions:
- index_patterns:
- "wazuh-*"
dls: ""
fls: []
masked_fields: []
allowed_actions:
- "read"
tenant_permissions: []
static: false
wazuh_ui_admin:
reserved: true
hidden: false
cluster_permissions: []
index_permissions:
- index_patterns:
- "wazuh-*"
dls: ""
fls: []
masked_fields: []
allowed_actions:
- "read"
- "delete"
- "manage"
- "index"
tenant_permissions: []
static: false
@@ -0,0 +1,71 @@
---
# In this file users, backendroles and hosts can be mapped to Open Distro Security roles.
# Permissions for Opendistro roles are configured in roles.yml
_meta:
type: "rolesmapping"
config_version: 2
# Define your roles mapping here
## Demo roles mapping
all_access:
reserved: false
backend_roles:
- "admin"
description: "Maps admin to all_access"
own_index:
reserved: false
users:
- "*"
description: "Allow full access to an index named like the username"
logstash:
reserved: false
backend_roles:
- "logstash"
kibana_user:
reserved: false
backend_roles:
- "kibanauser"
users:
- "wazuh_user"
- "wazuh_admin"
description: "Maps kibanauser to kibana_user"
readall:
reserved: false
backend_roles:
- "readall"
manage_snapshots:
reserved: false
backend_roles:
- "snapshotrestore"
kibana_server:
reserved: true
users:
- "kibanaserver"
wazuh_ui_admin:
reserved: true
hidden: false
backend_roles: []
hosts: []
users:
- "wazuh_admin"
- "kibanaserver"
and_backend_roles: []
wazuh_ui_user:
reserved: true
hidden: false
backend_roles: []
hosts: []
users:
- "wazuh_user"
and_backend_roles: []
@@ -0,0 +1,433 @@
#!/bin/bash
# Program to generate the certificates necessary for Wazuh installation
# Copyright (C) 2015, Wazuh Inc.
#
# This program is a free software; you can redistribute it
# and/or modify it under the terms of the GNU General Public
# License (version 2) as published by the FSF - Free Software
# Foundation.
if [ -z "${base_path}" ]; then
base_path="$(dirname "$(readlink -f "$0")")"
config_file="${base_path}/config.yml"
fi
if [[ -z "${logfile}" ]]; then
logfile="/var/log/wazuh-cert-tool.log"
fi
debug_cert=">> ${logfile} 2>&1"
function cleanFiles() {
eval "rm -f ${base_path}/certs/*.csr ${debug_cert}"
eval "rm -f ${base_path}/certs/*.srl ${debug_cert}"
eval "rm -f ${base_path}/certs/*.conf ${debug_cert}"
eval "rm -f ${base_path}/certs/admin-key-temp.pem ${debug_cert}"
}
function checkOpenSSL() {
if [ -z "$(command -v openssl)" ]; then
logger_cert -e "OpenSSL not installed."
exit 1
fi
}
function logger_cert() {
now=$(date +'%d/%m/%Y %H:%M:%S')
mtype="INFO:"
debugLogger=
disableHeader=
if [ -n "${1}" ]; then
while [ -n "${1}" ]; do
case ${1} in
"-e")
mtype="ERROR:"
shift 1
;;
"-w")
mtype="WARNING:"
shift 1
;;
"-dh")
disableHeader=1
shift 1
;;
"-d")
debugLogger=1
shift 1
;;
*)
message="${1}"
shift 1
;;
esac
done
fi
if [ -z "${debugLogger}" ] || ( [ -n "${debugLogger}" ] && [ -n "${debugEnabled}" ] ); then
if [ -n "${disableHeader}" ]; then
echo "${message}" | tee -a ${logfile}
else
echo "${now} ${mtype} ${message}" | tee -a ${logfile}
fi
fi
}
function generateAdmincertificate() {
eval "openssl genrsa -out ${base_path}/certs/admin-key-temp.pem 2048 ${debug_cert}"
eval "openssl pkcs8 -inform PEM -outform PEM -in ${base_path}/certs/admin-key-temp.pem -topk8 -nocrypt -v1 PBE-SHA1-3DES -out ${base_path}/certs/admin-key.pem ${debug_cert}"
eval "openssl req -new -key ${base_path}/certs/admin-key.pem -out ${base_path}/certs/admin.csr -batch -subj '/C=US/L=California/O=Wazuh/OU=Docu/CN=admin' ${debug_cert}"
eval "openssl x509 -days 3650 -req -in ${base_path}/certs/admin.csr -CA ${base_path}/certs/root-ca.pem -CAkey ${base_path}/certs/root-ca.key -CAcreateserial -sha256 -out ${base_path}/certs/admin.pem ${debug_cert}"
}
function generateCertificateconfiguration() {
cat > "${base_path}/certs/${1}.conf" <<- EOF
[ req ]
prompt = no
default_bits = 2048
default_md = sha256
distinguished_name = req_distinguished_name
x509_extensions = v3_req
[req_distinguished_name]
C = US
L = California
O = Wazuh
OU = Docu
CN = cname
[ v3_req ]
authorityKeyIdentifier=keyid,issuer
basicConstraints = CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names
[alt_names]
IP.1 = cip
EOF
conf="$(awk '{sub("CN = cname", "CN = '${1}'")}1' "${base_path}/certs/${1}.conf")"
echo "${conf}" > "${base_path}/certs/${1}.conf"
isIP=$(echo "${2}" | grep -P "^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$")
isDNS=$(echo "${2}" | grep -P "^[a-zA-Z0-9][a-zA-Z0-9-]{1,61}[a-zA-Z0-9](?:\.[a-zA-Z]{2,})+$" )
if [[ -n "${isIP}" ]]; then
conf="$(awk '{sub("IP.1 = cip", "IP.1 = '${2}'")}1' "${base_path}/certs/${1}.conf")"
echo "${conf}" > "${base_path}/certs/${1}.conf"
elif [[ -n "${isDNS}" ]]; then
conf="$(awk '{sub("CN = cname", "CN = '${2}'")}1' "${base_path}/certs/${1}.conf")"
echo "${conf}" > "${base_path}/certs/${1}.conf"
conf="$(awk '{sub("IP.1 = cip", "DNS.1 = '${2}'")}1' "${base_path}/certs/${1}.conf")"
echo "${conf}" > "${base_path}/certs/${1}.conf"
else
logger_cert -e "The given information does not match with an IP address or a DNS."
exit 1
fi
}
function generateElasticsearchcertificates() {
if [ ${#elasticsearch_node_names[@]} -gt 0 ]; then
logger_cert "Creating the Elasticsearch certificates."
for i in "${!elasticsearch_node_names[@]}"; do
generateCertificateconfiguration "${elasticsearch_node_names[i]}" "${elasticsearch_node_ips[i]}"
eval "openssl req -new -nodes -newkey rsa:2048 -keyout ${base_path}/certs/${elasticsearch_node_names[i]}-key.pem -out ${base_path}/certs/${elasticsearch_node_names[i]}.csr -config ${base_path}/certs/${elasticsearch_node_names[i]}.conf -days 3650 ${debug_cert}"
eval "openssl x509 -req -in ${base_path}/certs/${elasticsearch_node_names[i]}.csr -CA ${base_path}/certs/root-ca.pem -CAkey ${base_path}/certs/root-ca.key -CAcreateserial -out ${base_path}/certs/${elasticsearch_node_names[i]}.pem -extfile ${base_path}/certs/${elasticsearch_node_names[i]}.conf -extensions v3_req -days 3650 ${debug_cert}"
eval "chmod 444 ${base_path}/certs/${elasticsearch_node_names[i]}-key.pem ${debug_cert}"
done
fi
}
function generateFilebeatcertificates() {
if [ ${#wazuh_servers_node_names[@]} -gt 0 ]; then
logger_cert "Creating the Wazuh server certificates."
for i in "${!wazuh_servers_node_names[@]}"; do
generateCertificateconfiguration "${wazuh_servers_node_names[i]}" "${wazuh_servers_node_ips[i]}"
eval "openssl req -new -nodes -newkey rsa:2048 -keyout ${base_path}/certs/${wazuh_servers_node_names[i]}-key.pem -out ${base_path}/certs/${wazuh_servers_node_names[i]}.csr -config ${base_path}/certs/${wazuh_servers_node_names[i]}.conf -days 3650 ${debug_cert}"
eval "openssl x509 -req -in ${base_path}/certs/${wazuh_servers_node_names[i]}.csr -CA ${base_path}/certs/root-ca.pem -CAkey ${base_path}/certs/root-ca.key -CAcreateserial -out ${base_path}/certs/${wazuh_servers_node_names[i]}.pem -extfile ${base_path}/certs/${wazuh_servers_node_names[i]}.conf -extensions v3_req -days 3650 ${debug_cert}"
done
fi
}
function generateKibanacertificates() {
if [ ${#kibana_node_names[@]} -gt 0 ]; then
logger_cert "Creating the Kibana certificate."
for i in "${!kibana_node_names[@]}"; do
generateCertificateconfiguration "${kibana_node_names[i]}" "${kibana_node_ips[i]}"
eval "openssl req -new -nodes -newkey rsa:2048 -keyout ${base_path}/certs/${kibana_node_names[i]}-key.pem -out ${base_path}/certs/${kibana_node_names[i]}.csr -config ${base_path}/certs/${kibana_node_names[i]}.conf -days 3650 ${debug_cert}"
eval "openssl x509 -req -in ${base_path}/certs/${kibana_node_names[i]}.csr -CA ${base_path}/certs/root-ca.pem -CAkey ${base_path}/certs/root-ca.key -CAcreateserial -out ${base_path}/certs/${kibana_node_names[i]}.pem -extfile ${base_path}/certs/${kibana_node_names[i]}.conf -extensions v3_req -days 3650 ${debug_cert}"
eval "chmod 444 ${base_path}/certs/${kibana_node_names[i]}-key.pem ${debug_cert}"
done
fi
}
function generateRootCAcertificate() {
logger_cert "Creating the root certificate."
eval "openssl req -x509 -new -nodes -newkey rsa:2048 -keyout ${base_path}/certs/root-ca.key -out ${base_path}/certs/root-ca.pem -batch -subj '/OU=Docu/O=Wazuh/L=California/' -days 3650 ${debug_cert}"
}
function getHelp() {
echo -e ""
echo -e "NAME"
echo -e " wazuh-cert-tool.sh - Manages the creation of certificates of the Wazuh components."
echo -e ""
echo -e "SYNOPSIS"
echo -e " wazuh-cert-tool.sh [OPTIONS]"
echo -e ""
echo -e "DESCRIPTION"
echo -e " -a, --admin-certificates"
echo -e " Creates the admin certificates."
echo -e ""
echo -e " -ca, --root-ca-certificates"
echo -e " Creates the root-ca certificates."
echo -e ""
echo -e " -e, --elasticsearch-certificates"
echo -e " Creates the Elasticsearch certificates."
echo -e ""
echo -e " -k, --kibana-certificates"
echo -e " Creates the Kibana certificates."
echo -e ""
echo -e " -v, --verbose"
echo -e " Enables verbose mode."
echo -e ""
echo -e " -w, --wazuh-certificates"
echo -e " Creates the Wazuh server certificates."
exit 1
}
function main() {
if [ "$EUID" -ne 0 ]; then
logger_cert -e "This script must be run as root."
exit 1
fi
checkOpenSSL
if [[ -d ${base_path}/certs ]]; then
logger_cert -e "Folder ${base_path}/certs already exists. Please, remove the /certs folder to create new certificates."
exit 1
else
mkdir "${base_path}/certs"
fi
if [ -n "${1}" ]; then
while [ -n "${1}" ]
do
case "${1}" in
"-a"|"--admin-certificates")
cadmin=1
shift 1
;;
"-ca"|"--root-ca-certificate")
ca=1
shift 1
;;
"-e"|"--elasticsearch-certificates")
celasticsearch=1
shift 1
;;
"-w"|"--wazuh-certificates")
cwazuh=1
shift 1
;;
"-k"|"--kibana-certificates")
ckibana=1
shift 1
;;
"-v"|"--verbose")
debugEnabled=1
shift 1
;;
"-h"|"--help")
getHelp
;;
*)
getHelp
esac
done
readConfig
if [ -n "${debugEnabled}" ]; then
debug_cert="2>&1 | tee -a ${logfile}"
fi
if [[ -n "${cadmin}" ]]; then
generateAdmincertificate
logger_cert "Admin certificates created."
fi
if [[ -n "${ca}" ]]; then
generateRootCAcertificate
logger_cert "Authority certificates created."
fi
if [[ -n "${celasticsearch}" ]]; then
generateElasticsearchcertificates
logger_cert "Elasticsearch certificates created."
fi
if [[ -n "${cwazuh}" ]]; then
generateFilebeatcertificates
logger_cert "Wazuh server certificates created."
fi
if [[ -n "${ckibana}" ]]; then
generateKibanacertificates
logger_cert "Kibana certificates created."
fi
else
readConfig
generateRootCAcertificate
generateAdmincertificate
generateElasticsearchcertificates
generateFilebeatcertificates
generateKibanacertificates
cleanFiles
fi
}
function parse_yaml() {
local prefix=${2}
local s='[[:space:]]*'
local w='[a-zA-Z0-9_]*'
local fs=$(echo @|tr @ '\034')
sed -ne "s|^\($s\):|\1|" \
-e "s|^\($s\)\($w\)$s:$s[\"']\(.*\)[\"']$s\$|\1$fs\2$fs\3|p" \
-e "s|^\($s\)\($w\)$s:$s\(.*\)$s\$|\1$fs\2$fs\3|p" ${1} |
awk -F$fs '{
indent = length($1)/2;
vname[indent] = $2;
for (i in vname) {if (i > indent) {delete vname[i]}}
if (length($3) > 0) {
vn=""; for (i=0; i<indent; i++) {vn=(vn)(vname[i])("_")}
printf("%s%s%s=\"%s\"\n", "'$prefix'",vn, $2, $3);
}
}'
}
function readConfig() {
if [ -f "${config_file}" ]; then
if [ ! -s "${config_file}" ]; then
logger_cert -e "File ${config_file} is empty"
exit 1
fi
eval "$(parse_yaml "${config_file}")"
eval "elasticsearch_node_names=( $(parse_yaml "${config_file}" | grep nodes_elasticsearch_name | sed 's/nodes_elasticsearch_name=//') )"
eval "wazuh_servers_node_names=( $(parse_yaml "${config_file}" | grep nodes_wazuh_servers_name | sed 's/nodes_wazuh_servers_name=//') )"
eval "kibana_node_names=( $(parse_yaml "${config_file}" | grep nodes_kibana_name | sed 's/nodes_kibana_name=//') )"
eval "elasticsearch_node_ips=( $(parse_yaml "${config_file}" | grep nodes_elasticsearch_ip | sed 's/nodes_elasticsearch_ip=//') )"
eval "wazuh_servers_node_ips=( $(parse_yaml "${config_file}" | grep nodes_wazuh_servers_ip | sed 's/nodes_wazuh_servers_ip=//') )"
eval "kibana_node_ips=( $(parse_yaml "${config_file}" | grep nodes_kibana_ip | sed 's/nodes_kibana_ip=//') )"
eval "wazuh_servers_node_types=( $(parse_yaml "${config_file}" | grep nodes_wazuh_servers_node_type | sed 's/nodes_wazuh_servers_node_type=//') )"
unique_names=($(echo "${elasticsearch_node_names[@]}" | tr ' ' '\n' | sort -u | tr '\n' ' '))
if [ "${#unique_names[@]}" -ne "${#elasticsearch_node_names[@]}" ]; then
logger_cert -e "Duplicated Elasticsearch node names."
exit 1
fi
unique_ips=($(echo "${elasticsearch_node_ips[@]}" | tr ' ' '\n' | sort -u | tr '\n' ' '))
if [ "${#unique_ips[@]}" -ne "${#elasticsearch_node_ips[@]}" ]; then
logger_cert -e "Duplicated Elasticsearch node ips."
exit 1
fi
unique_names=($(echo "${wazuh_servers_node_names[@]}" | tr ' ' '\n' | sort -u | tr '\n' ' '))
if [ "${#unique_names[@]}" -ne "${#wazuh_servers_node_names[@]}" ]; then
logger_cert -e "Duplicated Wazuh server node names."
exit 1
fi
unique_ips=($(echo "${wazuh_servers_node_ips[@]}" | tr ' ' '\n' | sort -u | tr '\n' ' '))
if [ "${#unique_ips[@]}" -ne "${#wazuh_servers_node_ips[@]}" ]; then
logger_cert -e "Duplicated Wazuh server node ips."
exit 1
fi
unique_names=($(echo "${kibana_node_names[@]}" | tr ' ' '\n' | sort -u | tr '\n' ' '))
if [ "${#unique_names[@]}" -ne "${#kibana_node_names[@]}" ]; then
logger_cert -e "Duplicated Kibana node names."
exit 1
fi
unique_ips=($(echo "${kibana_node_ips[@]}" | tr ' ' '\n' | sort -u | tr '\n' ' '))
if [ "${#unique_ips[@]}" -ne "${#kibana_node_ips[@]}" ]; then
logger_cert -e "Duplicated Kibana node ips."
exit 1
fi
if [ "${#wazuh_servers_node_names[@]}" -ne "${#wazuh_servers_node_ips[@]}" ]; then
logger_cert -e "Different number of Wazuh server node names and IPs."
exit 1
fi
for i in "${wazuh_servers_node_types[@]}"; do
if ! echo "$i" | grep -ioq master && ! echo "$i" | grep -ioq worker; then
logger_cert -e "Incorrect node_type $i must be master or worker"
exit 1
fi
done
if [ "${#wazuh_servers_node_names[@]}" -le 1 ]; then
if [ "${#wazuh_servers_node_types[@]}" -ne 0 ]; then
logger_cert -e "The tag node_type can only be used with more than one Wazuh server."
exit 1
fi
elif [ "${#wazuh_servers_node_names[@]}" -gt "${#wazuh_servers_node_types[@]}" ]; then
logger_cert -e "The tag node_type needs to be specified for all Wazuh server nodes."
exit 1
elif [ "${#wazuh_servers_node_names[@]}" -lt "${#wazuh_servers_node_types[@]}" ]; then
logger_cert -e "Found extra node_type tags."
exit 1
elif [ $(grep -io master <<< ${wazuh_servers_node_types[*]} | wc -l) -ne 1 ]; then
logger_cert -e "Wazuh cluster needs a single master node."
exit 1
elif [ $(grep -io worker <<< ${wazuh_servers_node_types[*]} | wc -l) -ne $(( ${#wazuh_servers_node_types[@]} - 1 )) ]; then
logger_cert -e "Incorrect number of workers."
exit 1
fi
if [ "${#kibana_node_names[@]}" -ne "${#kibana_node_ips[@]}" ]; then
logger_cert -e "Different number of Kibana node names and IPs."
exit 1
fi
else
logger_cert -e "No configuration file found. ${config_file}."
exit 1
fi
}
main $@
@@ -1,14 +1,14 @@
network.host: wazuh-indexer
node.name: wazuh-indexer
network.host: wazuh1-indexer
node.name: wazuh1-indexer
cluster.initial_master_nodes:
- wazuh-indexer
- wazuh-indexer-2
- wazuh-indexer-3
- wazuh1-indexer
- wazuh2-indexer
- wazuh3-indexer
cluster.name: "wazuh-cluster"
discovery.seed_hosts:
- wazuh-indexer
- wazuh-indexer-2
- wazuh-indexer-3
- wazuh1-indexer
- wazuh2-indexer
- wazuh3-indexer
http.port: 9700-9799
transport.tcp.port: 9800-9899
node.max_local_storage_nodes: "3"
@@ -20,11 +20,11 @@ path.logs: /var/log/wazuh-indexer
# Please change on production cluster! #
# #
###############################################################################
plugins.security.ssl.http.pemcert_filepath: /etc/wazuh-indexer/certs/wazuh-indexer.pem
plugins.security.ssl.http.pemkey_filepath: /etc/wazuh-indexer/certs/wazuh-indexer.key
plugins.security.ssl.http.pemcert_filepath: /etc/wazuh-indexer/certs/wazuh1-indexer.pem
plugins.security.ssl.http.pemkey_filepath: /etc/wazuh-indexer/certs/wazuh1-indexer.key
plugins.security.ssl.http.pemtrustedcas_filepath: /etc/wazuh-indexer/certs/root-ca.pem
plugins.security.ssl.transport.pemcert_filepath: /etc/wazuh-indexer/certs/wazuh-indexer.pem
plugins.security.ssl.transport.pemkey_filepath: /etc/wazuh-indexer/certs/wazuh-indexer.key
plugins.security.ssl.transport.pemcert_filepath: /etc/wazuh-indexer/certs/wazuh1-indexer.pem
plugins.security.ssl.transport.pemkey_filepath: /etc/wazuh-indexer/certs/wazuh1-indexer.key
plugins.security.ssl.transport.pemtrustedcas_filepath: /etc/wazuh-indexer/certs/root-ca.pem
plugins.security.ssl.http.enabled: true
plugins.security.ssl.transport.enforce_hostname_verification: false
@@ -35,9 +35,9 @@ plugins.security.authcz.admin_dn:
plugins.security.check_snapshot_restore_write_privileges: true
plugins.security.enable_snapshot_restore_privilege: true
plugins.security.nodes_dn:
- "CN=wazuh-indexer,OU=Docu,O=Wazuh,L=California,C=US"
- "CN=wazuh-indexer-2,OU=Docu,O=Wazuh,L=California,C=US"
- "CN=wazuh-indexer-3,OU=Docu,O=Wazuh,L=California,C=US"
- "CN=wazuh1-indexer,OU=Docu,O=Wazuh,L=California,C=US"
- "CN=wazuh2-indexer,OU=Docu,O=Wazuh,L=California,C=US"
- "CN=wazuh3-indexer,OU=Docu,O=Wazuh,L=California,C=US"
- "CN=filebeat,OU=Docu,O=Wazuh,L=California,C=US"
plugins.security.restapi.roles_enabled:
- "all_access"
@@ -1,14 +1,14 @@
network.host: wazuh-indexer-2
node.name: wazuh-indexer-2
network.host: wazuh2-indexer
node.name: wazuh2-indexer
cluster.initial_master_nodes:
- wazuh-indexer
- wazuh-indexer-2
- wazuh-indexer-3
- wazuh1-indexer
- wazuh2-indexer
- wazuh3-indexer
cluster.name: "wazuh-cluster"
discovery.seed_hosts:
- wazuh-indexer
- wazuh-indexer-2
- wazuh-indexer-3
- wazuh1-indexer
- wazuh2-indexer
- wazuh3-indexer
http.port: 9700-9799
transport.tcp.port: 9800-9899
node.max_local_storage_nodes: "3"
@@ -20,11 +20,11 @@ path.logs: /var/log/wazuh-indexer
# Please change on production cluster! #
# #
###############################################################################
plugins.security.ssl.http.pemcert_filepath: /etc/wazuh-indexer/certs/wazuh-indexer-2.pem
plugins.security.ssl.http.pemkey_filepath: /etc/wazuh-indexer/certs/wazuh-indexer-2.key
plugins.security.ssl.http.pemcert_filepath: /etc/wazuh-indexer/certs/wazuh2-indexer.pem
plugins.security.ssl.http.pemkey_filepath: /etc/wazuh-indexer/certs/wazuh2-indexer.key
plugins.security.ssl.http.pemtrustedcas_filepath: /etc/wazuh-indexer/certs/root-ca.pem
plugins.security.ssl.transport.pemcert_filepath: /etc/wazuh-indexer/certs/wazuh-indexer-2.pem
plugins.security.ssl.transport.pemkey_filepath: /etc/wazuh-indexer/certs/wazuh-indexer-2.key
plugins.security.ssl.transport.pemcert_filepath: /etc/wazuh-indexer/certs/wazuh2-indexer.pem
plugins.security.ssl.transport.pemkey_filepath: /etc/wazuh-indexer/certs/wazuh2-indexer.key
plugins.security.ssl.transport.pemtrustedcas_filepath: /etc/wazuh-indexer/certs/root-ca.pem
plugins.security.ssl.http.enabled: true
plugins.security.ssl.transport.enforce_hostname_verification: false
@@ -35,9 +35,9 @@ plugins.security.authcz.admin_dn:
plugins.security.check_snapshot_restore_write_privileges: true
plugins.security.enable_snapshot_restore_privilege: true
plugins.security.nodes_dn:
- "CN=wazuh-indexer,OU=Docu,O=Wazuh,L=California,C=US"
- "CN=wazuh-indexer-2,OU=Docu,O=Wazuh,L=California,C=US"
- "CN=wazuh-indexer-3,OU=Docu,O=Wazuh,L=California,C=US"
- "CN=wazuh1-indexer,OU=Docu,O=Wazuh,L=California,C=US"
- "CN=wazuh2-indexer,OU=Docu,O=Wazuh,L=California,C=US"
- "CN=wazuh3-indexer,OU=Docu,O=Wazuh,L=California,C=US"
- "CN=filebeat,OU=Docu,O=Wazuh,L=California,C=US"
plugins.security.restapi.roles_enabled:
- "all_access"
@@ -1,14 +1,14 @@
network.host: wazuh-indexer-3
node.name: wazuh-indexer-3
network.host: wazuh3-indexer
node.name: wazuh3-indexer
cluster.initial_master_nodes:
- wazuh-indexer
- wazuh-indexer-2
- wazuh-indexer-3
- wazuh1-indexer
- wazuh2-indexer
- wazuh3-indexer
cluster.name: "wazuh-cluster"
discovery.seed_hosts:
- wazuh-indexer
- wazuh-indexer-2
- wazuh-indexer-3
- wazuh1-indexer
- wazuh2-indexer
- wazuh3-indexer
http.port: 9700-9799
transport.tcp.port: 9800-9899
node.max_local_storage_nodes: "3"
@@ -20,11 +20,11 @@ path.logs: /var/log/wazuh-indexer
# Please change on production cluster! #
# #
###############################################################################
plugins.security.ssl.http.pemcert_filepath: /etc/wazuh-indexer/certs/wazuh-indexer-3.pem
plugins.security.ssl.http.pemkey_filepath: /etc/wazuh-indexer/certs/wazuh-indexer-3.key
plugins.security.ssl.http.pemcert_filepath: /etc/wazuh-indexer/certs/wazuh3-indexer.pem
plugins.security.ssl.http.pemkey_filepath: /etc/wazuh-indexer/certs/wazuh3-indexer.key
plugins.security.ssl.http.pemtrustedcas_filepath: /etc/wazuh-indexer/certs/root-ca.pem
plugins.security.ssl.transport.pemcert_filepath: /etc/wazuh-indexer/certs/wazuh-indexer-3.pem
plugins.security.ssl.transport.pemkey_filepath: /etc/wazuh-indexer/certs/wazuh-indexer-3.key
plugins.security.ssl.transport.pemcert_filepath: /etc/wazuh-indexer/certs/wazuh3-indexer.pem
plugins.security.ssl.transport.pemkey_filepath: /etc/wazuh-indexer/certs/wazuh3-indexer.key
plugins.security.ssl.transport.pemtrustedcas_filepath: /etc/wazuh-indexer/certs/root-ca.pem
plugins.security.ssl.http.enabled: true
plugins.security.ssl.transport.enforce_hostname_verification: false
@@ -35,9 +35,9 @@ plugins.security.authcz.admin_dn:
plugins.security.check_snapshot_restore_write_privileges: true
plugins.security.enable_snapshot_restore_privilege: true
plugins.security.nodes_dn:
- "CN=wazuh-indexer,OU=Docu,O=Wazuh,L=California,C=US"
- "CN=wazuh-indexer-2,OU=Docu,O=Wazuh,L=California,C=US"
- "CN=wazuh-indexer-3,OU=Docu,O=Wazuh,L=California,C=US"
- "CN=wazuh1-indexer,OU=Docu,O=Wazuh,L=California,C=US"
- "CN=wazuh2-indexer,OU=Docu,O=Wazuh,L=California,C=US"
- "CN=wazuh3-indexer,OU=Docu,O=Wazuh,L=California,C=US"
- "CN=filebeat,OU=Docu,O=Wazuh,L=California,C=US"
plugins.security.restapi.roles_enabled:
- "all_access"
@@ -0,0 +1,28 @@
-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCo1YF2VM0TNhlh
0u3N0nhXwNMb9K0w/HPqTB310WfBEkafjN18VtUevrXzYmq11+vaGFLvzPSr5O8u
tXCKYP6yeaU8JEjvtrj7N/xo1CIeCJmcGcq8jYCWKBp+PCqWu3KHaLgLLp3f7xd3
s+7E2iJ/XAqRdMTHIjNWet+ka4AHsbpile+7VkvHNpCKwX84+Nh+wXlB4EQ6Glkl
qHgyAqqJvnGBESN0D0aGzfL8vmWUqUd2oxlZcA+cJAoEAhgr1wNQZ6K+N5qrqvOn
nvQsltHhqJu4nV9+KaeIORYUliEJKbVa0KvU1BvBY4W/63gtJ4NshXhSW1Mvh31/
XfEt20olAgMBAAECggEAIdSGWHutjAfvFhb556Ag1RSiOJvSiFpNr8kIx9TqAVn0
JMxJJT0Q/1QfiWFTGJTngZAWLk7XSApbkvRwVIoS/xg479AlfUMT1eLmBOtc2r/G
Z+0THq0L8wqeJGVR81okHNXy6uqwX8q83ROE6JT9DKAYzgSj2XMU7mM4pO2VffTf
eI39G20wUYqj6lroebs4kIRxqdAasMq80PZO63q/lzR4xya3Wq9ZS3aoNBGoSieN
4p6Dhyn/x8QRBWX9AXx/KrQpSgkBBtBuxllY15tuXZWTL+LENmceRZb/5WgalypN
wGnS5mt8bEvJ3KPqmWqvpYcgACYGE3OEgBB37jlekQKBgQDcxmH5oo7yxdAMAym3
gjseyPd8y+ZATc4k3zaSODuHBKnQ2viwFA6UNjvnw2DfvAVVpzHijxJ+ljMIs+ky
9KX9mHn4jS94JRcyzkXseoHuSPisQfL87/q9JYc0+xssCRnFJ6Ix5FG814q5sQRl
aNrCT9jUy9b3JpyMewprgU1BGwKBgQDDxZSe9+fKkL5KupzzDoy1+Ohuz03oxPgc
9zykXJ7rpmAwInq7Pi+Pt0SKbh6qf9O+dXLPSB0FkKqTffehTrYd/Cv4DFZxSVYe
wfPAy6ci5PNK+wiAedgdDpxAJWktoEnbj5fWVokFekHKaY5FlQU6cNYD138DgG0W
OGV1AymVvwKBgBurqZ/2JeB7toWq59GeOvayzYIQtD0fA1VPvLE65wsXJImOyFiZ
SvJ8kamMrVmdYTXJDNGOiQzgmmje072VODC+qZrjZy2xyGSPwefPuvU4pCJC6ceV
9GE8kOOtDUzJnzc8rnF+Ylg+055Od3SWXcS46T5ShhDYAAsDaNzsidg9AoGARK9A
Slmtn/sSWEOKpxfWtE1ktuPScLUSW48+XmgEdabEnn6qUqEprKFe0bZ62dTJJEwu
gJzLWdV8kwyh4Z0s9e4wOvGRLmPNbDMd4ulQdUSgOxFB1VlqQh+LIFI/yXswDnEd
k1x+7EYNaQeJm84BrJRD8cscS801+JLGvbvjTh8CgYEA3FHIxw+ypuAonCbtjTO8
KHV0k1pz1Y9OTJmtQLGz6miAgYCfgEKDTzLjtpAbdkE5k3mo3ohewNhYoJ2g+Vn8
HXPjbT7cGfao92L2CiTCDmAGHdNB/6O00n7JM4t8C41xWqWBLB3LyPJnEqIzLDyZ
n9Rfm4m1kT+8hRHHkXrKEbM=
-----END PRIVATE KEY-----
@@ -0,0 +1,19 @@
-----BEGIN CERTIFICATE-----
MIIDDDCCAfQCFER31N2NjvzM7/qZfPeyucBce01CMA0GCSqGSIb3DQEBCwUAMDQx
DTALBgNVBAsMBERvY3UxDjAMBgNVBAoMBVdhenVoMRMwEQYDVQQHDApDYWxpZm9y
bmlhMB4XDTIyMDIwNzIwMjg0NFoXDTMyMDIwNTIwMjg0NFowUTELMAkGA1UEBhMC
VVMxEzARBgNVBAcMCkNhbGlmb3JuaWExDjAMBgNVBAoMBVdhenVoMQ0wCwYDVQQL
DAREb2N1MQ4wDAYDVQQDDAVhZG1pbjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
AQoCggEBAKjVgXZUzRM2GWHS7c3SeFfA0xv0rTD8c+pMHfXRZ8ESRp+M3XxW1R6+
tfNiarXX69oYUu/M9Kvk7y61cIpg/rJ5pTwkSO+2uPs3/GjUIh4ImZwZyryNgJYo
Gn48Kpa7codouAsund/vF3ez7sTaIn9cCpF0xMciM1Z636RrgAexumKV77tWS8c2
kIrBfzj42H7BeUHgRDoaWSWoeDICqom+cYERI3QPRobN8vy+ZZSpR3ajGVlwD5wk
CgQCGCvXA1Bnor43mquq86ee9CyW0eGom7idX34pp4g5FhSWIQkptVrQq9TUG8Fj
hb/reC0ng2yFeFJbUy+HfX9d8S3bSiUCAwEAATANBgkqhkiG9w0BAQsFAAOCAQEA
Rny6jig0H/r/ZxZ6Cd1sPYdKQM5NuBYRyY4sc0l6i0Y2o3tJdlLoYxuxgampTgOa
97t+4H1htfuN5LEZQqIF6sY0xX/3N6m9IMBmE2AYOKXlwInkULg+kg5WBYgqNqd6
e55OasF8VXwsuIVX+mC4lKRlbXDMScC73BlxEtRuOLxPy3UulrvITP3EdptFHHoP
jn6rOvYRQnY9wR4SOAJBofYMhU6kV8zF/bqB3ioxEtnPZhkJeyIb89DkasJaP3FJ
rtjMJb8cyXd5FHGEy8nhIssyUKbTccfnNe29XGCJLfteP8BExFaXLyChMAzhreR/
h6svqSo4iiviJKIuDcz5pQ==
-----END CERTIFICATE-----
@@ -1,35 +1,24 @@
ca:
root:
dn: CN=admin,OU=Docu,O=Wazuh,L=California,C=US
pkPassword: none
keysize: 2048
file: root-ca.pem
intermediate:
dn: CN=admin,OU=Docu,O=Wazuh,L=California,C=US
keysize: 2048
validityDays: 3650
pkPassword: intermediate-ca-password
file: intermediate-ca.pem
nodes:
- name: wazuh-indexer
dn: CN=wazuh-indexer,OU=Docu,O=Wazuh,L=California,C=US
dns:
- wazuh-indexer
- name: wazuh-indexer-2
dn: CN=wazuh-indexer-2,OU=Docu,O=Wazuh,L=California,C=US
dns:
- wazuh-indexer-2
- name: wazuh-indexer-3
dn: CN=wazuh-indexer-3,OU=Docu,O=Wazuh,L=California,C=US
dns:
- wazuh-indexer-3
- name: filebeat
dn: CN=filebeat,OU=Docu,O=Wazuh,L=California,C=US
dns:
- wazuh
# Wazuh indexer server nodes
elasticsearch:
name: wazuh1.indexer
ip: wazuh1.indexer
name: wazuh2.indexer
ip: wazuh2.indexer
name: wazuh3.indexer
ip: wazuh3.indexer
clients:
- name: admin
dn: CN=admin,OU=Docu,O=Wazuh,L=California,C=US
admin: true
# Wazuh server nodes
# Use node_type only with more than one Wazuh manager
wazuh_servers:
name: wazuh.master
ip: wazuh.master
node_type: master
name: wazuh.worker
ip: wazuh.worker
node_type: worker
# Kibana node
kibana:
name: wazuh.dashboard
ip: wazuh.dashboard
@@ -0,0 +1,28 @@
-----BEGIN PRIVATE KEY-----
MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQC55KbINhOX1rTi
vzO23qd8k1K89GBHtssv0J4q2IM2WTG7V4BmSWe+HiUsPSIzY+07O+sSHoTNkxqb
OcHEovx0ACVsZ9LlxXLu/GDz9p5N3JROQov3W3rjFUaIFJvOADIm/+0zhS6p6wdJ
zNAwf2rDrE58gXKunPU/njwoB4kkAjYYnYZi1t9aBUjJTIX6t9amqD+/Z7MM9Jt1
Va3gdL9fkHu6ko2fW9rTnyBwtl/a3jW0dQBS6EPHOLbWsxmYIcKfeG4nIR6RJYbP
oMDWIUlTCaZ2FSpG8IsTR4BMAbDQp/M7UL5YPLevg6CcnQIYaxuth9CdVMVCn9Bc
TSA5nSPjAgMBAAECggEBAI1zlQmyRHR814XW8nYLtSzROds4pW7MhI5s035M5INd
mb8xlS3AW6XKcITaPAUY27MAJB7UhD+d2VgWugBz+WAXoGJ+GnfnKE78UpYxqkIb
P+rRLopZ3Qeg79uquuglNASDKC7VAC4h/pjEtgLBYi9lFRAevHJsUx5GvQXEvjFc
BNf9AXHF5O4LTzcGZ+mgYlAFxQjDrnbQuEQ6mhkESViuDbZcP9kExed5q0T+TcY3
xlLgHoQMH1FnyxzYyNdgwO5t/j7WNYck/djFB3DT0FAp0QsENOH+2g95wfiASF60
NRt4fsC6IZXj1LTR5qC9u32QpMbu0QBWnq8ZBLdi8tECgYEA50Wk9MDZTSe6VMwV
3GiyYM+hf8Em270mzQRBsIEd3uJQ2r6iZ4uBK+m39FARq8S60fCe/OgHJ4EbbkhV
b1nrVbtItUTOBAwa5mNkCsN/tKG9NEHO8CZOYv95+mrqCB+ZBb0s3m3w+mZ1RQcc
0up3xQHI8jQ5dT4MjWEH16Ldj+sCgYEAzcTmpVIYzjjiBieY5CnWIVYNm6P2ZlUM
o7DLjhoKe/NognaxyAlZFvepsLs7+NYKBxZlHdQHlsKqrS8QXKuuK/e5hrSakdG6
OgL/N2+66JaySEz691CI9hddyohepRvKP4113B7WWeglChZOXfPC04ZuCnZ/LyXJ
FKNgkuyctekCgYEAn7Ihk7hO1M4oBkHenpHVCrCU7iir8nQMhOj5iy29OJjCCCo2
7pUQHwiGM7fOW/O+pRUoU67MseSe0mo0RG2s6UgnjrPyJi1NreTXwe75EfvVMG54
vK9W1VlgGyEUdYOMIMBeaUE1c1Koi3+70ZCCH5F59nVFb8Xm2QE1bxtRLv0CgYAE
a7aI1rqxs4cnmrIuNLfk/3RLY7pneGxNF/9HjkerYg9cvjATnB/N3oRGx78CGZcd
j92cRnHjS0tfbSNs2kNjrm7N9hNcDqVxmZ7iEgRx+srZws2hgplusBHTyBpAcdhm
hSODFyaDx/kDvnbwjcwhv0Gd9+3DlYw8ZUYt4ed8AQKBgQCt6/C+s1bUB981pYYf
0TDDxxQE2CIAJHHrAZ1SSnlj0smt79Xj+3RboClfDwtLLpFFbCfPY9LyLgeBbIq1
9Tol1lnHkEfhuTI/0Uua6u2uNVbjhqZTXsogvPZjro3BwXiksN7nQp5w5LdqSMF5
VNv0RDik3Sy2OmfoJ7dn+DJBWA==
-----END PRIVATE KEY-----
@@ -0,0 +1,20 @@
-----BEGIN CERTIFICATE-----
MIIDSTCCAjGgAwIBAgIUUZPpFmFeaHka2OJkT1JS1QIVAhIwDQYJKoZIhvcNAQEL
BQAwNDENMAsGA1UECwwERG9jdTEOMAwGA1UECgwFV2F6dWgxEzARBgNVBAcMCkNh
bGlmb3JuaWEwHhcNMjIwMjA3MjAyODQ0WhcNMzIwMjA1MjAyODQ0WjA0MQ0wCwYD
VQQLDAREb2N1MQ4wDAYDVQQKDAVXYXp1aDETMBEGA1UEBwwKQ2FsaWZvcm5pYTCC
ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALnkpsg2E5fWtOK/M7bep3yT
Urz0YEe2yy/QnirYgzZZMbtXgGZJZ74eJSw9IjNj7Ts76xIehM2TGps5wcSi/HQA
JWxn0uXFcu78YPP2nk3clE5Ci/dbeuMVRogUm84AMib/7TOFLqnrB0nM0DB/asOs
TnyBcq6c9T+ePCgHiSQCNhidhmLW31oFSMlMhfq31qaoP79nswz0m3VVreB0v1+Q
e7qSjZ9b2tOfIHC2X9reNbR1AFLoQ8c4ttazGZghwp94bichHpElhs+gwNYhSVMJ
pnYVKkbwixNHgEwBsNCn8ztQvlg8t6+DoJydAhhrG62H0J1UxUKf0FxNIDmdI+MC
AwEAAaNTMFEwHQYDVR0OBBYEFBHZ961QUsmPGJ+Jt0gfyZY4ShnSMB8GA1UdIwQY
MBaAFBHZ961QUsmPGJ+Jt0gfyZY4ShnSMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZI
hvcNAQELBQADggEBAKKny1ai5hpd93ZMVO8ryVhDX3NiZTSR5cYwIFuHLcQsLkuc
Su4vhAOGtkm1bWhiu64VveOQXLy9M3qCXVL5q8YJIb9CUBh6emrGaykKFSLY6M8+
ZuESTcJzdznq9dU8gLr0rsXUZFajMFtiLrNERg25GFQPutnu1t9E8uKnfoNV4EFe
eNpkrTMt+ioPh1Xpn7WjU//974E4wGtl+wnqM4hqPcjYY4F4X7GBtKnhvQSwqp4D
Po36mhNbqRwfQYq/QQRbQN+9wMU4DtssttY4C63a1nRUhXvnFMnkserXptq+g1yc
YJCNtUjb4xcj74+HRuQFKeK07QcRThw8YLYnLS0=
-----END CERTIFICATE-----
@@ -0,0 +1,28 @@
-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC17C9oygkP7enG
0t8902Zo5JjN9VbGEePZg1kLViPFOcX/TYkDUt74xJAE+vvdGiWfoTKJYKYj9p5z
MzTQYo/39/iRrLiOenVWjrZmN8VnPsuiEL4D+pLr3832+yG/JneVjERrqs/iD/Lm
QJbCjGG3ZwiaEpPE/tT77cAN0MwjHY0qoHa4/MJwN/6AZdTg683go1Bo3+lVtWK9
jtO8eXKlPyypr/6NL6kagHBEzw2V7F7fRZ1wDvxcVcX6tsWBtBGJRdgJ4VLoD2wT
T0kNMc4vX9IMhCwfsr+8rGyXWCzX1298drulbQjFXzQlD69bloOmENS3h4V/jE+Y
YrsiACwlAgMBAAECggEAFYNWn+e0ZqPVz2NEbwU+yQyvXTu0BTw8W46CyypmlH4e
gfBjUXdNUtG7zjr36c+bv2LKnSBGxV32otzdU/8z0zkJtgBc2sx0b8X0n+XcfDca
0ZF1RvcsxKP0sU5FUVt1LMQnmyvZ5XvJV50vttXvAEc45y9nNhaEjT4yRe/5E/XJ
fmUzPuZSn8Z+c+HXvWTddMlSD8tqSTc2lkrsfaJSoamp/USVXPNJNac1l+M0YUlm
M4TDjkKLi2hLbRLgG+ZrvpcRpyrDQsw8hYZkrZvRywSQX+eTkLdGwOwNJIs8Y3pQ
Oz0d8iAbH1qFo9s16/I7YhTBAANY3jcsqMxhugemQQKBgQDntVP4K3ZkbQTBCv4E
W1FeMhNuo9kzm3oj0/UucFjEln9pMCaB8EGKdtIW7GFChgUwucL1Nj20cFxmlXQX
tky7/xMIt+EBVICSY4txi+asHsqBQkCoK2Q/qgt3Z7ORtvOeNn6aEbfuOr5r7qf/
hvgundkUN12UibWqc9f1dTCSqQKBgQDI/rCo9oQBMEkIqR/RE1uUsISwYfJb/bMo
zBXjHYZ5/88JNUYDmSSeHOVGBLLjSqRGGP4HuKh1o9ZDzSuEaZxUYiLyQroDCkrk
doXd2ODrzFOq4vk12z2KCr2PweW2++/I5d3uNC0q8YCTahr+RuevmKFaeMDNskDI
KGfOg5t3HQKBgDh668/3kDFknZ8MteSL+eaTIEd86wn4YSpwlThPrGOnJ8GVOh28
Wc2NryJlVkPn9UXuUgaBxULBjNR4o8bP6h59S795SwCO/5QvbaMs7fqQut4NL0OO
6C3Ynljpz0y6ouGy+ONHZGVOrnISx6Ky3LZIRcz2vfniI4U8Ha04drGZAoGAI4rO
KIK3IxKrx4lIpAsdRbTVMe+QEO5S8SLtt+SvtAElVkaCY/5/uCn57SDFlWXMmMyw
lyLzPyJCsGimilq2l0FnVpmwFPuL9Mx0rZ89XtUZ8n0CfqCPSErP7IzoFyyD4W2s
igPV/OMJzoeT0GUvcSC3X608wuMDi6GBgcZKBo0CgYEA3OCz4QJgP5rlxqhv4VhB
H71p/oalckrmIytq2V2j1/8EVf7jPWLOxsw0Q+8DL/2tdBI+QLSPA40LCLtNlb3J
Lbyrav+RyVAwa1C27NdqZ2yZ2xF5iSIbkENHB2QxNkmaVsoSDX2j5fyQhnM+CTEe
IRLfssBnG1/KgfL2PyO8drQ=
-----END PRIVATE KEY-----
@@ -0,0 +1,21 @@
-----BEGIN CERTIFICATE-----
MIIDdDCCAlygAwIBAgIURHfU3Y2O/Mzv+pl897K5wFx7TUgwDQYJKoZIhvcNAQEL
BQAwNDENMAsGA1UECwwERG9jdTEOMAwGA1UECgwFV2F6dWgxEzARBgNVBAcMCkNh
bGlmb3JuaWEwHhcNMjIwMjA3MjAyODQ0WhcNMzIwMjA1MjAyODQ0WjBbMQswCQYD
VQQGEwJVUzETMBEGA1UEBwwKQ2FsaWZvcm5pYTEOMAwGA1UECgwFV2F6dWgxDTAL
BgNVBAsMBERvY3UxGDAWBgNVBAMMD3dhenVoLmRhc2hib2FyZDCCASIwDQYJKoZI
hvcNAQEBBQADggEPADCCAQoCggEBALXsL2jKCQ/t6cbS3z3TZmjkmM31VsYR49mD
WQtWI8U5xf9NiQNS3vjEkAT6+90aJZ+hMolgpiP2nnMzNNBij/f3+JGsuI56dVaO
tmY3xWc+y6IQvgP6kuvfzfb7Ib8md5WMRGuqz+IP8uZAlsKMYbdnCJoSk8T+1Pvt
wA3QzCMdjSqgdrj8wnA3/oBl1ODrzeCjUGjf6VW1Yr2O07x5cqU/LKmv/o0vqRqA
cETPDZXsXt9FnXAO/FxVxfq2xYG0EYlF2AnhUugPbBNPSQ0xzi9f0gyELB+yv7ys
bJdYLNfXb3x2u6VtCMVfNCUPr1uWg6YQ1LeHhX+MT5hiuyIALCUCAwEAAaNXMFUw
HwYDVR0jBBgwFoAUEdn3rVBSyY8Yn4m3SB/JljhKGdIwCQYDVR0TBAIwADALBgNV
HQ8EBAMCBPAwGgYDVR0RBBMwEYIPd2F6dWguZGFzaGJvYXJkMA0GCSqGSIb3DQEB
CwUAA4IBAQAhcvVs5DRom/6Ci9VINgc1n3+NDAE3HdFZ7TKnMekR/MDeU5l5Kz6t
dzx+P7mO7MywOgRddKsH9BEIlU2jECVixUBvYXNgr8cflVv5qlFg5QjWuUhAM4W4
qu1oEITnpSPBw7DbMTQbjK5fQP4VijDWKTjFGpHti4QXxrel9uer0B/dHWQLYIL+
yh1qCUHp1q02IZFanAbhGi055bR/7r6123EtoyDx0so5qzhZlCm+86m/tO0vqXf2
sWa2KmL71M2UYSoDrzF3/4LhKEFJ4MRGiB2s7C/1MpRAKKnC7PLOTtykKU/3x0MF
mk3Xp+GIZkzdbo0eHXYjpghsCp3Kwx6z
-----END CERTIFICATE-----
@@ -0,0 +1,28 @@
-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC55JMOnYeiyco2
VYu8+1QX5qA26FAmJgnnWmqqZvOoNoDuyLGlKzuUiKnV0xrHDlsqARQcmUf7hF63
QQkbZlWR2LkhRKQWLiemIQKVqxyarQ0YD7+yxmk3oaB7BZdkxsZcx0K1FuZcxUqd
JTRhOvunrPkKuQAJqPxuAtamLS75u+q3YRTN31zRMCZNHqGizzzN1rpIw4gq8WUE
93UHUKL7r/2wbPiR6TsLk4/oygUEbLNtl06u9Mf19b73KWCoDr1xiJSuDbkC+/b3
zKWDZmeejiR4CXqUMhm23YVPEmx/unklht3fXyVlRxR/QrBZvXidug+BfATX2TEW
5Q8+1uuHAgMBAAECggEBAIzNPTYMy/fZsHiHQ1jZZVDVNvVf8ZVzqny6V6DKajQ3
VGGJUkUxAef3u+xiAh5UGWkvd/RRhdxU3wkfEa7XTGk0JsW0IDVMsGt9BWAoQ3pF
KW3YP/NBpeClY9DK42lJxmXv5+8ScVpDdcihrZMYAhV3RwuAJS8r+Ee7jqo//xzY
ljXa1eHhmEO2nxMz4v3yJIqMWHNJoXct5gbk8CBdvuhSgxqV9XxlJhlvRharX+TX
KnN+ql2OdejlDdvRoT4KzALCxf/csjBheP3KZ3aVr9/gUsPGiMOCnW6tOqc/Fg7z
zo2y37IWof9HNc1tHE2Sn//c0Az7XLpEFT0iFGydw8ECgYEA6RmsdlKD2E892Qr3
ApViCC/rrkhKEw9LrSGFd8LdWFUBqdfsd97oK2lStUe4lb+Qz9u4yOgl+dBRAkbR
sJFoQNwMML00VQKF/P2S30aGehw1OfKvihGfkolJ4EkPE7XbvCwZ/cd0J+TVplag
UZ4nCaC1DhcPsjI3CBGIA8plI20CgYEAzCep6gpbbI0XdcNwaHW9Ozws9c61LFON
zbrf0hXMswqZJR3O7piLdzJBBYF/uN7VyVucRle9Ve1lFXgxvxuUkgzZTB81TP7V
O1+oxR5mhCa24tNxuK3ARvmz8SkyRR56iaSNW6yI0ZLg9pJm/gMslJoaAX0tcDME
ZVUd6dZLfkMCgYEAiH+RP0R4km1ssTE7jha97j9piogoYFrfnMV5a7T/et9kdvnL
LjKoz+sAFMmn7IDeIununi9bNZtoJKYl2nh7jSeON+hDwdgVcB1pKTgaPV1RSdq0
Mmy5fczJJv6BRrCCuQE2QybN/SKCfcJSZRjwkTG7dEHK3jWLhj0F4fpeGU0CgYBG
qcPqOkOCwyNHo6oYvggNpLp7Kl0TRqhieThXYyxDHHv9mN+zPiGn1EElQrmOp7Kf
y5G/10a1o0HFuKCfYVB/bOsZqgOs7tengWjNMcSSIURUJpPKNHnFF1DtPDEmM3J+
ifJTtNh2kbxEHFCBw19+4Af4U/eSSlZPLLL56S6gOQKBgD+NtBcAxggeJZAHONOF
9qcdERaiygXWPFWTGhtSpy7U8uSBD361UdIs5SeYB44v8r/cW9+9nj5VL/wprujr
ZhzdhwYaeX05DB7A5zO1sTt2wjoD/otlIvL5nY00NBeaJzRhLkef2peDHHuZ5lET
Jb0rNPLpp9FN2JWXF233eGzL
-----END PRIVATE KEY-----
@@ -0,0 +1,21 @@
-----BEGIN CERTIFICATE-----
MIIDbjCCAlagAwIBAgIURHfU3Y2O/Mzv+pl897K5wFx7TUYwDQYJKoZIhvcNAQEL
BQAwNDENMAsGA1UECwwERG9jdTEOMAwGA1UECgwFV2F6dWgxEzARBgNVBAcMCkNh
bGlmb3JuaWEwHhcNMjIwMjA3MjAyODQ0WhcNMzIwMjA1MjAyODQ0WjBYMQswCQYD
VQQGEwJVUzETMBEGA1UEBwwKQ2FsaWZvcm5pYTEOMAwGA1UECgwFV2F6dWgxDTAL
BgNVBAsMBERvY3UxFTATBgNVBAMMDHdhenVoLm1hc3RlcjCCASIwDQYJKoZIhvcN
AQEBBQADggEPADCCAQoCggEBALnkkw6dh6LJyjZVi7z7VBfmoDboUCYmCedaaqpm
86g2gO7IsaUrO5SIqdXTGscOWyoBFByZR/uEXrdBCRtmVZHYuSFEpBYuJ6YhApWr
HJqtDRgPv7LGaTehoHsFl2TGxlzHQrUW5lzFSp0lNGE6+6es+Qq5AAmo/G4C1qYt
Lvm76rdhFM3fXNEwJk0eoaLPPM3WukjDiCrxZQT3dQdQovuv/bBs+JHpOwuTj+jK
BQRss22XTq70x/X1vvcpYKgOvXGIlK4NuQL79vfMpYNmZ56OJHgJepQyGbbdhU8S
bH+6eSWG3d9fJWVHFH9CsFm9eJ26D4F8BNfZMRblDz7W64cCAwEAAaNUMFIwHwYD
VR0jBBgwFoAUEdn3rVBSyY8Yn4m3SB/JljhKGdIwCQYDVR0TBAIwADALBgNVHQ8E
BAMCBPAwFwYDVR0RBBAwDoIMd2F6dWgubWFzdGVyMA0GCSqGSIb3DQEBCwUAA4IB
AQAmCAiydzBHx8M7bUWcuxU0uB93TLsGzptpYebd9/Y4C+SrxHjjxQb5gji8D9qL
/aE3pg6RowBwhAnaCa5DCvFm7mz4sP8HO9Hz1I5w40jjkoIfwPw5kL/66t+pGonu
SbRzPH/s87vrtgowaF+2U7tNd3iiHFH2ANIJPmAki9XtYWjUgOEaY6R1UhpDOntB
UNvb6tTpdjkBTZNVDugO7BVQKjXWK1AKn5m08JepLK39cCX+Q120KK7NbRCtcR3u
CMaqKvZ4sMT/pGwmRbuTxYx11zWsf8tFeMJxv82RVjVwZktSPyEFuX1MzlZ/2ljl
tf1yaqMCS7yWFYjwzcDZ35Gh
-----END CERTIFICATE-----
@@ -0,0 +1,28 @@
-----BEGIN PRIVATE KEY-----
MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDO2F9laXHl+CAB
0tLEdEq4CXciYnBpytAuwodoGk3wYn6ZBXxxKs+Mm/0jHSrvmK4qP2jQXS/6+u1s
2kFBaG1a0/GMVMG/wpJ7aJTT/jK+prc4npCdOLkIHV3CvptV0tJ8nPEAsydY8bBV
9swqknl+FDMK7yMSez3lbAo+PgPcsKDomt9+nSBnZHqmHpRcie/H6SNm6UgivfYW
i8LkAKL0uUmlU383ZrUNzso9zXdJhJyY+VEh3QGUppReH+YPP30FUtHuQRtPQxPp
epLxT2+tKIMremXyyb8KRJJTzhEWXddY9mVJmZeDCU40hCYhK4EPvrGPUH/oriQG
El+AHy//AgMBAAECggEBAJmM4Ix9EZOBdelEozg5iDpEtI7u+rpeV9tOh4yNcmxQ
AeEAxJeSC087gVhuz6/b7Pbp6Zo8g2DSpCxZfXXb2spBaiAdz1LWUz2PrmQNYYhM
ZNmARKSiNiHDAxaNvuygO6dMLlCxrjUF/jxioL+9yrkAr7+fNK8ElDda0+POz7kk
g8jBGhoaJ4NOpcfD3ifPYvGGsz3fKeEQjfnCGnIgwIin1ZN2C2XJ0Sdi0DTuUWAp
XLRCXcLbQfMQXWoN+MJza9fRa0ZhkDjsSkBeM8/f2rABmzS/HpHZRsp/xF+qJ/2p
zO0kKMiTjXwhIY5YQc++gSgg1uGMeaObW2n0O1atQgkCgYEA8gRFtkHmi0/NZyo/
IAzICT8PLCXKZbZXU/jfBd5NzBJi24+9l1H+wZ52v8gxwUF6XaggHcFlyTdVenMK
UeOof5SAPg9/BeHE9z7CKkvQthppRnRbpeBHiTpL86UbnNcbzSCcqIwAWUv00tq8
IBCIMQDts0dqjqIRaN8BFUaU3Z0CgYEA2sve0J6Jf/fat97vwEZncCVhjVwJ6rW4
CSNqR1T1ZQCiU9H+CSGvn95ZvhwOrESXQxV/Z7S3CHfovPVKXNFBs9XFpKmCBBz/
YxhIXAch8WM9jLIDqPY/VnbN307AufK1PLF2/StnUTEFLoNQpl2WWQa1LFeSXZvZ
0oj/+KTJX0sCgYEAz4tOZTA6jznOgiw+mjOb0CId1tRJr9QhK8f/Kj8sJFeYI4Yv
JneQq2ZDm9AIqxyF3Y9yi1HxAg/L5AiHzxYWx+IH4DDV06t7iDRvumnuAFzB70OV
3LhrYIl33Oe4uFXYZ58R+ZCmM+3pdHFUZ4MF6FBNiDM0dEEUAQVNHnu66hkCgYEA
msHG6UKpuQUEBDhA1nw138Hg/U6TiRtdf8E4BBpYtEc9ihInICheg7KPQYOw8TJW
11FWW3EcYXYG/dh1767nTR8we+aVmvkzvtDHJai53nY2a9Th99mtNSg1N/UJJr1A
ahyQMERKAMiuhJbHLdVWacPv09xhH6sD6AGVJDbSZH8CgYApvezqoBeDhS5PVt/I
s9rPy4M0dITb5Wb7gy2R7BtZOdMluPshN87S37j0B7iJB0RwvYNtDftAn4qKSA77
JHEd/mI+rtUeCzgHginAyKR07yP5EALI21OWTRyyywlpWFAds2H0Kh0v0/P8YHQZ
W8Z3U7jEifGmclWgxTaZAcvaXA==
-----END PRIVATE KEY-----
@@ -0,0 +1,21 @@
-----BEGIN CERTIFICATE-----
MIIDbjCCAlagAwIBAgIURHfU3Y2O/Mzv+pl897K5wFx7TUcwDQYJKoZIhvcNAQEL
BQAwNDENMAsGA1UECwwERG9jdTEOMAwGA1UECgwFV2F6dWgxEzARBgNVBAcMCkNh
bGlmb3JuaWEwHhcNMjIwMjA3MjAyODQ0WhcNMzIwMjA1MjAyODQ0WjBYMQswCQYD
VQQGEwJVUzETMBEGA1UEBwwKQ2FsaWZvcm5pYTEOMAwGA1UECgwFV2F6dWgxDTAL
BgNVBAsMBERvY3UxFTATBgNVBAMMDHdhenVoLndvcmtlcjCCASIwDQYJKoZIhvcN
AQEBBQADggEPADCCAQoCggEBAM7YX2VpceX4IAHS0sR0SrgJdyJicGnK0C7Ch2ga
TfBifpkFfHEqz4yb/SMdKu+Yrio/aNBdL/r67WzaQUFobVrT8YxUwb/CkntolNP+
Mr6mtziekJ04uQgdXcK+m1XS0nyc8QCzJ1jxsFX2zCqSeX4UMwrvIxJ7PeVsCj4+
A9ywoOia336dIGdkeqYelFyJ78fpI2bpSCK99haLwuQAovS5SaVTfzdmtQ3Oyj3N
d0mEnJj5USHdAZSmlF4f5g8/fQVS0e5BG09DE+l6kvFPb60ogyt6ZfLJvwpEklPO
ERZd11j2ZUmZl4MJTjSEJiErgQ++sY9Qf+iuJAYSX4AfL/8CAwEAAaNUMFIwHwYD
VR0jBBgwFoAUEdn3rVBSyY8Yn4m3SB/JljhKGdIwCQYDVR0TBAIwADALBgNVHQ8E
BAMCBPAwFwYDVR0RBBAwDoIMd2F6dWgud29ya2VyMA0GCSqGSIb3DQEBCwUAA4IB
AQBQ/4NRC+7aH7DaFGYrr7/ITK0EmhL1e/BnolpesUF3R1uLaRs0rXqMPs1Z+VuX
jImhICY1Zfrab6dauApHfY4P8P5zg4FOwlNxWWc7GRfPf3Hqo/cfwcv5tcYCRFDW
5cxK6sQNNmqvBaQup40nXRUUuKPKbkmYEECa80BTriA8ueUE+HrDN2kDnezCwXN7
25lsMuVYzsSa6qGHH8zCohiB5erEzpfqbA6cZi9nCoQPQyUJj+34uLYKeTjakOf5
7AVdGRKUMoTMfoY3Azv8lsRAnVqWW9eQLf/z70UED89x5Cv/ZSEDYMWiu8O8DUuA
bLIFd/5qrrH+MymmldMHHz6p
-----END CERTIFICATE-----
@@ -0,0 +1,28 @@
-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC839fpwnln76EE
5JlWxlowMEW+LKUrXkXNH68tul8vSRylxCYLpnsXqlNU0vwoyr8q/zTjkI70HxOG
lN3G1PVSzMEIim3GxV2yL5kDO7mKvfMF8Ed1/S3jShze5lSjH9wwb3nuk+FI/nEE
NuM95pu/N5roq4AftR2wyRNU/NvX2ulr4g17uWcWJMZ0hfcTia3IgVAR6uGsu6vY
I6HmvIrDWGTs8cND829BgvPZbvkuSDHisogFS1XKSNXN4J5uipROR0US96Cfsv+F
ACbbiHKvYNPbxd6mGf825LhaYsYWQl3WESX7gz1lRk9RHQa3eUoFTTSYOlr98AO+
npjZNlKTAgMBAAECggEASfTkmLX70AT26fGRUXctzXy5cnQM4ORzNJTZhXBa4Ssh
uo8JzroLrQKWyroq3tY08OMplIoAT/rzLFmSVc8BmMBwPaXmwlR6EdGteqSiTH+A
b6zcbokKtNtKXsWWEqHhGF4uQotJRcnL+zh61rw79C4TzFOLQd8rlxPFLBwvAWAb
NxbAHAHJgbQ4bzcOVT560RkFNyoOJ2owsItRiBYhi8Kl5zIqpzen5EVLlXTritxB
Rf2RCSHvzI6To+++CSQws9Ge++oa3zf8AI2IU//qtnkrsvBq3eB72n5Stb4mf48g
R0oO8YHZR0hh0mNshFMXqrSJedfZJL2sw9mY0nh/AQKBgQD5y24ahginvLg+g5QC
WiYV6geRwKfWwkABDV4BoiKomvga+Un3PxaPesr42NoSHRKwwWnSUfmjRFYIbCs8
VOvutvAoXJAnGB/V0WwxNwuMEwiXFzONFxPFq92M1dGWAeBRphLqLdKx1pxcpizf
Bf4f3mf7Tu+rvEFZXX8Wq/2D0wKBgQDBkP2fp2ar9htyLfZjxbDs4ypzy8rcS04d
zmIWG8iIvEGL9Bf8m4PMe9QDmAy+DHuDdj/18BopnCGG8nbQpL2S0QmNTfJAMfk+
U37NTg4FsQklrsNht3PxFrpYEbyUjyZBCQtHmWiIHUMLzJWLoj3u24kvU50OJBDa
ScGMoXJ+QQKBgQCmvPX32nQ4ky5g/C92CnrVsevvjKv8HJngme2gJXwBE8B9MN4A
nioPCCYoSYf3A1UQi2p5q6J5KwpKgPmzQfRi2dYg+vh2QBIwBaS0jUu16paXVDNj
AH6AOiKe+bL28LWtiq+hhYjYkKq65WmaTUO+PhUmmSA+gGEWp+RHW/LTZQKBgGjW
xwe5+3oYCjWFf3X6lSE4yL1/G5jFkMHEDow68BpfHIFY68T91hzi1Ko9qGknCZ7i
ZTInoYP39JDKsl+/Wo4yeiH2ncb3Si/fuUYpiJ68jF/EkD5Uxo9F6BfbQ3CTN/zx
kRJunJdcgfvaCwVeEn1UmrDvcJlAH4CbgiFRMFoBAoGBAPD/C8dnvMBYSMH39/EX
Qt5/DC1DbuXl17AbhMqyE+Chye8965wD7aes0vHahEcBpmUuOYJXP9eQiZO6i7S9
CHoEos0HEOvBtoL91sA/zeMspmAYcw3f+UuN6gV18FC9KYoDKLLC9iFs8d7KbGLX
rsawyTEQ5KjqIRjkwFrj+cCL
-----END PRIVATE KEY-----
@@ -0,0 +1,21 @@
-----BEGIN CERTIFICATE-----
MIIDcjCCAlqgAwIBAgIURHfU3Y2O/Mzv+pl897K5wFx7TUMwDQYJKoZIhvcNAQEL
BQAwNDENMAsGA1UECwwERG9jdTEOMAwGA1UECgwFV2F6dWgxEzARBgNVBAcMCkNh
bGlmb3JuaWEwHhcNMjIwMjA3MjAyODQ0WhcNMzIwMjA1MjAyODQ0WjBaMQswCQYD
VQQGEwJVUzETMBEGA1UEBwwKQ2FsaWZvcm5pYTEOMAwGA1UECgwFV2F6dWgxDTAL
BgNVBAsMBERvY3UxFzAVBgNVBAMMDndhenVoMS5pbmRleGVyMIIBIjANBgkqhkiG
9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvN/X6cJ5Z++hBOSZVsZaMDBFviylK15FzR+v
LbpfL0kcpcQmC6Z7F6pTVNL8KMq/Kv8045CO9B8ThpTdxtT1UszBCIptxsVdsi+Z
Azu5ir3zBfBHdf0t40oc3uZUox/cMG957pPhSP5xBDbjPeabvzea6KuAH7UdsMkT
VPzb19rpa+INe7lnFiTGdIX3E4mtyIFQEerhrLur2COh5ryKw1hk7PHDQ/NvQYLz
2W75Lkgx4rKIBUtVykjVzeCeboqUTkdFEvegn7L/hQAm24hyr2DT28Xephn/NuS4
WmLGFkJd1hEl+4M9ZUZPUR0Gt3lKBU00mDpa/fADvp6Y2TZSkwIDAQABo1YwVDAf
BgNVHSMEGDAWgBQR2fetUFLJjxifibdIH8mWOEoZ0jAJBgNVHRMEAjAAMAsGA1Ud
DwQEAwIE8DAZBgNVHREEEjAQgg53YXp1aDEuaW5kZXhlcjANBgkqhkiG9w0BAQsF
AAOCAQEAGVQTOA082vVf49EeH5ewBRGonuK+FMNtt4woZErbKHkSQvYLBkOhgnSs
OHRSdU3OLU0Qdxwx0E4VppKNAAlcmwDBeyVkXPUkIu/pOkepp8fhbTDZSbW6mK2f
0PYd5uyxeHPW6AvpeWh8iUODYSUaceUD4Lu7BJZK2O29MLeAWXw/1tZMbqOHZ9iM
iIz/QNZLqm6qUBnXQg+a35N3tSDYPS7yF/yyKoIgn6GyXAdRJ/yyx3/N+g2rNsIZ
mGyeyl4Pnyl3W88YaC8SUjYRzzD+MBEvlZNTQJ4ORllGDIvJI7mMdvCLaXrDEW8A
axwv/8UwtZnKgmQ9gIKw+v1lFlACWQ==
-----END CERTIFICATE-----
@@ -0,0 +1,28 @@
-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDiI48jkYeNCC5s
1rutoWU7aAMdvAdy4HXhkaILBKbmkSJ3sxGjld4gnr8xXgkclx170gDulMAQL78l
OSKpejMYjVqFtzEy1vXzUnHg8JQOTwu/MDQxcm+vwjEkX9QJSMV+TZTFitbLsQoy
QKw+6UyDxaMLG0ACBqtHZ9vQ83vtr878oWSJZWOx23hpdgoImUjUdvbFNZ9AouKJ
ir6NuFgEzNzo6mS2UcW7268NWkoE0rscf8+8nlW8FXG/IbVbBGrAvc6sYLBYSQ8H
gcl8BEp+5neJ3x44aNwS/gwHaeP6MmYZy0p886RdWuqijc76DNQJN4PkbSm1jj2h
JTQCinp/AgMBAAECggEAGJlXo73b6ep+6lX9emi5E1pAJIbkpIloKU5nOx2ZbjFR
d4XiIFJYJGJAWAVrplGF4oc4lLtXnSskds8dRyRE1KHju/HuhyI9BOft/VMON/Q/
Sd/bfZl+LrdIEzXdYdkpqpCT410z+lpaypagZgOI0Di6gKXJM684CH9yuOsTiwpF
byVlferSJPao+GohtoVytGlZtq3Qo43jdyr9oFmDVbTOkL3o1QVS1DGkzvcSKtfC
4QJmWktq7hcs93ywO46L/yd6x7GzSWbah0KI9mu3/e02nBb96ZIQzbebTkn1VMkm
EWZ4f6Gr869It2aHyO/eKJIzyVFoVquS+XfFS7Fl0QKBgQD5mOwa2ix0v5F1D+vr
2MuY8m9GfoC6N7H0j3XYuCxKg7cJavuokwXiZYwPD6z/d9KKfm1CdxDSB84QCMDk
pWmntRupeSOj7b/q+4EbLRfjUyrzvPcDnQ5yX9Feb/2RAXthdTBlPp04Je60lbXP
MGKitCKb7hQ8urECYYK2h8GaNwKBgQDn8JZ9htlEkBVM0XlhIoLX2v1gxWmwPAWK
gU0RYV/SyLhOwAZzWfs0VK2ZuITsitlGGYUXNjETLlT9SQJ9mwoP3fBuRSPgYyIe
VUrBKZa+X0qYeTctS6ugirCJnR+QGVbt20aw4i/xSPAqLOb3gwHPEVfUMXvOawNh
WONsXrbd+QKBgQDSNrVDuFSQz3cWfJ5aOHDhE+4cFRcdvyKlst2x9Qt4ho515CCn
zYu7LYNUfANb9fLgqbIjtFv6SJCIeJbc+2OM17/AcEJQIkDtC32lAcmIr9cRCSmR
ZYlxUrnnK7MHmZPsdOKZoq6PR4NPnHdPVJT+K3Cqm014CFRkiPOp/5RS6QKBgE7z
+fZvAeSx+14z7FKhcdLSy++2I70HIYe9biOddwYEp6C/AzMfDUEKFjI+upjexwly
xHhbTSdPXUT/JmblcO5nyWFwDb9jX4jd1d2dL6BMRdNTZ/H2UU0MCP4/SzA9P/cl
7pFl3ZYQExj4QgM9SE9ZgwFLeu6QRQ1NOdV5BFzZAoGBAIfYeUOo3D0dPfYhQMau
wUYR/dWyqWyXh27Bz7AbXLz4YxoIh/bPRthPqjit+9WSpIIvL94u68HDplhAiXWx
SLHDZlD2voMI3z26bzXfOYiWH7ULGIenPZKPnEAUCOXXzujFD+K2Rqw12Mji5C5C
Ic3JeVlln8v46SXgyrKqu6jj
-----END PRIVATE KEY-----
@@ -0,0 +1,21 @@
-----BEGIN CERTIFICATE-----
MIIDcjCCAlqgAwIBAgIURHfU3Y2O/Mzv+pl897K5wFx7TUQwDQYJKoZIhvcNAQEL
BQAwNDENMAsGA1UECwwERG9jdTEOMAwGA1UECgwFV2F6dWgxEzARBgNVBAcMCkNh
bGlmb3JuaWEwHhcNMjIwMjA3MjAyODQ0WhcNMzIwMjA1MjAyODQ0WjBaMQswCQYD
VQQGEwJVUzETMBEGA1UEBwwKQ2FsaWZvcm5pYTEOMAwGA1UECgwFV2F6dWgxDTAL
BgNVBAsMBERvY3UxFzAVBgNVBAMMDndhenVoMi5pbmRleGVyMIIBIjANBgkqhkiG
9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4iOPI5GHjQgubNa7raFlO2gDHbwHcuB14ZGi
CwSm5pEid7MRo5XeIJ6/MV4JHJcde9IA7pTAEC+/JTkiqXozGI1ahbcxMtb181Jx
4PCUDk8LvzA0MXJvr8IxJF/UCUjFfk2UxYrWy7EKMkCsPulMg8WjCxtAAgarR2fb
0PN77a/O/KFkiWVjsdt4aXYKCJlI1Hb2xTWfQKLiiYq+jbhYBMzc6OpktlHFu9uv
DVpKBNK7HH/PvJ5VvBVxvyG1WwRqwL3OrGCwWEkPB4HJfARKfuZ3id8eOGjcEv4M
B2nj+jJmGctKfPOkXVrqoo3O+gzUCTeD5G0ptY49oSU0Aop6fwIDAQABo1YwVDAf
BgNVHSMEGDAWgBQR2fetUFLJjxifibdIH8mWOEoZ0jAJBgNVHRMEAjAAMAsGA1Ud
DwQEAwIE8DAZBgNVHREEEjAQgg53YXp1aDIuaW5kZXhlcjANBgkqhkiG9w0BAQsF
AAOCAQEAO55yywT1a1Bd7zAQOeyl5c+aMQpyuwipyiZ6kc+1EI84EmhYh59zalzl
pCb/aQxq/A4Bk0UZAKTBmtBMAMQGiTWTwDMhthEV30j+UgeNCqtMvw5WynZPaS/x
pWuHCPy0HXw2xAFJpMF7iPWyrQOyPsFQJ5WrNsDevLEOhBTj4Z/kgM7Jwpyjb7JU
oU7BOoTrxwWKu61lyXXQuddEHSqJhjWk9aa8HXhtU+fz6xqjfgOWw8sAbrtZktXf
jGgu0xHie6zqAzVeFY6oRe5TJFMr6G/sqgxXfr3Pyg3OaMLZFjkFwKz7NPGVdWva
XvCRx0USefxMjNBQ9hmtn1qqGt9tow==
-----END CERTIFICATE-----
@@ -0,0 +1,28 @@
-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCyBBUzH5lWIOeo
7IpeE83TwIpnv8vhEPZOD5rv7SUNMhPmATVhmX6oGfWuX5KKPGZHH0vMUZBQNha1
G2VXqeHMk+xDoYDNpRptfv2VE97/tbwTlECiWKx99LEc0FskXY7AxXyK6agx5R6G
C7JWVoeHBsOQ4XWqA+Uu6KkCjHWEN4MiPJdqCDerNVWdcqzowRdkeJE4sbZed2OO
Yt3eCrWMZ4ttro9caoY8xkBiI6DEOD35we3IWkB+6qn/Uhd5avgMYaLI4Y6hE8Ov
w2h6tiu9YrVexLf1swd5C7L7bTUtAgenk+sFANx70hGHytL+P+80LJUSTw1JdLm4
3EOnGcjNAgMBAAECggEANb/d1s3XspXE3NBvBvDb2O/t2l2i5ZYFiJRVp9PmuBFC
yNPclleOUptj/v6EdJDAIQFmFY8bD90FBjH7a3iz4N1ZHSKKjY0oaZ9KWdTiJDtv
SkodKee0TWOwho6ytkw5aiM284qRal9P1BF8C22dBjwYmIo6yNbcQEmnnkliwkSv
O1U3xUPyfgkQsS/ZSeKCuDWtcxBRA4lHz83PE36V/QsBwE/cUdyjj70VdR2TA2HI
z7nN+C3VRmsYOBA2FrcrH20DJyZuDA7UOU1VoYyPd98cvI/k9HLHOj9Ct2ntS25q
KjbY749qtUItwuDLmJGlze1MyMazAL85e6hlSsr3AQKBgQDpSzwbSRoaKBTSj2TH
idLD/vx76T7M0rNi+17MrVQQmWxlkff4xY+1tnhBz8G5edUUXilgX95zrGK/J40K
J2zXLsgPMV/Jm68Yw1ZvC2lNacx0mPMn62NVTtOzvI2cHc7ECiOFLufTip2iLKlJ
FIJHRK5juSdmWOFXPqbTaMytsQKBgQDDV4oYiEaOgV+O4E00Q9E8Osl6QxwhBbUO
K4yyoPx8VNMcMKnZlNL7a1XYP9smDJbbWC97HYClSINHEdN2R7rvXEdQk0t4TCyE
UUNvIBi+mVzApccxfcQH5iMhQvQHhmGBtIF8XhagCghboEklZlXRVwBoo/1tnAqi
3fSjEigH3QKBgQCKVaddkppcujmmpYqf23TT7YYvv54SfDoMzntnKLw5X5BsJgMB
S7yshneGprf70GduPWuRjydsNeMT8FLsm3Ypnr7Ya3GeLafFKkc9b2nQkpS+6tb8
a9KqCiT0ZjEeSnqJum1Xkvm6cW6JdKwo/nVF5071KRxYzwlH34mywGjl8QKBgBZS
bYxqHi3wqLvJ8+iSC1nnmdhnzNIVNeBdp6FN9iw7ATjKcs5TTFzAojmo6mEJtT9x
b1ORRn8cryuy5MgyYDE0CU4y1r/zbG7eXmdXcpxtKAU3rHCCX6FLch496Wbmu0O4
HcfZdJprKxNVWKZ2cD4QxBIxEyewWiLMXEU6MOrdAoGAQge11psrXgfmlewBbhSQ
rBl3Hqqf74O7gErhxJP+sXTL2aG1ytLJlQhB5FaN9OSGAXga0LLTVrXp/SzOXhHy
Ca/hcAhVV7buLbpawd/EDWXKOwn82YQW4Y08DnrLfVcT7xU3ZC6Qk/Q85+Mq8Qw7
3x3sgnSDoQWstXmqeCD3NlY=
-----END PRIVATE KEY-----
@@ -0,0 +1,21 @@
-----BEGIN CERTIFICATE-----
MIIDcjCCAlqgAwIBAgIURHfU3Y2O/Mzv+pl897K5wFx7TUUwDQYJKoZIhvcNAQEL
BQAwNDENMAsGA1UECwwERG9jdTEOMAwGA1UECgwFV2F6dWgxEzARBgNVBAcMCkNh
bGlmb3JuaWEwHhcNMjIwMjA3MjAyODQ0WhcNMzIwMjA1MjAyODQ0WjBaMQswCQYD
VQQGEwJVUzETMBEGA1UEBwwKQ2FsaWZvcm5pYTEOMAwGA1UECgwFV2F6dWgxDTAL
BgNVBAsMBERvY3UxFzAVBgNVBAMMDndhenVoMy5pbmRleGVyMIIBIjANBgkqhkiG
9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsgQVMx+ZViDnqOyKXhPN08CKZ7/L4RD2Tg+a
7+0lDTIT5gE1YZl+qBn1rl+SijxmRx9LzFGQUDYWtRtlV6nhzJPsQ6GAzaUabX79
lRPe/7W8E5RAolisffSxHNBbJF2OwMV8iumoMeUehguyVlaHhwbDkOF1qgPlLuip
Aox1hDeDIjyXagg3qzVVnXKs6MEXZHiROLG2XndjjmLd3gq1jGeLba6PXGqGPMZA
YiOgxDg9+cHtyFpAfuqp/1IXeWr4DGGiyOGOoRPDr8NoerYrvWK1XsS39bMHeQuy
+201LQIHp5PrBQDce9IRh8rS/j/vNCyVEk8NSXS5uNxDpxnIzQIDAQABo1YwVDAf
BgNVHSMEGDAWgBQR2fetUFLJjxifibdIH8mWOEoZ0jAJBgNVHRMEAjAAMAsGA1Ud
DwQEAwIE8DAZBgNVHREEEjAQgg53YXp1aDMuaW5kZXhlcjANBgkqhkiG9w0BAQsF
AAOCAQEAnyLfdPMfYjP3su7tAtXzo3/yBM3X9h+90ziWU3Nt8FcECS1vkOxeyNWN
HjoQ62D1pVDNcX1ul5ue3p5IkGACQFWSvK8Ts/BCPkD7XLSg2NQ/ILOvknUcKM6m
JtCdPO/Y6E1nhTb51G58LQx6W7/U7kfiDYm/G/0fxfcQNlhkmii0btNMqR6yCNUb
dCeSuQEXT+gobUVyymXMN7DXzpe+dHG74Zs28v7sp0cdCONVab2PW1sD0/v5Nmcd
j+XxcKbnaxjiHEABd2c6U7eNjPbGo1Y2AqeLY8DWgOA3y/wA3+c292X9M5F3WBUM
CCjfJjwHLYvQVSWoNKaIDC196sZtgg==
-----END CERTIFICATE-----
+40 -40
View File
@@ -2,16 +2,16 @@
version: '3.7'
services:
wazuh-master:
wazuh.master:
image: wazuh/wazuh-odfe:4.3.0
hostname: wazuh-master
hostname: wazuh.master
restart: always
ports:
- "1515:1515"
- "514:514/udp"
- "55000:55000"
environment:
- ELASTICSEARCH_URL=https://wazuh-indexer:9700
- ELASTICSEARCH_URL=https://wazuh.indexer:9700
- ELASTIC_USERNAME=admin
- ELASTIC_PASSWORD=admin
- FILEBEAT_SSL_VERIFICATION_MODE=full
@@ -33,16 +33,16 @@ services:
- filebeat-etc:/etc/filebeat
- filebeat-var:/var/lib/filebeat
- ./production_cluster/wazuh_indexer_ssl_certs/root-ca.pem:/etc/ssl/root-ca.pem
- ./production_cluster/wazuh_indexer_ssl_certs/filebeat.pem:/etc/ssl/filebeat.pem
- ./production_cluster/wazuh_indexer_ssl_certs/filebeat.key:/etc/ssl/filebeat.key
- ./production_cluster/wazuh_indexer_ssl_certs/wazuh.master.pem:/etc/ssl/filebeat.pem
- ./production_cluster/wazuh_indexer_ssl_certs/wazuh.master-key.pem:/etc/ssl/filebeat.key
- ./production_cluster/wazuh_cluster/wazuh_manager.conf:/wazuh-config-mount/etc/ossec.conf
wazuh-worker:
wazuh.worker:
image: wazuh/wazuh-odfe:4.3.0
hostname: wazuh-worker
hostname: wazuh.worker
restart: always
environment:
- ELASTICSEARCH_URL=https://wazuh-indexer:9700
- ELASTICSEARCH_URL=https://wazuh.indexer:9700
- ELASTIC_USERNAME=admin
- ELASTIC_PASSWORD=admin
- FILEBEAT_SSL_VERIFICATION_MODE=full
@@ -62,13 +62,13 @@ services:
- worker-filebeat-etc:/etc/filebeat
- worker-filebeat-var:/var/lib/filebeat
- ./production_cluster/wazuh_indexer_ssl_certs/root-ca.pem:/etc/ssl/root-ca.pem
- ./production_cluster/wazuh_indexer_ssl_certs/filebeat.pem:/etc/ssl/filebeat.pem
- ./production_cluster/wazuh_indexer_ssl_certs/filebeat.key:/etc/ssl/filebeat.key
- ./production_cluster/wazuh_indexer_ssl_certs/wazuh.worker.pem:/etc/ssl/filebeat.pem
- ./production_cluster/wazuh_indexer_ssl_certs/wazuh.worker-key.pem:/etc/ssl/filebeat.key
- ./production_cluster/wazuh_cluster/wazuh_worker.conf:/wazuh-config-mount/etc/ossec.conf
wazuh-indexer:
wazuh1.indexer:
image: test-indexer
hostname: wazuh-indexer
hostname: wazuh1.indexer
restart: always
ports:
- "9700:9700"
@@ -85,16 +85,16 @@ services:
volumes:
- wazuh-indexer-data-1:/var/lib/wazuh-indexer
- ./production_cluster/wazuh_indexer_ssl_certs/root-ca.pem:/etc/wazuh-indexer/certs/root-ca.pem
- ./production_cluster/wazuh_indexer_ssl_certs/wazuh-indexer.key:/etc/wazuh-indexer/certs/wazuh-indexer.key
- ./production_cluster/wazuh_indexer_ssl_certs/wazuh-indexer.pem:/etc/wazuh-indexer/certs/wazuh-indexer.pem
- ./production_cluster/wazuh_indexer_ssl_certs/wazuh1.indexer-key.pem:/etc/wazuh-indexer/certs/wazuh1.indexer.key
- ./production_cluster/wazuh_indexer_ssl_certs/wazuh1.indexer.pem:/etc/wazuh-indexer/certs/wazuh1.indexer.pem
- ./production_cluster/wazuh_indexer_ssl_certs/admin.pem:/etc/wazuh-indexer/certs/admin.pem
- ./production_cluster/wazuh_indexer_ssl_certs/admin.key:/etc/wazuh-indexer/certs/admin-key.pem
- ./production_cluster/wazuh-indexer/opensearch-node1.yml:/etc/wazuh-indexer/opensearch.yml
- ./production_cluster/wazuh_indexer_ssl_certs/admin-key.pem:/etc/wazuh-indexer/certs/admin-key.pem
- ./production_cluster/wazuh-indexer/wazuh1.indexer.yml:/etc/wazuh-indexer/opensearch.yml
- ./production_cluster/wazuh-indexer/internal_users.yml:/usr/share/wazuh-indexer/plugins/opensearch-security/securityconfig/internal_users.yml
wazuh-indexer-2:
wazuh2.indexer:
image: test-indexer
hostname: wazuh-indexer-2
hostname: wazuh2.indexer
restart: always
environment:
- "OPENSEARCH_JAVA_OPTS=-Xms1g -Xmx1g"
@@ -109,14 +109,14 @@ services:
volumes:
- wazuh-indexer-data-2:/var/lib/wazuh-indexer
- ./production_cluster/wazuh_indexer_ssl_certs/root-ca.pem:/etc/wazuh-indexer/certs/root-ca.pem
- ./production_cluster/wazuh_indexer_ssl_certs/wazuh-indexer-2.key:/etc/wazuh-indexer/certs/wazuh-indexer-2.key
- ./production_cluster/wazuh_indexer_ssl_certs/wazuh-indexer-2.pem:/etc/wazuh-indexer/certs/wazuh-indexer-2.pem
- ./production_cluster/wazuh-indexer/opensearch-node2.yml:/etc/wazuh-indexer/opensearch.yml
- ./production_cluster/wazuh_indexer_ssl_certs/wazuh2.indexer-key.pem:/etc/wazuh-indexer/certs/wazuh2.indexer.key
- ./production_cluster/wazuh_indexer_ssl_certs/wazuh2.indexer.pem:/etc/wazuh-indexer/certs/wazuh2.indexer.pem
- ./production_cluster/wazuh-indexer/wazuh2.indexer.yml:/etc/wazuh-indexer/opensearch.yml
- ./production_cluster/wazuh-indexer/internal_users.yml:/usr/share/elasticsearch/plugins/opendistro_security/securityconfig/internal_users.yml
wazuh-indexer-3:
wazuh3.indexer:
image: test-indexer
hostname: wazuh-indexer-3
hostname: wazuh3.indexer
restart: always
environment:
- "OPENSEARCH_JAVA_OPTS=-Xms1g -Xmx1g"
@@ -131,14 +131,14 @@ services:
volumes:
- wazuh-indexer-data-3:/var/lib/wazuh-indexer
- ./production_cluster/wazuh_indexer_ssl_certs/root-ca.pem:/etc/wazuh-indexer/certs/root-ca.pem
- ./production_cluster/wazuh_indexer_ssl_certs/wazuh-indexer-3.key:/etc/wazuh-indexer/certs/wazuh-indexer-3.key
- ./production_cluster/wazuh_indexer_ssl_certs/wazuh-indexer-3.pem:/etc/wazuh-indexer/certs/wazuh-indexer-3.pem
- ./production_cluster/wazuh-indexer/opensearch-node3.yml:/etc/wazuh-indexer/opensearch.yml
- ./production_cluster/wazuh_indexer_ssl_certs/wazuh3.indexer-key.pem:/etc/wazuh-indexer/certs/wazuh3.indexer.key
- ./production_cluster/wazuh_indexer_ssl_certs/wazuh3.indexer.pem:/etc/wazuh-indexer/certs/wazuh3.indexer.pem
- ./production_cluster/wazuh-indexer/wazuh3.indexer.yml:/etc/wazuh-indexer/opensearch.yml
- ./production_cluster/wazuh-indexer/internal_users.yml:/usr/share/elasticsearch/plugins/opendistro_security/securityconfig/internal_users.yml
kibana:
wazuh.dashboard:
image: wazuh/wazuh-dashboard:4.3.0
hostname: kibana
hostname: wazuh.dashboard
restart: always
ports:
- 5601:5601
@@ -148,7 +148,7 @@ services:
- SERVER_SSL_ENABLED=true
- SERVER_SSL_CERTIFICATE=/etc/wazuh-dashboard/certs/cert.pem
- SERVER_SSL_KEY=/etc/wazuh-dashboard/certs/key.pem
- WAZUH_API_URL="https://wazuh-master"
- WAZUH_API_URL="https://wazuh.master"
- API_USERNAME=acme-user
- API_PASSWORD=MyS3cr37P450r.*-
volumes:
@@ -156,10 +156,10 @@ services:
- ./production_cluster/wazuh_dashboard_ssl/key.pem:/etc/wazuh-dashboard/certs/key.pem
depends_on:
- wazuh-indexer
- wazuh1.indexer
links:
- wazuh-indexer:wazuh-indexer
- wazuh-master:wazuh-master
- wazuh1.indexer:wazuh1.indexer
- wazuh.master:wazuh.master
nginx:
image: nginx:stable
@@ -170,13 +170,13 @@ services:
- "443:443"
- "1514:1514"
depends_on:
- wazuh-master
- wazuh-worker
- kibana
- wazuh.master
- wazuh.worker
- wazuh.dashboard
links:
- wazuh-master:wazuh-master
- wazuh-worker:wazuh-worker
- kibana:kibana
- wazuh.master:wazuh.master
- wazuh.worker:wazuh.worker
- wazuh.dashboard:wazuh.dashboard
volumes:
- ./production_cluster/nginx/nginx.conf:/etc/nginx/nginx.conf:ro
- ./production_cluster/nginx/ssl:/etc/nginx/ssl:ro
@@ -20,9 +20,9 @@ RUN sha256sum -c ${tini_bin}.sha256sum && \
#COPY config/opensearch.yml config/log4j2.properties config/
#RUN chmod 0660 config/opensearch.yml config/log4j2.properties
COPY config/unattended_installer.tar.gz /
COPY config/config2.sh .
COPY config/config.sh .
RUN tar -xzvf /unattended_installer.tar.gz
RUN bash config2.sh
RUN bash config.sh
################################################################################
# Build stage 1 (the actual OpenSearch image):
@@ -50,9 +50,9 @@ RUN useradd --system \
WORKDIR $INSTALL_DIR
COPY config/entrypoint_OS.sh /
COPY config/entrypoint.sh /
RUN chmod 700 /entrypoint_OS.sh
RUN chmod 700 /entrypoint.sh
COPY --from=builder --chown=1000:1000 /debian/wazuh-indexer/usr/share/wazuh-indexer /usr/share/wazuh-indexer
COPY --from=builder --chown=0:0 /tini /tini
@@ -72,6 +72,6 @@ EXPOSE 9700
#ENTRYPOINT [ "/entrypoint.sh" ]
ENTRYPOINT ["/tini", "--", "/entrypoint_OS.sh"]
ENTRYPOINT ["/tini", "--", "/entrypoint.sh"]
# Dummy overridable parameter parsed by entrypoint
CMD ["opensearchwrapper"]
-23
View File
@@ -1,23 +0,0 @@
# Wazuh Docker Copyright (C) 2021 Wazuh Inc. (License GPLv2)
FROM centos:8
ARG WAZUH_VERSION=4.3.0-1
USER root
# Update and install dependecies
RUN yum install initscripts -y
#Download and install Wazuh indexer
RUN curl https://s3.us-west-1.amazonaws.com/packages-dev.wazuh.com/pre-release/yum/wazuh-indexer-${WAZUH_VERSION}.x86_64.rpm --output wazuh-indexer-${WAZUH_VERSION}.x86_64.rpm && \
rpm -i wazuh-indexer-${WAZUH_VERSION}.x86_64.rpm && \
yum clean all && rm -rf /var/cache/yum && rm -rf wazuh-indexer-${WAZUH_VERSION}.x86_64.rpm
COPY config/entrypoint.sh /
RUN chmod 700 /entrypoint.sh
# Services ports
EXPOSE 9700
ENTRYPOINT [ "/entrypoint.sh" ]
-20
View File
@@ -1,20 +0,0 @@
# Wazuh Docker Copyright (C) 2021 Wazuh Inc. (License GPLv2)
FROM ubuntu:20.04
ARG WAZUH_VERSION=4.3.0-1
# Update and install dependecies
RUN apt-get update && apt install curl -y
#Download and install Wazuh indexer
RUN curl https://packages-dev.wazuh.com/pre-release/apt/pool/main/w/wazuh-indexer/wazuh-indexer_${WAZUH_VERSION}_amd64.deb --output wazuh-indexer_${WAZUH_VERSION}_amd64.deb && \
dpkg -i wazuh-indexer_${WAZUH_VERSION}_amd64.deb
COPY config/entrypoint.sh /
RUN chmod 700 /entrypoint.sh
# Services ports
EXPOSE 9700
ENTRYPOINT [ "/entrypoint.sh" ]
File diff suppressed because it is too large Load Diff
-53
View File
@@ -1,53 +0,0 @@
# This has to be exported to make some magic below work.
export DH_OPTIONS
export NAME=wazuh-indexer
export TARGET_DIR=${CURDIR}/debian/${NAME}
# Package build options
export USER=${NAME}
export GROUP=${NAME}
export CONFIG_DIR=/etc/${NAME}
export LOG_DIR=/var/log/${NAME}
export LIB_DIR=/var/lib/${NAME}
export PID_DIR=/run/${NAME}
export INSTALLATION_DIR=/usr/share/${NAME}
export BASE_DIR=${NAME}-*
export INDEXER_FILE=wazuh-indexer-base-linux-x64.tar.gz
export REPO_DIR=/unattended_installer
rm -rf ${INSTALLATION_DIR}/
curl -o ${INDEXER_FILE} https://s3.amazonaws.com/warehouse.wazuh.com/indexer/${INDEXER_FILE}
tar -zvxf ${INDEXER_FILE}
# copy to target
mkdir -p ${TARGET_DIR}${INSTALLATION_DIR}
mkdir -p ${TARGET_DIR}${CONFIG_DIR}
mkdir -p ${TARGET_DIR}${LIB_DIR}
mkdir -p ${TARGET_DIR}${LOG_DIR}
mkdir -p ${TARGET_DIR}/etc/init.d
mkdir -p ${TARGET_DIR}/etc/default
mkdir -p ${TARGET_DIR}/usr/lib/tmpfiles.d
mkdir -p ${TARGET_DIR}/usr/lib/sysctl.d
mkdir -p ${TARGET_DIR}/usr/lib/systemd/system
# Move configuration files for wazuh-indexer
mv -f ${BASE_DIR}/etc/init.d/${NAME} ${TARGET_DIR}/etc/init.d/${NAME}
mv -f ${BASE_DIR}/etc/wazuh-indexer/* ${TARGET_DIR}${CONFIG_DIR}
mv -f ${BASE_DIR}/etc/sysconfig/${NAME} ${TARGET_DIR}/etc/default/
mv -f ${BASE_DIR}/usr/lib/tmpfiles.d/* ${TARGET_DIR}/usr/lib/tmpfiles.d/
mv -f ${BASE_DIR}/usr/lib/sysctl.d/* ${TARGET_DIR}/usr/lib/sysctl.d/
mv -f ${BASE_DIR}/usr/lib/systemd/system/* ${TARGET_DIR}/usr/lib/systemd/system/
rm -rf ${BASE_DIR}/etc
rm -rf ${BASE_DIR}/usr
# Copy installation files to final location
cp -pr ${BASE_DIR}/* ${TARGET_DIR}${INSTALLATION_DIR}
# Copy the security tools
cp ${REPO_DIR}/install_functions/wazuh-cert-tool.sh ${TARGET_DIR}${INSTALLATION_DIR}/plugins/opensearch-security/tools/
cp ${REPO_DIR}/install_functions/wazuh-passwords-tool.sh ${TARGET_DIR}${INSTALLATION_DIR}/plugins/opensearch-security/tools/
cp ${REPO_DIR}/config/opensearch/certificate/config_aio.yml ${TARGET_DIR}${INSTALLATION_DIR}/plugins/opensearch-security/tools/config.yml
# Copy Wazuh's config files for the security plugin
cp -pr ${REPO_DIR}/config/opensearch/roles/roles_mapping.yml ${TARGET_DIR}${INSTALLATION_DIR}/plugins/opensearch-security/securityconfig/
cp -pr ${REPO_DIR}/config/opensearch/roles/roles.yml ${TARGET_DIR}${INSTALLATION_DIR}/plugins/opensearch-security/securityconfig/
cp -pr ${REPO_DIR}/config/opensearch/roles/internal_users.yml ${TARGET_DIR}${INSTALLATION_DIR}/plugins/opensearch-security/securityconfig/
+80 -47
View File
@@ -1,56 +1,89 @@
#!/bin/bash
# Wazuh Docker Copyright (C) 2021 Wazuh Inc. (License GPLv2)
#!/usr/bin/env bash
set -e
##############################################################################
# Start Wazuh indexer
##############################################################################
# Files created by Elasticsearch should always be group writable too
umask 0002
export USER=wazuh-indexer
export INSTALLATION_DIR=/usr/share/wazuh-indexer
export OPENSEARCH_PATH_CONF=/etc/wazuh-indexer
export OPENSEARCH_PATH_CONF=/etc/wazuh-indexer
export JAVA_HOME=${INSTALLATION_DIR}/jdk
export FILE=${INSTALLATION_DIR}/start
sed -i '/path.logs:/d' /etc/wazuh-indexer/opensearch.yml
if [ -f $FILE ]
then
echo "second or more start"
else
if [ "$NODE_TYPE" == "worker" ]
then
echo "node_type start"
echo $NODE_TYPE
echo "node_type end"
rm -rf /var/lib/wazuh-indexer/*
sleep 70
echo "worker restart"
touch $FILE
else
echo "hostname start"
echo $HOSTNAME
echo "hostname end"
echo "node_type start"
echo $NODE_TYPE
echo "node_type end"
runuser wazuh-indexer --shell="/bin/bash" --command="/usr/share/wazuh-indexer/bin/opensearch -p /run/wazuh-indexer/wazuh-indexer.pid -d"
sleep 60
bash /usr/share/wazuh-indexer/plugins/opensearch-security/tools/securityadmin.sh -cd /usr/share/wazuh-indexer/plugins/opensearch-security/securityconfig -icl -p 9800 -cd /usr/share/wazuh-indexer/plugins/opensearch-security/securityconfig -nhnv -cacert /etc/wazuh-indexer/certs/root-ca.pem -cert /etc/wazuh-indexer/certs/admin.pem -key /etc/wazuh-indexer/certs/admin-key.pem -h $HOSTNAME
tail -100f /usr/share/wazuh-indexer/logs/wazuh-cluster.log
touch $FILE
fi
fi
#sed -i '/path.logs:/d' /etc/wazuh-indexer/opensearch.yml
#CLK_TK=`getconf CLK_TCK` runuser ${USER} --shell="/bin/bash" --command="${INSTALLATION_DIR}/bin/opensearch"
if [ -f /var/log/wazuh-indexer/wazuh-cluster.log ]
then
tail -f /var/log/wazuh-indexer/wazuh-cluster.log
run_as_other_user_if_needed() {
if [[ "$(id -u)" == "0" ]]; then
# If running as root, drop to specified UID and run command
exec chroot --userspec=1000:0 / "${@}"
else
while true; do sleep 1000; done
# Either we are running in Openshift with random uid and are a member of the root group
# or with a custom --user
exec "${@}"
fi
}
# Allow user specify custom CMD, maybe bin/opensearch itself
# for example to directly specify `-E` style parameters for opensearch on k8s
# or simply to run /bin/bash to check the image
if [[ "$1" != "opensearchwrapper" ]]; then
if [[ "$(id -u)" == "0" && $(basename "$1") == "opensearch" ]]; then
# centos:7 chroot doesn't have the `--skip-chdir` option and
# changes our CWD.
# Rewrite CMD args to replace $1 with `opensearch` explicitly,
# so that we are backwards compatible with the docs
# from the previous Elasticsearch versions<6
# and configuration option D:
# https://www.elastic.co/guide/en/elasticsearch/reference/5.6/docker.html#_d_override_the_image_8217_s_default_ulink_url_https_docs_docker_com_engine_reference_run_cmd_default_command_or_options_cmd_ulink
# Without this, user could specify `opensearch -E x.y=z` but
# `bin/opensearch -E x.y=z` would not work.
set -- "opensearch" "${@:2}"
# Use chroot to switch to UID 1000 / GID 0
exec chroot --userspec=1000:0 / "$@"
else
# User probably wants to run something else, like /bin/bash, with another uid forced (Openshift?)
exec "$@"
fi
fi
# Allow environment variables to be set by creating a file with the
# contents, and setting an environment variable with the suffix _FILE to
# point to it. This can be used to provide secrets to a container, without
# the values being specified explicitly when running the container.
#
# This is also sourced in opensearch-env, and is only needed here
# as well because we use ELASTIC_PASSWORD below. Sourcing this script
# is idempotent.
source /usr/share/wazuh-indexer/bin/opensearch-env-from-file
if [[ -f bin/opensearch-users ]]; then
# Check for the ELASTIC_PASSWORD environment variable to set the
# bootstrap password for Security.
#
# This is only required for the first node in a cluster with Security
# enabled, but we have no way of knowing which node we are yet. We'll just
# honor the variable if it's present.
if [[ -n "$ELASTIC_PASSWORD" ]]; then
[[ -f /usr/share/wazuh-indexer/config/opensearch.keystore ]] || (run_as_other_user_if_needed opensearch-keystore create)
if ! (run_as_other_user_if_needed opensearch-keystore has-passwd --silent) ; then
# keystore is unencrypted
if ! (run_as_other_user_if_needed opensearch-keystore list | grep -q '^bootstrap.password$'); then
(run_as_other_user_if_needed echo "$ELASTIC_PASSWORD" | opensearch-keystore add -x 'bootstrap.password')
fi
else
# keystore requires password
if ! (run_as_other_user_if_needed echo "$KEYSTORE_PASSWORD" \
| opensearch-keystore list | grep -q '^bootstrap.password$') ; then
COMMANDS="$(printf "%s\n%s" "$KEYSTORE_PASSWORD" "$ELASTIC_PASSWORD")"
(run_as_other_user_if_needed echo "$COMMANDS" | opensearch-keystore add -x 'bootstrap.password')
fi
fi
fi
fi
if [[ "$(id -u)" == "0" ]]; then
# If requested and running as root, mutate the ownership of bind-mounts
if [[ -n "$TAKE_FILE_OWNERSHIP" ]]; then
chown -R 1000:0 /usr/share/wazuh-indexer/{data,logs}
fi
fi
run_as_other_user_if_needed /usr/share/wazuh-indexer/bin/opensearch <<<"$KEYSTORE_PASSWORD"
-89
View File
@@ -1,89 +0,0 @@
#!/usr/bin/env bash
set -e
# Files created by Elasticsearch should always be group writable too
umask 0002
export USER=wazuh-indexer
export INSTALLATION_DIR=/usr/share/wazuh-indexer
export OPENSEARCH_PATH_CONF=/etc/wazuh-indexer
export JAVA_HOME=${INSTALLATION_DIR}/jdk
export FILE=${INSTALLATION_DIR}/start
run_as_other_user_if_needed() {
if [[ "$(id -u)" == "0" ]]; then
# If running as root, drop to specified UID and run command
exec chroot --userspec=1000:0 / "${@}"
else
# Either we are running in Openshift with random uid and are a member of the root group
# or with a custom --user
exec "${@}"
fi
}
# Allow user specify custom CMD, maybe bin/opensearch itself
# for example to directly specify `-E` style parameters for opensearch on k8s
# or simply to run /bin/bash to check the image
if [[ "$1" != "opensearchwrapper" ]]; then
if [[ "$(id -u)" == "0" && $(basename "$1") == "opensearch" ]]; then
# centos:7 chroot doesn't have the `--skip-chdir` option and
# changes our CWD.
# Rewrite CMD args to replace $1 with `opensearch` explicitly,
# so that we are backwards compatible with the docs
# from the previous Elasticsearch versions<6
# and configuration option D:
# https://www.elastic.co/guide/en/elasticsearch/reference/5.6/docker.html#_d_override_the_image_8217_s_default_ulink_url_https_docs_docker_com_engine_reference_run_cmd_default_command_or_options_cmd_ulink
# Without this, user could specify `opensearch -E x.y=z` but
# `bin/opensearch -E x.y=z` would not work.
set -- "opensearch" "${@:2}"
# Use chroot to switch to UID 1000 / GID 0
exec chroot --userspec=1000:0 / "$@"
else
# User probably wants to run something else, like /bin/bash, with another uid forced (Openshift?)
exec "$@"
fi
fi
# Allow environment variables to be set by creating a file with the
# contents, and setting an environment variable with the suffix _FILE to
# point to it. This can be used to provide secrets to a container, without
# the values being specified explicitly when running the container.
#
# This is also sourced in opensearch-env, and is only needed here
# as well because we use ELASTIC_PASSWORD below. Sourcing this script
# is idempotent.
source /usr/share/wazuh-indexer/bin/opensearch-env-from-file
if [[ -f bin/opensearch-users ]]; then
# Check for the ELASTIC_PASSWORD environment variable to set the
# bootstrap password for Security.
#
# This is only required for the first node in a cluster with Security
# enabled, but we have no way of knowing which node we are yet. We'll just
# honor the variable if it's present.
if [[ -n "$ELASTIC_PASSWORD" ]]; then
[[ -f /usr/share/wazuh-indexer/config/opensearch.keystore ]] || (run_as_other_user_if_needed opensearch-keystore create)
if ! (run_as_other_user_if_needed opensearch-keystore has-passwd --silent) ; then
# keystore is unencrypted
if ! (run_as_other_user_if_needed opensearch-keystore list | grep -q '^bootstrap.password$'); then
(run_as_other_user_if_needed echo "$ELASTIC_PASSWORD" | opensearch-keystore add -x 'bootstrap.password')
fi
else
# keystore requires password
if ! (run_as_other_user_if_needed echo "$KEYSTORE_PASSWORD" \
| opensearch-keystore list | grep -q '^bootstrap.password$') ; then
COMMANDS="$(printf "%s\n%s" "$KEYSTORE_PASSWORD" "$ELASTIC_PASSWORD")"
(run_as_other_user_if_needed echo "$COMMANDS" | opensearch-keystore add -x 'bootstrap.password')
fi
fi
fi
fi
if [[ "$(id -u)" == "0" ]]; then
# If requested and running as root, mutate the ownership of bind-mounts
if [[ -n "$TAKE_FILE_OWNERSHIP" ]]; then
chown -R 1000:0 /usr/share/wazuh-indexer/{data,logs}
fi
fi
run_as_other_user_if_needed /usr/share/wazuh-indexer/bin/opensearch <<<"$KEYSTORE_PASSWORD"
-7
View File
@@ -1,7 +0,0 @@
[wazuh_repo]
gpgcheck=1
gpgkey=https://packages-dev.wazuh.com/key/GPG-KEY-WAZUH
enabled=1
name=Wazuh repository
baseurl=https://packages-dev.wazuh.com/trash/yum/
protect=1