Reupload (purge)
@@ -0,0 +1,154 @@
|
||||
# Lab 02 - Cybersecurity 3
|
||||
Installation Wazuh
|
||||
|
||||
## 1. Mise en place
|
||||
|
||||
Pour mettre en place la stack, je décide de passer par un `docker-compose.yml` unifié, avec un réseau partagé en mode "pont" pour des sorties internet s'il le faut.
|
||||
|
||||
En plus de la stack Wazuh (Indexer, Manager, Dashboard) et du Ubuntu, je tente un truc sympa avec un Docker... Windows !
|
||||
|
||||
Comme je suis déjà sur Windows et que Docker tourne sur WSL2, je dois modifier quelques options dans WSL pour autoriser la virtualisation imbriquée, pousser la config du Docker Engine jusqu'à 16GB de RAM (c'est que c'est gourmand Wazuh) mais ça passe.
|
||||
|
||||
Il a fallut également des fichiers de génération de certificats. Pour m'aider, j'ai utilisé l'IA Kimi K2.7 Code :
|
||||
|
||||
`certs_gen.sh`
|
||||
```bash
|
||||
# Create working directory
|
||||
mkdir -p config/wazuh_indexer_ssl_certs
|
||||
cd config
|
||||
|
||||
# Download the certificate tool
|
||||
curl -sO https://packages.wazuh.com/4.9/wazuh-certs-tool.sh
|
||||
|
||||
# Create the configuration file
|
||||
cat > config.yml <<EOF
|
||||
nodes:
|
||||
indexer:
|
||||
- name: wazuh.indexer
|
||||
ip: wazuh.indexer
|
||||
server:
|
||||
- name: wazuh.manager
|
||||
ip: wazuh.manager
|
||||
dashboard:
|
||||
- name: wazuh.dashboard
|
||||
ip: wazuh.dashboard
|
||||
EOF
|
||||
|
||||
# Generate certificates
|
||||
chmod +x wazuh-certs-tool.sh
|
||||
./wazuh-certs-tool.sh -A
|
||||
|
||||
# Move the generated certificates to the expected path
|
||||
mv wazuh-certificates/* wazuh_indexer_ssl_certs/
|
||||
```
|
||||
|
||||
Ca fonctionne :
|
||||
|
||||

|
||||
|
||||
### En fait...
|
||||
|
||||
"Je ne dirais pas que c'est un échec... ça n'a pas marché."
|
||||
|
||||
Le docker-compose n'a pas abouti, et à 14h j'ai migré : Wazuh est maintenant déployé sur VirtualBox, et le docker-compose.yml ne donne que du Ubuntu.
|
||||
|
||||
## 2. Fichier auth.log
|
||||
|
||||
Avec WSL2, adaptation du script en mono-ligne :
|
||||
|
||||
```bash
|
||||
bash -c '> auth.log && for i in {1..40}; do echo "Jul 21 12:00:$(printf "%02d" $i) ubuntu sshd[12345]: Failed password for invalid user user$i from 192.168.0.$((i%5+1)) port $((5000+i)) ssh2" >> auth.log; done && echo "Jul 21 12:01:00 ubuntu sshd[12345]: Accepted password for validuser from 192.168.0.1 port 5000 ssh2" >> auth.log'
|
||||
```
|
||||
|
||||
## 3. Démarrage
|
||||
|
||||

|
||||
|
||||
### Avec la refonte de l'infra
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
## 4. Mettre en place la règle
|
||||
|
||||
La nouvelle règle est réécrite selon les derniers standards de Wazuh en XML :
|
||||
|
||||
```xml
|
||||
<group name="local,syslog,sshd,">
|
||||
<rule id="100001" level="10" frequency="5" timeframe="60">
|
||||
<if_matched_sid>5710</if_matched_sid>
|
||||
<srcip>192.168.0.0/24</srcip>
|
||||
<description>Plus de 5 tentatives SSH echouees en 1 minute</description>
|
||||
</rule>
|
||||
</group>
|
||||
```
|
||||
|
||||

|
||||
|
||||
## 5. Relever les anomalies
|
||||
|
||||
Première "attaque" depuis l'agent Ubuntu :
|
||||
|
||||
```bash
|
||||
for i in {1..100}; do
|
||||
RAND_IP="192.168.0.$((RANDOM % 254 + 1))"
|
||||
RAND_USER="user_$((RANDOM % 20 + 1))"
|
||||
RAND_PORT=$((RANDOM % 5000 + 10000))
|
||||
TIME=$(date +"%b %d %H:%M:%S")
|
||||
|
||||
echo "$TIME ubuntu sshd[$$]: Failed password for invalid user $RAND_USER from $RAND_IP port $RAND_PORT ssh2" >> auth.log
|
||||
sleep 0.05
|
||||
done
|
||||
```
|
||||
|
||||
Avec d'autres règles également, on peut tester des "attaques" différentes :
|
||||
|
||||
```bash
|
||||
for i in {1..100}; do
|
||||
RAND_IP="192.168.0.$((RANDOM % 254 + 1))"
|
||||
RAND_PORT=$((RANDOM % 5000 + 10000))
|
||||
TIME=$(date +"%b %d %H:%M:%S")
|
||||
|
||||
echo "$TIME ubuntu sshd[1234]: Failed password for root from $RAND_IP port $RAND_PORT ssh2" >> auth.log
|
||||
sleep 0.05
|
||||
done
|
||||
```
|
||||
|
||||
```bash
|
||||
for i in {1..100}; do
|
||||
TIME=$(date +"%b %d %H:%M:%S")
|
||||
|
||||
echo "$TIME ubuntu sudo: attacker : 3 incorrect password attempts ; TTY=pts/1 ; PWD=/tmp ; USER=root ; COMMAND=/bin/bash" >> auth.log
|
||||
sleep 0.05
|
||||
done
|
||||
```
|
||||
|
||||
```bash
|
||||
for i in {1..100}; do
|
||||
RAND_IP="192.168.0.$((RANDOM % 254 + 1))"
|
||||
RAND_PORT=$((RANDOM % 5000 + 10000))
|
||||
TIME=$(date +"%b %d %H:%M:%S")
|
||||
|
||||
echo "$TIME ubuntu sshd[1234]: Accepted password for root from $RAND_IP port $RAND_PORT ssh2" >> auth.log
|
||||
sleep 0.05
|
||||
done
|
||||
```
|
||||
|
||||
Détection comme risque "faible" :
|
||||
|
||||

|
||||
|
||||
Dans le panneau "Threat Hunting", plus prédictif, un détail apparaît :
|
||||
|
||||

