mirror of
				https://github.com/wazuh/wazuh-docker.git
				synced 2025-10-31 20:13:38 +00:00 
			
		
		
		
	Compare commits
	
		
			23 Commits
		
	
	
		
			cloud-2.0.
			...
			3.9.1_7.1.
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | 4a01fcc01f | ||
|  | e6da7606b9 | ||
|  | 5d1432b729 | ||
|  | 22ad4360f5 | ||
|  | 6a82b98fcf | ||
|  | 1922ae145a | ||
|  | f66f986abb | ||
|  | 569d3ee931 | ||
|  | 01e8e18f61 | ||
|  | 447c15c823 | ||
|  | 780dfe1a51 | ||
|  | eadc765860 | ||
|  | ae3734db18 | ||
|  | 91d4ec5c4b | ||
|  | d6074f5f7e | ||
|  | 6ff836e9fc | ||
|  | 5799998308 | ||
|  | 4adb9741e4 | ||
|  | 1d4161cc02 | ||
|  | f462dd5846 | ||
|  | 20d2891e23 | ||
|  | e954a6486a | ||
|  | f63d9fa387 | 
| @@ -1,6 +1,13 @@ | ||||
| # Change Log | ||||
| All notable changes to this project will be documented in this file. | ||||
|  | ||||
| ## Wazuh Docker v3.9.1_7.1.0 | ||||
|  | ||||
| ### Added | ||||
|  | ||||
| - Support for Elastic v7.1.0 | ||||
| - New environment variables for Kibana ([@manuasir](https://github.com/manuasir)) [#22ad43](https://github.com/wazuh/wazuh-docker/commit/22ad4360f548e54bb0c5e929f8c84a186ad2ab88) | ||||
|  | ||||
| ## Wazuh Docker v3.9.1_6.8.0 | ||||
|  | ||||
| ### Added | ||||
|   | ||||
| @@ -8,7 +8,6 @@ | ||||
| In this repository you will find the containers to run: | ||||
|  | ||||
| * wazuh: It runs the Wazuh manager, Wazuh API and Filebeat (for integration with Elastic Stack) | ||||
| * wazuh-logstash: It is used to receive alerts generated by the manager and feed Elasticsearch using an alerts template | ||||
| * wazuh-kibana: Provides a web user interface to browse through alerts data. It includes Wazuh plugin for Kibana, that allows you to visualize agents configuration and status. | ||||
| * wazuh-nginx: Proxies the Kibana container, adding HTTPS (via self-signed SSL certificate) and [Basic authentication](https://developer.mozilla.org/en-US/docs/Web/HTTP/Authentication#Basic_authentication_scheme). | ||||
| * wazuh-elasticsearch: An Elasticsearch container (working as a single-node cluster) using Elastic Stack Docker images. **Be aware to increase the `vm.max_map_count` setting, as it's detailed in the [Wazuh documentation](https://documentation.wazuh.com/current/docker/wazuh-container.html#increase-max-map-count-on-your-host-linux).**  | ||||
| @@ -33,11 +32,6 @@ In addition, a docker-compose file is provided to launch the containers mentione | ||||
| 	│   │   └── kibana.yml | ||||
| 	│   └── Dockerfile | ||||
| 	├── LICENSE | ||||
| 	├── logstash | ||||
| 	│   ├── config | ||||
| 	│   │   ├── 01-wazuh.conf | ||||
| 	│   │   └── run.sh | ||||
| 	│   └── Dockerfile | ||||
| 	├── nginx | ||||
| 	│   ├── config | ||||
| 	│   │   └── entrypoint.sh | ||||
| @@ -76,7 +70,7 @@ We thank you them and everyone else who has contributed to this project. | ||||
|  | ||||
| ## License and copyright | ||||
|  | ||||
| Wazuh App Copyright (C) 2019 Wazuh Inc. (License GPLv2) | ||||
| Wazuh Docker Copyright (C) 2019 Wazuh Inc. (License GPLv2) | ||||
|  | ||||
| ## Web references | ||||
|  | ||||
|   | ||||
							
								
								
									
										4
									
								
								VERSION
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								VERSION
									
									
									
									
									
								
							| @@ -1,2 +1,2 @@ | ||||
| WAZUH-DOCKER_VERSION="3.9.1_6.8.0" | ||||
| REVISION="3901" | ||||
| WAZUH-DOCKER_VERSION="3.9.1_7.1.0" | ||||
| REVISION="3911" | ||||
| @@ -1,49 +1,36 @@ | ||||
| # Wazuh App Copyright (C) 2019 Wazuh Inc. (License GPLv2) | ||||
| # Wazuh Docker Copyright (C) 2019 Wazuh Inc. (License GPLv2) | ||||
| version: '2' | ||||
|  | ||||
| services: | ||||
|   wazuh: | ||||
|     image: wazuh/wazuh:3.9.1_6.8.0 | ||||
|     build: wazuh | ||||
|     hostname: wazuh-manager | ||||
|     restart: always | ||||
|     ports: | ||||
|       - "1514:1514/udp" | ||||
|       - "1515:1515" | ||||
|       - "514:514/udp" | ||||
|       - "55000:55000" | ||||
|     depends_on: | ||||
|       - logstash | ||||
|   logstash: | ||||
|     image: wazuh/wazuh-logstash:3.9.1_6.8.0 | ||||
|     hostname: logstash | ||||
|     restart: always | ||||
|     links: | ||||
|       - elasticsearch:elasticsearch | ||||
|     ports: | ||||
|       - "5000:5000" | ||||
|     depends_on: | ||||
|       - elasticsearch | ||||
|     environment: | ||||
|       - LS_HEAP_SIZE=2048m | ||||
|       - '1514:1514/udp' | ||||
|       - '1515:1515' | ||||
|       - '514:514/udp' | ||||
|       - '55000:55000' | ||||
|   elasticsearch: | ||||
|     image: wazuh/wazuh-elasticsearch:3.9.1_6.8.0 | ||||
|     build: elasticsearch | ||||
|     hostname: elasticsearch | ||||
|     restart: always | ||||
|     ports: | ||||
|       - "9200:9200" | ||||
|       - '9200:9200' | ||||
|     environment: | ||||
|       - node.name=node-1 | ||||
|       - cluster.name=wazuh | ||||
|       - network.host=0.0.0.0 | ||||
|       - network.host=localhost | ||||
|       - discovery.type=single-node | ||||
|       - bootstrap.memory_lock=true | ||||
|       - "ES_JAVA_OPTS=-Xms1g -Xmx1g" | ||||
|       - 'ES_JAVA_OPTS=-Xms1g -Xmx1g' | ||||
|     ulimits: | ||||
|       memlock: | ||||
|         soft: -1 | ||||
|         hard: -1 | ||||
|     mem_limit: 2g | ||||
|   kibana: | ||||
|     image: wazuh/wazuh-kibana:3.9.1_6.8.0 | ||||
|     build: kibana | ||||
|     hostname: kibana | ||||
|     restart: always | ||||
|     depends_on: | ||||
| @@ -52,15 +39,15 @@ services: | ||||
|       - elasticsearch:elasticsearch | ||||
|       - wazuh:wazuh | ||||
|   nginx: | ||||
|     image: wazuh/wazuh-nginx:3.9.1_6.8.0 | ||||
|     build: nginx | ||||
|     hostname: nginx | ||||
|     restart: always | ||||
|     environment: | ||||
|       - NGINX_PORT=443 | ||||
|       - NGINX_CREDENTIALS | ||||
|     ports: | ||||
|       - "80:80" | ||||
|       - "443:443" | ||||
|       - '80:80' | ||||
|       - '443:443' | ||||
|     depends_on: | ||||
|       - kibana | ||||
|     links: | ||||
|   | ||||
| @@ -1,5 +1,5 @@ | ||||
| # Wazuh App Copyright (C) 2019 Wazuh Inc. (License GPLv2) | ||||
| FROM docker.elastic.co/elasticsearch/elasticsearch:6.8.0 | ||||
| # Wazuh Docker Copyright (C) 2019 Wazuh Inc. (License GPLv2) | ||||
| FROM docker.elastic.co/elasticsearch/elasticsearch:7.1.0 | ||||
|  | ||||
| ENV ELASTICSEARCH_URL="http://elasticsearch:9200" | ||||
|  | ||||
| @@ -17,6 +17,7 @@ ENV TEMPLATE_VERSION=v3.9.1 | ||||
|  | ||||
| # Elasticearch cluster configuration environment variables | ||||
| # If ELASTIC_CLUSTER is set to "true" the following variables will be added to the Elasticsearch configuration | ||||
| # CLUSTER_INITIAL_MASTER_NODES set to own node by default. | ||||
| ENV ELASTIC_CLUSTER="false" \ | ||||
|     CLUSTER_NAME="wazuh" \ | ||||
|     CLUSTER_NODE_MASTER="true" \ | ||||
| @@ -27,9 +28,10 @@ ENV ELASTIC_CLUSTER="false" \ | ||||
|     CLUSTER_DISCOVERY_SERVICE="wazuh-elasticsearch" \ | ||||
|     CLUSTER_NUMBER_OF_MASTERS="2" \ | ||||
|     CLUSTER_MAX_NODES="1" \ | ||||
|     CLUSTER_DELAYED_TIMEOUT="1m" | ||||
|     CLUSTER_DELAYED_TIMEOUT="1m" \ | ||||
|     CLUSTER_INITIAL_MASTER_NODES="wazuh-elasticsearch" | ||||
|  | ||||
| ADD https://raw.githubusercontent.com/wazuh/wazuh/$TEMPLATE_VERSION/extensions/elasticsearch/6.x/wazuh-template.json /usr/share/elasticsearch/config | ||||
| ADD https://raw.githubusercontent.com/wazuh/wazuh/$TEMPLATE_VERSION/extensions/elasticsearch/7.x/wazuh-template.json /usr/share/elasticsearch/config | ||||
|  | ||||
| COPY config/entrypoint.sh /entrypoint.sh  | ||||
|  | ||||
| @@ -39,7 +41,7 @@ COPY --chown=elasticsearch:elasticsearch ./config/load_settings.sh ./ | ||||
|  | ||||
| RUN chmod +x ./load_settings.sh | ||||
|  | ||||
| RUN bin/elasticsearch-plugin install --batch https://artifacts.elastic.co/downloads/elasticsearch-plugins/repository-s3/repository-s3-6.8.0.zip | ||||
| RUN bin/elasticsearch-plugin install --batch https://artifacts.elastic.co/downloads/elasticsearch-plugins/repository-s3/repository-s3-7.1.0.zip | ||||
|  | ||||
| COPY config/configure_s3.sh ./config/configure_s3.sh | ||||
| RUN chmod 755 ./config/configure_s3.sh | ||||
|   | ||||
| @@ -1,5 +1,5 @@ | ||||
| #!/bin/bash | ||||
| # Wazuh App Copyright (C) 2019 Wazuh Inc. (License GPLv2) | ||||
| # Wazuh Docker Copyright (C) 2019 Wazuh Inc. (License GPLv2) | ||||
|  | ||||
| elastic_config_file="/usr/share/elasticsearch/config/elasticsearch.yml" | ||||
|  | ||||
| @@ -10,7 +10,7 @@ then | ||||
|    | ||||
|   # Set the cluster.name and discovery.zen.minimun_master_nodes variables | ||||
|   sed -i 's:cluster.name\: "docker-cluster":cluster.name\: "'$CLUSTER_NAME'":g' $elastic_config_file | ||||
|   sed -i 's:discovery.zen.minimum_master_nodes\: 1:discovery.zen.minimum_master_nodes\: '$CLUSTER_NUMBER_OF_MASTERS':g' $elastic_config_file | ||||
|   #sed -i 's:discovery.zen.minimum_master_nodes\: 1:discovery.zen.minimum_master_nodes\: '$CLUSTER_NUMBER_OF_MASTERS':g' $elastic_config_file | ||||
|  | ||||
|   # Add the cluster configuration | ||||
|   echo " | ||||
| @@ -25,9 +25,17 @@ node: | ||||
| bootstrap: | ||||
|   memory_lock: ${CLUSTER_MEMORY_LOCK}  | ||||
|  | ||||
| discovery: | ||||
|   zen: | ||||
|     ping.unicast.hosts: ${CLUSTER_DISCOVERY_SERVICE} | ||||
| cluster.initial_master_nodes: | ||||
|   - '${CLUSTER_INITIAL_MASTER_NODES}' | ||||
|  | ||||
| " >> $elastic_config_file | ||||
| else | ||||
|  | ||||
| cat >> $elastic_config_file <<'EOF' | ||||
| cluster.initial_master_nodes: | ||||
|   - 'elasticsearch' | ||||
| EOF | ||||
|  | ||||
| # echo 'discovery.type: single-node' | ||||
|  | ||||
| fi | ||||
|   | ||||
| @@ -1,4 +1,5 @@ | ||||
| #!/bin/bash | ||||
| # Wazuh Docker Copyright (C) 2019 Wazuh Inc. (License GPLv2) | ||||
|  | ||||
| set -e | ||||
|  | ||||
|   | ||||
| @@ -1,5 +1,5 @@ | ||||
| #!/bin/bash | ||||
| # Wazuh App Copyright (C) 2019 Wazuh Inc. (License GPLv2) | ||||
| # Wazuh Docker Copyright (C) 2019 Wazuh Inc. (License GPLv2) | ||||
|  | ||||
| # For more information https://github.com/elastic/elasticsearch-docker/blob/6.8.0/build/elasticsearch/bin/docker-entrypoint.sh | ||||
|  | ||||
|   | ||||
| @@ -1,5 +1,5 @@ | ||||
| #!/bin/bash | ||||
| # Wazuh App Copyright (C) 2019 Wazuh Inc. (License GPLv2) | ||||
| # Wazuh Docker Copyright (C) 2019 Wazuh Inc. (License GPLv2) | ||||
|  | ||||
| set -e | ||||
|  | ||||
| @@ -11,7 +11,7 @@ else | ||||
|   wazuh_url="${WAZUH_API_URL}" | ||||
| fi | ||||
|  | ||||
| if [ ${ENABLED_XPACK} != "true" || "x${ELASTICSEARCH_USERNAME}" = "x" || "x${ELASTICSEARCH_PASSWORD}" = "x" ]; then | ||||
| if [[ ${ENABLED_XPACK} != "true" || "x${ELASTICSEARCH_USERNAME}" = "x" || "x${ELASTICSEARCH_PASSWORD}" = "x" ]]; then | ||||
|   auth="" | ||||
| else | ||||
|   auth="--user ${ELASTICSEARCH_USERNAME}:${ELASTICSEARCH_PASSWORD}" | ||||
| @@ -45,20 +45,15 @@ fi | ||||
|  | ||||
| #Insert default templates | ||||
|  | ||||
| sed -i 's|    "index.refresh_interval": "5s"|    "index.refresh_interval": "5s",    "number_of_shards" :   '"${ALERTS_SHARDS}"',    "number_of_replicas" : '"${ALERTS_REPLICAS}"'|' /usr/share/elasticsearch/config/wazuh-template.json | ||||
|  | ||||
| cat /usr/share/elasticsearch/config/wazuh-template.json | curl -XPUT "$el_url/_template/wazuh" ${auth} -H 'Content-Type: application/json' -d @- | ||||
| sleep 5 | ||||
|  | ||||
|  | ||||
| API_PASS_Q=`echo "$API_PASS" | tr -d '"'` | ||||
| API_USER_Q=`echo "$API_USER" | tr -d '"'` | ||||
| API_PASSWORD=`echo -n $API_PASS_Q | base64` | ||||
|  | ||||
| echo "Setting API credentials into Wazuh APP" | ||||
| CONFIG_CODE=$(curl -s -o /dev/null -w "%{http_code}" -XGET $el_url/.wazuh/wazuh-configuration/1513629884013 ${auth}) | ||||
| if [ "x$CONFIG_CODE" = "x404" ]; then | ||||
|   curl -s -XPOST $el_url/.wazuh/wazuh-configuration/1513629884013 ${auth} -H 'Content-Type: application/json' -d' | ||||
| CONFIG_CODE=$(curl -s -o /dev/null -w "%{http_code}" -XGET $el_url/.wazuh/_doc/1513629884013 ${auth}) | ||||
|  | ||||
| if [ "x$CONFIG_CODE" != "x200" ]; then | ||||
|   curl -s -XPOST $el_url/.wazuh/_doc/1513629884013 ${auth} -H 'Content-Type: application/json' -d' | ||||
|   { | ||||
|     "api_user": "'"$API_USER_Q"'", | ||||
|     "api_password": "'"$API_PASSWORD"'", | ||||
|   | ||||
| @@ -1,13 +1,12 @@ | ||||
| # Wazuh App Copyright (C) 2019 Wazuh Inc. (License GPLv2) | ||||
| FROM docker.elastic.co/kibana/kibana:6.8.0 | ||||
| ARG WAZUH_APP_VERSION=3.9.1_6.8.0 | ||||
| # Wazuh Docker Copyright (C) 2019 Wazuh Inc. (License GPLv2) | ||||
| FROM docker.elastic.co/kibana/kibana:7.1.0 | ||||
| ARG WAZUH_APP_VERSION=3.9.1_7.1.0 | ||||
| USER root | ||||
|  | ||||
| ADD https://packages-dev.wazuh.com/pre-release/app/kibana/wazuhapp-3.9.1_6.8.0.zip /tmp | ||||
| ADD  https://packages.wazuh.com/wazuhapp/wazuhapp-${WAZUH_APP_VERSION}.zip /tmp | ||||
|  | ||||
| RUN NODE_OPTIONS="--max-old-space-size=3072" /usr/share/kibana/bin/kibana-plugin install file:///tmp/wazuhapp-3.9.1_6.8.0.zip &&\ | ||||
|     chown -R kibana:kibana /usr/share/kibana &&\ | ||||
|     rm -rf /tmp/* | ||||
| RUN /usr/share/kibana/bin/kibana-plugin install file:///tmp/wazuhapp-${WAZUH_APP_VERSION}.zip  | ||||
| RUN rm -rf /tmp/wazuhapp-${WAZUH_APP_VERSION}.zip | ||||
|  | ||||
| COPY config/entrypoint.sh ./entrypoint.sh | ||||
| RUN chmod 755 ./entrypoint.sh | ||||
|   | ||||
| @@ -1,5 +1,5 @@ | ||||
| #!/bin/bash | ||||
| # Wazuh App Copyright (C) 2019 Wazuh Inc. (License GPLv2) | ||||
| # Wazuh Docker Copyright (C) 2019 Wazuh Inc. (License GPLv2) | ||||
|  | ||||
| set -e | ||||
|  | ||||
|   | ||||
| @@ -1,6 +1,5 @@ | ||||
| #!/bin/bash | ||||
| # Wazuh App Copyright (C) 2019 Wazuh Inc. (License GPLv2) | ||||
|  | ||||
| # Wazuh Docker Copyright (C) 2019 Wazuh Inc. (License GPLv2) | ||||
|  | ||||
| WAZUH_MAJOR=3 | ||||
|  | ||||
| @@ -19,8 +18,24 @@ WAZUH_MAJOR=3 | ||||
| # Customize elasticsearch ip | ||||
| ############################################################################## | ||||
| if [ "$ELASTICSEARCH_KIBANA_IP" != "" ]; then | ||||
|   sed -i "s:#elasticsearch.hosts:elasticsearch.hosts:g" /usr/share/kibana/config/kibana.yml | ||||
|   sed -i 's|http://elasticsearch:9200|'$ELASTICSEARCH_KIBANA_IP'|g' /usr/share/kibana/config/kibana.yml | ||||
| fi | ||||
|  | ||||
| # If KIBANA_INDEX was set, then change the default index in kibana.yml configuration file. If there was an index, then delete it and recreate. | ||||
| if [ "$KIBANA_INDEX" != "" ]; then | ||||
|   if grep -q 'kibana.index' /usr/share/kibana/config/kibana.yml; then | ||||
|     sed -i '/kibana.index/d' /usr/share/kibana/config/kibana.yml | ||||
|   fi | ||||
|     echo "kibana.index: $KIBANA_INDEX" >> /usr/share/kibana/config/kibana.yml | ||||
| fi | ||||
|  | ||||
| # If XPACK_SECURITY_ENABLED was set, then change the xpack.security.enabled option from true (default) to false. | ||||
| if [ "$XPACK_SECURITY_ENABLED" != "" ]; then | ||||
|   if grep -q 'xpack.security.enabled' /usr/share/kibana/config/kibana.yml; then | ||||
|     sed -i '/xpack.security.enabled/d' /usr/share/kibana/config/kibana.yml | ||||
|   fi | ||||
|     echo "xpack.security.enabled: $XPACK_SECURITY_ENABLED" >> /usr/share/kibana/config/kibana.yml | ||||
| fi | ||||
|  | ||||
| if [ "$KIBANA_IP" != "" ]; then | ||||
|   | ||||
| @@ -1,5 +1,5 @@ | ||||
| #!/bin/bash | ||||
| # Wazuh App Copyright (C) 2019 Wazuh Inc. (License GPLv2) | ||||
| # Wazuh Docker Copyright (C) 2019 Wazuh Inc. (License GPLv2) | ||||
|  | ||||
| kibana_config_file="/usr/share/kibana/plugins/wazuh/config.yml" | ||||
|  | ||||
|   | ||||
| @@ -1,4 +1,5 @@ | ||||
| #!/bin/bash | ||||
| # Wazuh Docker Copyright (C) 2019 Wazuh Inc. (License GPLv2) | ||||
|  | ||||
| if [[ $CHANGE_WELCOME == "true" ]] | ||||
| then | ||||
|   | ||||
| @@ -1,4 +1,5 @@ | ||||
| #!/bin/bash | ||||
| # Wazuh Docker Copyright (C) 2019 Wazuh Inc. (License GPLv2) | ||||
|  | ||||
| kibana_config_file="/usr/share/kibana/config/kibana.yml" | ||||
| if grep -Fq  "#xpack features" "$kibana_config_file"; | ||||
|   | ||||
| @@ -1,12 +0,0 @@ | ||||
| # Wazuh App Copyright (C) 2019 Wazuh Inc. (License GPLv2) | ||||
| FROM docker.elastic.co/logstash/logstash:6.8.0 | ||||
|  | ||||
| COPY --chown=logstash:logstash config/entrypoint.sh /entrypoint.sh | ||||
|  | ||||
| RUN chmod 755 /entrypoint.sh | ||||
|  | ||||
| RUN rm -f /usr/share/logstash/pipeline/logstash.conf | ||||
|  | ||||
| COPY config/01-wazuh.conf /usr/share/logstash/pipeline/01-wazuh.conf | ||||
|  | ||||
| ENTRYPOINT /entrypoint.sh | ||||
| @@ -1,45 +0,0 @@ | ||||
| # Wazuh App Copyright (C) 2019 Wazuh Inc. (License GPLv2) | ||||
| # Wazuh - Logstash configuration file | ||||
| ## Remote Wazuh Manager - Filebeat input | ||||
| input { | ||||
|     beats { | ||||
|         port => 5000 | ||||
|         codec => "json_lines" | ||||
| #       ssl => true | ||||
| #       ssl_certificate => "/etc/logstash/logstash.crt" | ||||
| #       ssl_key => "/etc/logstash/logstash.key" | ||||
|     } | ||||
| } | ||||
| filter { | ||||
|     if [data][srcip] { | ||||
|         mutate { | ||||
|             add_field => [ "@src_ip", "%{[data][srcip]}" ] | ||||
|         } | ||||
|     } | ||||
|     if [data][aws][sourceIPAddress] { | ||||
|         mutate { | ||||
|             add_field => [ "@src_ip", "%{[data][aws][sourceIPAddress]}" ] | ||||
|         } | ||||
|     } | ||||
| } | ||||
| filter { | ||||
|     geoip { | ||||
|         source => "@src_ip" | ||||
|         target => "GeoLocation" | ||||
|         fields => ["city_name", "country_name", "region_name", "location"] | ||||
|     } | ||||
|     date { | ||||
|         match => ["timestamp", "ISO8601"] | ||||
|         target => "@timestamp" | ||||
|     } | ||||
|     mutate { | ||||
|         remove_field => [ "timestamp", "beat", "input_type", "tags", "count", "@version", "log", "offset", "type", "@src_ip", "host"] | ||||
|     } | ||||
| } | ||||
| output { | ||||
|     elasticsearch { | ||||
|         hosts => ["elasticsearch:9200"] | ||||
|         index => "wazuh-alerts-3.x-%{+YYYY.MM.dd}" | ||||
|         document_type => "wazuh" | ||||
|     } | ||||
| } | ||||
| @@ -1,72 +0,0 @@ | ||||
| #!/bin/bash | ||||
| # Wazuh App Copyright (C) 2019 Wazuh Inc. (License GPLv2) | ||||
| # | ||||
| # OSSEC container bootstrap. See the README for information of the environment | ||||
| # variables expected by this script. | ||||
| # | ||||
|  | ||||
| set -e | ||||
|  | ||||
| ############################################################################## | ||||
| # Waiting for elasticsearch | ||||
| ############################################################################## | ||||
|  | ||||
| if [ "x${ELASTICSEARCH_URL}" = "x" ]; then | ||||
|   el_url="http://elasticsearch:9200" | ||||
| else | ||||
|   el_url="${ELASTICSEARCH_URL}" | ||||
| fi | ||||
|  | ||||
| ############################################################################## | ||||
| # Customize logstash output ip | ||||
| ############################################################################## | ||||
|  | ||||
| if [ "$LOGSTASH_OUTPUT" != "" ]; then | ||||
|   >&2 echo "Customize Logstash ouput ip." | ||||
|   sed -i 's|elasticsearch:9200|'$LOGSTASH_OUTPUT'|g' /usr/share/logstash/pipeline/01-wazuh.conf | ||||
|   sed -i 's|http://elasticsearch:9200|'$LOGSTASH_OUTPUT'|g' /usr/share/logstash/config/logstash.yml  | ||||
| fi | ||||
|  | ||||
| until curl -XGET $el_url; do | ||||
|   >&2 echo "Elastic is unavailable - sleeping." | ||||
|   sleep 5 | ||||
| done | ||||
|  | ||||
| sleep 2 | ||||
|  | ||||
| >&2 echo "Elasticsearch is up." | ||||
|  | ||||
| ############################################################################## | ||||
| # Waiting for wazuh alerts template | ||||
| ############################################################################## | ||||
|  | ||||
| strlen=0 | ||||
|  | ||||
| while [[ $strlen -eq 0 ]] | ||||
| do | ||||
|   template=$(curl $el_url/_cat/templates/wazuh -s) | ||||
|   strlen=${#template} | ||||
|   >&2 echo "Wazuh alerts template not loaded - sleeping." | ||||
|   sleep 2 | ||||
| done | ||||
|  | ||||
| sleep 2 | ||||
|  | ||||
| >&2 echo "Wazuh alerts template is loaded." | ||||
|  | ||||
| ############################################################################## | ||||
| # Map environment variables to entries in logstash.yml. | ||||
| # Note that this will mutate logstash.yml in place if any such settings are found. | ||||
| # This may be undesirable, especially if logstash.yml is bind-mounted from the | ||||
| # host system. | ||||
| ############################################################################## | ||||
|  | ||||
| env2yaml /usr/share/logstash/config/logstash.yml | ||||
|  | ||||
| export LS_JAVA_OPTS="-Dls.cgroup.cpuacct.path.override=/ -Dls.cgroup.cpu.path.override=/ $LS_JAVA_OPTS" | ||||
|  | ||||
| if [[ -z $1 ]] || [[ ${1:0:1} == '-' ]] ; then | ||||
|   exec logstash "$@" | ||||
| else | ||||
|   exec "$@" | ||||
| fi | ||||
| @@ -1,4 +1,4 @@ | ||||
| # Wazuh App Copyright (C) 2019 Wazuh Inc. (License GPLv2) | ||||
| # Wazuh Docker Copyright (C) 2019 Wazuh Inc. (License GPLv2) | ||||
| FROM nginx:latest | ||||
|  | ||||
| ENV DEBIAN_FRONTEND noninteractive | ||||
|   | ||||
| @@ -1,5 +1,5 @@ | ||||
| #!/bin/bash | ||||
| # Wazuh App Copyright (C) 2019 Wazuh Inc. (License GPLv2) | ||||
| # Wazuh Docker Copyright (C) 2019 Wazuh Inc. (License GPLv2) | ||||
|  | ||||
| set -e | ||||
|  | ||||
|   | ||||
| @@ -1,10 +1,12 @@ | ||||
| # Wazuh App Copyright (C) 2019 Wazuh Inc. (License GPLv2) | ||||
| # Wazuh Docker Copyright (C) 2019 Wazuh Inc. (License GPLv2) | ||||
| FROM phusion/baseimage:latest | ||||
| ARG FILEBEAT_VERSION=6.8.0 | ||||
| ARG FILEBEAT_VERSION=7.1.0 | ||||
| ARG WAZUH_VERSION=3.9.1-1 | ||||
|  | ||||
| ENV API_USER="foo" \ | ||||
|     API_PASS="bar" | ||||
|    API_PASS="bar" | ||||
|  | ||||
| ENV TEMPLATE_VERSION="v3.9.1" | ||||
|  | ||||
| # Set repositories. | ||||
| RUN set -x && echo "deb https://packages.wazuh.com/3.x/apt/ stable main" | tee /etc/apt/sources.list.d/wazuh.list && \ | ||||
| @@ -31,12 +33,12 @@ COPY config/00-wazuh.sh /entrypoint-scripts/00-wazuh.sh | ||||
|  | ||||
| # Sync calls are due to https://github.com/docker/docker/issues/9547 | ||||
| RUN chmod 755 /init.bash && \ | ||||
|     sync && /init.bash && \ | ||||
|     sync && rm /init.bash && \ | ||||
|     curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-${FILEBEAT_VERSION}-amd64.deb &&\ | ||||
|     dpkg -i filebeat-${FILEBEAT_VERSION}-amd64.deb && rm -f filebeat-${FILEBEAT_VERSION}-amd64.deb && \ | ||||
|     chmod 755 /entrypoint.sh && \ | ||||
|     chmod 755 /entrypoint-scripts/00-wazuh.sh  | ||||
|    sync && /init.bash && \ | ||||
|    sync && rm /init.bash && \ | ||||
|    curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-${FILEBEAT_VERSION}-amd64.deb &&\ | ||||
|    dpkg -i filebeat-${FILEBEAT_VERSION}-amd64.deb && rm -f filebeat-${FILEBEAT_VERSION}-amd64.deb && \ | ||||
|    chmod 755 /entrypoint.sh && \ | ||||
|    chmod 755 /entrypoint-scripts/00-wazuh.sh  | ||||
|  | ||||
| COPY config/filebeat.yml /etc/filebeat/ | ||||
| RUN chmod go-w /etc/filebeat/filebeat.yml  | ||||
| @@ -52,9 +54,9 @@ EXPOSE 55000/tcp 1514/udp 1515/tcp 514/udp 1516/tcp | ||||
|  | ||||
| # Adding services | ||||
| RUN mkdir /etc/service/wazuh && \ | ||||
|     mkdir /etc/service/wazuh-api && \ | ||||
|     mkdir /etc/service/postfix && \ | ||||
|     mkdir /etc/service/filebeat | ||||
|    mkdir /etc/service/wazuh-api && \ | ||||
|    mkdir /etc/service/postfix && \ | ||||
|    mkdir /etc/service/filebeat | ||||
|  | ||||
| COPY config/wazuh.runit.service /etc/service/wazuh/run | ||||
| COPY config/wazuh-api.runit.service /etc/service/wazuh-api/run | ||||
| @@ -62,9 +64,13 @@ COPY config/postfix.runit.service /etc/service/postfix/run | ||||
| COPY config/filebeat.runit.service /etc/service/filebeat/run | ||||
|  | ||||
| RUN chmod +x /etc/service/wazuh-api/run && \ | ||||
|     chmod +x /etc/service/wazuh/run && \ | ||||
|     chmod +x /etc/service/postfix/run && \ | ||||
|     chmod +x /etc/service/filebeat/run  | ||||
|    chmod +x /etc/service/wazuh/run && \ | ||||
|    chmod +x /etc/service/postfix/run && \ | ||||
|    chmod +x /etc/service/filebeat/run  | ||||
|  | ||||
|  | ||||
| ADD https://raw.githubusercontent.com/wazuh/wazuh/$TEMPLATE_VERSION/extensions/elasticsearch/7.x/wazuh-template.json /etc/filebeat | ||||
| RUN chmod go-w /etc/filebeat/wazuh-template.json  | ||||
|  | ||||
| # Run all services | ||||
| ENTRYPOINT ["/entrypoint.sh"] | ||||
|   | ||||
| @@ -1,17 +1,10 @@ | ||||
| #!/bin/bash | ||||
| # Wazuh App Copyright (C) 2019 Wazuh Inc. (License GPLv2) | ||||
| # Wazuh Docker Copyright (C) 2019 Wazuh Inc. (License GPLv2) | ||||
|  | ||||
| # | ||||
| # OSSEC container bootstrap. See the README for information of the environment | ||||
| # Wazuh container bootstrap. See the README for information of the environment | ||||
| # variables expected by this script. | ||||
| # | ||||
|  | ||||
| # | ||||
|  | ||||
| # | ||||
| # Startup the services | ||||
| # | ||||
|  | ||||
| source /data_dirs.env | ||||
|  | ||||
| FIRST_TIME_INSTALLATION=false | ||||
| @@ -140,12 +133,3 @@ change_user="node htpasswd -b -c user $API_USER $API_PASS" | ||||
| eval $change_user | ||||
|  | ||||
| popd | ||||
|  | ||||
|  | ||||
| ############################################################################## | ||||
| # Customize filebeat output ip | ||||
| ############################################################################## | ||||
| if [ "$FILEBEAT_OUTPUT" != "" ]; then | ||||
|   sed -i "s/logstash:5000/$FILEBEAT_OUTPUT:5000/" /etc/filebeat/filebeat.yml | ||||
| fi | ||||
|  | ||||
|   | ||||
| @@ -1,5 +1,5 @@ | ||||
| #!/bin/bash | ||||
| # Wazuh App Copyright (C) 2019 Wazuh Inc. (License GPLv2) | ||||
| # Wazuh Docker Copyright (C) 2019 Wazuh Inc. (License GPLv2) | ||||
|  | ||||
| # It will run every .sh script located in entrypoint-scripts folder in lexicographical order | ||||
| for script in `ls /entrypoint-scripts/*.sh | sort -n`; do | ||||
|   | ||||
| @@ -1,3 +1,4 @@ | ||||
| #!/bin/sh | ||||
| # Wazuh Docker Copyright (C) 2019 Wazuh Inc. (License GPLv2) | ||||
| service filebeat start | ||||
| tail -f /var/log/filebeat/filebeat | ||||
|   | ||||
| @@ -1,18 +1,53 @@ | ||||
| # Wazuh App Copyright (C) 2019 Wazuh Inc. (License GPLv2) | ||||
| filebeat: | ||||
|  prospectors: | ||||
| # Wazuh Docker Copyright (C) 2019 Wazuh Inc. (License GPLv2) | ||||
| filebeat.inputs: | ||||
|   - type: log | ||||
|     paths: | ||||
|      - "/var/ossec/logs/alerts/alerts.json" | ||||
|     document_type: json | ||||
|     json.message_key: log | ||||
|     json.keys_under_root: true | ||||
|     json.overwrite_keys: true | ||||
|     tail_files: true | ||||
|       - '/var/ossec/logs/alerts/alerts.json' | ||||
|  | ||||
| output: | ||||
|  logstash: | ||||
|    # The Logstash hosts | ||||
|    hosts: ["logstash:5000"] | ||||
| #   ssl: | ||||
| #     certificate_authorities: ["/etc/filebeat/logstash.crt"] | ||||
| setup.template.json.enabled: true | ||||
| setup.template.json.path: "/etc/filebeat/wazuh-template.json" | ||||
| setup.template.json.name: "wazuh" | ||||
| setup.template.overwrite: true | ||||
|  | ||||
| processors: | ||||
|   - decode_json_fields: | ||||
|       fields: ['message'] | ||||
|       process_array: true | ||||
|       max_depth: 200 | ||||
|       target: '' | ||||
|       overwrite_keys: true | ||||
|   - drop_fields: | ||||
|       fields: ['message', 'ecs', 'beat', 'input_type', 'tags', 'count', '@version', 'log', 'offset', 'type', 'host'] | ||||
|   - rename: | ||||
|       fields: | ||||
|         - from: "data.aws.sourceIPAddress" | ||||
|           to: "@src_ip" | ||||
|       ignore_missing: true | ||||
|       fail_on_error: false | ||||
|       when: | ||||
|         regexp: | ||||
|           data.aws.sourceIPAddress: \b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b | ||||
|   - rename: | ||||
|       fields: | ||||
|         - from: "data.srcip" | ||||
|           to: "@src_ip" | ||||
|       ignore_missing: true | ||||
|       fail_on_error: false | ||||
|       when: | ||||
|         regexp: | ||||
|           data.srcip: \b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b | ||||
|   - rename: | ||||
|       fields: | ||||
|         - from: "data.win.eventdata.ipAddress" | ||||
|           to: "@src_ip" | ||||
|       ignore_missing: true | ||||
|       fail_on_error: false | ||||
|       when: | ||||
|         regexp: | ||||
|           data.win.eventdata.ipAddress: \b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b | ||||
|  | ||||
| output.elasticsearch: | ||||
|   hosts: ['http://elasticsearch:9200'] | ||||
|   #pipeline: geoip | ||||
|   indices: | ||||
|     - index: 'wazuh-alerts-3.x-%{+yyyy.MM.dd}' | ||||
|   | ||||
| @@ -1,9 +1,7 @@ | ||||
| #!/bin/bash | ||||
| # Wazuh App Copyright (C) 2019 Wazuh Inc. (License GPLv2) | ||||
| # Wazuh Docker Copyright (C) 2019 Wazuh Inc. (License GPLv2) | ||||
|  | ||||
| # | ||||
| # Initialize the custom data directory layout | ||||
| # | ||||
| source /data_dirs.env | ||||
|  | ||||
| cd /var/ossec | ||||
|   | ||||
| @@ -1,3 +1,4 @@ | ||||
| #!/bin/sh | ||||
| # Wazuh Docker Copyright (C) 2019 Wazuh Inc. (License GPLv2) | ||||
| service postfix start | ||||
| tail -f /var/log/mail.log | ||||
|   | ||||
| @@ -1,4 +1,5 @@ | ||||
| #!/bin/sh | ||||
| # Wazuh Docker Copyright (C) 2019 Wazuh Inc. (License GPLv2) | ||||
| service wazuh-api start | ||||
| tail -f /var/ossec/data/logs/api.log | ||||
|  | ||||
|   | ||||
| @@ -1,4 +1,5 @@ | ||||
| #!/bin/sh | ||||
| # Wazuh Docker Copyright (C) 2019 Wazuh Inc. (License GPLv2) | ||||
| service wazuh-manager start | ||||
| tail -f /var/ossec/data/logs/ossec.log | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user