Compare commits

...

13 Commits

Author SHA1 Message Date
José Luis Ruiz
e341391201 Merge pull request #29 from wazuh/2.1.1_5.6.4-remove-old-repo
Remove old Centos repo
2017-11-28 11:25:23 +01:00
Elías Méndez García
c42898e862 Remove old Centos repo 2017-11-28 11:22:15 +01:00
José Luis Ruiz
2663de28a6 Merge pull request #28 from wazuh/dev
Enhancements and fixes
2017-11-24 16:21:46 +01:00
Miguelangel Freitas
d1adafdcde Enabling ossec-authd by default. 2017-11-24 10:07:34 -05:00
Miguelangel Freitas
a866f41ecf Using phusion/baseimage for Wazuh manager, closes #19 2017-11-21 22:12:27 -05:00
Miguelangel Freitas
97a042cfcd Refactoring to new Elastic Stack versions. 2017-11-19 22:42:36 -05:00
Miguelangel Freitas
845398d7c7 Nginx start script path changed 2017-09-26 21:56:41 -04:00
Miguelangel Freitas
6e6912c380 Using Wazuh v2.1.0 2017-09-25 18:50:15 -04:00
Miguelangel Freitas
a2ba029918 Setting wazuh-nginx image 2017-09-25 18:50:02 -04:00
Miguelangel Freitas
160bf4bbe9 Adding Nginx container
* Setting Nginx with SSL and basic auth, closes #20
* Set Content-Type on Kibana API config.
2017-09-24 14:08:02 -04:00
Miguelangel Freitas
a70c127228 Set defaultIndex and API creeds for Kibana, closes #17 2017-09-12 18:28:41 -05:00
Miguelangel Freitas
c2213165f2 Quiet logging for Kibana 2017-09-12 11:14:28 -05:00
José Luis Ruiz
d0565d913a Elastic to version 5.5.2 2017-08-24 14:37:31 -04:00
11 changed files with 196 additions and 76 deletions

View File

@@ -10,7 +10,7 @@ In addition, a docker-compose file is provided to launch the containers mentione
## Current release ## Current release
Containers are currently tested on Wazuh version 2.0 and Elastic Stack version 5.5.1. We will do our best to keep this repository updated to latest versions of both Wazuh and Elastic Stack. Containers are currently tested on Wazuh version 2.0 and Elastic Stack version 5.5.2. We will do our best to keep this repository updated to latest versions of both Wazuh and Elastic Stack.
## Installation notes ## Installation notes

View File

@@ -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.1 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:
@@ -53,17 +67,34 @@ services:
image: wazuh/wazuh-kibana image: wazuh/wazuh-kibana
hostname: kibana hostname: kibana
restart: always restart: always
ports: # ports:
- "5601:5601" # - "5601:5601"
networks: networks:
- docker_elk - docker_elk
depends_on: depends_on:
- elasticsearch - elasticsearch
links: links:
- elasticsearch:elasticsearch - elasticsearch:elasticsearch
entrypoint: sh wait-for-it.sh elasticsearch - wazuh
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:
image: wazuh/wazuh-nginx
hostname: nginx
restart: always
entrypoint: /run.sh
environment:
- NGINX_PORT=443
ports:
- "80:80"
- "443:443"
networks:
- docker_elk
depends_on:
- kibana
links:
- kibana
networks: networks:
docker_elk: docker_elk:

View File

@@ -1,7 +1,9 @@
FROM kibana:5.5.1 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

View File

@@ -81,7 +81,7 @@ elasticsearch.url: "http://elasticsearch:9200"
# logging.silent: false # logging.silent: false
# Set the value of this setting to true to suppress all logging output other than error messages. # Set the value of this setting to true to suppress all logging output other than error messages.
# logging.quiet: false logging.quiet: true
# Set the value of this setting to true to log all events, including system usage information # Set the value of this setting to true to log all events, including system usage information
# and all requests. # and all requests.
@@ -90,3 +90,10 @@ elasticsearch.url: "http://elasticsearch:9200"
# 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

View File

@@ -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.1.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
@@ -22,4 +20,37 @@ else
/usr/share/kibana/bin/kibana-plugin install ${WAZUH_KIBANA_PLUGIN_URL} /usr/share/kibana/bin/kibana-plugin install ${WAZUH_KIBANA_PLUGIN_URL}
fi fi
sleep 30
echo "Configuring defaultIndex to wazuh-alerts-*"
curl -s -XPUT http://$host:9200/.kibana/config/5.6.4 -H 'Content-Type: application/json' -d '{"defaultIndex" : "wazuh-alerts-*"}' > /dev/null
echo "Setting API credentials into Wazuh APP"
CONFIG_CODE=$(curl -s -o /dev/null -w "%{http_code}" -XGET http://$host:9200/.wazuh/wazuh-configuration/apiconfig)
if [ "x$CONFIG_CODE" = "x404" ]; then
curl -s -XPOST http://$host:9200/.wazuh/wazuh-configuration/apiconfig -H 'Content-Type: application/json' -d'
{
"api_user": "foo",
"api_password": "YmFy",
"url": "https://wazuh",
"api_port": "55000",
"insecure": "true",
"component": "API",
"active": "true",
"manager": "wazuh-manager",
"extensions": {
"oscap": true,
"audit": true,
"pci": true
}
}
' > /dev/null
else
echo "Wazuh APP already configured"
fi
sleep 5
exec $cmd exec $cmd

View File

@@ -1,12 +1,4 @@
FROM logstash:5.5.1 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"]

7
nginx/Dockerfile Normal file
View File

@@ -0,0 +1,7 @@
FROM nginx:latest
RUN apt-get update && apt-get install -y openssl apache2-utils
COPY ./config/run.sh /run.sh
RUN chmod 755 /run.sh

43
nginx/config/run.sh Normal file
View File

@@ -0,0 +1,43 @@
#!/bin/bash
set -e
if [ ! -d /etc/pki/tls/certs ]; then
echo "Generating SSL certificates"
mkdir -p /etc/pki/tls/certs /etc/pki/tls/private
openssl req -x509 -batch -nodes -days 365 -newkey rsa:2048 -keyout /etc/pki/tls/private/kibana-access.key -out /etc/pki/tls/certs/kibana-access.pem >/dev/null
else
echo "SSL certificates already present"
fi
if [ ! -f /etc/nginx/conf.d/kibana.htpasswd ]; then
echo "Setting Nginx credentials"
echo bar|htpasswd -i -c /etc/nginx/conf.d/kibana.htpasswd foo >/dev/null
else
echo "Kibana credentials already configured"
fi
echo "Configuring NGINX"
cat > /etc/nginx/conf.d/default.conf <<EOF
server {
listen 80;
listen [::]:80;
return 301 https://\$host:$NGINX_PORT\$request_uri;
}
server {
listen $NGINX_PORT default_server;
listen [::]:$NGINX_PORT;
ssl on;
ssl_certificate /etc/pki/tls/certs/kibana-access.pem;
ssl_certificate_key /etc/pki/tls/private/kibana-access.key;
location / {
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/conf.d/kibana.htpasswd;
proxy_pass http://kibana:5601/;
}
}
EOF
echo "Starting Nginx"
nginx -g 'daemon off; error_log /dev/stdout info;'

View File

@@ -1,16 +1,15 @@
FROM centos:latest FROM phusion/baseimage:latest
ARG FILEBEAT_VERSION=5.5.1 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 wazuh-api 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/

View File

@@ -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

View File

@@ -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