|
||||
|
||||
## Annexe : Travaux et Moniteurs réels sur Datadog
|
||||
|
||||
Pour montrer un peu à quoi ressemble de la prédiction froide sur les logs suspects, des exemples de VRAIS moniteurs déployés sur Datadog, outil français de gestion centralisée des journaux, avec outils de détections divers :
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
Sans compter le déploiement de WAF dans des comptes AWS par Terraform depuis des modules personnalisés. Que je n'ai pas fait, mais que j'ai amélioré avec des lifecycle, etc.
|
||||
|
After Width: | Height: | Size: 80 KiB |
|
After Width: | Height: | Size: 406 KiB |
|
After Width: | Height: | Size: 99 KiB |
|
After Width: | Height: | Size: 232 KiB |
|
After Width: | Height: | Size: 24 KiB |
|
After Width: | Height: | Size: 130 KiB |
|
After Width: | Height: | Size: 383 KiB |
|
After Width: | Height: | Size: 188 KiB |
|
After Width: | Height: | Size: 31 KiB |
@@ -0,0 +1,7 @@
|
||||
# IP de la VM VirtualBox Wazuh
|
||||
WAZUH_MANAGER_IP=192.168.1.27
|
||||
|
||||
# Windows
|
||||
WIN_VERSION=11
|
||||
WIN_RAM=4G
|
||||
WIN_CPU=2
|
||||
@@ -0,0 +1,11 @@
|
||||
# Wazuh
|
||||
WAZUH_VERSION=4.9.0
|
||||
INDEXER_PASSWORD=SecretPassword123!
|
||||
API_PASSWORD=MyS3cr37P450r.*-
|
||||
DASHBOARD_USERNAME=kibanaserver
|
||||
DASHBOARD_PASSWORD=kibanaserver
|
||||
|
||||
# Windows
|
||||
WIN_VERSION=11
|
||||
WIN_RAM=4G
|
||||
WIN_CPU=2
|
||||
@@ -0,0 +1,81 @@
|
||||
Jul 21 12:00:01 ubuntu sshd[12345]: Failed password for invalid user user1 from 192.168.0.2 port 5001 ssh2
|
||||
Jul 21 12:00:02 ubuntu sshd[12345]: Failed password for invalid user user2 from 192.168.0.3 port 5002 ssh2
|
||||
Jul 21 12:00:03 ubuntu sshd[12345]: Failed password for invalid user user3 from 192.168.0.4 port 5003 ssh2
|
||||
Jul 21 12:00:04 ubuntu sshd[12345]: Failed password for invalid user user4 from 192.168.0.5 port 5004 ssh2
|
||||
Jul 21 12:00:05 ubuntu sshd[12345]: Failed password for invalid user user5 from 192.168.0.1 port 5005 ssh2
|
||||
Jul 21 12:00:06 ubuntu sshd[12345]: Failed password for invalid user user6 from 192.168.0.2 port 5006 ssh2
|
||||
Jul 21 12:00:07 ubuntu sshd[12345]: Failed password for invalid user user7 from 192.168.0.3 port 5007 ssh2
|
||||
Jul 21 12:00:08 ubuntu sshd[12345]: Failed password for invalid user user8 from 192.168.0.4 port 5008 ssh2
|
||||
Jul 21 12:00:09 ubuntu sshd[12345]: Failed password for invalid user user9 from 192.168.0.5 port 5009 ssh2
|
||||
Jul 21 12:00:10 ubuntu sshd[12345]: Failed password for invalid user user10 from 192.168.0.1 port 5010 ssh2
|
||||
Jul 21 12:00:11 ubuntu sshd[12345]: Failed password for invalid user user11 from 192.168.0.2 port 5011 ssh2
|
||||
Jul 21 12:00:12 ubuntu sshd[12345]: Failed password for invalid user user12 from 192.168.0.3 port 5012 ssh2
|
||||
Jul 21 12:00:13 ubuntu sshd[12345]: Failed password for invalid user user13 from 192.168.0.4 port 5013 ssh2
|
||||
Jul 21 12:00:14 ubuntu sshd[12345]: Failed password for invalid user user14 from 192.168.0.5 port 5014 ssh2
|
||||
Jul 21 12:00:15 ubuntu sshd[12345]: Failed password for invalid user user15 from 192.168.0.1 port 5015 ssh2
|
||||
Jul 21 12:00:16 ubuntu sshd[12345]: Failed password for invalid user user16 from 192.168.0.2 port 5016 ssh2
|
||||
Jul 21 12:00:17 ubuntu sshd[12345]: Failed password for invalid user user17 from 192.168.0.3 port 5017 ssh2
|
||||
Jul 21 12:00:18 ubuntu sshd[12345]: Failed password for invalid user user18 from 192.168.0.4 port 5018 ssh2
|
||||
Jul 21 12:00:19 ubuntu sshd[12345]: Failed password for invalid user user19 from 192.168.0.5 port 5019 ssh2
|
||||
Jul 21 12:00:20 ubuntu sshd[12345]: Failed password for invalid user user20 from 192.168.0.1 port 5020 ssh2
|
||||
Jul 21 12:00:21 ubuntu sshd[12345]: Failed password for invalid user user21 from 192.168.0.2 port 5021 ssh2
|
||||
Jul 21 12:00:22 ubuntu sshd[12345]: Failed password for invalid user user22 from 192.168.0.3 port 5022 ssh2
|
||||
Jul 21 12:00:23 ubuntu sshd[12345]: Failed password for invalid user user23 from 192.168.0.4 port 5023 ssh2
|
||||
Jul 21 12:00:24 ubuntu sshd[12345]: Failed password for invalid user user24 from 192.168.0.5 port 5024 ssh2
|
||||
Jul 21 12:00:25 ubuntu sshd[12345]: Failed password for invalid user user25 from 192.168.0.1 port 5025 ssh2
|
||||
Jul 21 12:00:26 ubuntu sshd[12345]: Failed password for invalid user user26 from 192.168.0.2 port 5026 ssh2
|
||||
Jul 21 12:00:27 ubuntu sshd[12345]: Failed password for invalid user user27 from 192.168.0.3 port 5027 ssh2
|
||||
Jul 21 12:00:28 ubuntu sshd[12345]: Failed password for invalid user user28 from 192.168.0.4 port 5028 ssh2
|
||||
Jul 21 12:00:29 ubuntu sshd[12345]: Failed password for invalid user user29 from 192.168.0.5 port 5029 ssh2
|
||||
Jul 21 12:00:30 ubuntu sshd[12345]: Failed password for invalid user user30 from 192.168.0.1 port 5030 ssh2
|
||||
Jul 21 12:00:31 ubuntu sshd[12345]: Failed password for invalid user user31 from 192.168.0.2 port 5031 ssh2
|
||||
Jul 21 12:00:32 ubuntu sshd[12345]: Failed password for invalid user user32 from 192.168.0.3 port 5032 ssh2
|
||||
Jul 21 12:00:33 ubuntu sshd[12345]: Failed password for invalid user user33 from 192.168.0.4 port 5033 ssh2
|
||||
Jul 21 12:00:34 ubuntu sshd[12345]: Failed password for invalid user user34 from 192.168.0.5 port 5034 ssh2
|
||||
Jul 21 12:00:35 ubuntu sshd[12345]: Failed password for invalid user user35 from 192.168.0.1 port 5035 ssh2
|
||||
Jul 21 12:00:36 ubuntu sshd[12345]: Failed password for invalid user user36 from 192.168.0.2 port 5036 ssh2
|
||||
Jul 21 12:00:37 ubuntu sshd[12345]: Failed password for invalid user user37 from 192.168.0.3 port 5037 ssh2
|
||||
Jul 21 12:00:38 ubuntu sshd[12345]: Failed password for invalid user user38 from 192.168.0.4 port 5038 ssh2
|
||||
Jul 21 12:00:39 ubuntu sshd[12345]: Failed password for invalid user user39 from 192.168.0.5 port 5039 ssh2
|
||||
Jul 21 12:00:40 ubuntu sshd[12345]: Failed password for invalid user user40 from 192.168.0.1 port 5040 ssh2
|
||||
Jul 21 12:01:00 ubuntu sshd[12345]: Accepted password for validuser from 192.168.0.1 port 5000 ssh2
|
||||
Jul 21 12:00:01 ubuntu sshd[12345]: Failed password for invalid user user1 from 192.168.0.2 port 5001 ssh2
|
||||
Jul 21 12:00:02 ubuntu sshd[12345]: Failed password for invalid user user2 from 192.168.0.3 port 5002 ssh2
|
||||
Jul 21 12:00:03 ubuntu sshd[12345]: Failed password for invalid user user3 from 192.168.0.4 port 5003 ssh2
|
||||
Jul 21 12:00:04 ubuntu sshd[12345]: Failed password for invalid user user4 from 192.168.0.5 port 5004 ssh2
|
||||
Jul 21 12:00:05 ubuntu sshd[12345]: Failed password for invalid user user5 from 192.168.0.1 port 5005 ssh2
|
||||
Jul 21 12:00:06 ubuntu sshd[12345]: Failed password for invalid user user6 from 192.168.0.2 port 5006 ssh2
|
||||
Jul 21 12:00:07 ubuntu sshd[12345]: Failed password for invalid user user7 from 192.168.0.3 port 5007 ssh2
|
||||
Jul 21 12:00:08 ubuntu sshd[12345]: Failed password for invalid user user8 from 192.168.0.4 port 5008 ssh2
|
||||
Jul 21 12:00:09 ubuntu sshd[12345]: Failed password for invalid user user9 from 192.168.0.5 port 5009 ssh2
|
||||
Jul 21 12:00:10 ubuntu sshd[12345]: Failed password for invalid user user10 from 192.168.0.1 port 5010 ssh2
|
||||
Jul 21 12:00:11 ubuntu sshd[12345]: Failed password for invalid user user11 from 192.168.0.2 port 5011 ssh2
|
||||
Jul 21 12:00:12 ubuntu sshd[12345]: Failed password for invalid user user12 from 192.168.0.3 port 5012 ssh2
|
||||
Jul 21 12:00:13 ubuntu sshd[12345]: Failed password for invalid user user13 from 192.168.0.4 port 5013 ssh2
|
||||
Jul 21 12:00:14 ubuntu sshd[12345]: Failed password for invalid user user14 from 192.168.0.5 port 5014 ssh2
|
||||
Jul 21 12:00:15 ubuntu sshd[12345]: Failed password for invalid user user15 from 192.168.0.1 port 5015 ssh2
|
||||
Jul 21 12:00:16 ubuntu sshd[12345]: Failed password for invalid user user16 from 192.168.0.2 port 5016 ssh2
|
||||
Jul 21 12:00:17 ubuntu sshd[12345]: Failed password for invalid user user17 from 192.168.0.3 port 5017 ssh2
|
||||
Jul 21 12:00:18 ubuntu sshd[12345]: Failed password for invalid user user18 from 192.168.0.4 port 5018 ssh2
|
||||
Jul 21 12:00:19 ubuntu sshd[12345]: Failed password for invalid user user19 from 192.168.0.5 port 5019 ssh2
|
||||
Jul 21 12:00:20 ubuntu sshd[12345]: Failed password for invalid user user20 from 192.168.0.1 port 5020 ssh2
|
||||
Jul 21 12:00:21 ubuntu sshd[12345]: Failed password for invalid user user21 from 192.168.0.2 port 5021 ssh2
|
||||
Jul 21 12:00:22 ubuntu sshd[12345]: Failed password for invalid user user22 from 192.168.0.3 port 5022 ssh2
|
||||
Jul 21 12:00:23 ubuntu sshd[12345]: Failed password for invalid user user23 from 192.168.0.4 port 5023 ssh2
|
||||
Jul 21 12:00:24 ubuntu sshd[12345]: Failed password for invalid user user24 from 192.168.0.5 port 5024 ssh2
|
||||
Jul 21 12:00:25 ubuntu sshd[12345]: Failed password for invalid user user25 from 192.168.0.1 port 5025 ssh2
|
||||
Jul 21 12:00:26 ubuntu sshd[12345]: Failed password for invalid user user26 from 192.168.0.2 port 5026 ssh2
|
||||
Jul 21 12:00:27 ubuntu sshd[12345]: Failed password for invalid user user27 from 192.168.0.3 port 5027 ssh2
|
||||
Jul 21 12:00:28 ubuntu sshd[12345]: Failed password for invalid user user28 from 192.168.0.4 port 5028 ssh2
|
||||
Jul 21 12:00:29 ubuntu sshd[12345]: Failed password for invalid user user29 from 192.168.0.5 port 5029 ssh2
|
||||
Jul 21 12:00:30 ubuntu sshd[12345]: Failed password for invalid user user30 from 192.168.0.1 port 5030 ssh2
|
||||
Jul 21 12:00:31 ubuntu sshd[12345]: Failed password for invalid user user31 from 192.168.0.2 port 5031 ssh2
|
||||
Jul 21 12:00:32 ubuntu sshd[12345]: Failed password for invalid user user32 from 192.168.0.3 port 5032 ssh2
|
||||
Jul 21 12:00:33 ubuntu sshd[12345]: Failed password for invalid user user33 from 192.168.0.4 port 5033 ssh2
|
||||
Jul 21 12:00:34 ubuntu sshd[12345]: Failed password for invalid user user34 from 192.168.0.5 port 5034 ssh2
|
||||
Jul 21 12:00:35 ubuntu sshd[12345]: Failed password for invalid user user35 from 192.168.0.1 port 5035 ssh2
|
||||
Jul 21 12:00:36 ubuntu sshd[12345]: Failed password for invalid user user36 from 192.168.0.2 port 5036 ssh2
|
||||
Jul 21 12:00:37 ubuntu sshd[12345]: Failed password for invalid user user37 from 192.168.0.3 port 5037 ssh2
|
||||
Jul 21 12:00:38 ubuntu sshd[12345]: Failed password for invalid user user38 from 192.168.0.4 port 5038 ssh2
|
||||
Jul 21 12:00:39 ubuntu sshd[12345]: Failed password for invalid user user39 from 192.168.0.5 port 5039 ssh2
|
||||
Jul 21 12:00:40 ubuntu sshd[12345]: Failed password for invalid user user40 from 192.168.0.1 port 5040 ssh2
|
||||
@@ -0,0 +1,7 @@
|
||||
> auth.log
|
||||
|
||||
for i in {1..40}; do
|
||||
echo "Jul 21 12:00:$(printf "%02d" $i) ubuntu sshd[12345]: Failed password for invalid user user$i from 192.168.0.$((i%5+1)) port $((5000+i)) ssh2" >> auth.log
|
||||
done
|
||||
|
||||
echo "Jul 21 12:01:00 ubuntu sshd[12345]: Accepted password for validuser from 192.168.0.1 port 5000 ssh2" >> auth.log
|
||||
@@ -0,0 +1,27 @@
|
||||
# Create working directory
|
||||
mkdir -p config/wazuh_indexer_ssl_certs
|
||||
cd config
|
||||
|
||||
# Download the certificate tool
|
||||
curl -sO https://packages.wazuh.com/4.9/wazuh-certs-tool.sh
|
||||
|
||||
# Create the configuration file
|
||||
cat > config.yml <<EOF
|
||||
nodes:
|
||||
indexer:
|
||||
- name: wazuh.indexer
|
||||
ip: wazuh.indexer
|
||||
server:
|
||||
- name: wazuh.manager
|
||||
ip: wazuh.manager
|
||||
dashboard:
|
||||
- name: wazuh.dashboard
|
||||
ip: wazuh.dashboard
|
||||
EOF
|
||||
|
||||
# Generate certificates
|
||||
chmod +x wazuh-certs-tool.sh
|
||||
./wazuh-certs-tool.sh -A
|
||||
|
||||
# Move the generated certificates to the expected path
|
||||
mv wazuh-certificates/* wazuh_indexer_ssl_certs/
|
||||
@@ -0,0 +1,13 @@
|
||||
nodes:
|
||||
# Wazuh indexer nodes
|
||||
indexer:
|
||||
- name: wazuh.indexer
|
||||
ip: wazuh.indexer
|
||||
# Wazuh server nodes
|
||||
server:
|
||||
- name: wazuh.manager
|
||||
ip: wazuh.manager
|
||||
# Wazuh dashboard nodes
|
||||
dashboard:
|
||||
- name: wazuh.dashboard
|
||||
ip: wazuh.dashboard
|
||||
@@ -0,0 +1,10 @@
|
||||
nodes:
|
||||
indexer:
|
||||
- name: wazuh.indexer
|
||||
ip: wazuh.indexer
|
||||
server:
|
||||
- name: wazuh.manager
|
||||
ip: wazuh.manager
|
||||
dashboard:
|
||||
- name: wazuh.dashboard
|
||||
ip: wazuh.dashboard
|
||||
@@ -0,0 +1,20 @@
|
||||
04/08/2026 11:14:32 INFO: Verbose logging redirected to /mnt/d/Users/GaWin/LiveCampus/Semaine_12/Jour_02/wazuhlab/config/wazuh-certificates-tool.log
|
||||
04/08/2026 11:14:32 INFO: Generating the root certificate.
|
||||
04/08/2026 11:14:32 INFO: Generating Admin certificates.
|
||||
04/08/2026 11:14:32 INFO: Admin certificates created.
|
||||
04/08/2026 11:14:32 INFO: Generating Wazuh indexer certificates.
|
||||
04/08/2026 11:14:32 INFO: Wazuh indexer certificates created.
|
||||
04/08/2026 11:14:32 INFO: Generating Filebeat certificates.
|
||||
04/08/2026 11:14:32 INFO: Wazuh Filebeat certificates created.
|
||||
04/08/2026 11:14:32 INFO: Generating Wazuh dashboard certificates.
|
||||
04/08/2026 11:14:33 INFO: Wazuh dashboard certificates created.
|
||||
04/08/2026 11:18:57 INFO: Verbose logging redirected to /mnt/d/Users/GaWin/LiveCampus/Semaine_12/Jour_02/wazuhlab/config/wazuh-certificates-tool.log
|
||||
04/08/2026 11:18:57 INFO: Generating the root certificate.
|
||||
04/08/2026 11:18:57 INFO: Generating Admin certificates.
|
||||
04/08/2026 11:18:57 INFO: Admin certificates created.
|
||||
04/08/2026 11:18:57 INFO: Generating Wazuh indexer certificates.
|
||||
04/08/2026 11:18:57 INFO: Wazuh indexer certificates created.
|
||||
04/08/2026 11:18:57 INFO: Generating Filebeat certificates.
|
||||
04/08/2026 11:18:57 INFO: Wazuh Filebeat certificates created.
|
||||
04/08/2026 11:18:57 INFO: Generating Wazuh dashboard certificates.
|
||||
04/08/2026 11:18:58 INFO: Wazuh dashboard certificates created.
|
||||
@@ -0,0 +1,924 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Wazuh installer
|
||||
# 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.
|
||||
adminpem="/etc/wazuh-indexer/certs/admin.pem"
|
||||
adminkey="/etc/wazuh-indexer/certs/admin-key.pem"
|
||||
readonly base_path="$(dirname "$(readlink -f "$0")")"
|
||||
readonly config_file="${base_path}/config.yml"
|
||||
readonly logfile="${base_path}/wazuh-certificates-tool.log"
|
||||
cert_tmp_path="/tmp/wazuh-certificates"
|
||||
debug=">> ${logfile} 2>&1"
|
||||
readonly cert_tool_script_name=".*certs.*\.sh"
|
||||
|
||||
# ------------ certFunctions.sh ------------
|
||||
function cert_cleanFiles() {
|
||||
|
||||
common_logger -d "Cleaning certificate files."
|
||||
eval "rm -f ${cert_tmp_path}/*.csr ${debug}"
|
||||
eval "rm -f ${cert_tmp_path}/*.srl ${debug}"
|
||||
eval "rm -f ${cert_tmp_path}/*.conf ${debug}"
|
||||
eval "rm -f ${cert_tmp_path}/admin-key-temp.pem ${debug}"
|
||||
|
||||
}
|
||||
function cert_checkOpenSSL() {
|
||||
|
||||
common_logger -d "Checking if OpenSSL is installed."
|
||||
|
||||
if [ -z "$(command -v openssl)" ]; then
|
||||
common_logger -e "OpenSSL not installed."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
}
|
||||
function cert_checkRootCA() {
|
||||
|
||||
common_logger -d "Checking if the root CA exists."
|
||||
|
||||
if [[ -n ${rootca} || -n ${rootcakey} ]]; then
|
||||
# Verify variables match keys
|
||||
if [[ ${rootca} == *".key" ]]; then
|
||||
ca_temp=${rootca}
|
||||
rootca=${rootcakey}
|
||||
rootcakey=${ca_temp}
|
||||
fi
|
||||
# Validate that files exist
|
||||
if [[ -e ${rootca} ]]; then
|
||||
eval "cp ${rootca} ${cert_tmp_path}/root-ca.pem ${debug}"
|
||||
else
|
||||
common_logger -e "The file ${rootca} does not exists"
|
||||
cert_cleanFiles
|
||||
exit 1
|
||||
fi
|
||||
if [[ -e ${rootcakey} ]]; then
|
||||
eval "cp ${rootcakey} ${cert_tmp_path}/root-ca.key ${debug}"
|
||||
else
|
||||
common_logger -e "The file ${rootcakey} does not exists"
|
||||
cert_cleanFiles
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
cert_generateRootCAcertificate
|
||||
fi
|
||||
|
||||
}
|
||||
function cert_executeAndValidate() {
|
||||
|
||||
command_output=$(eval "$@" 2>&1)
|
||||
e_code="${PIPESTATUS[0]}"
|
||||
|
||||
if [ "${e_code}" -ne 0 ]; then
|
||||
common_logger -e "Error generating the certificates."
|
||||
common_logger -d "Error executing command: $@"
|
||||
common_logger -d "Error output: ${command_output}"
|
||||
cert_cleanFiles
|
||||
exit 1
|
||||
fi
|
||||
|
||||
}
|
||||
function cert_generateAdmincertificate() {
|
||||
|
||||
common_logger "Generating Admin certificates."
|
||||
common_logger -d "Generating Admin private key."
|
||||
cert_executeAndValidate "openssl genrsa -out ${cert_tmp_path}/admin-key-temp.pem 2048"
|
||||
common_logger -d "Converting Admin private key to PKCS8 format."
|
||||
cert_executeAndValidate "openssl pkcs8 -inform PEM -outform PEM -in ${cert_tmp_path}/admin-key-temp.pem -topk8 -nocrypt -v1 PBE-SHA1-3DES -out ${cert_tmp_path}/admin-key.pem"
|
||||
common_logger -d "Generating Admin CSR."
|
||||
cert_executeAndValidate "openssl req -new -key ${cert_tmp_path}/admin-key.pem -out ${cert_tmp_path}/admin.csr -batch -subj '/C=US/L=California/O=Wazuh/OU=Wazuh/CN=admin'"
|
||||
common_logger -d "Creating Admin certificate."
|
||||
cert_executeAndValidate "openssl x509 -days 3650 -req -in ${cert_tmp_path}/admin.csr -CA ${cert_tmp_path}/root-ca.pem -CAkey ${cert_tmp_path}/root-ca.key -CAcreateserial -sha256 -out ${cert_tmp_path}/admin.pem"
|
||||
|
||||
}
|
||||
function cert_generateCertificateconfiguration() {
|
||||
|
||||
common_logger -d "Generating certificate configuration."
|
||||
cat > "${cert_tmp_path}/${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 = Wazuh
|
||||
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' "${cert_tmp_path}/${1}.conf")"
|
||||
echo "${conf}" > "${cert_tmp_path}/${1}.conf"
|
||||
|
||||
if [ "${#@}" -gt 1 ]; then
|
||||
sed -i '/IP.1/d' "${cert_tmp_path}/${1}.conf"
|
||||
for (( i=2; i<=${#@}; i++ )); do
|
||||
isIP=$(echo "${!i}" | grep -P "^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$")
|
||||
isDNS=$(echo "${!i}" | grep -P "^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9])\.([A-Za-z]{2,})$" ) j=$((i-1))
|
||||
if [ "${isIP}" ]; then
|
||||
printf '%s\n' " IP.${j} = ${!i}" >> "${cert_tmp_path}/${1}.conf"
|
||||
elif [ "${isDNS}" ]; then
|
||||
printf '%s\n' " DNS.${j} = ${!i}" >> "${cert_tmp_path}/${1}.conf"
|
||||
else
|
||||
common_logger -e "Invalid IP or DNS ${!i}"
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
else
|
||||
common_logger -e "No IP or DNS specified"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
}
|
||||
function cert_generateIndexercertificates() {
|
||||
|
||||
if [ ${#indexer_node_names[@]} -gt 0 ]; then
|
||||
common_logger "Generating Wazuh indexer certificates."
|
||||
|
||||
for i in "${!indexer_node_names[@]}"; do
|
||||
indexer_node_name=${indexer_node_names[$i]}
|
||||
common_logger -d "Creating the certificates for ${indexer_node_name} indexer node."
|
||||
cert_generateCertificateconfiguration "${indexer_node_name}" "${indexer_node_ips[i]}"
|
||||
common_logger -d "Creating the Wazuh indexer tmp key pair."
|
||||
cert_executeAndValidate "openssl req -new -nodes -newkey rsa:2048 -keyout ${cert_tmp_path}/${indexer_node_name}-key.pem -out ${cert_tmp_path}/${indexer_node_name}.csr -config ${cert_tmp_path}/${indexer_node_name}.conf"
|
||||
common_logger -d "Creating the Wazuh indexer certificates."
|
||||
cert_executeAndValidate "openssl x509 -req -in ${cert_tmp_path}/${indexer_node_name}.csr -CA ${cert_tmp_path}/root-ca.pem -CAkey ${cert_tmp_path}/root-ca.key -CAcreateserial -out ${cert_tmp_path}/${indexer_node_name}.pem -extfile ${cert_tmp_path}/${indexer_node_name}.conf -extensions v3_req -days 3650"
|
||||
done
|
||||
else
|
||||
return 1
|
||||
fi
|
||||
|
||||
}
|
||||
function cert_generateFilebeatcertificates() {
|
||||
|
||||
if [ ${#server_node_names[@]} -gt 0 ]; then
|
||||
common_logger "Generating Filebeat certificates."
|
||||
|
||||
for i in "${!server_node_names[@]}"; do
|
||||
server_name="${server_node_names[i]}"
|
||||
common_logger -d "Generating the certificates for ${server_name} server node."
|
||||
j=$((i+1))
|
||||
declare -a server_ips=(server_node_ip_"$j"[@])
|
||||
cert_generateCertificateconfiguration "${server_name}" "${!server_ips}"
|
||||
common_logger -d "Creating the Wazuh server tmp key pair."
|
||||
cert_executeAndValidate "openssl req -new -nodes -newkey rsa:2048 -keyout ${cert_tmp_path}/${server_name}-key.pem -out ${cert_tmp_path}/${server_name}.csr -config ${cert_tmp_path}/${server_name}.conf"
|
||||
common_logger -d "Creating the Wazuh server certificates."
|
||||
cert_executeAndValidate "openssl x509 -req -in ${cert_tmp_path}/${server_name}.csr -CA ${cert_tmp_path}/root-ca.pem -CAkey ${cert_tmp_path}/root-ca.key -CAcreateserial -out ${cert_tmp_path}/${server_name}.pem -extfile ${cert_tmp_path}/${server_name}.conf -extensions v3_req -days 3650"
|
||||
done
|
||||
else
|
||||
return 1
|
||||
fi
|
||||
|
||||
}
|
||||
function cert_generateDashboardcertificates() {
|
||||
if [ ${#dashboard_node_names[@]} -gt 0 ]; then
|
||||
common_logger "Generating Wazuh dashboard certificates."
|
||||
|
||||
for i in "${!dashboard_node_names[@]}"; do
|
||||
dashboard_node_name="${dashboard_node_names[i]}"
|
||||
cert_generateCertificateconfiguration "${dashboard_node_name}" "${dashboard_node_ips[i]}"
|
||||
common_logger -d "Creating the Wazuh dashboard tmp key pair."
|
||||
cert_executeAndValidate "openssl req -new -nodes -newkey rsa:2048 -keyout ${cert_tmp_path}/${dashboard_node_name}-key.pem -out ${cert_tmp_path}/${dashboard_node_name}.csr -config ${cert_tmp_path}/${dashboard_node_name}.conf"
|
||||
common_logger -d "Creating the Wazuh dashboard certificates."
|
||||
cert_executeAndValidate "openssl x509 -req -in ${cert_tmp_path}/${dashboard_node_name}.csr -CA ${cert_tmp_path}/root-ca.pem -CAkey ${cert_tmp_path}/root-ca.key -CAcreateserial -out ${cert_tmp_path}/${dashboard_node_name}.pem -extfile ${cert_tmp_path}/${dashboard_node_name}.conf -extensions v3_req -days 3650"
|
||||
done
|
||||
else
|
||||
return 1
|
||||
fi
|
||||
|
||||
}
|
||||
function cert_generateRootCAcertificate() {
|
||||
|
||||
common_logger "Generating the root certificate."
|
||||
cert_executeAndValidate "openssl req -x509 -new -nodes -newkey rsa:2048 -keyout ${cert_tmp_path}/root-ca.key -out ${cert_tmp_path}/root-ca.pem -batch -subj '/OU=Wazuh/O=Wazuh/L=California/' -days 3650"
|
||||
|
||||
}
|
||||
function cert_parseYaml() {
|
||||
|
||||
local prefix=$2
|
||||
local separator=${3:-_}
|
||||
local indexfix
|
||||
# Detect awk flavor
|
||||
if awk --version 2>&1 | grep -q "GNU Awk" ; then
|
||||
# GNU Awk detected
|
||||
indexfix=-1
|
||||
elif awk -Wv 2>&1 | grep -q "mawk" ; then
|
||||
# mawk detected
|
||||
indexfix=0
|
||||
fi
|
||||
|
||||
local s='[[:space:]]*' sm='[ \t]*' w='[a-zA-Z0-9_]*' fs=${fs:-$(echo @|tr @ '\034')} i=${i:- }
|
||||
cat $1 2>/dev/null | \
|
||||
awk -F$fs "{multi=0;
|
||||
if(match(\$0,/$sm\|$sm$/)){multi=1; sub(/$sm\|$sm$/,\"\");}
|
||||
if(match(\$0,/$sm>$sm$/)){multi=2; sub(/$sm>$sm$/,\"\");}
|
||||
while(multi>0){
|
||||
str=\$0; gsub(/^$sm/,\"\", str);
|
||||
indent=index(\$0,str);
|
||||
indentstr=substr(\$0, 0, indent+$indexfix) \"$i\";
|
||||
obuf=\$0;
|
||||
getline;
|
||||
while(index(\$0,indentstr)){
|
||||
obuf=obuf substr(\$0, length(indentstr)+1);
|
||||
if (multi==1){obuf=obuf \"\\\\n\";}
|
||||
if (multi==2){
|
||||
if(match(\$0,/^$sm$/))
|
||||
obuf=obuf \"\\\\n\";
|
||||
else obuf=obuf \" \";
|
||||
}
|
||||
getline;
|
||||
}
|
||||
sub(/$sm$/,\"\",obuf);
|
||||
print obuf;
|
||||
multi=0;
|
||||
if(match(\$0,/$sm\|$sm$/)){multi=1; sub(/$sm\|$sm$/,\"\");}
|
||||
if(match(\$0,/$sm>$sm$/)){multi=2; sub(/$sm>$sm$/,\"\");}
|
||||
}
|
||||
print}" | \
|
||||
sed -e "s|^\($s\)?|\1-|" \
|
||||
-ne "s|^$s#.*||;s|$s#[^\"']*$||;s|^\([^\"'#]*\)#.*|\1|;t1;t;:1;s|^$s\$||;t2;p;:2;d" | \
|
||||
sed -ne "s|,$s\]$s\$|]|" \
|
||||
-e ":1;s|^\($s\)\($w\)$s:$s\(&$w\)\?$s\[$s\(.*\)$s,$s\(.*\)$s\]|\1\2: \3[\4]\n\1$i- \5|;t1" \
|
||||
-e "s|^\($s\)\($w\)$s:$s\(&$w\)\?$s\[$s\(.*\)$s\]|\1\2: \3\n\1$i- \4|;" \
|
||||
-e ":2;s|^\($s\)-$s\[$s\(.*\)$s,$s\(.*\)$s\]|\1- [\2]\n\1$i- \3|;t2" \
|
||||
-e "s|^\($s\)-$s\[$s\(.*\)$s\]|\1-\n\1$i- \2|;p" | \
|
||||
sed -ne "s|,$s}$s\$|}|" \
|
||||
-e ":1;s|^\($s\)-$s{$s\(.*\)$s,$s\($w\)$s:$s\(.*\)$s}|\1- {\2}\n\1$i\3: \4|;t1" \
|
||||
-e "s|^\($s\)-$s{$s\(.*\)$s}|\1-\n\1$i\2|;" \
|
||||
-e ":2;s|^\($s\)\($w\)$s:$s\(&$w\)\?$s{$s\(.*\)$s,$s\($w\)$s:$s\(.*\)$s}|\1\2: \3 {\4}\n\1$i\5: \6|;t2" \
|
||||
-e "s|^\($s\)\($w\)$s:$s\(&$w\)\?$s{$s\(.*\)$s}|\1\2: \3\n\1$i\4|;p" | \
|
||||
sed -e "s|^\($s\)\($w\)$s:$s\(&$w\)\(.*\)|\1\2:\4\n\3|" \
|
||||
-e "s|^\($s\)-$s\(&$w\)\(.*\)|\1- \3\n\2|" | \
|
||||
sed -ne "s|^\($s\):|\1|" \
|
||||
-e "s|^\($s\)\(---\)\($s\)||" \
|
||||
-e "s|^\($s\)\(\.\.\.\)\($s\)||" \
|
||||
-e "s|^\($s\)-$s[\"']\(.*\)[\"']$s\$|\1$fs$fs\2|p;t" \
|
||||
-e "s|^\($s\)\($w\)$s:$s[\"']\(.*\)[\"']$s\$|\1$fs\2$fs\3|p;t" \
|
||||
-e "s|^\($s\)-$s\(.*\)$s\$|\1$fs$fs\2|" \
|
||||
-e "s|^\($s\)\($w\)$s:$s[\"']\?\(.*\)$s\$|\1$fs\2$fs\3|" \
|
||||
-e "s|^\($s\)[\"']\?\([^&][^$fs]\+\)[\"']$s\$|\1$fs$fs$fs\2|" \
|
||||
-e "s|^\($s\)[\"']\?\([^&][^$fs]\+\)$s\$|\1$fs$fs$fs\2|" \
|
||||
-e "s|$s\$||p" | \
|
||||
awk -F$fs "{
|
||||
gsub(/\t/,\" \",\$1);
|
||||
gsub(\"name: \", \"\");
|
||||
if(NF>3){if(value!=\"\"){value = value \" \";}value = value \$4;}
|
||||
else {
|
||||
if(match(\$1,/^&/)){anchor[substr(\$1,2)]=full_vn;getline};
|
||||
indent = length(\$1)/length(\"$i\");
|
||||
vname[indent] = \$2;
|
||||
value= \$3;
|
||||
for (i in vname) {if (i > indent) {delete vname[i]; idx[i]=0}}
|
||||
if(length(\$2)== 0){ vname[indent]= ++idx[indent] };
|
||||
vn=\"\"; for (i=0; i<indent; i++) { vn=(vn)(vname[i])(\"$separator\")}
|
||||
vn=\"$prefix\" vn;
|
||||
full_vn=vn vname[indent];
|
||||
if(vn==\"$prefix\")vn=\"$prefix$separator\";
|
||||
if(vn==\"_\")vn=\"__\";
|
||||
}
|
||||
assignment[full_vn]=value;
|
||||
if(!match(assignment[vn], full_vn))assignment[vn]=assignment[vn] \" \" full_vn;
|
||||
if(match(value,/^\*/)){
|
||||
ref=anchor[substr(value,2)];
|
||||
if(length(ref)==0){
|
||||
printf(\"%s=\\\"%s\\\"\n\", full_vn, value);
|
||||
} else {
|
||||
for(val in assignment){
|
||||
if((length(ref)>0)&&index(val, ref)==1){
|
||||
tmpval=assignment[val];
|
||||
sub(ref,full_vn,val);
|
||||
if(match(val,\"$separator\$\")){
|
||||
gsub(ref,full_vn,tmpval);
|
||||
} else if (length(tmpval) > 0) {
|
||||
printf(\"%s=\\\"%s\\\"\n\", val, tmpval);
|
||||
}
|
||||
assignment[val]=tmpval;
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (length(value) > 0) {
|
||||
printf(\"%s=\\\"%s\\\"\n\", full_vn, value);
|
||||
}
|
||||
}END{
|
||||
for(val in assignment){
|
||||
if(match(val,\"$separator\$\"))
|
||||
printf(\"%s=\\\"%s\\\"\n\", val, assignment[val]);
|
||||
}
|
||||
}"
|
||||
|
||||
}
|
||||
function cert_checkPrivateIp() {
|
||||
|
||||
local ip=$1
|
||||
common_logger -d "Checking if ${ip} is private."
|
||||
|
||||
# Check private IPv4 ranges
|
||||
if [[ $ip =~ ^10\.|^192\.168\.|^172\.(1[6-9]|2[0-9]|3[0-1])\.|^(127\.) ]]; then
|
||||
return 0
|
||||
fi
|
||||
|
||||
# Check private IPv6 ranges (fc00::/7 prefix)
|
||||
if [[ $ip =~ ^fc ]]; then
|
||||
return 0
|
||||
fi
|
||||
|
||||
return 1
|
||||
|
||||
}
|
||||
function cert_readConfig() {
|
||||
|
||||
common_logger -d "Reading configuration file."
|
||||
|
||||
if [ -f "${config_file}" ]; then
|
||||
if [ ! -s "${config_file}" ]; then
|
||||
common_logger -e "File ${config_file} is empty"
|
||||
exit 1
|
||||
fi
|
||||
eval "$(cert_convertCRLFtoLF "${config_file}")"
|
||||
|
||||
eval "indexer_node_names=( $(cert_parseYaml "${config_file}" | grep -E "nodes[_]+indexer[_]+[0-9]+=" | cut -d = -f 2 ) )"
|
||||
eval "server_node_names=( $(cert_parseYaml "${config_file}" | grep -E "nodes[_]+server[_]+[0-9]+=" | cut -d = -f 2 ) )"
|
||||
eval "dashboard_node_names=( $(cert_parseYaml "${config_file}" | grep -E "nodes[_]+dashboard[_]+[0-9]+=" | cut -d = -f 2) )"
|
||||
eval "indexer_node_ips=( $(cert_parseYaml "${config_file}" | grep -E "nodes[_]+indexer[_]+[0-9]+[_]+ip=" | cut -d = -f 2) )"
|
||||
eval "server_node_ips=( $(cert_parseYaml "${config_file}" | grep -E "nodes[_]+server[_]+[0-9]+[_]+ip=" | cut -d = -f 2) )"
|
||||
eval "dashboard_node_ips=( $(cert_parseYaml "${config_file}" | grep -E "nodes[_]+dashboard[_]+[0-9]+[_]+ip=" | cut -d = -f 2 ) )"
|
||||
eval "server_node_types=( $(cert_parseYaml "${config_file}" | grep -E "nodes[_]+server[_]+[0-9]+[_]+node_type=" | cut -d = -f 2 ) )"
|
||||
eval "number_server_ips=( $(cert_parseYaml "${config_file}" | grep -o -E 'nodes[_]+server[_]+[0-9]+[_]+ip' | sort -u | wc -l) )"
|
||||
all_ips=("${indexer_node_ips[@]}" "${server_node_ips[@]}" "${dashboard_node_ips[@]}")
|
||||
|
||||
for ip in "${all_ips[@]}"; do
|
||||
isIP=$(echo "${ip}" | grep -P "^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$")
|
||||
if [[ -n "${isIP}" ]]; then
|
||||
if ! cert_checkPrivateIp "$ip"; then
|
||||
common_logger -e "The IP ${ip} is public."
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
for i in $(seq 1 "${number_server_ips}"); do
|
||||
nodes_server="nodes[_]+server[_]+${i}[_]+ip"
|
||||
eval "server_node_ip_$i=( $( cert_parseYaml "${config_file}" | grep -E "${nodes_server}" | sed '/\./!d' | cut -d = -f 2 | sed -r 's/\s+//g') )"
|
||||
done
|
||||
|
||||
unique_names=($(echo "${indexer_node_names[@]}" | tr ' ' '\n' | sort -u | tr '\n' ' '))
|
||||
if [ "${#unique_names[@]}" -ne "${#indexer_node_names[@]}" ]; then
|
||||
common_logger -e "Duplicated indexer node names."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
unique_ips=($(echo "${indexer_node_ips[@]}" | tr ' ' '\n' | sort -u | tr '\n' ' '))
|
||||
if [ "${#unique_ips[@]}" -ne "${#indexer_node_ips[@]}" ]; then
|
||||
common_logger -e "Duplicated indexer node ips."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
unique_names=($(echo "${server_node_names[@]}" | tr ' ' '\n' | sort -u | tr '\n' ' '))
|
||||
if [ "${#unique_names[@]}" -ne "${#server_node_names[@]}" ]; then
|
||||
common_logger -e "Duplicated Wazuh server node names."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
unique_ips=($(echo "${server_node_ips[@]}" | tr ' ' '\n' | sort -u | tr '\n' ' '))
|
||||
if [ "${#unique_ips[@]}" -ne "${#server_node_ips[@]}" ]; then
|
||||
common_logger -e "Duplicated Wazuh server node ips."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
unique_names=($(echo "${dashboard_node_names[@]}" | tr ' ' '\n' | sort -u | tr '\n' ' '))
|
||||
if [ "${#unique_names[@]}" -ne "${#dashboard_node_names[@]}" ]; then
|
||||
common_logger -e "Duplicated dashboard node names."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
unique_ips=($(echo "${dashboard_node_ips[@]}" | tr ' ' '\n' | sort -u | tr '\n' ' '))
|
||||
if [ "${#unique_ips[@]}" -ne "${#dashboard_node_ips[@]}" ]; then
|
||||
common_logger -e "Duplicated dashboard node ips."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
for i in "${server_node_types[@]}"; do
|
||||
if ! echo "$i" | grep -ioq master && ! echo "$i" | grep -ioq worker; then
|
||||
common_logger -e "Incorrect node_type $i must be master or worker"
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
|
||||
if [ "${#server_node_names[@]}" -le 1 ]; then
|
||||
if [ "${#server_node_types[@]}" -ne 0 ]; then
|
||||
common_logger -e "The tag node_type can only be used with more than one Wazuh server."
|
||||
exit 1
|
||||
fi
|
||||
elif [ "${#server_node_names[@]}" -gt "${#server_node_types[@]}" ]; then
|
||||
common_logger -e "The tag node_type needs to be specified for all Wazuh server nodes."
|
||||
exit 1
|
||||
elif [ "${#server_node_names[@]}" -lt "${#server_node_types[@]}" ]; then
|
||||
common_logger -e "Found extra node_type tags."
|
||||
exit 1
|
||||
elif [ "$(grep -io master <<< "${server_node_types[*]}" | wc -l)" -ne 1 ]; then
|
||||
common_logger -e "Wazuh cluster needs a single master node."
|
||||
exit 1
|
||||
elif [ "$(grep -io worker <<< "${server_node_types[*]}" | wc -l)" -ne $(( ${#server_node_types[@]} - 1 )) ]; then
|
||||
common_logger -e "Incorrect number of workers."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "${#dashboard_node_names[@]}" -ne "${#dashboard_node_ips[@]}" ]; then
|
||||
common_logger -e "Different number of dashboard node names and IPs."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
else
|
||||
common_logger -e "No configuration file found."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
}
|
||||
function cert_setpermisions() {
|
||||
eval "chmod -R 744 ${cert_tmp_path} ${debug}"
|
||||
}
|
||||
function cert_convertCRLFtoLF() {
|
||||
if [[ ! -d "/tmp/wazuh-install-files" ]]; then
|
||||
eval "mkdir /tmp/wazuh-install-files ${debug}"
|
||||
fi
|
||||
eval "chmod -R 755 /tmp/wazuh-install-files ${debug}"
|
||||
eval "tr -d '\015' < $1 > /tmp/wazuh-install-files/new_config.yml"
|
||||
eval "mv /tmp/wazuh-install-files/new_config.yml $1 ${debug}"
|
||||
}
|
||||
|
||||
# ------------ certMain.sh ------------
|
||||
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 </path/to/root-ca.pem> </path/to/root-ca.key>"
|
||||
echo -e " Creates the admin certificates, add root-ca.pem and root-ca.key."
|
||||
echo -e ""
|
||||
echo -e " -A, --all </path/to/root-ca.pem> </path/to/root-ca.key>"
|
||||
echo -e " Creates certificates specified in config.yml and admin certificates. Add a root-ca.pem and root-ca.key or leave it empty so a new one will be created."
|
||||
echo -e ""
|
||||
echo -e " -ca, --root-ca-certificates"
|
||||
echo -e " Creates the root-ca certificates."
|
||||
echo -e ""
|
||||
echo -e " -v, --verbose"
|
||||
echo -e " Enables verbose mode."
|
||||
echo -e ""
|
||||
echo -e " -wd, --wazuh-dashboard-certificates </path/to/root-ca.pem> </path/to/root-ca.key>"
|
||||
echo -e " Creates the Wazuh dashboard certificates, add root-ca.pem and root-ca.key."
|
||||
echo -e ""
|
||||
echo -e " -wi, --wazuh-indexer-certificates </path/to/root-ca.pem> </path/to/root-ca.key>"
|
||||
echo -e " Creates the Wazuh indexer certificates, add root-ca.pem and root-ca.key."
|
||||
echo -e ""
|
||||
echo -e " -ws, --wazuh-server-certificates </path/to/root-ca.pem> </path/to/root-ca.key>"
|
||||
echo -e " Creates the Wazuh server certificates, add root-ca.pem and root-ca.key."
|
||||
echo -e ""
|
||||
echo -e " -tmp, --cert_tmp_path </path/to/tmp_dir>"
|
||||
echo -e " Modifies the default tmp directory (/tmp/wazuh-ceritificates) to the specified one."
|
||||
echo -e " Must be used along with one of these options: -a, -A, -ca, -wi, -wd, -ws"
|
||||
echo -e ""
|
||||
|
||||
exit 1
|
||||
|
||||
}
|
||||
function main() {
|
||||
|
||||
umask 177
|
||||
|
||||
cert_checkOpenSSL
|
||||
|
||||
if [ -n "${1}" ]; then
|
||||
while [ -n "${1}" ]
|
||||
do
|
||||
case "${1}" in
|
||||
"-a"|"--admin-certificates")
|
||||
if [[ -z "${2}" || -z "${3}" ]]; then
|
||||
common_logger -e "Error on arguments. Probably missing </path/to/root-ca.pem> </path/to/root-ca.key> after -a|--admin-certificates"
|
||||
getHelp
|
||||
exit 1
|
||||
else
|
||||
cadmin=1
|
||||
rootca="${2}"
|
||||
rootcakey="${3}"
|
||||
shift 3
|
||||
fi
|
||||
;;
|
||||
"-A"|"--all")
|
||||
if [[ -n "${2}" && "${2}" != "-v" && "${2}" != "-tmp" ]]; then
|
||||
# Validate that the user has entered the 2 files
|
||||
if [[ -z ${3} ]]; then
|
||||
if [[ ${2} == *".key" ]]; then
|
||||
common_logger -e "You have not entered a root-ca.pem"
|
||||
exit 1
|
||||
else
|
||||
common_logger -e "You have not entered a root-ca.key"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
all=1
|
||||
rootca="${2}"
|
||||
rootcakey="${3}"
|
||||
shift 3
|
||||
else
|
||||
all=1
|
||||
shift 1
|
||||
fi
|
||||
;;
|
||||
"-ca"|"--root-ca-certificate")
|
||||
ca=1
|
||||
shift 1
|
||||
;;
|
||||
"-h"|"--help")
|
||||
getHelp
|
||||
;;
|
||||
"-v"|"--verbose")
|
||||
debugEnabled=1
|
||||
shift 1
|
||||
;;
|
||||
"-wd"|"--wazuh-dashboard-certificates")
|
||||
if [[ -z "${2}" || -z "${3}" ]]; then
|
||||
common_logger -e "Error on arguments. Probably missing </path/to/root-ca.pem> </path/to/root-ca.key> after -wd|--wazuh-dashboard-certificates"
|
||||
getHelp
|
||||
exit 1
|
||||
else
|
||||
cdashboard=1
|
||||
rootca="${2}"
|
||||
rootcakey="${3}"
|
||||
shift 3
|
||||
fi
|
||||
;;
|
||||
"-wi"|"--wazuh-indexer-certificates")
|
||||
if [[ -z "${2}" || -z "${3}" ]]; then
|
||||
common_logger -e "Error on arguments. Probably missing </path/to/root-ca.pem> </path/to/root-ca.key> after -wi|--wazuh-indexer-certificates"
|
||||
getHelp
|
||||
exit 1
|
||||
else
|
||||
cindexer=1
|
||||
rootca="${2}"
|
||||
rootcakey="${3}"
|
||||
shift 3
|
||||
fi
|
||||
;;
|
||||
"-ws"|"--wazuh-server-certificates")
|
||||
if [[ -z "${2}" || -z "${3}" ]]; then
|
||||
common_logger -e "Error on arguments. Probably missing </path/to/root-ca.pem> </path/to/root-ca.key> after -ws|--wazuh-server-certificates"
|
||||
getHelp
|
||||
exit 1
|
||||
else
|
||||
cserver=1
|
||||
rootca="${2}"
|
||||
rootcakey="${3}"
|
||||
shift 3
|
||||
fi
|
||||
;;
|
||||
"-tmp"|"--cert_tmp_path")
|
||||
if [[ -n "${3}" || ( "${cadmin}" == 1 || "${all}" == 1 || "${ca}" == 1 || "${cdashboard}" == 1 || "${cindexer}" == 1 || "${cserver}" == 1 ) ]]; then
|
||||
if [[ -z "${2}" || ! "${2}" == /* ]]; then
|
||||
common_logger -e "Error on arguments. Probably missing </path/to/tmp_dir> or path does not start with '/'."
|
||||
getHelp
|
||||
exit 1
|
||||
else
|
||||
cert_tmp_path="${2}"
|
||||
shift 2
|
||||
fi
|
||||
else
|
||||
common_logger -e "Error: -tmp must be used along with one of these options: -a, -A, -ca, -wi, -wd, -ws"
|
||||
getHelp
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
echo "Unknow option: ${1}"
|
||||
getHelp
|
||||
esac
|
||||
done
|
||||
|
||||
common_logger "Verbose logging redirected to ${logfile}"
|
||||
|
||||
if [[ -d "${base_path}"/wazuh-certificates ]]; then
|
||||
if [ -n "$(ls -A "${base_path}"/wazuh-certificates)" ]; then
|
||||
common_logger -e "Directory wazuh-certificates already exists in the same path as the script. Please, remove the certs directory to create new certificates."
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ ! -d "${cert_tmp_path}" ]]; then
|
||||
mkdir -p "${cert_tmp_path}"
|
||||
chmod 744 "${cert_tmp_path}"
|
||||
fi
|
||||
|
||||
cert_readConfig
|
||||
|
||||
if [ -n "${debugEnabled}" ]; then
|
||||
debug="2>&1 | tee -a ${logfile}"
|
||||
fi
|
||||
|
||||
if [[ -n "${cadmin}" ]]; then
|
||||
cert_checkRootCA
|
||||
cert_generateAdmincertificate
|
||||
common_logger "Admin certificates created."
|
||||
cert_cleanFiles
|
||||
cert_setpermisions
|
||||
eval "mv ${cert_tmp_path} ${base_path}/wazuh-certificates ${debug}"
|
||||
fi
|
||||
|
||||
if [[ -n "${all}" ]]; then
|
||||
cert_checkRootCA
|
||||
cert_generateAdmincertificate
|
||||
common_logger "Admin certificates created."
|
||||
if cert_generateIndexercertificates; then
|
||||
common_logger "Wazuh indexer certificates created."
|
||||
fi
|
||||
if cert_generateFilebeatcertificates; then
|
||||
common_logger "Wazuh Filebeat certificates created."
|
||||
fi
|
||||
if cert_generateDashboardcertificates; then
|
||||
common_logger "Wazuh dashboard certificates created."
|
||||
fi
|
||||
cert_cleanFiles
|
||||
cert_setpermisions
|
||||
eval "mv ${cert_tmp_path} ${base_path}/wazuh-certificates ${debug}"
|
||||
fi
|
||||
|
||||
if [[ -n "${ca}" ]]; then
|
||||
cert_generateRootCAcertificate
|
||||
common_logger "Authority certificates created."
|
||||
cert_cleanFiles
|
||||
eval "mv ${cert_tmp_path} ${base_path}/wazuh-certificates ${debug}"
|
||||
fi
|
||||
|
||||
if [[ -n "${cindexer}" ]]; then
|
||||
if [ ${#indexer_node_names[@]} -gt 0 ]; then
|
||||
cert_checkRootCA
|
||||
cert_generateIndexercertificates
|
||||
common_logger "Wazuh indexer certificates created."
|
||||
cert_cleanFiles
|
||||
cert_setpermisions
|
||||
eval "mv ${cert_tmp_path} ${base_path}/wazuh-certificates ${debug}"
|
||||
else
|
||||
common_logger -e "Indexer node not present in config.yml."
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ -n "${cserver}" ]]; then
|
||||
if [ ${#server_node_names[@]} -gt 0 ]; then
|
||||
cert_checkRootCA
|
||||
cert_generateFilebeatcertificates
|
||||
common_logger "Wazuh Filebeat certificates created."
|
||||
cert_cleanFiles
|
||||
cert_setpermisions
|
||||
eval "mv ${cert_tmp_path} ${base_path}/wazuh-certificates ${debug}"
|
||||
else
|
||||
common_logger -e "Server node not present in config.yml."
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ -n "${cdashboard}" ]]; then
|
||||
if [ ${#dashboard_node_names[@]} -gt 0 ]; then
|
||||
cert_checkRootCA
|
||||
cert_generateDashboardcertificates
|
||||
common_logger "Wazuh dashboard certificates created."
|
||||
cert_cleanFiles
|
||||
cert_setpermisions
|
||||
eval "mv ${cert_tmp_path} ${base_path}/wazuh-certificates ${debug}"
|
||||
else
|
||||
common_logger -e "Dashboard node not present in config.yml."
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
else
|
||||
getHelp
|
||||
fi
|
||||
|
||||
}
|
||||
# ------------ certVariables.sh ------------
|
||||
|
||||
function common_checkAptLock() {
|
||||
|
||||
attempt=0
|
||||
seconds=30
|
||||
max_attempts=10
|
||||
|
||||
while fuser "${apt_lockfile}" >/dev/null 2>&1 && [ "${attempt}" -lt "${max_attempts}" ]; do
|
||||
attempt=$((attempt+1))
|
||||
common_logger "Another process is using APT. Waiting for it to release the lock. Next retry in ${seconds} seconds (${attempt}/${max_attempts})"
|
||||
sleep "${seconds}"
|
||||
done
|
||||
|
||||
}
|
||||
function common_logger() {
|
||||
|
||||
now=$(date +'%d/%m/%Y %H:%M:%S')
|
||||
mtype="INFO:"
|
||||
debugLogger=
|
||||
nolog=
|
||||
if [ -n "${1}" ]; then
|
||||
while [ -n "${1}" ]; do
|
||||
case ${1} in
|
||||
"-e")
|
||||
mtype="ERROR:"
|
||||
shift 1
|
||||
;;
|
||||
"-w")
|
||||
mtype="WARNING:"
|
||||
shift 1
|
||||
;;
|
||||
"-d")
|
||||
debugLogger=1
|
||||
mtype="DEBUG:"
|
||||
shift 1
|
||||
;;
|
||||
"-nl")
|
||||
nolog=1
|
||||
shift 1
|
||||
;;
|
||||
*)
|
||||
message="${1}"
|
||||
shift 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
fi
|
||||
|
||||
if [ -z "${debugLogger}" ] || { [ -n "${debugLogger}" ] && [ -n "${debugEnabled}" ]; }; then
|
||||
if [ -z "${nolog}" ] && { [ "$EUID" -eq 0 ] || [[ "$(basename "$0")" =~ $cert_tool_script_name ]]; }; then
|
||||
printf "%s\n" "${now} ${mtype} ${message}" | tee -a ${logfile}
|
||||
else
|
||||
printf "%b\n" "${now} ${mtype} ${message}"
|
||||
fi
|
||||
fi
|
||||
|
||||
}
|
||||
function common_checkRoot() {
|
||||
|
||||
common_logger -d "Checking root permissions."
|
||||
if [ "$EUID" -ne 0 ]; then
|
||||
echo "This script must be run as root."
|
||||
exit 1;
|
||||
fi
|
||||
|
||||
common_logger -d "Checking sudo package."
|
||||
if ! command -v sudo > /dev/null; then
|
||||
common_logger -e "The sudo package is not installed and it is necessary for the installation."
|
||||
exit 1;
|
||||
fi
|
||||
}
|
||||
function common_checkInstalled() {
|
||||
|
||||
common_logger -d "Checking Wazuh installation."
|
||||
wazuh_installed=""
|
||||
indexer_installed=""
|
||||
filebeat_installed=""
|
||||
dashboard_installed=""
|
||||
|
||||
if [ "${sys_type}" == "yum" ]; then
|
||||
eval "rpm -q wazuh-manager --quiet && wazuh_installed=1"
|
||||
elif [ "${sys_type}" == "apt-get" ]; then
|
||||
wazuh_installed=$(apt list --installed 2>/dev/null | grep wazuh-manager)
|
||||
fi
|
||||
|
||||
if [ -d "/var/ossec" ]; then
|
||||
common_logger -d "There are Wazuh remaining files."
|
||||
wazuh_remaining_files=1
|
||||
fi
|
||||
|
||||
if [ "${sys_type}" == "yum" ]; then
|
||||
eval "rpm -q wazuh-indexer --quiet && indexer_installed=1"
|
||||
|
||||
elif [ "${sys_type}" == "apt-get" ]; then
|
||||
indexer_installed=$(apt list --installed 2>/dev/null | grep wazuh-indexer)
|
||||
fi
|
||||
|
||||
if [ -d "/var/lib/wazuh-indexer/" ] || [ -d "/usr/share/wazuh-indexer" ] || [ -d "/etc/wazuh-indexer" ] || [ -f "${base_path}/search-guard-tlstool*" ]; then
|
||||
common_logger -d "There are Wazuh indexer remaining files."
|
||||
indexer_remaining_files=1
|
||||
fi
|
||||
|
||||
if [ "${sys_type}" == "yum" ]; then
|
||||
eval "rpm -q filebeat --quiet && filebeat_installed=1"
|
||||
elif [ "${sys_type}" == "apt-get" ]; then
|
||||
filebeat_installed=$(apt list --installed 2>/dev/null | grep filebeat)
|
||||
fi
|
||||
|
||||
if [ -d "/var/lib/filebeat/" ] || [ -d "/usr/share/filebeat" ] || [ -d "/etc/filebeat" ]; then
|
||||
common_logger -d "There are Filebeat remaining files."
|
||||
filebeat_remaining_files=1
|
||||
fi
|
||||
|
||||
if [ "${sys_type}" == "yum" ]; then
|
||||
eval "rpm -q wazuh-dashboard --quiet && dashboard_installed=1"
|
||||
elif [ "${sys_type}" == "apt-get" ]; then
|
||||
dashboard_installed=$(apt list --installed 2>/dev/null | grep wazuh-dashboard)
|
||||
fi
|
||||
|
||||
if [ -d "/var/lib/wazuh-dashboard/" ] || [ -d "/usr/share/wazuh-dashboard" ] || [ -d "/etc/wazuh-dashboard" ] || [ -d "/run/wazuh-dashboard/" ]; then
|
||||
common_logger -d "There are Wazuh dashboard remaining files."
|
||||
dashboard_remaining_files=1
|
||||
fi
|
||||
|
||||
}
|
||||
function common_checkSystem() {
|
||||
|
||||
if [ -n "$(command -v yum)" ]; then
|
||||
sys_type="yum"
|
||||
sep="-"
|
||||
common_logger -d "YUM package manager will be used."
|
||||
elif [ -n "$(command -v apt-get)" ]; then
|
||||
sys_type="apt-get"
|
||||
sep="="
|
||||
common_logger -d "APT package manager will be used."
|
||||
else
|
||||
common_logger -e "Couldn't find YUM or APT package manager. Try installing the one corresponding to your operating system and then, launch the installation assistant again."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
}
|
||||
function common_checkWazuhConfigYaml() {
|
||||
|
||||
common_logger -d "Checking Wazuh YAML configuration file."
|
||||
filecorrect=$(cert_parseYaml "${config_file}" | grep -Ev '^#|^\s*$' | grep -Pzc "\A(\s*(nodes_indexer__name|nodes_indexer__ip|nodes_server__name|nodes_server__ip|nodes_server__node_type|nodes_dashboard__name|nodes_dashboard__ip)=.*?)+\Z")
|
||||
if [[ "${filecorrect}" -ne 1 ]]; then
|
||||
common_logger -e "The configuration file ${config_file} does not have a correct format."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
}
|
||||
function common_curl() {
|
||||
|
||||
if [ -n "${curl_has_connrefused}" ]; then
|
||||
eval "curl $@ --retry-connrefused"
|
||||
e_code="${PIPESTATUS[0]}"
|
||||
else
|
||||
retries=0
|
||||
eval "curl $@"
|
||||
e_code="${PIPESTATUS[0]}"
|
||||
while [ "${e_code}" -eq 7 ] && [ "${retries}" -ne 12 ]; do
|
||||
retries=$((retries+1))
|
||||
sleep 5
|
||||
eval "curl $@"
|
||||
e_code="${PIPESTATUS[0]}"
|
||||
done
|
||||
fi
|
||||
return "${e_code}"
|
||||
|
||||
}
|
||||
function common_remove_gpg_key() {
|
||||
|
||||
common_logger -d "Removing GPG key from system."
|
||||
if [ "${sys_type}" == "yum" ]; then
|
||||
if { rpm -q gpg-pubkey --qf '%{NAME}-%{VERSION}-%{RELEASE}\t%{SUMMARY}\n' | grep "Wazuh"; } >/dev/null ; then
|
||||
key=$(rpm -q gpg-pubkey --qf '%{NAME}-%{VERSION}-%{RELEASE}\t%{SUMMARY}\n' | grep "Wazuh Signing Key" | awk '{print $1}' )
|
||||
rpm -e "${key}"
|
||||
else
|
||||
common_logger "Wazuh GPG key not found in the system"
|
||||
return 1
|
||||
fi
|
||||
elif [ "${sys_type}" == "apt-get" ]; then
|
||||
if [ -f "/usr/share/keyrings/wazuh.gpg" ]; then
|
||||
rm -rf "/usr/share/keyrings/wazuh.gpg" "${debug}"
|
||||
else
|
||||
common_logger "Wazuh GPG key not found in the system"
|
||||
return 1
|
||||
fi
|
||||
fi
|
||||
|
||||
}
|
||||
function common_checkYumLock() {
|
||||
|
||||
attempt=0
|
||||
seconds=30
|
||||
max_attempts=10
|
||||
|
||||
while [ -f "${yum_lockfile}" ] && [ "${attempt}" -lt "${max_attempts}" ]; do
|
||||
attempt=$((attempt+1))
|
||||
common_logger "Another process is using YUM. Waiting for it to release the lock. Next retry in ${seconds} seconds (${attempt}/${max_attempts})"
|
||||
sleep "${seconds}"
|
||||
done
|
||||
|
||||
}
|
||||
|
||||
main "$@"
|
||||
@@ -0,0 +1,17 @@
|
||||
server.host: 0.0.0.0
|
||||
server.port: 5601
|
||||
opensearch.hosts: ["https://wazuh.indexer:9200"]
|
||||
opensearch.username: "admin"
|
||||
opensearch.password: "SecretPassword123!"
|
||||
opensearch.ssl.verificationMode: none
|
||||
opensearch.requestHeadersAllowlist:
|
||||
- securitytenant
|
||||
- Authorization
|
||||
opensearch_security.multitenancy.enabled: false
|
||||
opensearch_security.readonly_mode.roles:
|
||||
- kibana_read_only
|
||||
server.ssl.enabled: true
|
||||
server.ssl.certificate: /usr/share/wazuh-dashboard/certs/wazuh.dashboard.pem
|
||||
server.ssl.key: /usr/share/wazuh-dashboard/certs/wazuh.dashboard-key.pem
|
||||
opensearch.ssl.certificateAuthorities: [/usr/share/wazuh-dashboard/certs/root-ca.pem]
|
||||
uiSettings.overrides.defaultRoute: /app/wazuh
|
||||
@@ -0,0 +1,13 @@
|
||||
hosts:
|
||||
- default:
|
||||
url: https://wazuh.manager
|
||||
port: 55000
|
||||
username: wazuh-wui
|
||||
password: MyS3cr37P450r.*-
|
||||
run_as: false
|
||||
- 1513629884013:
|
||||
url: https://wazuh.manager
|
||||
port: 55000
|
||||
username: wazuh-wui
|
||||
password: MyS3cr37P450r.*-
|
||||
run_as: false
|
||||
@@ -0,0 +1,52 @@
|
||||
network.host: "0.0.0.0"
|
||||
node.name: "wazuh.indexer"
|
||||
cluster.initial_master_nodes:
|
||||
- "wazuh.indexer"
|
||||
cluster.name: "wazuh-cluster"
|
||||
|
||||
path.data: /var/lib/wazuh-indexer
|
||||
path.logs: /var/log/wazuh-indexer
|
||||
path.repo: /var/lib/wazuh-indexer/snapshots
|
||||
|
||||
plugins.security.ssl.transport.pemcert_filepath: /usr/share/wazuh-indexer/certs/wazuh.indexer.pem
|
||||
plugins.security.ssl.transport.pemkey_filepath: /usr/share/wazuh-indexer/certs/wazuh.indexer.key
|
||||
plugins.security.ssl.transport.pemtrustedcas_filepath: /usr/share/wazuh-indexer/certs/root-ca.pem
|
||||
plugins.security.ssl.transport.enforce_hostname_verification: false
|
||||
plugins.security.ssl.http.enabled: true
|
||||
plugins.security.ssl.http.pemcert_filepath: /usr/share/wazuh-indexer/certs/wazuh.indexer.pem
|
||||
plugins.security.ssl.http.pemkey_filepath: /usr/share/wazuh-indexer/certs/wazuh.indexer.key
|
||||
plugins.security.ssl.http.pemtrustedcas_filepath: /usr/share/wazuh-indexer/certs/root-ca.pem
|
||||
plugins.security.allow_default_init_securityindex: true
|
||||
plugins.security.authcz.admin_dn:
|
||||
- "CN=admin,OU=Wazuh,O=Wazuh,L=California,C=US"
|
||||
plugins.security.check_snapshot_restore_write_privileges: true
|
||||
plugins.security.restapi.roles_enabled:
|
||||
- "all_access"
|
||||
- "security_rest_api_access"
|
||||
plugins.security.system_indices.enabled: true
|
||||
plugins.security.system_indices.indices:
|
||||
- ".opendistro-alerting-config"
|
||||
- ".opendistro-alerting-alert*"
|
||||
- ".opendistro-anomaly-results*"
|
||||
- ".opendistro-anomaly-detector*"
|
||||
- ".opendistro-anomaly-checkpoints"
|
||||
- ".opendistro-anomaly-detection-state"
|
||||
- ".opendistro-reports-*"
|
||||
- ".opendistro-notifications-*"
|
||||
- ".opendistro-notebooks"
|
||||
- ".opendistro-observability"
|
||||
- ".opendistro-asynchronous-search-response*"
|
||||
- ".replication-metadata-store"
|
||||
- ".opensearch-observability"
|
||||
- ".opensearch-notifications-*"
|
||||
- ".opensearch-reports-*"
|
||||
- ".opensearch-anomaly-results*"
|
||||
- ".opensearch-anomaly-detector*"
|
||||
- ".opensearch-anomaly-checkpoints"
|
||||
- ".opensearch-anomaly-detection-state"
|
||||
- ".opensearch-security"
|
||||
- ".wazuh"
|
||||
- ".wazuh-*"
|
||||
- ".plugins-*"
|
||||
|
||||
compatibility.override_main_response_version: true
|
||||
@@ -0,0 +1,28 @@
|
||||
-----BEGIN PRIVATE KEY-----
|
||||
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC67BSZ85ZK4mP4
|
||||
YxKz7BwFsonyg5nn/JRN9YbQq/bt8eMkWbm4Js2Fpi/oIxC2aEyWNrQOa8D3SJuI
|
||||
5vPUaF/uOa4CtxZt9Ds/3dYftQn9dGplhOp9uoSVIXrU3uuUI5xQuMGORu+8xfa9
|
||||
24WWCsf6fdz7fZJ0dB0zcZpLmLZARk8LqoOn4a8uwaYdtpJ/avCeOZAjkfzgNPzh
|
||||
e9r4L7Lhwd1RdejFssF6DvlfcxBFSmIfuttEbrxDV+LhdRhUTrQnOswSBJBU7otK
|
||||
XXImKV4FZ27h+ATLY3m5c36SdcBWXXfeVpL8HZF7sXfkvUFHqYPu8A2aS5AeVp0e
|
||||
ZCWVylvFAgMBAAECggEAE2a/o1RvgWmgJhQ6c7xfvY5Q19V7BbjnYnQdQHl+PCet
|
||||
g4S19ybn5tBfYUE1JzRfhqk6On5Kssqxgh3eqb8E/gK0ogmDkCQX0O2N9Q/jGpCZ
|
||||
Hoe+QxCMrwyg5YlsevLQnbxKMsyqw4rqAmjPo8mOBNzy2+j7vjnzHKIqTrW/bPTx
|
||||
dsC/u24Rffibj6FP0X9jmkYczMfVBLnnbNSryQ42QvUAzXRUYRbedGkXPQj8DXxR
|
||||
lA71gJB3Jo0k8SovVGbd96/ripUIzgT/I565JlZk3YDf/W5aDwL18K5vHAWQj+/v
|
||||
8kzYlYg4t/L8P8HXjKaOBMYdS0mPoZq0yGVwYarlXQKBgQD5M1mjaq/wEKcK6qgy
|
||||
GzD+svw0YKJdOoVuS6UEMI6HdaHHu5HaALPVkSM9U8GYzwyr+WGOSOAWRjlIrLqC
|
||||
sffUJchXgClJCoHD01WcVksczsAjWYhsrZhHXVs2aWtGkO3BBgdrpFFvJG52pe5y
|
||||
sCgRm7hz8UhqDaOcnfWH1+1sPwKBgQDABbhDhhL2+kws7CVKmJFQrovpIcNJHisK
|
||||
nMKhoCbFfX1jbu89xXaQqV+2C2iqlsfWxualYMtWgTq4umnAum4rUNjJWmZY4Fqy
|
||||
Pb57fN1LML3+tcwbCCp5w+NmtvJK5dh9+IgmD8xM4thq4awlnv2tQqP/HolhVTF2
|
||||
lMvekZhG+wKBgEP2Bh80DFFLKVMn1cD8e2sqwu9B32XPfO4sgQ9YcrZslTdUZx1u
|
||||
DZ1T3Klv+x9CcDFCbKGSLFLGyf6Q5LiZ8n2P5EhAsoGx9NvD+dgODKQJmorJcxQ4
|
||||
b4we4K5BJ7lx8vUuQL3RbUgDRoDjFdl/Qx4yOqacCeSqXZFr3rcyYxSfAoGAc2o8
|
||||
saFBft88r/eUBn0jQqpW/95CQY13c157gagABc4CcqR3+dnZBOQ42fOLipUsMkTE
|
||||
1vwR28G66NNqwuOLWk+yrXu/boYTHXUNK64GWK5IVHMy5cCHvz5lTRSDF0+FS1n5
|
||||
g18VfdUPHVbdIJOqh9w5NBtHmZAaNdsDmphKPccCgYEAsnMoj8gM64JDpti6OwIV
|
||||
TrMTv076CGPGisx5Ooemewvy/g9bPKiQjQdZg5GKQmCq+7OSNUFLZXBwkV6oBJV7
|
||||
StWi3s01um+08ljs5sXhsw4c8e8RCJ8CrkxGqoaKoGEXHXFgS0CLqy430CBza4Ra
|
||||
ounGuRkS5kwqfeXfVC4Rq/U=
|
||||
-----END PRIVATE KEY-----
|
||||
@@ -0,0 +1,20 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDVzCCAj+gAwIBAgIUEO25S+4jYn8uga3bnRiVBbdOp7gwDQYJKoZIhvcNAQEL
|
||||
BQAwNTEOMAwGA1UECwwFV2F6dWgxDjAMBgNVBAoMBVdhenVoMRMwEQYDVQQHDApD
|
||||
YWxpZm9ybmlhMB4XDTI2MDgwNDA5MTQzMloXDTM2MDgwMTA5MTQzMlowUjELMAkG
|
||||
A1UEBhMCVVMxEzARBgNVBAcMCkNhbGlmb3JuaWExDjAMBgNVBAoMBVdhenVoMQ4w
|
||||
DAYDVQQLDAVXYXp1aDEOMAwGA1UEAwwFYWRtaW4wggEiMA0GCSqGSIb3DQEBAQUA
|
||||
A4IBDwAwggEKAoIBAQC67BSZ85ZK4mP4YxKz7BwFsonyg5nn/JRN9YbQq/bt8eMk
|
||||
Wbm4Js2Fpi/oIxC2aEyWNrQOa8D3SJuI5vPUaF/uOa4CtxZt9Ds/3dYftQn9dGpl
|
||||
hOp9uoSVIXrU3uuUI5xQuMGORu+8xfa924WWCsf6fdz7fZJ0dB0zcZpLmLZARk8L
|
||||
qoOn4a8uwaYdtpJ/avCeOZAjkfzgNPzhe9r4L7Lhwd1RdejFssF6DvlfcxBFSmIf
|
||||
uttEbrxDV+LhdRhUTrQnOswSBJBU7otKXXImKV4FZ27h+ATLY3m5c36SdcBWXXfe
|
||||
VpL8HZF7sXfkvUFHqYPu8A2aS5AeVp0eZCWVylvFAgMBAAGjQjBAMB0GA1UdDgQW
|
||||
BBTcbvDe4y2Kjkid0TCkFISXIZT4lDAfBgNVHSMEGDAWgBQe9+49H4XrSFxTrm+1
|
||||
QJmwqBxBTzANBgkqhkiG9w0BAQsFAAOCAQEAovG1Sk+lSe8X9ZF7irPzpIFeFqOB
|
||||
C/kS/+v0t+AGnGey7gNUbkFtvRed6XLtCbDaxUxHviuIcgWuIBnKEoioAuaNWIde
|
||||
yGjj+BFQQlaaKQkP1U57j5EDj8+31pucCgogiXU773azVcSx+pJcgW6FWEfC4T33
|
||||
tl/cK8tSQUEOJf5XttLkCxCOUxlySwcd4p4YaHViOQWoyvMV2HU36GX/c5c4XDZC
|
||||
Cqhb44UqAQ5KoKxZCNtePCHpC1xw/XyLbTbEV+Vfqkm6hXznohU9wBLGC6Q7hij0
|
||||
i/BIjYDELtcCl4x67rROhYWq9XA2eqe2EelC7CtS3bsWNt9w5PR4QYlIwA==
|
||||
-----END CERTIFICATE-----
|
||||
@@ -0,0 +1,20 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDSzCCAjOgAwIBAgIUCDO5y/zFBSClCe04yo1K1flC6u4wDQYJKoZIhvcNAQEL
|
||||
BQAwNTEOMAwGA1UECwwFV2F6dWgxDjAMBgNVBAoMBVdhenVoMRMwEQYDVQQHDApD
|
||||
YWxpZm9ybmlhMB4XDTI2MDgwNDA5MTQzMloXDTM2MDgwMTA5MTQzMlowNTEOMAwG
|
||||
A1UECwwFV2F6dWgxDjAMBgNVBAoMBVdhenVoMRMwEQYDVQQHDApDYWxpZm9ybmlh
|
||||
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzh/t2fj3XR6PVptMw54F
|
||||
8evxZGnOW+oG+/CQwF5UCKggF/7geBUA4uDNCrRBVn4DFX+GLz1n858NyDIZTfRI
|
||||
80UaxAHtQ7vDuONeog6K6e4ia/MtqWIf6pKam1gT5amKwuUZ/Nq0L4xgUHVhb8ax
|
||||
BhMbNox1OeYsdXfjVXCIhwSwsu7YAE6i+jmTB/9KklDf57lPzFuU9ivdJ6feJJ7i
|
||||
v1bGzbaMqnOqU9qWdEk3v7KPV/o8s/+3BwcHTGHYc8Uxrxbb2GIokj0587DoUo2o
|
||||
5WCtxx8eSu+fMdPu2r6UCy7eT3u8z9fFrnntrWJr9rzVaOnmCmccbqoP05VK25v6
|
||||
OwIDAQABo1MwUTAdBgNVHQ4EFgQUHvfuPR+F60hcU65vtUCZsKgcQU8wHwYDVR0j
|
||||
BBgwFoAUHvfuPR+F60hcU65vtUCZsKgcQU8wDwYDVR0TAQH/BAUwAwEB/zANBgkq
|
||||
hkiG9w0BAQsFAAOCAQEAfVTbHPiMuwRdz/9OLvHI9OMWD2pNDsxR1o53n1HS6VeS
|
||||
R07LxLhUYhe5N9ruqQ11tdbVAHvxmKwuA8Rw432/e8vH/655Gieljq3QnxbekXGZ
|
||||
Zn5yC646aAMKL7jPhz+ZkTw3KDMeHsTGAHJ84hg8g9Tm3kt3MS0ILOv7xseEyklW
|
||||
0hyiN7TIqFHOPqSxQWx8sJRABergDFmTig1QxJLpl4rph5izcSg+qc9YivuwuPb3
|
||||
DX1Y2Z2AsodaWSW02FwczVtwrxJA8wZSMp3bd6SR3ddgDy7j8fJgFJGjsitH1rMJ
|
||||
2lznWBTlNYjnsztmluESROZmdeILj0MpZL/BhuQkcQ==
|
||||
-----END CERTIFICATE-----
|
||||
@@ -0,0 +1,28 @@
|
||||
-----BEGIN PRIVATE KEY-----
|
||||
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDOH+3Z+PddHo9W
|
||||
m0zDngXx6/Fkac5b6gb78JDAXlQIqCAX/uB4FQDi4M0KtEFWfgMVf4YvPWfznw3I
|
||||
MhlN9EjzRRrEAe1Du8O4416iDorp7iJr8y2pYh/qkpqbWBPlqYrC5Rn82rQvjGBQ
|
||||
dWFvxrEGExs2jHU55ix1d+NVcIiHBLCy7tgATqL6OZMH/0qSUN/nuU/MW5T2K90n
|
||||
p94knuK/VsbNtoyqc6pT2pZ0STe/so9X+jyz/7cHBwdMYdhzxTGvFtvYYiiSPTnz
|
||||
sOhSjajlYK3HHx5K758x0+7avpQLLt5Pe7zP18Wuee2tYmv2vNVo6eYKZxxuqg/T
|
||||
lUrbm/o7AgMBAAECggEAYpUCvO1F4VNsWo+L90LstPeTS+MOvwb+sCAuGtMCfeFq
|
||||
+A7+bHAfLGM3rZboaOV7tBx5oL5NqUa44LaVQ6NCAJdcZcJGJ871nMehywAJkDhE
|
||||
Xjy/6fL0MMxNBV7qpTyhEPVhqH0xEEyjA9gf8cWlhLI+oagrqLVdLhFYuNRJd8j6
|
||||
LAwq9E1hRf+J61DtQMU1hqiRaUq7/IBpPK7xyb/WwP5n0VSkpYJBLukv5OrfynO2
|
||||
64IrtE6NpHm9PRMRyS4UAvF4yVl6XqHpxFxBoYGvcO3EO+tF75dXtroSEVt1nxcd
|
||||
6D8jzjQX8PYFOKy1fjboj/m1oIGP0LFsH5m0+E4TgQKBgQD26PLx2SFFEzAaDGYc
|
||||
Wm51RMdcP+21Tb9sgHJe5tH7G0EwwR0Dg34g7HaMuZaBm9f2hVmt+mOlbT1QDumu
|
||||
B8FAat6zQ4lz80GJkvgiRmLBO6TTFxyuWkkpEEGNZx8hU+Q9LuP+6MDn7iaEGxKY
|
||||
iGygu2dsv40+i1+8AjwYwXD2hwKBgQDVtpd6/hNyZDiEhkpxHK7grF6cPWZhwUgx
|
||||
83VpWNZwt2H2GbJQ4Jj2HoSWOX/WxCsVfy4GHNeDAVslvSPjGhSxObhjsMsVpjNr
|
||||
lueB+2niah2wyoqW7J8VcctI694d8ytKfg1ilG+MCSFxStCPQgrj/h64U62x1KTp
|
||||
9aEpl3bXrQKBgCO2R8VROW2rO87YskAxmD5f51HhcTlC+IfyABjX29Es/P3XQKIM
|
||||
d8a9TNxHz4wJhXADk5gFWjpIFZEpxwTD3GC71GArSYs6yOTkG/2hHpGCVfGuKxjQ
|
||||
uDo3PrP8EVWZs65hxNpOwfAJ0wpSfBsRyFxrHqdtATnloMAptpWCDRurAoGBAMhD
|
||||
2314u/Z07fVZ9kY6r7GANQRKETfHrISKdNrsUb68ScMZX1ykqxHvlSVE6oPxvcHe
|
||||
NN2rh1SPH7+klw2Ich2FTkG0+QnnfcXzWiwW0alG8V2q3uYBBC5PPUSvKqx8I3Qh
|
||||
3R8ko8bhA4Krrfag153Akz79wwWik4teDtDvy4DdAoGAAY+QYfOohgU9rrTtKEWp
|
||||
AHpAYqPHwhAAT0MZ12NJE4H9evEqjMCtkxndTFk00c01rFeNGrMKOVexp8D4FX6d
|
||||
MiHHLeW3YrF9JatKbR0A2ZykS3dKWMNt2JO+H9OH4YS6pPh7HKGuWPCdGRYyqy4k
|
||||
8PYyytiTLfzJhOUVwiVg2L0=
|
||||
-----END PRIVATE KEY-----
|
||||
@@ -0,0 +1,20 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDSzCCAjOgAwIBAgIUCDO5y/zFBSClCe04yo1K1flC6u4wDQYJKoZIhvcNAQEL
|
||||
BQAwNTEOMAwGA1UECwwFV2F6dWgxDjAMBgNVBAoMBVdhenVoMRMwEQYDVQQHDApD
|
||||
YWxpZm9ybmlhMB4XDTI2MDgwNDA5MTQzMloXDTM2MDgwMTA5MTQzMlowNTEOMAwG
|
||||
A1UECwwFV2F6dWgxDjAMBgNVBAoMBVdhenVoMRMwEQYDVQQHDApDYWxpZm9ybmlh
|
||||
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzh/t2fj3XR6PVptMw54F
|
||||
8evxZGnOW+oG+/CQwF5UCKggF/7geBUA4uDNCrRBVn4DFX+GLz1n858NyDIZTfRI
|
||||
80UaxAHtQ7vDuONeog6K6e4ia/MtqWIf6pKam1gT5amKwuUZ/Nq0L4xgUHVhb8ax
|
||||
BhMbNox1OeYsdXfjVXCIhwSwsu7YAE6i+jmTB/9KklDf57lPzFuU9ivdJ6feJJ7i
|
||||
v1bGzbaMqnOqU9qWdEk3v7KPV/o8s/+3BwcHTGHYc8Uxrxbb2GIokj0587DoUo2o
|
||||
5WCtxx8eSu+fMdPu2r6UCy7eT3u8z9fFrnntrWJr9rzVaOnmCmccbqoP05VK25v6
|
||||
OwIDAQABo1MwUTAdBgNVHQ4EFgQUHvfuPR+F60hcU65vtUCZsKgcQU8wHwYDVR0j
|
||||
BBgwFoAUHvfuPR+F60hcU65vtUCZsKgcQU8wDwYDVR0TAQH/BAUwAwEB/zANBgkq
|
||||
hkiG9w0BAQsFAAOCAQEAfVTbHPiMuwRdz/9OLvHI9OMWD2pNDsxR1o53n1HS6VeS
|
||||
R07LxLhUYhe5N9ruqQ11tdbVAHvxmKwuA8Rw432/e8vH/655Gieljq3QnxbekXGZ
|
||||
Zn5yC646aAMKL7jPhz+ZkTw3KDMeHsTGAHJ84hg8g9Tm3kt3MS0ILOv7xseEyklW
|
||||
0hyiN7TIqFHOPqSxQWx8sJRABergDFmTig1QxJLpl4rph5izcSg+qc9YivuwuPb3
|
||||
DX1Y2Z2AsodaWSW02FwczVtwrxJA8wZSMp3bd6SR3ddgDy7j8fJgFJGjsitH1rMJ
|
||||
2lznWBTlNYjnsztmluESROZmdeILj0MpZL/BhuQkcQ==
|
||||
-----END CERTIFICATE-----
|
||||
@@ -0,0 +1,28 @@
|
||||
-----BEGIN PRIVATE KEY-----
|
||||
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDCP/mmbQguMNNG
|
||||
xui0v15irdTfz82U0d5t4R6plsmMd2o2l/q2QQBvddDnIODQdOIXl7ZklHkZ3bvG
|
||||
zF3SNsOSa/31dxkpfQTOqHbQ/QxyR+8T9z9WHIH7I0YXjQWZe7WpJdAbIm7Ne3KY
|
||||
lRKCZ2+B+Hy4PsA8q6LBLkVtfhrQ2g0MHb2EN9xa+SaKHO3kXF4EvPTHWefBdyOW
|
||||
FIhvZK8jgjJyo18qHLec0MZ6dAizVipqUNR2UMPQRBPQU7E9a47dhdCPq3rnmeAv
|
||||
WoVr9W4qsZLAcQIzOBaIfGINEltBShlo7LipKc2NI0raOmb/iVwnhivfLHez+6eQ
|
||||
zL9bUgdvAgMBAAECggEABs0DmhKOK0PVWdCD/DQJA25vmghl+7RfU7yCfNCFLPBP
|
||||
XSr0AaaD8+MNldH+XP4Cnm3W2m2iUcgEF4E3NbFqJnm2cf4h+ORiIzQduNJrOaMQ
|
||||
GURaSNMFr/u7q/5peEavBQWIZDLP60zLpdDuTXd+nW/MOg0kYNtnftj2YE9+c9pm
|
||||
32GgCn7OfL5DB9BCraWkHxd9l+PhN1DTuwDTvZ97tJT9tbSTdS+mZ8VL1KtorDbn
|
||||
E+nn/pNO7jkEMPQqggh6iPiAD8H8CO5HF/VzApSbnZsHyiSlKYpbjmnm+D1+wI5j
|
||||
+rZtDR2vGjPvnRady/oZzTeoSYP+HQ7byFdSynHBfQKBgQDsVuiVxnrKxwqFQhtv
|
||||
5BxeuUVu03IMPstVKi9l38EW+t7/ujisWTCE1+Dmh5k/lI4AtF170+IU6Eiqg9oL
|
||||
NwnfBcjAKpp9cIcCJO7kcHlXq1WTV+HWoEz4dB8AIBDwNL3gMv9/XZ+xKfd2Cijm
|
||||
EXYo12ZJLhYeWRxqgnh6sFL6uwKBgQDSaLnSbnv4BcNBCvGmZmncvM+IQNZF7XCc
|
||||
2NZ98YSKe+dHnjiySOfH8uG/7noD54u27K2Rl/d4Anxz9QTzCubW5fW9FAE51aay
|
||||
R0cXvxyPo9OrYEEl3PGT7JgjQ0EDunijhsVAfJrEM/jrZzi71EH5NGdYqLAw9ec7
|
||||
znFfo2d83QKBgAWwygThNI+xXzV6NALrsSsuttdGTBazZF32mBGR46pT/A6YQ0kT
|
||||
FLH+KLIkTbJUN18Y+K9EmMr8FNPWPOfMOXafQwgtfm7KyNVqYj4p3yIXRAY6NXvf
|
||||
fDr3QM/V9dJy0qeVUsWUUYYIhqbW88kmXnv5Q8M7UtkEOETwQ0pg+H6FAoGAOaob
|
||||
6zD+Zq3loijGq2z77FQOqG/kiYuWRlYjCqcrROzKKNWTAkF6zFCjT/+ijvlhUAOz
|
||||
WeiFGO3Nf9YRwi4lr5WccHJQF7KXGdrw//APespSU3BwyliwGHNKCrf+1G/Bakeg
|
||||
PZkorUb1HEbQxKFaZ1rWS/UHPJPYCIr+hVB6Jz0CgYEAm5pTdO4jse4v9vYgBV2J
|
||||
ZJL9iRHryq04O12XkEvU0RU2ijL4+IJFIllDjFOQL67Aongn4/fVR9xje/ojUfoQ
|
||||
sprPjCIBxK9z/9BA2NDxg+lJ3i3y/wXtglMCwTzowNVN6QCYGU/BOATEBjVfkNd3
|
||||
jeshWSUXZHXVDgDn9OV/p8k=
|
||||
-----END PRIVATE KEY-----
|
||||
@@ -0,0 +1,20 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDVzCCAj+gAwIBAgIUaUXeUZypaWNhAf4NeHIx+WU3/h0wDQYJKoZIhvcNAQEL
|
||||
BQAwNTEOMAwGA1UECwwFV2F6dWgxDjAMBgNVBAoMBVdhenVoMRMwEQYDVQQHDApD
|
||||
YWxpZm9ybmlhMB4XDTI2MDgwNDA5MTg1N1oXDTM2MDgwMTA5MTg1N1owUjELMAkG
|
||||
A1UEBhMCVVMxEzARBgNVBAcMCkNhbGlmb3JuaWExDjAMBgNVBAoMBVdhenVoMQ4w
|
||||
DAYDVQQLDAVXYXp1aDEOMAwGA1UEAwwFYWRtaW4wggEiMA0GCSqGSIb3DQEBAQUA
|
||||
A4IBDwAwggEKAoIBAQDCP/mmbQguMNNGxui0v15irdTfz82U0d5t4R6plsmMd2o2
|
||||
l/q2QQBvddDnIODQdOIXl7ZklHkZ3bvGzF3SNsOSa/31dxkpfQTOqHbQ/QxyR+8T
|
||||
9z9WHIH7I0YXjQWZe7WpJdAbIm7Ne3KYlRKCZ2+B+Hy4PsA8q6LBLkVtfhrQ2g0M
|
||||
Hb2EN9xa+SaKHO3kXF4EvPTHWefBdyOWFIhvZK8jgjJyo18qHLec0MZ6dAizVipq
|
||||
UNR2UMPQRBPQU7E9a47dhdCPq3rnmeAvWoVr9W4qsZLAcQIzOBaIfGINEltBShlo
|
||||
7LipKc2NI0raOmb/iVwnhivfLHez+6eQzL9bUgdvAgMBAAGjQjBAMB0GA1UdDgQW
|
||||
BBSU6Apj61sQcH6066OzaXPGn8VUlzAfBgNVHSMEGDAWgBT88rlO1zQfeuFsLYIz
|
||||
XLPaTQBaQjANBgkqhkiG9w0BAQsFAAOCAQEADTPpf6GUrUxXe99x/yp1nCwR6d9h
|
||||
lsoDN9bmppgL+UHqVQaPS91sxJC3/6e4KyhGjMkessCOaVvmJUxj71wiGtgHqbNE
|
||||
TJSv/ejCCmhsZTIvonzgpTzXK8BCkBagrtdFdt62wNqrBEqeYU32Vhpub1WTjwbA
|
||||
SCmyVKBHwDonkN/9fkhqhX3190hx9FEWU4cltNpGRCyHuTEagb/NmPt77War9USk
|
||||
P5YZFYXauKtdDSh7H5bPM9DpKVeJVcvP0yesiolw6QVq7qGwT9j+L6XAFbtRvErw
|
||||
ZE0g/5MMvSIdhuMAGruzzCUgf8Tq4zGBtiepxpPTPiTE6o8LhHh9j1HwcQ==
|
||||
-----END CERTIFICATE-----
|
||||
@@ -0,0 +1,28 @@
|
||||
-----BEGIN PRIVATE KEY-----
|
||||
MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDVP/W7/eUcOw4z
|
||||
V4phy+K43Ic2hZxmPOhK7EpOzHlMJz5/8PpSSPCMzZ7VsVW/4puuRElaZ99PrJNa
|
||||
0jkpv8MqIaJayIj8B9KA7H3V3TSI/hQeWgf4GP3akFOJfJL8kzaYpcy48ynVIbXV
|
||||
YWKuG8++G/wC1Dh15KTHZC7ah8xFaRZz96n333PW0j7Pe8kdxryzpXuTKQ5QMHiR
|
||||
U0bcB/zs3d0E4sx1RfJlHHBpqdfx1HtLXMPQACFdL3f11kBypRmQeZPcF00z6Ngx
|
||||
NB3iF6xsK4oDtXVt4SGscfgxKIaxzvuHpJG851h/rw6WdVL/rRRIf8ecbUrEOtmP
|
||||
Yu8vd7a3AgMBAAECggEAYaEqq6qNneMbmT3WyPdDEUdFUBzTgasY3lRXoMPUNJ0y
|
||||
6/gzYkCqgIwSz9qkW3kvtRTmUFGF10A3JjlgmlCE1WEYp19v95LNOOEMq0DesGlC
|
||||
ZLLrOxaWAd5ZoHQ8Bw6OzEv78iDBYiZQzSQMvZFWBr9hHRpzzuWi2vZuzPWm+49O
|
||||
odlmsKbdAtHsgWpOrVGswkZuzWMUw7K0f9wicZsRjwBPnqifo4hVwpOHcGJ9O+DF
|
||||
vpef9kSUAj3hpYmRreEEGZ/Jl/58klfcdIQLIuQSx+UgNBL5S/oyKEo+DuWgBuyW
|
||||
NdhUsv/atj7EuU1eWnc1XdCysnyjUpH/SrGMD+GuwQKBgQD5vneVck2BjOxTCoZv
|
||||
g9+9FVsoZws6t3r0olL+IhymnRy2oovuBxfJLfpkDo3GKCevkbY9Aoeulozk4yU5
|
||||
GwdPzkbUnTKHGXnLkzGrkRojX+IB2jDlY55jlTuCsfJMZ3yvGvhXf13XIQl1SE9I
|
||||
JGmi0DGi8fDPH0etBkbB0AgnfwKBgQDal3d5oLkuK5nRzZGotwLdLsxqJH1eaKBJ
|
||||
G5od8rJZZkwzzjfk+1ZRzcQ2ByLqYgr6Nsn/q62reVE2YlrTeKFJV/TPWzhIOq6K
|
||||
AM7hhFxmKyyxNXhMeVqux575s70dI8Au/BgnttN7YRdtWMdn/s/z73/dT0QEvxTP
|
||||
HoTK5ilMyQKBgQCU2d4Cd9cUMP8l228XBh2TYCgt44TA4Vzqc9lNWN2EvL3BaQ5H
|
||||
t3iI0tubSUVc5tAIh6t7n4dpGpgtT+j+qUppWYPD81GLTjbWjAudu2U90kctXXOp
|
||||
NP/RUL/gfNjyive4kjWUSPiQYUN24LtIP1Oq07XR7aved0FMMiJ4H9rMVwKBgQCc
|
||||
YGdUV6qiYQa1lL5zWBlwah5KgLg/ZdHk+x4R9qGoWwqAtTI/WZ6y/uUzUX+k9Wat
|
||||
Aa0YfpTLawqyQUKArneTpJy6CqQE6BYdG97kbnA7lv9t9raM3vQEvUH5mJ/dzMmb
|
||||
0zTklGJOjXLZAv4EY8IY3Gk4xY//ZUNZuJd/H5DEIQKBgQCryQrh/KBWSylx+LKX
|
||||
OdLDz/JRSOPuBt+X8IlOGL01cVnh2ZdNZ4vWX8+vFdgeoRmYUtyeHf7+jWddkT9R
|
||||
jCAl8qh3CHiJ2tXezvdzQMjxGvDsC+ntRirOLyXLvHwvnpU1gBUNrnWzMbNrInw1
|
||||
GGTIzCnewsYdGchVXS97ERxp0g==
|
||||
-----END PRIVATE KEY-----
|
||||
@@ -0,0 +1,20 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDSzCCAjOgAwIBAgIUXRaBjAmvzh9Z4NPrGcV/YwGPjgEwDQYJKoZIhvcNAQEL
|
||||
BQAwNTEOMAwGA1UECwwFV2F6dWgxDjAMBgNVBAoMBVdhenVoMRMwEQYDVQQHDApD
|
||||
YWxpZm9ybmlhMB4XDTI2MDgwNDA5MTg1N1oXDTM2MDgwMTA5MTg1N1owNTEOMAwG
|
||||
A1UECwwFV2F6dWgxDjAMBgNVBAoMBVdhenVoMRMwEQYDVQQHDApDYWxpZm9ybmlh
|
||||
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1T/1u/3lHDsOM1eKYcvi
|
||||
uNyHNoWcZjzoSuxKTsx5TCc+f/D6UkjwjM2e1bFVv+KbrkRJWmffT6yTWtI5Kb/D
|
||||
KiGiWsiI/AfSgOx91d00iP4UHloH+Bj92pBTiXyS/JM2mKXMuPMp1SG11WFirhvP
|
||||
vhv8AtQ4deSkx2Qu2ofMRWkWc/ep999z1tI+z3vJHca8s6V7kykOUDB4kVNG3Af8
|
||||
7N3dBOLMdUXyZRxwaanX8dR7S1zD0AAhXS939dZAcqUZkHmT3BdNM+jYMTQd4hes
|
||||
bCuKA7V1beEhrHH4MSiGsc77h6SRvOdYf68OlnVS/60USH/HnG1KxDrZj2LvL3e2
|
||||
twIDAQABo1MwUTAdBgNVHQ4EFgQU/PK5Ttc0H3rhbC2CM1yz2k0AWkIwHwYDVR0j
|
||||
BBgwFoAU/PK5Ttc0H3rhbC2CM1yz2k0AWkIwDwYDVR0TAQH/BAUwAwEB/zANBgkq
|
||||
hkiG9w0BAQsFAAOCAQEABqYTJq5koRr//p3FkVKvB+zG+DBpklr5PH4T3LLT5kS3
|
||||
dBOP3bzMBc688io7sJGMF4+pCCklJDdIjJniz3GWhYgl5fddR5NQhr3w9OwXpYul
|
||||
+zl4BBzIlGLzEnQaDjq/LqA4hpPC0zw4EeHPpMdrKrVlb0ytwgxYis+/ih5zZ5U2
|
||||
qsStB9VOXOJLJuxB+1F0tESnSbC2m5DoyQ1H1Xvf5FuMVRqJE5B+AFjn7FBchI5C
|
||||
sa3YV/VAsq/be0H6nR81SjSEXKBcpx/4SiEzaII5qZWzSptTHIWonI4D+YSC2U5e
|
||||
Fcn+swamrdfbR/b4y+PePivO3FUfbFPh7NWNWWWuQA==
|
||||
-----END CERTIFICATE-----
|
||||
@@ -0,0 +1,28 @@
|
||||
-----BEGIN PRIVATE KEY-----
|
||||
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCZcezA682KN3ll
|
||||
Mo0uV7Nyy2xpDKsf7HQfYvZgGcaFMCtpCfF15qsIj/MQwST14s3tyW2KpR2dyXtN
|
||||
/akihNS39g0OFx4R9eeSDQUWFkb9DBAXxewWBW/9shxCpCieQ3kv/eH35Uh4NXcr
|
||||
mpdd4hiF1SZrMqhTMoREquIKrUVG1XG9CHjArGuH0gpEI86RzNGoeLqvzbBKjWR8
|
||||
OjgKSEHnsrrU8bK7+b1NrjyGriBH2nhLhaepH6q27IDny7WsLHrmFFE7Ah+03taQ
|
||||
uzDGEM4ZpWL2s7mFlyWgPrFdOWY8hJmke8kliZqoZq3RUgPnQ1aLs1DZWOtAF2eD
|
||||
7eIV5AprAgMBAAECggEAOz1Z53NB45IeKl0VV2Zhb7isbnQHHuiFPlbRAnIBDAt4
|
||||
PvGpSFjZABG/B+FhWRKKaTqCMWwknnWaRpZfNWXtz+XMzXtMTyfOErs3EvtfxbLi
|
||||
BaOSTUAlJ98a/PluewdWopoUIsXgsBQIIYvp00OGLykGz4z7oj8XBIGqie+yFrGY
|
||||
wNmbkj11Fr82Lxk5ECebUt9VS+RTeSQri2Q3S6nJ//xsyVz419MeoQosjvk8bGy4
|
||||
ZF5BP42sH5/Xr55SZvGSlMpR3Ai/ZWJJ/ziQ13ynVnx+/1ursIlOlXnaf1K0ZarP
|
||||
HpzMED/iMm9KHVbGsuAxckYUWS6QdwVpEyAYMrKjXQKBgQDMJXujbpQgX/GZBays
|
||||
IeXDFVkpWDKKq1eyLjrFemRvugJsgq0w78powlh/esl0ywJT1zWXwIIrobNV+eUV
|
||||
dP98mbMv2OfMb8+6gJw+vz7x/4bK6TbtwHQNqkPAJ27VWMJIC2OSEKSJkCVp9pkI
|
||||
SNcFxNzpRkQEYBNAT5boWnuwHQKBgQDAa5vx/dO4gPUZUhmpuxuW9c6yts4KsC0Y
|
||||
JtA3A5FiFWvmjbP60NMI1weNATshCBoEcK8YFLM2flgpNaroygISmK4Z9UXVUeG2
|
||||
ImX7rHDkDvNw4eXE/nXkkZxMhzQat9Mged3Fnj8ywQh2VOiMD8FzMsp/4qkRakzE
|
||||
1k0ywlMuJwKBgQC3vXzciihUQ0aGPe8+Nnw/67UGW1WSLcmOm8FWAGTpknegBrWu
|
||||
+AQr6dARXQh5UEbWAzs/TItcjfuFhJfFijpxgT0f8ZAgFvrWl+8JIsSatyww8Vr4
|
||||
/mD186trBZLh/zNN+MIzszsEfXLPPp5aMIUnshpK821AquBo37mpg9cTmQKBgHMF
|
||||
IB/EMbXdaCVtnSeHUBOp9ZeAjKN48ku4j8gC2vm9glU7qTUpdKyZFMtly/mPxTWY
|
||||
QiHr5cCSP5LKoNIsRpblK1Ua91ZvbrOX1kxdpNG+WijE77sUvFYX8E0SmMPL1Gla
|
||||
T4XcdTyahLtvP97RYDrDRqaxT4y4dRFIZLcNz/kLAoGBAMZOVp1eOppL/btFwFUz
|
||||
85PqkrfCshaqGR+DarQaXY9q0pijX57MD3kG4d61Fe/ZDglvtuMPOfa/6UVqQ0xg
|
||||
Zo+4VeqV7MuESERXoQJXY/EuJU2SQoroRuf/9WvuP6fTRZBiOcKHGQ24Xnhq00bZ
|
||||
jfiJvUDtVX2P2Zq+b9MjUda7
|
||||
-----END PRIVATE KEY-----
|
||||
@@ -0,0 +1,22 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDlTCCAn2gAwIBAgIUaUXeUZypaWNhAf4NeHIx+WU3/iAwDQYJKoZIhvcNAQEL
|
||||
BQAwNTEOMAwGA1UECwwFV2F6dWgxDjAMBgNVBAoMBVdhenVoMRMwEQYDVQQHDApD
|
||||
YWxpZm9ybmlhMB4XDTI2MDgwNDA5MTg1N1oXDTM2MDgwMTA5MTg1N1owXDELMAkG
|
||||
A1UEBhMCVVMxEzARBgNVBAcMCkNhbGlmb3JuaWExDjAMBgNVBAoMBVdhenVoMQ4w
|
||||
DAYDVQQLDAVXYXp1aDEYMBYGA1UEAwwPd2F6dWguZGFzaGJvYXJkMIIBIjANBgkq
|
||||
hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmXHswOvNijd5ZTKNLlezcstsaQyrH+x0
|
||||
H2L2YBnGhTAraQnxdearCI/zEMEk9eLN7cltiqUdncl7Tf2pIoTUt/YNDhceEfXn
|
||||
kg0FFhZG/QwQF8XsFgVv/bIcQqQonkN5L/3h9+VIeDV3K5qXXeIYhdUmazKoUzKE
|
||||
RKriCq1FRtVxvQh4wKxrh9IKRCPOkczRqHi6r82wSo1kfDo4CkhB57K61PGyu/m9
|
||||
Ta48hq4gR9p4S4WnqR+qtuyA58u1rCx65hRROwIftN7WkLswxhDOGaVi9rO5hZcl
|
||||
oD6xXTlmPISZpHvJJYmaqGat0VID50NWi7NQ2VjrQBdng+3iFeQKawIDAQABo3Yw
|
||||
dDAfBgNVHSMEGDAWgBT88rlO1zQfeuFsLYIzXLPaTQBaQjAJBgNVHRMEAjAAMAsG
|
||||
A1UdDwQEAwIE8DAaBgNVHREEEzARgg93YXp1aC5kYXNoYm9hcmQwHQYDVR0OBBYE
|
||||
FAMTHGTK6fnv6diwU536UPAmECzwMA0GCSqGSIb3DQEBCwUAA4IBAQBG4V1+29CI
|
||||
Ir28WZuoMCzW3+HVViKC1ZVLyNFzfF/6k+64Oax9VDE9bn+cvuECfcud5KoZiGsB
|
||||
vDBHaYC88D90sdMbfdP1XAB2+ZXNiZGja/zqb+13N//pUWkNRbVqnvWoVaRuPD55
|
||||
XQXDwxzztRPv1noy1jPou8hyybAC74IKYbjO5OyYgOhj0sWf94rf74JnMoJJfflp
|
||||
jKF79J3xBdJIptMh5gckijaHO36Wa9cmWoWBGb4/lEqq+TGA6y3ynd/DT2iypHgf
|
||||
9jZFc9fNP1abwVbFQnDYY3gODjTGN22AT1TUoCZ0t3RMVsNyfwpoXIwuVGZBmlWq
|
||||
UPMN48jNLSFl
|
||||
-----END CERTIFICATE-----
|
||||
@@ -0,0 +1,28 @@
|
||||
-----BEGIN PRIVATE KEY-----
|
||||
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCa+qmbhEI/pAOe
|
||||
tMGjhjIdiCeKGWTfDbBL4bef9RP+5PIEXS7msYnvjiwu7ayOR8EoZ4UXBdxOUdq3
|
||||
Xlp2QXKqgHHs9T8KaJNny0PILMkliqTvDbccgB5DSTGcbK7iI8tI5CtdNoBMSTlK
|
||||
PaZkgcHfSYQ2u+dBrIdW5iWtS8/BhCq32Tf9scDR34xvzlV+X199yMGc1fPQ5eo4
|
||||
T0MVnx942qsBQMw1mw+2kngd83dDkGUp2jgxkWEQ7+yIG4cWrMqhEfH8XvHShBe+
|
||||
8ryvwA4x84Sy/utCd9+JsOxx4mdVmsKVyDRk4Wr6xL5XG29ECyU7Xph7PHhagP6l
|
||||
1jHqbrEbAgMBAAECggEAA3nOC6tb3a0yLuvd5erQvUHRpTLBmju73E/RJvi/pzlU
|
||||
8OJyzAC9AmQ9ZcYLLIZmdMoG6EfHiPLOsCB2cJgyLVRuea0xv0GDgNHvEL0UZnpQ
|
||||
Dakl61viPInBNOwTwLBN0weEWMsBS0oJy2T2POMoySG5zI0f+CSZmnTUm9OLSCCY
|
||||
8fX2IdeSqHiWx4Gfnc7J0OnZxq/XfdFKIL8aKKdBTlqqhsas3J6jaJsp7xjDJFP4
|
||||
3Ut0L8QLPIQFXepAOPNICgqE4bxnq6OPtG+P1yNOTCROqP9hqHJwSsTAVT1EVsAI
|
||||
EX8mLL3sjvzMWNA+yAPH4MUirRsTMMWStkErKg63CQKBgQDJPWedGS9+0urvPrBg
|
||||
KmtwEkPmAhVaFXcfVd2ZJTMYI8f2Jvuxp/qmubmR4A05Ba7E/BGH2e16zJm8EbVi
|
||||
bT/+MYH7j6nphUbP2FZ3MFjoE6BolWDhsqkYbaGajHMCaHb8Dml7blXCyKnMLquL
|
||||
E+9JYoWFJxdtYtKilXR3otXtgwKBgQDFJq8+rNNzIhDQnQC8CcX2Q7ij5Iz1DmeS
|
||||
8Nwn5/1hTQIQpmPvzSPunsEPaqByXFdUqLEt4VbM0+xuTcSbLZcB6F4icfC7FDdx
|
||||
wpGoN4hW5R7sKn+lj3FLU38IKoixeIbhZ24bTPlykSO9xYWWhWl4TOaGYjVr1Rdx
|
||||
1g5JHgUyiQKBgQC/bqlNGXND+tJAKmtP36p6XvW2LI8xNbAu39jAYVG8ifUjJKxT
|
||||
sM7QoWZ07STG9K/vdTYb/GRbZ5xq+pGIgxLX9TKIIn7oxL664zpFgXlhs6HpOwiB
|
||||
SxpuQYP0Z9zUEpn1ZqRTJX9xnr9fm5nV4G3FanJHWwt/I/3pabD0SbOljwKBgF2B
|
||||
Un6MY6Fol8cJn+6PSBfb2LfKz1vu4AreN9ypeBBtALy63g0/I3qqSvCv5rc2uqjJ
|
||||
dXdIN+3f2XQbaFMdFVDvT65Qkhd4qC9JU+IPrJdiBf+GzJHObbKHQGm0Gq7pdjdz
|
||||
4dIK+QhwdB4uj4RrdDF9b5xu+d1R7NOt7YqaNWbZAoGAcZoLBl0jcyRQzPwBKPxq
|
||||
Y5l470WBgKD4P1dSQryVccwnn5bquCqRgpn8R5DsMW3416IiekUWT2Z/Wxoek6rm
|
||||
FJV/N0Uddom/V8lkyOzhnuFmk3ymez33WyxCbrRUfdECcf0Y9usnp1zJyuxqsOwX
|
||||
2H8NK/j+9Gsi7diskZN4pKU=
|
||||
-----END PRIVATE KEY-----
|
||||
@@ -0,0 +1,22 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDkTCCAnmgAwIBAgIUaUXeUZypaWNhAf4NeHIx+WU3/h4wDQYJKoZIhvcNAQEL
|
||||
BQAwNTEOMAwGA1UECwwFV2F6dWgxDjAMBgNVBAoMBVdhenVoMRMwEQYDVQQHDApD
|
||||
YWxpZm9ybmlhMB4XDTI2MDgwNDA5MTg1N1oXDTM2MDgwMTA5MTg1N1owWjELMAkG
|
||||
A1UEBhMCVVMxEzARBgNVBAcMCkNhbGlmb3JuaWExDjAMBgNVBAoMBVdhenVoMQ4w
|
||||
DAYDVQQLDAVXYXp1aDEWMBQGA1UEAwwNd2F6dWguaW5kZXhlcjCCASIwDQYJKoZI
|
||||
hvcNAQEBBQADggEPADCCAQoCggEBAJr6qZuEQj+kA560waOGMh2IJ4oZZN8NsEvh
|
||||
t5/1E/7k8gRdLuaxie+OLC7trI5HwShnhRcF3E5R2rdeWnZBcqqAcez1Pwpok2fL
|
||||
Q8gsySWKpO8NtxyAHkNJMZxsruIjy0jkK102gExJOUo9pmSBwd9JhDa750Gsh1bm
|
||||
Ja1Lz8GEKrfZN/2xwNHfjG/OVX5fX33IwZzV89Dl6jhPQxWfH3jaqwFAzDWbD7aS
|
||||
eB3zd0OQZSnaODGRYRDv7IgbhxasyqER8fxe8dKEF77yvK/ADjHzhLL+60J334mw
|
||||
7HHiZ1WawpXINGThavrEvlcbb0QLJTtemHs8eFqA/qXWMepusRsCAwEAAaN0MHIw
|
||||
HwYDVR0jBBgwFoAU/PK5Ttc0H3rhbC2CM1yz2k0AWkIwCQYDVR0TBAIwADALBgNV
|
||||
HQ8EBAMCBPAwGAYDVR0RBBEwD4INd2F6dWguaW5kZXhlcjAdBgNVHQ4EFgQUi5Pi
|
||||
BFtookZvHby/raO/4vHTARAwDQYJKoZIhvcNAQELBQADggEBAHWCqlnLe86tlxtB
|
||||
5EZDCpVoeGZtOSzSQ6mAVirtcJKCEy0azDVA7RygRa+A5PCjrPAsjbllCCb1T5kw
|
||||
zc/DWiBwnkR6m613LPgcL8wHSE+F9MLEV5CuAXKiVCU+K8a+jDC06Ac6nQTScdSs
|
||||
cFSEt7PIcY9WFwaD+BXnSdmP7ntQisrTmtHpGtJfW466q4Z4GgYU8WU8WZn0gDBF
|
||||
M5MEXgnqvGyRgEMrj4k9SLxJ6qOWMZt34Nq8s/N9pS1AF2Gcw5qZ7/OXigPDcowZ
|
||||
JZL2RQ3ggzi3kdFHN2dP/7Yu7HpgTkwszm81H/0jly/HwgpvIy1Dj1xvypLC+gvu
|
||||
Swxa47Y=
|
||||
-----END CERTIFICATE-----
|
||||
@@ -0,0 +1,28 @@
|
||||
-----BEGIN PRIVATE KEY-----
|
||||
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDQIOxmML0eR6D6
|
||||
elqQ0AHAtOBdHbSGTOVfmShaHTlYunflWLxQxgQlVXinnR9xd7GPIykitf8aZBcR
|
||||
L7bG0xC4U9pz3dIqTfsqnkur8+1mw/o9HmiqdNnYpZm79xLY/HlCGpZ3gUuvh+uI
|
||||
Hfl/GIT95+tY1W9Q1DCMqAi4FTgkba9fuqTRY6PrpL7bvi/NsE1MEUEbf5uukclB
|
||||
/Ow6nOYZJEqxgKxbMDIGLBIxs6PE/KNfefxFjnkol5KNn/IoYcQfMf0/uu/ZCMBN
|
||||
MDOtY+s2maVWzp3nMHDjNtc6AY9m2KtSAQjbUCf3wbKesP9qajrkj8leIpxHxx3a
|
||||
q8OEBXnzAgMBAAECggEAEC6XIsTkV1/bWM49j2fU0w5dKXA/UnfVF685T3RZOphY
|
||||
7RiOn7sdpGd2V5XkVXaodAgYUS4UVRF2J6xtihzr/mDqqbqT9h0VC7W+DXMMQMK5
|
||||
CJp+Kc6nB2ysvMwTh5JtvSGDFGyVnWK0geNOvD6ETJeFGWWS35Z35d/EucdQk6hd
|
||||
goKKYOl/FOqMTzI5oQmcB5bpBF4h6edbxs+xCdVhtdl6TBcMiBVfCyCqn0H9GKWN
|
||||
6xoCIBK4sV1Hnc8ARNYoj+t6VWac5nWXBhTiYAgXzwpNsJAGf4DmFoGx3xra76J4
|
||||
fn3eajxWUqxCJWAGVGL4jbc7yVUiX2ukmJdCA3LJzQKBgQD8UYPA7NHsxnd9CXFy
|
||||
bAIYPt9C7n7uFON6oEatnlLJFRcO59ExQ1JKGB5faeJCiASpP79QiRl6MhB7wnzi
|
||||
AuqN8jSMA5SofiZGp+3HrrG0cl2RoKn4BKCjP/XrRhq7rOOPRxh21b3q4LzZfTHe
|
||||
D9aUFkjBJcWZM12uGg21jDq6fwKBgQDTKli1JYLeo3mCvrRLRbwe1dVYHgYDvFVF
|
||||
p74KFTjg8RoDKdp0lJfwmK873YQkfZ7Y6D4JwcpKceT21g7wGeOPZhYSkCEJ4dsk
|
||||
E9fdN0S5FV4HKHrByscwUIsu4g4QEM19Dwj66yHSoUbFzoQYA3hMdtHSNVpWxwp0
|
||||
yjIOvH4+jQKBgQCpVc+Vl5ofTOb+PGstvnz9ZpyRn9wBznUIZC5q8LlgiE3sS/ni
|
||||
FOtSHLOtlzMpMX3nVIgB9bDqiFT1qgYD7K8bynQnj3OiTN9FRghXnc9XafWP+YJ4
|
||||
mCpyxUc2udrRH2utSaqKflIyIte7IsFn5bs9sWLsdXwSoB177bJLqCv14wKBgCGc
|
||||
CNh0KvtCq7FqpwmgBMwnnrhStwRbMntOsomqTQ5Icap1O+b4S6KouqNdo42nTOQb
|
||||
OtyUspzcueOruF7wz+5gAj1cIVYQU6/PVLlJ9a87vmaHQ9qaas++0hhZNIHMGti/
|
||||
zt8ZE54Ru1D6iL3Ft5z8AHNjuIg9T+W81PDRgYp1AoGAPH3Ra44JM62ADGUeYgCL
|
||||
Fr9FqxR8mfv5ffjAEhJjxWSfz0z7k+sYDyhNa7VQufnA+eGDuwmMliNR5wRbpFjA
|
||||
u7TF6osGWnteiiBRN3twTPFgPb1sqenX0xpFj9GIctxyZQSkZB8TZtG+OzxkF4e/
|
||||
INPUwhYcaduu8Hqq4TVOJPg=
|
||||
-----END PRIVATE KEY-----
|
||||
@@ -0,0 +1,22 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDkTCCAnmgAwIBAgIUaUXeUZypaWNhAf4NeHIx+WU3/h8wDQYJKoZIhvcNAQEL
|
||||
BQAwNTEOMAwGA1UECwwFV2F6dWgxDjAMBgNVBAoMBVdhenVoMRMwEQYDVQQHDApD
|
||||
YWxpZm9ybmlhMB4XDTI2MDgwNDA5MTg1N1oXDTM2MDgwMTA5MTg1N1owWjELMAkG
|
||||
A1UEBhMCVVMxEzARBgNVBAcMCkNhbGlmb3JuaWExDjAMBgNVBAoMBVdhenVoMQ4w
|
||||
DAYDVQQLDAVXYXp1aDEWMBQGA1UEAwwNd2F6dWgubWFuYWdlcjCCASIwDQYJKoZI
|
||||
hvcNAQEBBQADggEPADCCAQoCggEBANAg7GYwvR5HoPp6WpDQAcC04F0dtIZM5V+Z
|
||||
KFodOVi6d+VYvFDGBCVVeKedH3F3sY8jKSK1/xpkFxEvtsbTELhT2nPd0ipN+yqe
|
||||
S6vz7WbD+j0eaKp02dilmbv3Etj8eUIalneBS6+H64gd+X8YhP3n61jVb1DUMIyo
|
||||
CLgVOCRtr1+6pNFjo+ukvtu+L82wTUwRQRt/m66RyUH87Dqc5hkkSrGArFswMgYs
|
||||
EjGzo8T8o195/EWOeSiXko2f8ihhxB8x/T+679kIwE0wM61j6zaZpVbOnecwcOM2
|
||||
1zoBj2bYq1IBCNtQJ/fBsp6w/2pqOuSPyV4inEfHHdqrw4QFefMCAwEAAaN0MHIw
|
||||
HwYDVR0jBBgwFoAU/PK5Ttc0H3rhbC2CM1yz2k0AWkIwCQYDVR0TBAIwADALBgNV
|
||||
HQ8EBAMCBPAwGAYDVR0RBBEwD4INd2F6dWgubWFuYWdlcjAdBgNVHQ4EFgQUgCtN
|
||||
4MfdT4L7AIb/7O+dYuWFRGUwDQYJKoZIhvcNAQELBQADggEBAKkf4FPQH93Auc/F
|
||||
ui2Y4df5L9PTihoKXcFfiFUb1d0fCZra96b8dTVlcQJt8PdYQOpndVQbj5J/1qLP
|
||||
/ogpe43304g46bMEhvX79z3w1ZgFmHn3TXd1pG2LO4VT6ULQ1/4J8UP4Mc8Sq+Ip
|
||||
gpSscpwNbF/9+1sGRYH2KB1KivTFqRppKX6YmK722QHqJEL2cLimUjJfvuqTfEGR
|
||||
KVNnbJPgsLOcAHtnKew82/uWl14DeoiA6gfYO1rTJSjvqWV3eE/opyTxLbxWYZFb
|
||||
YFKw8Joxp1zovoxvJ6tii9MjGo/cg3BVoxYydFklwd2CtPtnjPdGZPmdHoXPvt9L
|
||||
ziqxi0E=
|
||||
-----END CERTIFICATE-----
|
||||
@@ -0,0 +1,28 @@
|
||||
-----BEGIN PRIVATE KEY-----
|
||||
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCzLfw3OkK9yfCp
|
||||
FWxFPRwWCrFVasYmM1q5N0SQXx3aMqhfKSCeGP9cso6jvxbmPhobYJm5FIOuu/4q
|
||||
hkyMXngROxa0z/PdgEoJQCfNgnU37by73EDiiXeePyfchqoBpN7o6Fc8cojwrMyw
|
||||
aodvzG+qbaEdEer0IWw50Ae+/qJz0CEoz9vYRxiD+WoSm7svm2u1cGwrAECa3VhV
|
||||
4hUPcUa5+PS2/Y5W0IVqLPCz94uwxvsyKly4iGVC5JZ9GteG3473aZwwNnsuoPhG
|
||||
XlmwlXM4/ipYbAyUjDCyIoMbSj9l2Lemc+Bl98MOz6hwd7TxYw8yZvkHTAUdvDe/
|
||||
T0SAgjyDAgMBAAECggEABjLF7mFhkh5KsBXP2z40KTDRDvdjDvV28RXBseItyxRS
|
||||
36YVBBv4YJpSA/5URrAQK5Tykb3Q0iFGt18195UglNgDVC7Q+w2ALNKi4y/AlIub
|
||||
f80QE1RWETZ2FowzzVulY09w8Y7RMlsWKZ7UA0C7NtYU62QTu1Duc0ikyi1OnrBI
|
||||
xUjGg/EqQsJnpQGxBnDtvtN0uwOTrlAT2jx9UXqevXgbblB+I4lokrZ581+s7kJH
|
||||
1K7hrrP2Ve0KReqzduxkBepjvffNR3iDz++WkkXcIMHleY5/uH9dizitx3AAbwIw
|
||||
mTmxyCMzXox10qjqMHvT/totohKUGBiUtQocKPx2IQKBgQDdsGKuaCg/o+GZhNBd
|
||||
SN82gLyGfSufM1aGvFD0rlLJYIGhUVdCvKzpKv+mRQc2ceAOzlYH6IWcbR8+bNN9
|
||||
SWSvczRJLbuXMozz/JvteiOo8G0TGOSqHFLo6Rc1EqEuJAzxLj0q+18QjWdrtTLq
|
||||
l7zwGKscakG9tNAFpZ0SmpTB7wKBgQDO6VJM37h4LM2EvR6ls+1E12vhPBLojkw1
|
||||
KLWphE5+PiT4CR1i4pvk8/RnrwsyzN4bB5T65o89J36PFcoh5fi1ZpOwHW5t0/pA
|
||||
dfDc6+tfCoI8C9cJWhCMszaNgZviCww1ZaMFtVAvBVDb0iVHJ+/94Cz6GDk1l8VC
|
||||
x6y9Xg2yrQKBgQDcYiAH39W7RnDczBLT2cDFDv/b9w1pi4DGGumkBLSaKw1TUGie
|
||||
GLEQb0WMhmzgLB6guXD/FaHV2wlHZqpsj4y/epiM8yDc80z6tLJSR6yxoqncZU/U
|
||||
6Klnj2kZwrZnB0GyddQrKY/dBaW9hnniiwwx52QbsGpAbEKsinJ27yNZEwKBgEU6
|
||||
LU4JICgdHVoHCIT6US1SQgbm2ZCzY235w+YGnViBpE7Uhd964BvXP3OdTkrd3oX+
|
||||
oGrdzxjv6NkouitjTTYsLsei4TqfzL/adg8EZAi1dGNwtq6rUpQwtdTcg3I6rggD
|
||||
jGqxgjVpOueBRPWsuBAh/AplJmb284nnUrU9Dao1AoGBAM4ldSzN3SCst0Owc0xx
|
||||
SzlX8v9xWzsL292eRSnzDtPuvdKvyWlke8XdkC2Pi1AoVNCOFCn0bcjXtN0XLn/e
|
||||
MwF9j8h9wG7W21nCJLflUG2RXRV5fWHBvP6FhKLbQut7wJBf5EMOBPK6RkUn0Vs7
|
||||
SrT3ZxQ+uwY5q9jjMN84bJ8M
|
||||
-----END PRIVATE KEY-----
|
||||
@@ -0,0 +1,22 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDlTCCAn2gAwIBAgIUEO25S+4jYn8uga3bnRiVBbdOp7swDQYJKoZIhvcNAQEL
|
||||
BQAwNTEOMAwGA1UECwwFV2F6dWgxDjAMBgNVBAoMBVdhenVoMRMwEQYDVQQHDApD
|
||||
YWxpZm9ybmlhMB4XDTI2MDgwNDA5MTQzM1oXDTM2MDgwMTA5MTQzM1owXDELMAkG
|
||||
A1UEBhMCVVMxEzARBgNVBAcMCkNhbGlmb3JuaWExDjAMBgNVBAoMBVdhenVoMQ4w
|
||||
DAYDVQQLDAVXYXp1aDEYMBYGA1UEAwwPd2F6dWguZGFzaGJvYXJkMIIBIjANBgkq
|
||||
hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsy38NzpCvcnwqRVsRT0cFgqxVWrGJjNa
|
||||
uTdEkF8d2jKoXykgnhj/XLKOo78W5j4aG2CZuRSDrrv+KoZMjF54ETsWtM/z3YBK
|
||||
CUAnzYJ1N+28u9xA4ol3nj8n3IaqAaTe6OhXPHKI8KzMsGqHb8xvqm2hHRHq9CFs
|
||||
OdAHvv6ic9AhKM/b2EcYg/lqEpu7L5trtXBsKwBAmt1YVeIVD3FGufj0tv2OVtCF
|
||||
aizws/eLsMb7MipcuIhlQuSWfRrXht+O92mcMDZ7LqD4Rl5ZsJVzOP4qWGwMlIww
|
||||
siKDG0o/Zdi3pnPgZffDDs+ocHe08WMPMmb5B0wFHbw3v09EgII8gwIDAQABo3Yw
|
||||
dDAfBgNVHSMEGDAWgBQe9+49H4XrSFxTrm+1QJmwqBxBTzAJBgNVHRMEAjAAMAsG
|
||||
A1UdDwQEAwIE8DAaBgNVHREEEzARgg93YXp1aC5kYXNoYm9hcmQwHQYDVR0OBBYE
|
||||
FOhA2S6VZLZ+9HLvwp2q/15tWWriMA0GCSqGSIb3DQEBCwUAA4IBAQA4AcoCljOx
|
||||
HE09IZxkFk2ESNF0q0fjv6FXb5G22rZfrjNGxsle8SRy6hlBtJ2N4Tuod98wtdJP
|
||||
dNtvnZ78pc6fkQcbHuoqjJpfpwZD9AjAawvUwRQvYz/ndXw7PypNG14xUhnidhIW
|
||||
1pex6Ceao/vD4yrA8XPWA/1KmThPxiXkXgNg24XxvGz+ybUahauRmrrKdnd60nik
|
||||
0mN8txFOD/myjj6+oXw/YwRwwAvTXmarTJKs8JyZ3MWJQN2by6eTm+vqxZmRVAF9
|
||||
pWNG6pmblu6S0t9Wq8SzGAA5ilfFdETjLEx8jB4G/Fxb5TvxdNnNWuVV1pw02RJ1
|
||||
ph2lJjGORmRu
|
||||
-----END CERTIFICATE-----
|
||||
@@ -0,0 +1,28 @@
|
||||
-----BEGIN PRIVATE KEY-----
|
||||
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCxHoTdbep5b6tY
|
||||
O/ROcmLToE1HUn2JsnYLuXmJUZFlYG6Ww2+wUmcD36hmuZ8mWPDpKqW2m3O9rYE9
|
||||
H7k/FDVU+4h1ToPstlgHESNX+gbwn7iN6i2t6D3FgdAENZ7+t8UVz1hi3ClA8IzV
|
||||
pQ9PTY+ST16VhCCzKU9VvDYbcDl3IWj1kA2R7jKmYVl5vqgC8ywHpEzLUcKP+/gK
|
||||
nnJT+H8MSOjQUhBzrMkDHB1Lq4A82U9nhZWOZBeEz/KAhG/IG+lUTMH3P0IbhEwZ
|
||||
NeztJPylfjyTemOCBnXPhUbqltrfqU+lMIStPLurH2V9hr8c2aa97+/XjLnDM/bR
|
||||
aAtkWV3FAgMBAAECggEACqrG37sd8wBZtm+t8AeNkidGYDREoUVhPKWH/1AtTIi5
|
||||
QFU25cygragLsVwejKWwpKpP3qaQGu1XKkI92uGxsJORjVcUNO5qcMqEcWj6gAVu
|
||||
jQV8iMvC5KFD0O0VzUtuEDkznoiZ53JVWQye1mzaZ7pl/OU/PusO/x/dtltU6qq7
|
||||
eIQFUDCvqdZJ+XxJ6tjRx7wGqIVhdaoq87W+CzTxgBSNyWEZ+6YQ2ToiF0e0979B
|
||||
mQ/PdGmOjhzsZKvv2YiK9sTU/0yIV1zNrLLx6Vk7lYW7inb0krsScnnUSvzg2C06
|
||||
wZdmqzIuCPzkSLBjZ/AdWlRhN1virf8Ryafjw+0oQQKBgQD5zRJIL3djXpFybQHp
|
||||
hYhhXvzGtGoGCJ9yugJj9r9Wo+9JPSEMs14x/tHa7PMVCswE5xqDgdtqIRtPtQmg
|
||||
SObZ1DEOkHwWNN1o6Pfejowr95WENkN6D03JZdNuHb7+9bsyoxvrw8BaaIz1upoe
|
||||
hWmoBn13bfGso7IDaT0Pv/sicQKBgQC1g7dxLvc9oyMhHRCUxspJ8R1ppUTgMs8W
|
||||
WTDcCVxlPoMkWLIPs5dlDlgu80LxOvzskIqwOf/kFly39xvSlGQNJTBGwOHwLBtf
|
||||
XJDoJfcgBKueV7vvoVA9A4Xzuoqv74DUYJIEvAd9Ak0VkbehixSW2Q/IqRiub6AP
|
||||
P9imK1hylQKBgQCSP1ahvnB2U+pxhJJnBo+2+iahqwSbrba0M2Ss48xXzDiOt2Q/
|
||||
DFBsktSICMu0GRMjF651KbSs6N8VhlcxaR0GkO17qmmLkr3B6wsbWHeGUjhOJHrS
|
||||
3lzbOWtUf8PPf0xutAHnwT4/cBB+2RXcIp2eCtav8kVYnqncx2NBclN0cQKBgH1t
|
||||
JQd68rGO1yl8kgacTxBFIpPr9eoOcfb5br+9YDE9vxUQjQo4iTb1cI4Q3oMexcMa
|
||||
JhucGGyd3zfn8zvR+kjzF6bshbOWZtvAdQlVoqxnTce+zEjL6Uwf8SH4Fvl3wEgA
|
||||
6yWGYI5LVsS+ymtAVdve5f88iaePzsR609QPQ7D5AoGAMp3Vo7xWVV+4OPAc1nuS
|
||||
Usl4XRhw5q4VcJme+7TP2x++cH84f3eDFTLDbsKHe16hRRwRwSUjLopkpu+Cm4/a
|
||||
04dtCy2qmt5FqG8OFBjwMUBiw8dflym7RzWmxCrhB87PeMKkOVgE8w21T6+olvDG
|
||||
w7B2JcALXtaQJ4DAJDUMbgQ=
|
||||
-----END PRIVATE KEY-----
|
||||
@@ -0,0 +1,22 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDkTCCAnmgAwIBAgIUEO25S+4jYn8uga3bnRiVBbdOp7kwDQYJKoZIhvcNAQEL
|
||||
BQAwNTEOMAwGA1UECwwFV2F6dWgxDjAMBgNVBAoMBVdhenVoMRMwEQYDVQQHDApD
|
||||
YWxpZm9ybmlhMB4XDTI2MDgwNDA5MTQzMloXDTM2MDgwMTA5MTQzMlowWjELMAkG
|
||||
A1UEBhMCVVMxEzARBgNVBAcMCkNhbGlmb3JuaWExDjAMBgNVBAoMBVdhenVoMQ4w
|
||||
DAYDVQQLDAVXYXp1aDEWMBQGA1UEAwwNd2F6dWguaW5kZXhlcjCCASIwDQYJKoZI
|
||||
hvcNAQEBBQADggEPADCCAQoCggEBALEehN1t6nlvq1g79E5yYtOgTUdSfYmydgu5
|
||||
eYlRkWVgbpbDb7BSZwPfqGa5nyZY8Okqpbabc72tgT0fuT8UNVT7iHVOg+y2WAcR
|
||||
I1f6BvCfuI3qLa3oPcWB0AQ1nv63xRXPWGLcKUDwjNWlD09Nj5JPXpWEILMpT1W8
|
||||
NhtwOXchaPWQDZHuMqZhWXm+qALzLAekTMtRwo/7+AqeclP4fwxI6NBSEHOsyQMc
|
||||
HUurgDzZT2eFlY5kF4TP8oCEb8gb6VRMwfc/QhuETBk17O0k/KV+PJN6Y4IGdc+F
|
||||
RuqW2t+pT6UwhK08u6sfZX2GvxzZpr3v79eMucMz9tFoC2RZXcUCAwEAAaN0MHIw
|
||||
HwYDVR0jBBgwFoAUHvfuPR+F60hcU65vtUCZsKgcQU8wCQYDVR0TBAIwADALBgNV
|
||||
HQ8EBAMCBPAwGAYDVR0RBBEwD4INd2F6dWguaW5kZXhlcjAdBgNVHQ4EFgQUlR0c
|
||||
nRgkuXrBwGz/x9wVv84qs/QwDQYJKoZIhvcNAQELBQADggEBALnKkXTP+5NxVaPN
|
||||
lR4+abl3qFNKj+oYoHAvX+TjrTzj26dF8ZvUgXNRTvgGJd8UyKe6hvGtfJOZWXtx
|
||||
bDimfBDCmHlWjgmonHLCyDmJMOsjcy31ui0hQD8YvP/fUKkbxzcq3gse78Ox5q8g
|
||||
qZhpnkAphOH4Uko2EIID4q+zAvXYO6K0YjPIqSm9amWDp1Xa5spzno9yE4HKgyci
|
||||
xJlaGckXAr1bxjXRTpIczSaqJJyg5GuiaU70HNDnFZiVqzW7PjOONNtJHo+2lTf8
|
||||
m7qRw4pXkOBv3J4m1GRkJ3krqQFRkxroKWIW3cm1mozvcueh9fpEdswLUYfwGCxt
|
||||
jvGLn0Q=
|
||||
-----END CERTIFICATE-----
|
||||
@@ -0,0 +1,28 @@
|
||||
-----BEGIN PRIVATE KEY-----
|
||||
MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQDkOPY3id/evBCe
|
||||
CKRwAOOy5f459a1Pdaa9wgT9pV9AWcBMVNNRTWFj8hs/SkMPD7YAe9gcToTkRqWW
|
||||
JEWt0ISeuR9hZ1S0P/mRjdvZdqDqRN6+RioznEw+pB3E/FX5d0G4U5trGbSjQGz0
|
||||
fjnmFLEQUg2SkGRz9+4cxyIyiyZvgxqatK4G7XrJouZazHt/C+e/nPxmYGPgLkOP
|
||||
hPxuPBBRRRWswJ0t7zkj6wjxDNsQhz/WbHO5H0/7KB7larI2E30RjyjWZhxJBY1e
|
||||
HXT+TMxTlvEzMefCSf4TblozYRD9qS5FpvjjpieL9tAHjepDjseQQRCM3e+EvDJJ
|
||||
NCbkuWuRAgMBAAECggEADOfTtIxNZpEH94fRlKvYNHOhDrH/3PBwP2bLVXSWkFMC
|
||||
9s4NLRnNGhPEyq1uYVmoFxrpu6AND8OW9YiTkCKsfTVGuwFW3uKHQF3fQsrciqLe
|
||||
XbAmDskV3qz1KgCC9Bp0UvIXZdUMS/cGskS5DXO6F4wsTE9x/sTUaDgyjN0ljUSn
|
||||
U+cWNtWx8R34nZPdpJekYRGoidFlDgOzPK0U3CNohDrUDKNozp1BXQ3IIq3D3cvR
|
||||
5EyzwwXZG0eDsvRcgfEt5e5RP652u1XBEJhFW2WGraK34P5jtdXpNAKt7JaIJAC3
|
||||
79ad+OO6dptR1W4LcaET/tVJjxINPSWrFoiFgg9igQKBgQDzwmjr/T0FvZ4+ixup
|
||||
LbSs/uKS30hrPPuSXRO02kl60eaOoEpHamMwE6qU/oZah9fnazj8HY+XnRMqD5b0
|
||||
fKgKpPnW0qKQP2gTcbDSejC77iyErNZLROm/io7XDhitT7oMd43MMcapgHej5m6i
|
||||
lShZ79u/dS8HkunNYPisbfg8CQKBgQDvrtIsj23QLDbS8lWOLQ43hrNkun3ebdF7
|
||||
tI/YAMtw6WD+uijeZZkGALMJ83/VQLprVm/WH81T/VS3Uv2jl5fxlm3daZp8lAMh
|
||||
V62SGUFcTQELstM0Tkqe1Wsw2zNW7qtNbGKMMYxePwsXoXnZUYY6yrh1ZwK+jbxF
|
||||
8lg2LOslSQKBgD+NvYth0Eox4RNPc5vNZeEA55QBkUEcej7z85Jgo23ZUjJ3ikZK
|
||||
b6f2SLBmGCN8bYdRxl69WlXeR0PdIq+F3M5Bqz4eVvIjBgCj0MVfxFsLQyIoagrf
|
||||
4c3l004wx7BQLCLZ/OdzRuekrgzWpJvRJd8lEXc+l09zN3Ary0oxtdn5AoGAE9kD
|
||||
OINsEYgHxjIhGZPrkHeMFXRIBgpMBZVvL/Do5+G7kXxy8++v20pliRZr6Inipg7T
|
||||
VgTuKN1ajY/Gxyw/fdb6JBKho11SYQl0qxuCSRVrV7+oM7WkAkEkDjioqLM85j1q
|
||||
b7eOqyNHVN6fS3qvxeCRo88y7/qms5gc6+eOVVkCgYAHOqBwVXFMFEXuBGtB1eVW
|
||||
Zuj84RpA/VZbZpiGpinBHbp7dYL/Sl43Ff04jnBEIa+ziSShtbN2eZyqWGKAlepr
|
||||
p2yIZTdpYqq0i1d2+2NI8Ed8GbQmrwy48uqlFqsKACX2ixSkzkYliA0By15wsTD9
|
||||
/WoHpR3j0H4VeaBS8HNygQ==
|
||||
-----END PRIVATE KEY-----
|
||||
@@ -0,0 +1,22 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDkTCCAnmgAwIBAgIUEO25S+4jYn8uga3bnRiVBbdOp7owDQYJKoZIhvcNAQEL
|
||||
BQAwNTEOMAwGA1UECwwFV2F6dWgxDjAMBgNVBAoMBVdhenVoMRMwEQYDVQQHDApD
|
||||
YWxpZm9ybmlhMB4XDTI2MDgwNDA5MTQzMloXDTM2MDgwMTA5MTQzMlowWjELMAkG
|
||||
A1UEBhMCVVMxEzARBgNVBAcMCkNhbGlmb3JuaWExDjAMBgNVBAoMBVdhenVoMQ4w
|
||||
DAYDVQQLDAVXYXp1aDEWMBQGA1UEAwwNd2F6dWgubWFuYWdlcjCCASIwDQYJKoZI
|
||||
hvcNAQEBBQADggEPADCCAQoCggEBAOQ49jeJ3968EJ4IpHAA47Ll/jn1rU91pr3C
|
||||
BP2lX0BZwExU01FNYWPyGz9KQw8PtgB72BxOhORGpZYkRa3QhJ65H2FnVLQ/+ZGN
|
||||
29l2oOpE3r5GKjOcTD6kHcT8Vfl3QbhTm2sZtKNAbPR+OeYUsRBSDZKQZHP37hzH
|
||||
IjKLJm+DGpq0rgbtesmi5lrMe38L57+c/GZgY+AuQ4+E/G48EFFFFazAnS3vOSPr
|
||||
CPEM2xCHP9Zsc7kfT/soHuVqsjYTfRGPKNZmHEkFjV4ddP5MzFOW8TMx58JJ/hNu
|
||||
WjNhEP2pLkWm+OOmJ4v20AeN6kOOx5BBEIzd74S8Mkk0JuS5a5ECAwEAAaN0MHIw
|
||||
HwYDVR0jBBgwFoAUHvfuPR+F60hcU65vtUCZsKgcQU8wCQYDVR0TBAIwADALBgNV
|
||||
HQ8EBAMCBPAwGAYDVR0RBBEwD4INd2F6dWgubWFuYWdlcjAdBgNVHQ4EFgQUc9d5
|
||||
sFzgRCGk70iw5/qNrH98sp0wDQYJKoZIhvcNAQELBQADggEBAITNql9jvgHTACd+
|
||||
4nSlqmAejCoBGwoZmfJqOLlk2NXOWLNEuO8rm1cNv03vBY6UwlgvHFNXeCBEw1Sf
|
||||
WHG0xTrQYgBJrW2DL5HX7OL9z4BPekzdTC01HBWG+ueinvS6Rzy5vImxW+XmYjsm
|
||||
coCQnXbw3os8SsS7Kr1IsJRhVmdTHs2gmnuTjNjE3Pmyxb2E82qP/BiIM/lEH+IB
|
||||
ONwbSUVP3RvVQvFTP3seWDfA9fU6mXC/KujmmSmnissCxg+bEJkMMqwYFDfefFio
|
||||
NWb4oxNB0HguolYydi4PnP3kTImr6dWpqYeiOY8r5sEddUKrmZ5BtY0u6VkRVHJ8
|
||||
PhcR5cA=
|
||||
-----END CERTIFICATE-----
|
||||
@@ -0,0 +1,164 @@
|
||||
version: '3.8'
|
||||
|
||||
services:
|
||||
wazuh.indexer:
|
||||
image: wazuh/wazuh-indexer:${WAZUH_VERSION}
|
||||
container_name: wazuh.indexer
|
||||
hostname: wazuh.indexer
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "9200:9200"
|
||||
environment:
|
||||
- "OPENSEARCH_JAVA_OPTS=-Xms1g -Xmx1g"
|
||||
- "OPENSEARCH_INITIAL_ADMIN_PASSWORD=${INDEXER_PASSWORD}"
|
||||
ulimits:
|
||||
memlock:
|
||||
soft: -1
|
||||
hard: -1
|
||||
nofile:
|
||||
soft: 65536
|
||||
hard: 65536
|
||||
volumes:
|
||||
- wazuh-indexer-data:/var/lib/wazuh-indexer
|
||||
- ./config/wazuh_indexer_ssl_certs/root-ca.pem:/usr/share/wazuh-indexer/certs/root-ca.pem
|
||||
- ./config/wazuh_indexer_ssl_certs/wazuh.indexer-key.pem:/usr/share/wazuh-indexer/certs/wazuh.indexer.key
|
||||
- ./config/wazuh_indexer_ssl_certs/wazuh.indexer.pem:/usr/share/wazuh-indexer/certs/wazuh.indexer.pem
|
||||
- ./config/wazuh_indexer_ssl_certs/admin.pem:/usr/share/wazuh-indexer/certs/admin.pem
|
||||
- ./config/wazuh_indexer_ssl_certs/admin-key.pem:/usr/share/wazuh-indexer/certs/admin-key.pem
|
||||
- ./config/wazuh_indexer/wazuh.indexer.yml:/usr/share/wazuh-indexer/opensearch.yml
|
||||
networks:
|
||||
- lab-network
|
||||
|
||||
wazuh.manager:
|
||||
image: wazuh/wazuh-manager:${WAZUH_VERSION}
|
||||
container_name: wazuh.manager
|
||||
hostname: wazuh.manager
|
||||
restart: unless-stopped
|
||||
ulimits:
|
||||
memlock:
|
||||
soft: -1
|
||||
hard: -1
|
||||
nofile:
|
||||
soft: 655360
|
||||
hard: 655360
|
||||
ports:
|
||||
- "1514:1514"
|
||||
- "1515:1515"
|
||||
- "514:514/udp"
|
||||
- "55000:55000"
|
||||
environment:
|
||||
- INDEXER_URL=https://wazuh.indexer:9200
|
||||
- INDEXER_USERNAME=admin
|
||||
- INDEXER_PASSWORD=${INDEXER_PASSWORD}
|
||||
- FILEBEAT_SSL_VERIFICATION_MODE=full
|
||||
- SSL_CERTIFICATE_AUTHORITIES=/etc/ssl/root-ca.pem
|
||||
- SSL_CERTIFICATE=/etc/ssl/filebeat.pem
|
||||
- SSL_KEY=/etc/ssl/filebeat.key
|
||||
- API_USERNAME=wazuh-wui
|
||||
- API_PASSWORD=${API_PASSWORD}
|
||||
volumes:
|
||||
- wazuh_api_configuration:/var/ossec/api/configuration
|
||||
- wazuh_etc:/var/ossec/etc
|
||||
- wazuh_logs:/var/ossec/logs
|
||||
- wazuh_queue:/var/ossec/queue
|
||||
- wazuh_var_multigroups:/var/ossec/var/multigroups
|
||||
- wazuh_integrations:/var/ossec/integrations
|
||||
- wazuh_active_response:/var/ossec/active-response/bin
|
||||
- wazuh_agentless:/var/ossec/agentless
|
||||
- wazuh_wodles:/var/ossec/wodles
|
||||
- filebeat_etc:/etc/filebeat
|
||||
- filebeat_var:/var/lib/filebeat
|
||||
- ./config/wazuh_indexer_ssl_certs/root-ca-manager.pem:/etc/ssl/root-ca.pem
|
||||
- ./config/wazuh_indexer_ssl_certs/wazuh.manager.pem:/etc/ssl/filebeat.pem
|
||||
- ./config/wazuh_indexer_ssl_certs/wazuh.manager-key.pem:/etc/ssl/filebeat.key
|
||||
depends_on:
|
||||
- wazuh.indexer
|
||||
networks:
|
||||
- lab-network
|
||||
|
||||
wazuh.dashboard:
|
||||
image: wazuh/wazuh-dashboard:${WAZUH_VERSION}
|
||||
container_name: wazuh.dashboard
|
||||
hostname: wazuh.dashboard
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "443:5601"
|
||||
environment:
|
||||
- INDEXER_USERNAME=admin
|
||||
- INDEXER_PASSWORD=${INDEXER_PASSWORD}
|
||||
- WAZUH_API_URL=https://wazuh.manager
|
||||
- DASHBOARD_USERNAME=${DASHBOARD_USERNAME}
|
||||
- DASHBOARD_PASSWORD=${DASHBOARD_PASSWORD}
|
||||
- API_USERNAME=wazuh-wui
|
||||
- API_PASSWORD=${API_PASSWORD}
|
||||
volumes:
|
||||
- ./config/wazuh_indexer_ssl_certs/wazuh.dashboard.pem:/usr/share/wazuh-dashboard/certs/wazuh.dashboard.pem
|
||||
- ./config/wazuh_indexer_ssl_certs/wazuh.dashboard-key.pem:/usr/share/wazuh-dashboard/certs/wazuh.dashboard-key.pem
|
||||
- ./config/wazuh_indexer_ssl_certs/root-ca.pem:/usr/share/wazuh-dashboard/certs/root-ca.pem
|
||||
- ./config/wazuh_dashboard/opensearch_dashboards.yml:/usr/share/wazuh-dashboard/config/opensearch_dashboards.yml
|
||||
- ./config/wazuh_dashboard/wazuh.yml:/usr/share/wazuh-dashboard/data/wazuh/config/wazuh.yml
|
||||
- wazuh-dashboard-custom:/usr/share/wazuh-dashboard/plugins/wazuh/public/assets/custom
|
||||
depends_on:
|
||||
- wazuh.indexer
|
||||
- wazuh.manager
|
||||
networks:
|
||||
- lab-network
|
||||
|
||||
ubuntu-gui:
|
||||
image: lscr.io/linuxserver/webtop:ubuntu-xfce
|
||||
container_name: ubuntu-gui
|
||||
hostname: ubuntu-gui
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "3000:3000"
|
||||
environment:
|
||||
- PUID=1000
|
||||
- PGID=1000
|
||||
- TZ=Europe/Paris
|
||||
volumes:
|
||||
- ./data/ubuntu_gui:/config
|
||||
networks:
|
||||
- lab-network
|
||||
|
||||
windows:
|
||||
image: dockurr/windows
|
||||
container_name: windows
|
||||
hostname: windows
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "8006:8006"
|
||||
- "3389:3389/tcp"
|
||||
- "3389:3389/udp"
|
||||
environment:
|
||||
- VERSION=${WIN_VERSION}
|
||||
- RAM_SIZE=${WIN_RAM}
|
||||
- CPU_CORES=${WIN_CPU}
|
||||
- ADAPTER=e1000e
|
||||
devices:
|
||||
- /dev/kvm
|
||||
cap_add:
|
||||
- NET_ADMIN
|
||||
volumes:
|
||||
- ./data/windows:/storage
|
||||
networks:
|
||||
- lab-network
|
||||
|
||||
volumes:
|
||||
wazuh-indexer-data:
|
||||
wazuh_api_configuration:
|
||||
wazuh_etc:
|
||||
wazuh_logs:
|
||||
wazuh_queue:
|
||||
wazuh_var_multigroups:
|
||||
wazuh_integrations:
|
||||
wazuh_active_response:
|
||||
wazuh_agentless:
|
||||
wazuh_wodles:
|
||||
filebeat_etc:
|
||||
filebeat_var:
|
||||
wazuh-dashboard-custom:
|
||||
|
||||
networks:
|
||||
lab-network:
|
||||
driver: bridge
|
||||
name: lab-network
|
||||
@@ -0,0 +1,23 @@
|
||||
version: '3.8'
|
||||
|
||||
services:
|
||||
wazuh-agent:
|
||||
image: ubuntu:22.04
|
||||
container_name: wazuh-agent
|
||||
hostname: wazuh-agent
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- ./auth.log:/var/log/auth.log:ro
|
||||
environment:
|
||||
- WAZUH_MANAGER_IP=${WAZUH_MANAGER_IP}
|
||||
command: >
|
||||
bash -c "
|
||||
apt-get update &&
|
||||
apt-get install -y curl apt-transport-https gnupg &&
|
||||
curl -s https://packages.wazuh.com/key/GPG-KEY-WAZUH | apt-key add - &&
|
||||
echo 'deb https://packages.wazuh.com/4.x/apt/ stable main' > /etc/apt/sources.list.d/wazuh.list &&
|
||||
apt-get update &&
|
||||
WAZUH_MANAGER=\"$WAZUH_MANAGER_IP\" apt-get install -y wazuh-agent &&
|
||||
service wazuh-agent start &&
|
||||
tail -f /var/log/auth.log
|
||||
"
|
||||
@@ -0,0 +1,164 @@
|
||||
version: '3.8'
|
||||
|
||||
services:
|
||||
wazuh.indexer:
|
||||
image: wazuh/wazuh-indexer:${WAZUH_VERSION}
|
||||
container_name: wazuh.indexer
|
||||
hostname: wazuh.indexer
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "9200:9200"
|
||||
environment:
|
||||
- "OPENSEARCH_JAVA_OPTS=-Xms1g -Xmx1g"
|
||||
- "OPENSEARCH_INITIAL_ADMIN_PASSWORD=${INDEXER_PASSWORD}"
|
||||
ulimits:
|
||||
memlock:
|
||||
soft: -1
|
||||
hard: -1
|
||||
nofile:
|
||||
soft: 65536
|
||||
hard: 65536
|
||||
volumes:
|
||||
- wazuh-indexer-data:/var/lib/wazuh-indexer
|
||||
- ./config/wazuh_indexer_ssl_certs/root-ca.pem:/usr/share/wazuh-indexer/certs/root-ca.pem
|
||||
- ./config/wazuh_indexer_ssl_certs/wazuh.indexer-key.pem:/usr/share/wazuh-indexer/certs/wazuh.indexer.key
|
||||
- ./config/wazuh_indexer_ssl_certs/wazuh.indexer.pem:/usr/share/wazuh-indexer/certs/wazuh.indexer.pem
|
||||
- ./config/wazuh_indexer_ssl_certs/admin.pem:/usr/share/wazuh-indexer/certs/admin.pem
|
||||
- ./config/wazuh_indexer_ssl_certs/admin-key.pem:/usr/share/wazuh-indexer/certs/admin-key.pem
|
||||
- ./config/wazuh_indexer/wazuh.indexer.yml:/usr/share/wazuh-indexer/opensearch.yml
|
||||
networks:
|
||||
- lab-network
|
||||
|
||||
wazuh.manager:
|
||||
image: wazuh/wazuh-manager:${WAZUH_VERSION}
|
||||
container_name: wazuh.manager
|
||||
hostname: wazuh.manager
|
||||
restart: unless-stopped
|
||||
ulimits:
|
||||
memlock:
|
||||
soft: -1
|
||||
hard: -1
|
||||
nofile:
|
||||
soft: 655360
|
||||
hard: 655360
|
||||
ports:
|
||||
- "1514:1514"
|
||||
- "1515:1515"
|
||||
- "514:514/udp"
|
||||
- "55000:55000"
|
||||
environment:
|
||||
- INDEXER_URL=https://wazuh.indexer:9200
|
||||
- INDEXER_USERNAME=admin
|
||||
- INDEXER_PASSWORD=${INDEXER_PASSWORD}
|
||||
- FILEBEAT_SSL_VERIFICATION_MODE=full
|
||||
- SSL_CERTIFICATE_AUTHORITIES=/etc/ssl/root-ca.pem
|
||||
- SSL_CERTIFICATE=/etc/ssl/filebeat.pem
|
||||
- SSL_KEY=/etc/ssl/filebeat.key
|
||||
- API_USERNAME=wazuh-wui
|
||||
- API_PASSWORD=${API_PASSWORD}
|
||||
volumes:
|
||||
- wazuh_api_configuration:/var/ossec/api/configuration
|
||||
- wazuh_etc:/var/ossec/etc
|
||||
- wazuh_logs:/var/ossec/logs
|
||||
- wazuh_queue:/var/ossec/queue
|
||||
- wazuh_var_multigroups:/var/ossec/var/multigroups
|
||||
- wazuh_integrations:/var/ossec/integrations
|
||||
- wazuh_active_response:/var/ossec/active-response/bin
|
||||
- wazuh_agentless:/var/ossec/agentless
|
||||
- wazuh_wodles:/var/ossec/wodles
|
||||
- filebeat_etc:/etc/filebeat
|
||||
- filebeat_var:/var/lib/filebeat
|
||||
- ./config/wazuh_indexer_ssl_certs/root-ca-manager.pem:/etc/ssl/root-ca.pem
|
||||
- ./config/wazuh_indexer_ssl_certs/wazuh.manager.pem:/etc/ssl/filebeat.pem
|
||||
- ./config/wazuh_indexer_ssl_certs/wazuh.manager-key.pem:/etc/ssl/filebeat.key
|
||||
depends_on:
|
||||
- wazuh.indexer
|
||||
networks:
|
||||
- lab-network
|
||||
|
||||
wazuh.dashboard:
|
||||
image: wazuh/wazuh-dashboard:${WAZUH_VERSION}
|
||||
container_name: wazuh.dashboard
|
||||
hostname: wazuh.dashboard
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "443:5601"
|
||||
environment:
|
||||
- INDEXER_USERNAME=admin
|
||||
- INDEXER_PASSWORD=${INDEXER_PASSWORD}
|
||||
- WAZUH_API_URL=https://wazuh.manager
|
||||
- DASHBOARD_USERNAME=${DASHBOARD_USERNAME}
|
||||
- DASHBOARD_PASSWORD=${DASHBOARD_PASSWORD}
|
||||
- API_USERNAME=wazuh-wui
|
||||
- API_PASSWORD=${API_PASSWORD}
|
||||
volumes:
|
||||
- ./config/wazuh_indexer_ssl_certs/wazuh.dashboard.pem:/usr/share/wazuh-dashboard/certs/wazuh.dashboard.pem
|
||||
- ./config/wazuh_indexer_ssl_certs/wazuh.dashboard-key.pem:/usr/share/wazuh-dashboard/certs/wazuh.dashboard-key.pem
|
||||
- ./config/wazuh_indexer_ssl_certs/root-ca.pem:/usr/share/wazuh-dashboard/certs/root-ca.pem
|
||||
- ./config/wazuh_dashboard/opensearch_dashboards.yml:/usr/share/wazuh-dashboard/config/opensearch_dashboards.yml
|
||||
- ./config/wazuh_dashboard/wazuh.yml:/usr/share/wazuh-dashboard/data/wazuh/config/wazuh.yml
|
||||
- wazuh-dashboard-custom:/usr/share/wazuh-dashboard/plugins/wazuh/public/assets/custom
|
||||
depends_on:
|
||||
- wazuh.indexer
|
||||
- wazuh.manager
|
||||
networks:
|
||||
- lab-network
|
||||
|
||||
ubuntu-gui:
|
||||
image: lscr.io/linuxserver/webtop:ubuntu-xfce
|
||||
container_name: ubuntu-gui
|
||||
hostname: ubuntu-gui
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "3000:3000"
|
||||
environment:
|
||||
- PUID=1000
|
||||
- PGID=1000
|
||||
- TZ=Europe/Paris
|
||||
volumes:
|
||||
- ./data/ubuntu_gui:/config
|
||||
networks:
|
||||
- lab-network
|
||||
|
||||
windows:
|
||||
image: dockurr/windows
|
||||
container_name: windows
|
||||
hostname: windows
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "8006:8006"
|
||||
- "3389:3389/tcp"
|
||||
- "3389:3389/udp"
|
||||
environment:
|
||||
- VERSION=${WIN_VERSION}
|
||||
- RAM_SIZE=${WIN_RAM}
|
||||
- CPU_CORES=${WIN_CPU}
|
||||
- ADAPTER=e1000e
|
||||
devices:
|
||||
- /dev/kvm
|
||||
cap_add:
|
||||
- NET_ADMIN
|
||||
volumes:
|
||||
- ./data/windows:/storage
|
||||
networks:
|
||||
- lab-network
|
||||
|
||||
volumes:
|
||||
wazuh-indexer-data:
|
||||
wazuh_api_configuration:
|
||||
wazuh_etc:
|
||||
wazuh_logs:
|
||||
wazuh_queue:
|
||||
wazuh_var_multigroups:
|
||||
wazuh_integrations:
|
||||
wazuh_active_response:
|
||||
wazuh_agentless:
|
||||
wazuh_wodles:
|
||||
filebeat_etc:
|
||||
filebeat_var:
|
||||
wazuh-dashboard-custom:
|
||||
|
||||
networks:
|
||||
lab-network:
|
||||
driver: bridge
|
||||
name: lab-network
|
||||
@@ -0,0 +1,7 @@
|
||||
services:
|
||||
generator:
|
||||
image: wazuh/wazuh-certs-generator:0.0.4
|
||||
hostname: wazuh-certs-generator
|
||||
volumes:
|
||||
- ./config/wazuh_indexer_ssl_certs/:/certificates/
|
||||
- ./config/certs.yml:/config/certs.yml
|
||||
@@ -0,0 +1,90 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
mkdir -p config/wazuh_indexer
|
||||
mkdir -p config/wazuh_dashboard
|
||||
|
||||
cat > config/wazuh_indexer/wazuh.indexer.yml <<'EOF'
|
||||
network.host: "0.0.0.0"
|
||||
node.name: "wazuh.indexer"
|
||||
cluster.initial_master_nodes:
|
||||
- "wazuh.indexer"
|
||||
cluster.name: "wazuh-cluster"
|
||||
|
||||
path.data: /var/lib/wazuh-indexer
|
||||
path.logs: /var/log/wazuh-indexer
|
||||
path.repo: /var/lib/wazuh-indexer/snapshots
|
||||
|
||||
plugins.security.ssl.transport.pemcert_filepath: /usr/share/wazuh-indexer/certs/wazuh.indexer.pem
|
||||
plugins.security.ssl.transport.pemkey_filepath: /usr/share/wazuh-indexer/certs/wazuh.indexer.key
|
||||
plugins.security.ssl.transport.pemtrustedcas_filepath: /usr/share/wazuh-indexer/certs/root-ca.pem
|
||||
plugins.security.ssl.transport.enforce_hostname_verification: false
|
||||
plugins.security.ssl.http.enabled: true
|
||||
plugins.security.ssl.http.pemcert_filepath: /usr/share/wazuh-indexer/certs/wazuh.indexer.pem
|
||||
plugins.security.ssl.http.pemkey_filepath: /usr/share/wazuh-indexer/certs/wazuh.indexer.key
|
||||
plugins.security.ssl.http.pemtrustedcas_filepath: /usr/share/wazuh-indexer/certs/root-ca.pem
|
||||
plugins.security.allow_default_init_securityindex: true
|
||||
plugins.security.authcz.admin_dn:
|
||||
- "CN=admin,OU=Wazuh,O=Wazuh,L=California,C=US"
|
||||
plugins.security.check_snapshot_restore_write_privileges: true
|
||||
plugins.security.restapi.roles_enabled:
|
||||
- "all_access"
|
||||
- "security_rest_api_access"
|
||||
plugins.security.system_indices.enabled: true
|
||||
plugins.security.system_indices.indices:
|
||||
- ".opendistro-alerting-config"
|
||||
- ".opendistro-alerting-alert*"
|
||||
- ".opendistro-anomaly-results*"
|
||||
- ".opendistro-anomaly-detector*"
|
||||
- ".opendistro-anomaly-checkpoints"
|
||||
- ".opendistro-anomaly-detection-state"
|
||||
- ".opendistro-reports-*"
|
||||
- ".opendistro-notifications-*"
|
||||
- ".opendistro-notebooks"
|
||||
- ".opendistro-observability"
|
||||
- ".opendistro-asynchronous-search-response*"
|
||||
- ".replication-metadata-store"
|
||||
- ".opensearch-observability"
|
||||
- ".opensearch-notifications-*"
|
||||
- ".opensearch-reports-*"
|
||||
- ".opensearch-anomaly-results*"
|
||||
- ".opensearch-anomaly-detector*"
|
||||
- ".opensearch-anomaly-checkpoints"
|
||||
- ".opensearch-anomaly-detection-state"
|
||||
- ".opensearch-security"
|
||||
- ".wazuh"
|
||||
- ".wazuh-*"
|
||||
- ".plugins-*"
|
||||
|
||||
compatibility.override_main_response_version: true
|
||||
EOF
|
||||
|
||||
cat > config/wazuh_dashboard/opensearch_dashboards.yml <<'EOF'
|
||||
server.host: 0.0.0.0
|
||||
server.port: 5601
|
||||
opensearch.hosts: https://wazuh.indexer:9200
|
||||
opensearch.ssl.verificationMode: certificate
|
||||
opensearch.requestHeadersAllowlist:
|
||||
- securitytenant
|
||||
- Authorization
|
||||
opensearch_security.multitenancy.enabled: false
|
||||
opensearch_security.readonly_mode.roles:
|
||||
- kibana_read_only
|
||||
server.ssl.enabled: true
|
||||
server.ssl.certificate: /usr/share/wazuh-dashboard/certs/wazuh.dashboard.pem
|
||||
server.ssl.key: /usr/share/wazuh-dashboard/certs/wazuh.dashboard-key.pem
|
||||
opensearch.ssl.certificateAuthorities: /usr/share/wazuh-dashboard/certs/root-ca.pem
|
||||
uiSettings.overrides.defaultRoute: /app/wazuh
|
||||
EOF
|
||||
|
||||
cat > config/wazuh_dashboard/wazuh.yml <<'EOF'
|
||||
hosts:
|
||||
- default:
|
||||
url: https://wazuh.manager
|
||||
port: 55000
|
||||
username: wazuh-wui
|
||||
password: MyS3cr37P450r.*-
|
||||
run_as: false
|
||||
EOF
|
||||
|
||||
echo "Configuration files created successfully."
|
||||