forked from wazuh/wazuh-docker
Compare commits
6
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e341391201 | ||
|
|
c42898e862 | ||
|
|
2663de28a6 | ||
|
|
d1adafdcde | ||
|
|
a866f41ecf | ||
|
|
97a042cfcd |
+20
-6
@@ -35,16 +35,30 @@ services:
|
|||||||
- elasticsearch
|
- elasticsearch
|
||||||
environment:
|
environment:
|
||||||
- LS_HEAP_SIZE=2048m
|
- LS_HEAP_SIZE=2048m
|
||||||
|
- XPACK_MONITORING_ENABLED=false
|
||||||
elasticsearch:
|
elasticsearch:
|
||||||
image: elasticsearch:5.5.2
|
image: docker.elastic.co/elasticsearch/elasticsearch:5.6.4
|
||||||
hostname: elasticsearch
|
hostname: elasticsearch
|
||||||
restart: always
|
restart: always
|
||||||
command: elasticsearch -E node.name="node-1" -E cluster.name="wazuh" -E network.host=0.0.0.0
|
|
||||||
ports:
|
ports:
|
||||||
- "9200:9200"
|
- "9200:9200"
|
||||||
- "9300:9300"
|
# - "9300:9300"
|
||||||
environment:
|
environment:
|
||||||
ES_JAVA_OPTS: "-Xms2g -Xmx2g"
|
- node.name=node-1
|
||||||
|
- cluster.name=wazuh
|
||||||
|
- network.host=0.0.0.0
|
||||||
|
- bootstrap.memory_lock=true
|
||||||
|
- xpack.security.enabled=false
|
||||||
|
- xpack.monitoring.enabled=false
|
||||||
|
- xpack.ml.enabled=false
|
||||||
|
- xpack.watcher.enabled=false
|
||||||
|
- xpack.graph.enabled=false
|
||||||
|
- "ES_JAVA_OPTS=-Xms1g -Xmx1g"
|
||||||
|
ulimits:
|
||||||
|
memlock:
|
||||||
|
soft: -1
|
||||||
|
hard: -1
|
||||||
|
mem_limit: 2g
|
||||||
# volumes:
|
# volumes:
|
||||||
# - my-path:/usr/share/elasticsearch/data
|
# - my-path:/usr/share/elasticsearch/data
|
||||||
networks:
|
networks:
|
||||||
@@ -62,14 +76,14 @@ services:
|
|||||||
links:
|
links:
|
||||||
- elasticsearch:elasticsearch
|
- elasticsearch:elasticsearch
|
||||||
- wazuh
|
- wazuh
|
||||||
entrypoint: sh wait-for-it.sh elasticsearch
|
entrypoint: /wait-for-it.sh elasticsearch
|
||||||
# environment:
|
# environment:
|
||||||
# - "WAZUH_KIBANA_PLUGIN_URL=http://your.repo/wazuhapp-2.1.0-5.5.1.zip"
|
# - "WAZUH_KIBANA_PLUGIN_URL=http://your.repo/wazuhapp-2.1.0-5.5.1.zip"
|
||||||
nginx:
|
nginx:
|
||||||
image: wazuh/wazuh-nginx
|
image: wazuh/wazuh-nginx
|
||||||
hostname: nginx
|
hostname: nginx
|
||||||
restart: always
|
restart: always
|
||||||
entrypoint: sh run.sh
|
entrypoint: /run.sh
|
||||||
environment:
|
environment:
|
||||||
- NGINX_PORT=443
|
- NGINX_PORT=443
|
||||||
ports:
|
ports:
|
||||||
|
|||||||
+6
-4
@@ -1,7 +1,9 @@
|
|||||||
FROM kibana:5.5.2
|
FROM docker.elastic.co/kibana/kibana:5.6.4
|
||||||
|
|
||||||
RUN apt-get update && apt-get install -y curl
|
USER root
|
||||||
|
|
||||||
COPY ./config/kibana.yml /opt/kibana/config/kibana.yml
|
COPY ./config/kibana.yml /usr/share/kibana/config/kibana.yml
|
||||||
|
|
||||||
COPY config/wait-for-it.sh /
|
COPY config/wait-for-it.sh /wait-for-it.sh
|
||||||
|
|
||||||
|
RUN chmod 755 /wait-for-it.sh
|
||||||
|
|||||||
@@ -90,3 +90,10 @@ logging.quiet: true
|
|||||||
# Set the interval in milliseconds to sample system and process performance
|
# Set the interval in milliseconds to sample system and process performance
|
||||||
# metrics. Minimum is 100ms. Defaults to 10000.
|
# metrics. Minimum is 100ms. Defaults to 10000.
|
||||||
# ops.interval: 10000
|
# ops.interval: 10000
|
||||||
|
|
||||||
|
xpack.security.enabled: false
|
||||||
|
xpack.grokdebugger.enabled: false
|
||||||
|
xpack.graph.enabled: false
|
||||||
|
xpack.ml.enabled: false
|
||||||
|
xpack.monitoring.enabled: false
|
||||||
|
xpack.reporting.enabled: false
|
||||||
@@ -5,15 +5,13 @@ set -e
|
|||||||
host="$1"
|
host="$1"
|
||||||
shift
|
shift
|
||||||
cmd="kibana"
|
cmd="kibana"
|
||||||
WAZUH_KIBANA_PLUGIN_URL=${WAZUH_KIBANA_PLUGIN_URL:-https://packages.wazuh.com/wazuhapp/wazuhapp-2.1.0_5.5.2.zip}
|
WAZUH_KIBANA_PLUGIN_URL=${WAZUH_KIBANA_PLUGIN_URL:-https://packages.wazuh.com/wazuhapp/wazuhapp-2.1.1_5.6.4.zip}
|
||||||
|
|
||||||
until curl -XGET $host:9200; do
|
until curl -XGET $host:9200; do
|
||||||
>&2 echo "Elastic is unavailable - sleeping"
|
>&2 echo "Elastic is unavailable - sleeping"
|
||||||
sleep 1
|
sleep 5
|
||||||
done
|
done
|
||||||
|
|
||||||
sleep 30
|
|
||||||
|
|
||||||
>&2 echo "Elastic is up - executing command"
|
>&2 echo "Elastic is up - executing command"
|
||||||
|
|
||||||
if /usr/share/kibana/bin/kibana-plugin list | grep wazuh; then
|
if /usr/share/kibana/bin/kibana-plugin list | grep wazuh; then
|
||||||
@@ -26,9 +24,7 @@ sleep 30
|
|||||||
|
|
||||||
echo "Configuring defaultIndex to wazuh-alerts-*"
|
echo "Configuring defaultIndex to wazuh-alerts-*"
|
||||||
|
|
||||||
curl -s -XPUT http://$host:9200/.kibana/config/5.5.2 -H 'Content-Type: application/json' -d '{"defaultIndex" : "wazuh-alerts-*"}' > /dev/null
|
curl -s -XPUT http://$host:9200/.kibana/config/5.6.4 -H 'Content-Type: application/json' -d '{"defaultIndex" : "wazuh-alerts-*"}' > /dev/null
|
||||||
|
|
||||||
sleep 30
|
|
||||||
|
|
||||||
echo "Setting API credentials into Wazuh APP"
|
echo "Setting API credentials into Wazuh APP"
|
||||||
|
|
||||||
@@ -38,7 +34,7 @@ if [ "x$CONFIG_CODE" = "x404" ]; then
|
|||||||
{
|
{
|
||||||
"api_user": "foo",
|
"api_user": "foo",
|
||||||
"api_password": "YmFy",
|
"api_password": "YmFy",
|
||||||
"url": "http://wazuh",
|
"url": "https://wazuh",
|
||||||
"api_port": "55000",
|
"api_port": "55000",
|
||||||
"insecure": "true",
|
"insecure": "true",
|
||||||
"component": "API",
|
"component": "API",
|
||||||
@@ -55,4 +51,6 @@ else
|
|||||||
echo "Wazuh APP already configured"
|
echo "Wazuh APP already configured"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
sleep 5
|
||||||
|
|
||||||
exec $cmd
|
exec $cmd
|
||||||
|
|||||||
+1
-9
@@ -1,12 +1,4 @@
|
|||||||
FROM logstash:5.5.2
|
FROM docker.elastic.co/logstash/logstash:5.6.4
|
||||||
|
|
||||||
RUN apt-get update
|
|
||||||
|
|
||||||
COPY config/logstash.conf /etc/logstash/conf.d/logstash.conf
|
COPY config/logstash.conf /etc/logstash/conf.d/logstash.conf
|
||||||
COPY config/wazuh-elastic5-template.json /etc/logstash/wazuh-elastic5-template.json
|
COPY config/wazuh-elastic5-template.json /etc/logstash/wazuh-elastic5-template.json
|
||||||
|
|
||||||
|
|
||||||
ADD config/run.sh /tmp/run.sh
|
|
||||||
RUN chmod 755 /tmp/run.sh
|
|
||||||
|
|
||||||
ENTRYPOINT ["/tmp/run.sh"]
|
|
||||||
|
|||||||
@@ -3,3 +3,5 @@ FROM nginx:latest
|
|||||||
RUN apt-get update && apt-get install -y openssl apache2-utils
|
RUN apt-get update && apt-get install -y openssl apache2-utils
|
||||||
|
|
||||||
COPY ./config/run.sh /run.sh
|
COPY ./config/run.sh /run.sh
|
||||||
|
|
||||||
|
RUN chmod 755 /run.sh
|
||||||
|
|||||||
+11
-13
@@ -1,16 +1,15 @@
|
|||||||
FROM centos:latest
|
FROM phusion/baseimage:latest
|
||||||
ARG FILEBEAT_VERSION=5.5.2
|
ARG FILEBEAT_VERSION=5.6.4
|
||||||
COPY config/*.repo /etc/yum.repos.d/
|
|
||||||
|
|
||||||
RUN yum -y update; yum clean all;
|
RUN apt-get update; apt-get -y dist-upgrade
|
||||||
RUN yum -y install epel-release openssl useradd; yum clean all
|
RUN apt-get -y install openssl postfix bsd-mailx curl apt-transport-https lsb-release
|
||||||
RUN yum -y install postfix mailx cyrus-sasl cyrus-sasl-plain; yum clean all
|
|
||||||
RUN groupadd -g 1000 ossec
|
RUN groupadd -g 1000 ossec
|
||||||
RUN useradd -u 1000 -g 1000 ossec
|
RUN useradd -u 1000 -g 1000 ossec
|
||||||
RUN curl --silent --location https://rpm.nodesource.com/setup_6.x | bash - &&\
|
RUN curl --silent --location https://deb.nodesource.com/setup_6.x | bash - &&\
|
||||||
yum install -y nodejs
|
apt-get install -y nodejs
|
||||||
RUN yum install -y wazuh-manager-2.1.0 wazuh-api-2.1.0
|
RUN curl -s https://packages.wazuh.com/key/GPG-KEY-WAZUH | apt-key add -
|
||||||
|
RUN echo "deb https://packages.wazuh.com/apt $(lsb_release -cs) main" | tee /etc/apt/sources.list.d/wazuh.list
|
||||||
|
RUN apt-get update && apt-get -y install wazuh-manager wazuh-api expect
|
||||||
|
|
||||||
ADD config/data_dirs.env /data_dirs.env
|
ADD config/data_dirs.env /data_dirs.env
|
||||||
ADD config/init.bash /init.bash
|
ADD config/init.bash /init.bash
|
||||||
@@ -19,9 +18,8 @@ RUN chmod 755 /init.bash &&\
|
|||||||
sync && /init.bash &&\
|
sync && /init.bash &&\
|
||||||
sync && rm /init.bash
|
sync && rm /init.bash
|
||||||
|
|
||||||
|
RUN curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-${FILEBEAT_VERSION}-amd64.deb &&\
|
||||||
RUN curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-${FILEBEAT_VERSION}-x86_64.rpm &&\
|
dpkg -i filebeat-${FILEBEAT_VERSION}-amd64.deb && rm filebeat-${FILEBEAT_VERSION}-amd64.deb
|
||||||
rpm -vi filebeat-${FILEBEAT_VERSION}-x86_64.rpm && rm filebeat-${FILEBEAT_VERSION}-x86_64.rpm
|
|
||||||
|
|
||||||
COPY config/filebeat.yml /etc/filebeat/
|
COPY config/filebeat.yml /etc/filebeat/
|
||||||
|
|
||||||
|
|||||||
+45
-29
@@ -15,12 +15,31 @@ source /data_dirs.env
|
|||||||
FIRST_TIME_INSTALLATION=false
|
FIRST_TIME_INSTALLATION=false
|
||||||
DATA_PATH=/var/ossec/data
|
DATA_PATH=/var/ossec/data
|
||||||
|
|
||||||
|
print() {
|
||||||
|
echo -e $1
|
||||||
|
}
|
||||||
|
|
||||||
|
error_and_exit() {
|
||||||
|
echo "Error executing command: '$1'."
|
||||||
|
echo 'Exiting.'
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
exec_cmd() {
|
||||||
|
eval $1 > /dev/null 2>&1 || error_and_exit "$1"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
edit_configuration() { # $1 -> setting, $2 -> value
|
||||||
|
sed -i "s/^config.$1\s=.*/config.$1 = \"$2\";/g" "${DATA_PATH}/api/configuration/config.js" || error_and_exit "sed (editing configuration)"
|
||||||
|
}
|
||||||
|
|
||||||
for ossecdir in "${DATA_DIRS[@]}"; do
|
for ossecdir in "${DATA_DIRS[@]}"; do
|
||||||
if [ ! -e "${DATA_PATH}/${ossecdir}" ]
|
if [ ! -e "${DATA_PATH}/${ossecdir}" ]
|
||||||
then
|
then
|
||||||
echo "Installing ${ossecdir}"
|
print "Installing ${ossecdir}"
|
||||||
mkdir -p $(dirname ${DATA_PATH}/${ossecdir})
|
exec_cmd "mkdir -p $(dirname ${DATA_PATH}/${ossecdir})"
|
||||||
cp -pr /var/ossec/${ossecdir}-template ${DATA_PATH}/${ossecdir}
|
exec_cmd "cp -pr /var/ossec/${ossecdir}-template ${DATA_PATH}/${ossecdir}"
|
||||||
FIRST_TIME_INSTALLATION=true
|
FIRST_TIME_INSTALLATION=true
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
@@ -30,29 +49,37 @@ chgrp ossec ${DATA_PATH}/process_list
|
|||||||
chmod g+rw ${DATA_PATH}/process_list
|
chmod g+rw ${DATA_PATH}/process_list
|
||||||
|
|
||||||
AUTO_ENROLLMENT_ENABLED=${AUTO_ENROLLMENT_ENABLED:-true}
|
AUTO_ENROLLMENT_ENABLED=${AUTO_ENROLLMENT_ENABLED:-true}
|
||||||
|
API_GENERATE_CERTS=${API_GENERATE_CERTS:-true}
|
||||||
|
|
||||||
if [ $FIRST_TIME_INSTALLATION == true ]
|
if [ $FIRST_TIME_INSTALLATION == true ]
|
||||||
then
|
then
|
||||||
|
|
||||||
if [ $AUTO_ENROLLMENT_ENABLED == true ]
|
if [ $AUTO_ENROLLMENT_ENABLED == true ]
|
||||||
then
|
then
|
||||||
if [ ! -e ${DATA_PATH}/etc/sslmanager.key ]
|
if [ ! -e ${DATA_PATH}/etc/sslmanager.key ]
|
||||||
then
|
then
|
||||||
echo "Creating ossec-authd key and cert"
|
print "Creating ossec-authd key and cert"
|
||||||
openssl genrsa -out ${DATA_PATH}/etc/sslmanager.key 4096
|
exec_cmd "openssl genrsa -out ${DATA_PATH}/etc/sslmanager.key 4096"
|
||||||
openssl req -new -x509 -key ${DATA_PATH}/etc/sslmanager.key\
|
exec_cmd "openssl req -new -x509 -key ${DATA_PATH}/etc/sslmanager.key -out ${DATA_PATH}/etc/sslmanager.cert -days 3650 -subj /CN=${HOSTNAME}/"
|
||||||
-out ${DATA_PATH}/etc/sslmanager.cert -days 3650\
|
fi
|
||||||
-subj /CN=${HOSTNAME}/
|
fi
|
||||||
|
if [ $API_GENERATE_CERTS == true ]
|
||||||
|
then
|
||||||
|
if [ ! -e ${DATA_PATH}/api/configuration/ssl/server.crt ]
|
||||||
|
then
|
||||||
|
print "Enabling Wazuh API HTTPS"
|
||||||
|
edit_configuration "https" "yes"
|
||||||
|
print "Create Wazuh API key and cert"
|
||||||
|
exec_cmd "openssl genrsa -out ${DATA_PATH}/api/configuration/ssl/server.key 4096"
|
||||||
|
exec_cmd "openssl req -new -x509 -key ${DATA_PATH}/api/configuration/ssl/server.key -out ${DATA_PATH}/api/configuration/ssl/server.crt -days 3650 -subj /CN=${HOSTNAME}/"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
#Enabling ossec-authd.
|
||||||
|
exec_cmd "/var/ossec/bin/ossec-control enable auth"
|
||||||
|
|
||||||
function ossec_shutdown(){
|
function ossec_shutdown(){
|
||||||
/var/ossec/bin/ossec-control stop;
|
${DATA_PATH}/bin/ossec-control stop;
|
||||||
if [ $AUTO_ENROLLMENT_ENABLED == true ]
|
|
||||||
then
|
|
||||||
kill $AUTHD_PID
|
|
||||||
fi
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# Trap exit signals and do a proper shutdown
|
# Trap exit signals and do a proper shutdown
|
||||||
@@ -60,20 +87,9 @@ trap "ossec_shutdown; exit" SIGINT SIGTERM
|
|||||||
|
|
||||||
chmod -R g+rw ${DATA_PATH}
|
chmod -R g+rw ${DATA_PATH}
|
||||||
|
|
||||||
if [ $AUTO_ENROLLMENT_ENABLED == true ]
|
service postfix start
|
||||||
then
|
service wazuh-api start
|
||||||
echo "Starting ossec-authd..."
|
service wazuh-manager start
|
||||||
/var/ossec/bin/ossec-authd -p 1515 -g ossec $AUTHD_OPTIONS >/dev/null 2>&1 &
|
service filebeat start
|
||||||
AUTHD_PID=$!
|
|
||||||
fi
|
|
||||||
sleep 15 # give ossec a reasonable amount of time to start before checking status
|
|
||||||
LAST_OK_DATE=`date +%s`
|
|
||||||
|
|
||||||
## Start services
|
|
||||||
/usr/sbin/postfix start
|
|
||||||
/bin/node /var/ossec/api/app.js &
|
|
||||||
/usr/bin/filebeat.sh &
|
|
||||||
/var/ossec/bin/ossec-control restart
|
|
||||||
|
|
||||||
|
|
||||||
tail -f /var/ossec/logs/ossec.log
|
tail -f /var/ossec/logs/ossec.log
|
||||||
|
|||||||
@@ -1,7 +0,0 @@
|
|||||||
[wazuh_repo]
|
|
||||||
gpgcheck=1
|
|
||||||
gpgkey=https://packages.wazuh.com/key/GPG-KEY-WAZUH
|
|
||||||
enabled=1
|
|
||||||
name=CENTOS-$releasever - Wazuh
|
|
||||||
baseurl=https://packages.wazuh.com/yum/el/$releasever/$basearch
|
|
||||||
protect=1
|
|
||||||
Reference in New Issue
Block a user