From b22fa235c7f88bf55a0bff3e1e0cd3cc33b8eb99 Mon Sep 17 00:00:00 2001 From: c-bordon Date: Tue, 3 Oct 2023 15:52:25 -0300 Subject: [PATCH 01/10] Updated build image script --- .env | 3 + build-docker-images/build-images.sh | 127 ++++++++++++++++-- .../wazuh-dashboard/Dockerfile | 2 +- build-docker-images/wazuh-manager/Dockerfile | 6 +- 4 files changed, 125 insertions(+), 13 deletions(-) diff --git a/.env b/.env index d51cc0c4..058409f9 100755 --- a/.env +++ b/.env @@ -1,3 +1,6 @@ WAZUH_VERSION=4.6.0 WAZUH_IMAGE_VERSION=4.6.0 WAZUH_TAG_REVISION=1 +FILEBEAT_TEMPLATE_BRANCH=v4.6.0 +WAZUH_FILEBEAT_MODULE=wazuh-filebeat-0.2.tar.gz +WAZUH_UI_REVISION=1 diff --git a/build-docker-images/build-images.sh b/build-docker-images/build-images.sh index a7b3ca46..79e56bc7 100755 --- a/build-docker-images/build-images.sh +++ b/build-docker-images/build-images.sh @@ -1,11 +1,120 @@ -WAZUH_IMAGE_VERSION=4.6.0 -WAZUH_VERSION=$(echo $WAZUH_IMAGE_VERSION | sed -e 's/\.//g') -WAZUH_TAG_REVISION=1 -WAZUH_CURRENT_VERSION=$(curl --silent https://api.github.com/repos/wazuh/wazuh/releases/latest | grep '\"tag_name\":' | sed -E 's/.*\"([^\"]+)\".*/\1/' | cut -c 2- | sed -e 's/\.//g') -IMAGE_VERSION=${WAZUH_IMAGE_VERSION} +#!/bin/bash -echo WAZUH_VERSION=$WAZUH_IMAGE_VERSION > .env -echo WAZUH_IMAGE_VERSION=$IMAGE_VERSION >> .env -echo WAZUH_TAG_REVISION=$WAZUH_TAG_REVISION >> .env +# Wazuh package generator +# Copyright (C) 2023, 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. -docker-compose -f build-docker-images/build-images.yml --env-file .env build --no-cache \ No newline at end of file +WAZUH_IMAGE_VERSION="4.6.0" +WAZUH_VERSION="$(echo $WAZUH_IMAGE_VERSION | sed -e 's/\.//g')" +WAZUH_TAG_REVISION="1" +WAZUH_DEV_STAGE="" +FILEBEAT_TEMPLATE_BRANCH="v${WAZUH_IMAGE_VERSION}" +FILEBEAT_MODULE_VERSION="0.2" +WAZUH_FILEBEAT_MODULE="wazuh-filebeat-${FILEBEAT_MODULE_VERSION}.tar.gz" +WAZUH_UI_REVISION="${WAZUH_TAG_REVISION}" + +# ----------------------------------------------------------------------------- + +trap ctrl_c INT + +clean() { + exit_code=$1 + + exit ${exit_code} +} + +ctrl_c() { + clean 1 +} + +# ----------------------------------------------------------------------------- + + +build() { + + if [ "${WAZUH_DEV_STAGE}" ];then + FILEBEAT_TEMPLATE_BRANCH="${FILEBEAT_TEMPLATE_BRANCH}-${WAZUH_DEV_STAGE,,}" + fi + echo WAZUH_VERSION=$WAZUH_IMAGE_VERSION > .env + echo WAZUH_IMAGE_VERSION=$WAZUH_IMAGE_VERSION >> .env + echo WAZUH_TAG_REVISION=$WAZUH_TAG_REVISION >> .env + echo FILEBEAT_TEMPLATE_BRANCH=$FILEBEAT_TEMPLATE_BRANCH >> .env + echo WAZUH_FILEBEAT_MODULE=$WAZUH_FILEBEAT_MODULE >> .env + echo WAZUH_UI_REVISION=$WAZUH_UI_REVISION >> .env + + docker-compose -f build-docker-images/build-images.yml --env-file .env build --no-cache + + return 0 +} + +# ----------------------------------------------------------------------------- + +help() { + echo + echo "Usage: $0 [OPTIONS]" + echo + echo " -d, --dev [Optional] Set the development stage you want to build, example rc1 or beta1, not used by default." + echo " -f, --filebeat-module [Optional] Set Filebeat module version. By default ${FILEBEAT_MODULE_VERSION}." + echo " -r, --revision [Optional] Package revision. By default ${WAZUH_TAG_REVISION}" + echo " -v, --version [Optional] Set the Wazuh version should be builded. By default, ${WAZUH_IMAGE_VERSION}." + echo " -h, --help Show this help." + echo + exit $1 +} + +# ----------------------------------------------------------------------------- + +main() { + while [ -n "${1}" ] + do + case "${1}" in + "-h"|"--help") + help 0 + ;; + "-d"|"--dev") + if [ -n "${2}" ]; then + WAZUH_DEV_STAGE="${2}" + shift 2 + else + help 1 + fi + ;; + "-f"|"--filebeat-module") + if [ -n "${2}" ]; then + FILEBEAT_MODULE_VERSION="${2}" + shift 2 + else + help 1 + fi + ;; + "-r"|"--revision") + if [ -n "${2}" ]; then + WAZUH_TAG_REVISION="${2}" + shift 2 + else + help 1 + fi + ;; + "-v"|"--version") + if [ -n "$2" ]; then + WAZUH_IMAGE_VERSION="$2" + shift 2 + else + help 1 + fi + ;; + *) + help 1 + esac + done + + build || clean 1 + + clean 0 +} + +main "$@" \ No newline at end of file diff --git a/build-docker-images/wazuh-dashboard/Dockerfile b/build-docker-images/wazuh-dashboard/Dockerfile index ef571d5c..44430b10 100644 --- a/build-docker-images/wazuh-dashboard/Dockerfile +++ b/build-docker-images/wazuh-dashboard/Dockerfile @@ -4,7 +4,7 @@ FROM ubuntu:focal AS builder ARG WAZUH_VERSION ARG WAZUH_TAG_REVISION ARG INSTALL_DIR=/usr/share/wazuh-dashboard -ARG WAZUH_UI_REVISION=1 +ARG WAZUH_UI_REVISION # Update and install dependencies RUN apt-get update && apt install curl libcap2-bin xz-utils -y diff --git a/build-docker-images/wazuh-manager/Dockerfile b/build-docker-images/wazuh-manager/Dockerfile index 28a6e7b2..878a07a2 100644 --- a/build-docker-images/wazuh-manager/Dockerfile +++ b/build-docker-images/wazuh-manager/Dockerfile @@ -5,10 +5,10 @@ RUN rm /bin/sh && ln -s /bin/bash /bin/sh ARG WAZUH_VERSION ARG WAZUH_TAG_REVISION -ARG TEMPLATE_VERSION=v4.6.0 +ARG FILEBEAT_TEMPLATE_BRANCH ARG FILEBEAT_CHANNEL=filebeat-oss ARG FILEBEAT_VERSION=7.10.2 -ARG WAZUH_FILEBEAT_MODULE="wazuh-filebeat-0.2.tar.gz" +ARG WAZUH_FILEBEAT_MODULE RUN apt-get update && apt install curl apt-transport-https lsb-release gnupg -y @@ -38,7 +38,7 @@ COPY config/filebeat.yml /etc/filebeat/ RUN chmod go-w /etc/filebeat/filebeat.yml -ADD https://raw.githubusercontent.com/wazuh/wazuh/$TEMPLATE_VERSION/extensions/elasticsearch/7.x/wazuh-template.json /etc/filebeat +ADD https://raw.githubusercontent.com/wazuh/wazuh/$FILEBEAT_TEMPLATE_BRANCH/extensions/elasticsearch/7.x/wazuh-template.json /etc/filebeat RUN chmod go-w /etc/filebeat/wazuh-template.json # Prepare permanent data From 3fd3f423896b0e1cd2b16155955c509522dd6c39 Mon Sep 17 00:00:00 2001 From: c-bordon Date: Tue, 3 Oct 2023 16:43:30 -0300 Subject: [PATCH 02/10] Added check for wazuh/wazuh branch --- build-docker-images/build-images.sh | 13 +++++++++++-- build-docker-images/build-images.yml | 3 +++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/build-docker-images/build-images.sh b/build-docker-images/build-images.sh index 79e56bc7..6fd36d36 100755 --- a/build-docker-images/build-images.sh +++ b/build-docker-images/build-images.sh @@ -12,7 +12,7 @@ WAZUH_IMAGE_VERSION="4.6.0" WAZUH_VERSION="$(echo $WAZUH_IMAGE_VERSION | sed -e 's/\.//g')" WAZUH_TAG_REVISION="1" WAZUH_DEV_STAGE="" -FILEBEAT_TEMPLATE_BRANCH="v${WAZUH_IMAGE_VERSION}" +FILEBEAT_TEMPLATE_BRANCH="${WAZUH_IMAGE_VERSION}" FILEBEAT_MODULE_VERSION="0.2" WAZUH_FILEBEAT_MODULE="wazuh-filebeat-${FILEBEAT_MODULE_VERSION}.tar.gz" WAZUH_UI_REVISION="${WAZUH_TAG_REVISION}" @@ -37,8 +37,17 @@ ctrl_c() { build() { if [ "${WAZUH_DEV_STAGE}" ];then - FILEBEAT_TEMPLATE_BRANCH="${FILEBEAT_TEMPLATE_BRANCH}-${WAZUH_DEV_STAGE,,}" + FILEBEAT_TEMPLATE_BRANCH="v${FILEBEAT_TEMPLATE_BRANCH}-${WAZUH_DEV_STAGE,,}" + else + if curl --output /dev/null --silent --head --fail "https://github.com/wazuh/wazuh/tree/${FILEBEAT_TEMPLATE_BRANCH}"; then + FILEBEAT_TEMPLATE_BRANCH="${FILEBEAT_TEMPLATE_BRANCH}" + elif curl --output /dev/null --silent --head --fail "https://github.com/wazuh/wazuh/tree/v${FILEBEAT_TEMPLATE_BRANCH}"; then + FILEBEAT_TEMPLATE_BRANCH="v${FILEBEAT_TEMPLATE_BRANCH}" + else + echo "The indicated branch does not exist in the wazuh/wazuh repository: ${FILEBEAT_TEMPLATE_BRANCH}" + fi fi + echo WAZUH_VERSION=$WAZUH_IMAGE_VERSION > .env echo WAZUH_IMAGE_VERSION=$WAZUH_IMAGE_VERSION >> .env echo WAZUH_TAG_REVISION=$WAZUH_TAG_REVISION >> .env diff --git a/build-docker-images/build-images.yml b/build-docker-images/build-images.yml index 52984bf9..90fbb897 100644 --- a/build-docker-images/build-images.yml +++ b/build-docker-images/build-images.yml @@ -8,6 +8,8 @@ services: args: WAZUH_VERSION: ${WAZUH_VERSION} WAZUH_TAG_REVISION: ${WAZUH_TAG_REVISION} + FILEBEAT_TEMPLATE_BRANCH: ${FILEBEAT_TEMPLATE_BRANCH} + WAZUH_FILEBEAT_MODULE: ${WAZUH_FILEBEAT_MODULE} image: wazuh/wazuh-manager:${WAZUH_IMAGE_VERSION} hostname: wazuh.manager restart: always @@ -61,6 +63,7 @@ services: args: WAZUH_VERSION: ${WAZUH_VERSION} WAZUH_TAG_REVISION: ${WAZUH_TAG_REVISION} + WAZUH_UI_REVISION: ${WAZUH_UI_REVISION} image: wazuh/wazuh-dashboard:${WAZUH_IMAGE_VERSION} hostname: wazuh.dashboard restart: always From 36c06dc4c8743dc4fb79792f5946df211947e295 Mon Sep 17 00:00:00 2001 From: c-bordon Date: Tue, 3 Oct 2023 16:54:43 -0300 Subject: [PATCH 03/10] Added validation for dev branch --- build-docker-images/build-images.sh | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/build-docker-images/build-images.sh b/build-docker-images/build-images.sh index 6fd36d36..9ddc0c6c 100755 --- a/build-docker-images/build-images.sh +++ b/build-docker-images/build-images.sh @@ -38,6 +38,10 @@ build() { if [ "${WAZUH_DEV_STAGE}" ];then FILEBEAT_TEMPLATE_BRANCH="v${FILEBEAT_TEMPLATE_BRANCH}-${WAZUH_DEV_STAGE,,}" + if curl --output /dev/null --silent --head --fail "https://github.com/wazuh/wazuh/tree/${FILEBEAT_TEMPLATE_BRANCH}"; then + echo "The indicated branch does not exist in the wazuh/wazuh repository: ${FILEBEAT_TEMPLATE_BRANCH}" + clean 1 + fi else if curl --output /dev/null --silent --head --fail "https://github.com/wazuh/wazuh/tree/${FILEBEAT_TEMPLATE_BRANCH}"; then FILEBEAT_TEMPLATE_BRANCH="${FILEBEAT_TEMPLATE_BRANCH}" @@ -45,6 +49,7 @@ build() { FILEBEAT_TEMPLATE_BRANCH="v${FILEBEAT_TEMPLATE_BRANCH}" else echo "The indicated branch does not exist in the wazuh/wazuh repository: ${FILEBEAT_TEMPLATE_BRANCH}" + clean 1 fi fi From 545ef6851b3a80742d44d54ce5faa71de9763a25 Mon Sep 17 00:00:00 2001 From: c-bordon Date: Tue, 3 Oct 2023 16:59:08 -0300 Subject: [PATCH 04/10] Fixed validation --- build-docker-images/build-images.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build-docker-images/build-images.sh b/build-docker-images/build-images.sh index 9ddc0c6c..d521bd05 100755 --- a/build-docker-images/build-images.sh +++ b/build-docker-images/build-images.sh @@ -38,7 +38,7 @@ build() { if [ "${WAZUH_DEV_STAGE}" ];then FILEBEAT_TEMPLATE_BRANCH="v${FILEBEAT_TEMPLATE_BRANCH}-${WAZUH_DEV_STAGE,,}" - if curl --output /dev/null --silent --head --fail "https://github.com/wazuh/wazuh/tree/${FILEBEAT_TEMPLATE_BRANCH}"; then + if ! curl --output /dev/null --silent --head --fail "https://github.com/wazuh/wazuh/tree/${FILEBEAT_TEMPLATE_BRANCH}"; then echo "The indicated branch does not exist in the wazuh/wazuh repository: ${FILEBEAT_TEMPLATE_BRANCH}" clean 1 fi From e205c87d3763eb27cc356a89fe41fd311966d439 Mon Sep 17 00:00:00 2001 From: c-bordon Date: Wed, 4 Oct 2023 08:35:45 -0300 Subject: [PATCH 05/10] .env file updated --- .env | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.env b/.env index 058409f9..15a61adb 100755 --- a/.env +++ b/.env @@ -1,6 +1,6 @@ WAZUH_VERSION=4.6.0 WAZUH_IMAGE_VERSION=4.6.0 WAZUH_TAG_REVISION=1 -FILEBEAT_TEMPLATE_BRANCH=v4.6.0 +FILEBEAT_TEMPLATE_BRANCH=4.6.0 WAZUH_FILEBEAT_MODULE=wazuh-filebeat-0.2.tar.gz WAZUH_UI_REVISION=1 From 7172c818c7b47c6f5530a4db36e89a6137ab1f17 Mon Sep 17 00:00:00 2001 From: c-bordon Date: Wed, 4 Oct 2023 11:16:04 -0300 Subject: [PATCH 06/10] Update order of variables --- .env | 6 +++--- build-docker-images/build-images.sh | 9 +++++---- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/.env b/.env index 15a61adb..89f10a31 100755 --- a/.env +++ b/.env @@ -1,6 +1,6 @@ -WAZUH_VERSION=4.6.0 -WAZUH_IMAGE_VERSION=4.6.0 +WAZUH_VERSION=4.5.3 +WAZUH_IMAGE_VERSION=4.5.3 WAZUH_TAG_REVISION=1 -FILEBEAT_TEMPLATE_BRANCH=4.6.0 +FILEBEAT_TEMPLATE_BRANCH=v4.5.3-rc2 WAZUH_FILEBEAT_MODULE=wazuh-filebeat-0.2.tar.gz WAZUH_UI_REVISION=1 diff --git a/build-docker-images/build-images.sh b/build-docker-images/build-images.sh index d521bd05..6e14ed71 100755 --- a/build-docker-images/build-images.sh +++ b/build-docker-images/build-images.sh @@ -9,13 +9,9 @@ # Foundation. WAZUH_IMAGE_VERSION="4.6.0" -WAZUH_VERSION="$(echo $WAZUH_IMAGE_VERSION | sed -e 's/\.//g')" WAZUH_TAG_REVISION="1" WAZUH_DEV_STAGE="" -FILEBEAT_TEMPLATE_BRANCH="${WAZUH_IMAGE_VERSION}" FILEBEAT_MODULE_VERSION="0.2" -WAZUH_FILEBEAT_MODULE="wazuh-filebeat-${FILEBEAT_MODULE_VERSION}.tar.gz" -WAZUH_UI_REVISION="${WAZUH_TAG_REVISION}" # ----------------------------------------------------------------------------- @@ -36,6 +32,11 @@ ctrl_c() { build() { + WAZUH_VERSION="$(echo $WAZUH_IMAGE_VERSION | sed -e 's/\.//g')" + FILEBEAT_TEMPLATE_BRANCH="${WAZUH_IMAGE_VERSION}" + WAZUH_FILEBEAT_MODULE="wazuh-filebeat-${FILEBEAT_MODULE_VERSION}.tar.gz" + WAZUH_UI_REVISION="${WAZUH_TAG_REVISION}" + if [ "${WAZUH_DEV_STAGE}" ];then FILEBEAT_TEMPLATE_BRANCH="v${FILEBEAT_TEMPLATE_BRANCH}-${WAZUH_DEV_STAGE,,}" if ! curl --output /dev/null --silent --head --fail "https://github.com/wazuh/wazuh/tree/${FILEBEAT_TEMPLATE_BRANCH}"; then From 893796c4a236552f929a5cb910adae761b9c8e22 Mon Sep 17 00:00:00 2001 From: c-bordon Date: Wed, 4 Oct 2023 11:41:22 -0300 Subject: [PATCH 07/10] Restore .env file --- .env | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/.env b/.env index 89f10a31..d51cc0c4 100755 --- a/.env +++ b/.env @@ -1,6 +1,3 @@ -WAZUH_VERSION=4.5.3 -WAZUH_IMAGE_VERSION=4.5.3 +WAZUH_VERSION=4.6.0 +WAZUH_IMAGE_VERSION=4.6.0 WAZUH_TAG_REVISION=1 -FILEBEAT_TEMPLATE_BRANCH=v4.5.3-rc2 -WAZUH_FILEBEAT_MODULE=wazuh-filebeat-0.2.tar.gz -WAZUH_UI_REVISION=1 From 8ac3ea1e8a2526d1e67dfa353c7270a772eea40a Mon Sep 17 00:00:00 2001 From: c-bordon Date: Wed, 4 Oct 2023 11:44:00 -0300 Subject: [PATCH 08/10] Added final space --- build-docker-images/build-images.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build-docker-images/build-images.sh b/build-docker-images/build-images.sh index 6e14ed71..e6044bf8 100755 --- a/build-docker-images/build-images.sh +++ b/build-docker-images/build-images.sh @@ -132,4 +132,4 @@ main() { clean 0 } -main "$@" \ No newline at end of file +main "$@" From 1b41068618265ccd8b951cbc7cb92a0b4971895a Mon Sep 17 00:00:00 2001 From: c-bordon Date: Wed, 4 Oct 2023 11:55:39 -0300 Subject: [PATCH 09/10] Updated README file --- build-docker-images/README.md | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/build-docker-images/README.md b/build-docker-images/README.md index 13f1c9bf..a62978ac 100644 --- a/build-docker-images/README.md +++ b/build-docker-images/README.md @@ -9,3 +9,24 @@ $ build-docker-images/build-images.sh ``` This script initializes the environment variables needed to build each of the images. + +The script allows you to build images from other versions of Wazuh, to do this you must use the -v or --version argument: + +``` +$ build-docker-images/build-images.sh -v 4.5.2 +``` + +To get all the available script options use the -h or --help option: + +``` +$ build-docker-images/build-images.sh -h + +Usage: build-docker-images/build-images.sh [OPTIONS] + + -d, --dev [Optional] Set the development stage you want to build, example rc1 or beta1, not used by default. + -f, --filebeat-module [Optional] Set Filebeat module version. By default 0.2. + -r, --revision [Optional] Package revision. By default 1 + -v, --version [Optional] Set the Wazuh version should be builded. By default, 4.6.0. + -h, --help Show this help. + +``` \ No newline at end of file From c550c1a852af262aca6131b7f78ed40c3b4dcefc Mon Sep 17 00:00:00 2001 From: c-bordon Date: Wed, 4 Oct 2023 12:29:15 -0300 Subject: [PATCH 10/10] Added validation for version in master branch --- build-docker-images/build-images.sh | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/build-docker-images/build-images.sh b/build-docker-images/build-images.sh index e6044bf8..d441cd9e 100755 --- a/build-docker-images/build-images.sh +++ b/build-docker-images/build-images.sh @@ -49,8 +49,13 @@ build() { elif curl --output /dev/null --silent --head --fail "https://github.com/wazuh/wazuh/tree/v${FILEBEAT_TEMPLATE_BRANCH}"; then FILEBEAT_TEMPLATE_BRANCH="v${FILEBEAT_TEMPLATE_BRANCH}" else - echo "The indicated branch does not exist in the wazuh/wazuh repository: ${FILEBEAT_TEMPLATE_BRANCH}" - clean 1 + WAZUH_MASTER_VERSION="$(curl -s https://raw.githubusercontent.com/wazuh/wazuh/master/src/VERSION | sed -e 's/v//g')" + if [ "${FILEBEAT_TEMPLATE_BRANCH}" == "${WAZUH_MASTER_VERSION}" ]; then + FILEBEAT_TEMPLATE_BRANCH="master" + else + echo "The indicated branch does not exist in the wazuh/wazuh repository: ${FILEBEAT_TEMPLATE_BRANCH}" + clean 1 + fi fi fi