Skip to content

Commit 4184706

Browse files
committed
[HOT-FIX] 02022019
helk-Elasticsearch - Adjusted ES JAVA OPTs (Heap size) calculations helk-jupyter + Upgraded image to 0.1.0 + Updated graphframes to 0.7.0 + fix #161 + fix #163 helk-logstash + fix #162
1 parent 5318e9e commit 4184706

11 files changed

+111
-32
lines changed

docker/helk-elasticsearch/scripts/elasticsearch-entrypoint.sh

+10-3
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,16 @@
88

99
# *********** Setting ES_JAVA_OPTS ***************
1010
if [[ -z "$ES_JAVA_OPTS" ]]; then
11-
ES_MEMORY=$(awk '/MemAvailable/{printf "%.f", $2/1024/1024/2}' /proc/meminfo)
12-
if [ $ES_MEMORY -gt 31 ]; then
13-
ES_MEMORY=31
11+
AVAILABLE_MEMORY=$(awk '/MemAvailable/{printf "%.f", $2/1024/1024}' /proc/meminfo)
12+
if [ $AVAILABLE_MEMORY -ge 8 -a $AVAILABLE_MEMORY -le 12 ]; then
13+
ES_MEMORY=2
14+
elif [$AVAILABLE_MEMORY -ge 13 -a $AVAILABLE_MEMORY -le 16]; then
15+
ES_MEMORY=4
16+
else
17+
ES_MEMORY=$(awk '/MemAvailable/{printf "%.f", $2/1024/1024/2}' /proc/meminfo)
18+
if [ $ES_MEMORY -gt 31 ]; then
19+
ES_MEMORY=31
20+
fi
1421
fi
1522
export ES_JAVA_OPTS="-Xms${ES_MEMORY}g -Xmx${ES_MEMORY}g"
1623
fi

docker/helk-jupyter/Dockerfile

+5
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,11 @@ RUN apt-get update -qq \
2929
jupyterlab==0.35.4 \
3030
jupyterhub==0.9.4 \
3131
ipywidgets==7.4.2 \
32+
matplotlib==3.0.2 \
33+
scipy==1.2.0 \
34+
scikit-learn==0.20.2 \
35+
Keras==2.2.4 \
36+
s3fs==0.2.0 \
3237
# *********** Setting Jupyter Hub & Jupyter **********************
3338
&& curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash - \
3439
&& apt-get install -y --no-install-recommends nodejs \

docker/helk-jupyter/kernels/pyspark_kernel.json

-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
"env": {
1212
"SPARK_HOME": "/opt/helk/spark/",
1313
"PYTHONPATH": "/opt/helk/spark/python/:/opt/helk/spark/python/lib/py4j-0.10.7-src.zip",
14-
"PYTHONSTARTUP": "/opt/helk/spark/python/pyspark/shell.py",
1514
"PYSPARK_PYTHON": "/usr/bin/python3"
1615
}
1716
}

docker/helk-jupyter/scripts/jupyter-entrypoint.sh

+1-1
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ if [[ $HELK_USER_EXISTS == "1" ]]; then
3737
echo "[HELK-JUPYTER-DOCKER-INSTALLATION-INFO] Creating JupyterHub Group..."
3838
groupadd -g ${JUPYTERHUB_GID} jupyterhub
3939

40-
# ************* Create notebooks folder if it is not provided in comose file ******************
40+
# ************* Create notebooks folder if it is not provided in compose file ******************
4141
mkdir -p ${JUPYTER_NOTEBOOKS}
4242

4343
# ************* Creating JupyterHub Admin ***************
File renamed without changes.

docker/helk-jupyter/spark/spark-defaults.conf

+2-2
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
# Logs the effective SparkConf as INFO when a SparkContext is started. Default: false
1313
spark.logConf true
1414
# The cluster manager to connect to.
15-
spark.master spark://helk-spark-master:7077
15+
# spark.master spark://helk-spark-master:7077
1616
# Restarts the driver automatically if it fails with a non-zero exit status
1717
spark.driver.supervise true
1818

@@ -25,7 +25,7 @@ spark.executor.logs.rolling.strategy spark.executor.logs.rolling.time.interval
2525
spark.jars /opt/helk/es-hadoop/elasticsearch-hadoop-6.5.4.jar
2626
# Comma-separated list of Maven coordinates of jars to include on the driver and executor classpaths.
2727
# The coordinates should be groupId:artifactId:version.
28-
spark.jars.packages graphframes:graphframes:0.6.0-spark2.3-s_2.11,org.apache.spark:spark-sql-kafka-0-10_2.11:2.4.0
28+
spark.jars.packages graphframes:graphframes:0.7.0-spark2.4-s_2.11,org.apache.spark:spark-sql-kafka-0-10_2.11:2.4.0
2929
#spark.jars.packages org.apache.spark:spark-sql-kafka-0-10_2.11:2.3.1,databricks:spark-sklearn:0.2.3
3030

3131
# ************ Spark UI ****************

docker/helk-kibana-notebook-analysis-basic.yml

+4-4
Original file line numberDiff line numberDiff line change
@@ -81,13 +81,13 @@ services:
8181
networks:
8282
helk:
8383
helk-jupyter:
84-
image: cyb3rward0g/helk-jupyter:0.0.9
84+
image: cyb3rward0g/helk-jupyter:0.1.0
8585
container_name: helk-jupyter
8686
volumes:
8787
- ./helk-jupyter/notebooks:/opt/helk/jupyter/notebooks
8888
environment:
8989
JUPYTER_HELK_PWD: hunting
90-
JUPYTER_USERS: hunter1, hunter2
90+
JUPYTER_USERS: hunter1
9191
restart: always
9292
depends_on:
9393
- helk-logstash
@@ -161,7 +161,7 @@ services:
161161
KSQL_KSQL_COMMIT_INTERVAL_MS: 2000
162162
KSQL_KSQL_CACHE_MAX_BYTES_BUFFERING: 10000000
163163
KSQL_KSQL_STREAMS_AUTO_OFFSET_RESET: earliest
164-
KSQL_HEAP_OPTS: -Xmx1g
164+
KSQL_HEAP_OPTS: -Xmx500m
165165
ports:
166166
- 8088:8088
167167
networks:
@@ -172,7 +172,7 @@ services:
172172
depends_on:
173173
- helk-ksql-server
174174
environment:
175-
KSQL_HEAP_OPTS: -Xmx550m
175+
KSQL_HEAP_OPTS: -Xmx500m
176176
entrypoint: /bin/sh
177177
tty: true
178178
networks:

docker/helk-kibana-notebook-analysis-trial.yml

+5-5
Original file line numberDiff line numberDiff line change
@@ -83,13 +83,13 @@ services:
8383
networks:
8484
helk:
8585
helk-jupyter:
86-
image: cyb3rward0g/helk-jupyter:0.0.9
86+
image: cyb3rward0g/helk-jupyter:0.1.0
8787
container_name: helk-jupyter
8888
volumes:
8989
- ./helk-jupyter/notebooks:/opt/helk/jupyter/notebooks
9090
environment:
9191
JUPYTER_HELK_PWD: hunting
92-
JUPYTER_USERS: hunter1, hunter2
92+
JUPYTER_USERS: hunter1
9393
restart: always
9494
depends_on:
9595
- helk-logstash
@@ -143,7 +143,7 @@ services:
143143
ADVERTISED_LISTENER: ${ADVERTISED_LISTENER}
144144
ZOOKEEPER_NAME: helk-zookeeper
145145
KAFKA_CREATE_TOPICS: winlogbeat, SYSMON_JOIN, filebeat, winsysmon, winsecurity
146-
KAFKA_HEAP_OPTS: -Xmx1G -Xms1G
146+
KAFKA_HEAP_OPTS: -Xmx1g -Xms1g
147147
LOG_RETENTION_HOURS: 4
148148
ports:
149149
- "9092:9092"
@@ -163,7 +163,7 @@ services:
163163
KSQL_KSQL_COMMIT_INTERVAL_MS: 2000
164164
KSQL_KSQL_CACHE_MAX_BYTES_BUFFERING: 10000000
165165
KSQL_KSQL_STREAMS_AUTO_OFFSET_RESET: earliest
166-
KSQL_HEAP_OPTS: -Xmx1g
166+
KSQL_HEAP_OPTS: -Xmx500m
167167
ports:
168168
- 8088:8088
169169
networks:
@@ -174,7 +174,7 @@ services:
174174
depends_on:
175175
- helk-ksql-server
176176
environment:
177-
KSQL_HEAP_OPTS: -Xmx550m
177+
KSQL_HEAP_OPTS: -Xmx500m
178178
entrypoint: /bin/sh
179179
tty: true
180180
networks:

docker/helk-logstash/scripts/logstash-entrypoint.sh

+15-7
Original file line numberDiff line numberDiff line change
@@ -79,13 +79,6 @@ for file in ${DIR}/*.json; do
7979
done
8080
done
8181

82-
# ********* Setting LS_JAVA_OPTS ***************
83-
if [[ -z "$LS_JAVA_OPTS" ]]; then
84-
LS_MEMORY=$(awk '/MemAvailable/{printf "%.f", $2/1024/4}' /proc/meminfo)
85-
export LS_JAVA_OPTS="-Xms${LS_MEMORY}m -Xmx${LS_MEMORY}m"
86-
fi
87-
echo "[HELK-LOGSTASH-DOCKER-INSTALLATION-INFO] Setting LS_JAVA_OPTS to $LS_JAVA_OPTS"
88-
8982
# ********** Install Plugin *****************
9083
echo "[HELK-LOGSTASH-DOCKER-INSTALLATION-INFO] Installing Logstash plugins.."
9184
if logstash-plugin list 'prune'; then
@@ -94,6 +87,21 @@ else
9487
logstash-plugin install logstash-filter-prune
9588
fi
9689

90+
# ********* Setting LS_JAVA_OPTS ***************
91+
if [[ -z "$LS_JAVA_OPTS" ]]; then
92+
while true; do
93+
LS_MEMORY=$(awk '/MemAvailable/{printf "%.f", $2/1024/4}' /proc/meminfo)
94+
if [ $LS_MEMORY -gt 980 ]; then
95+
export LS_JAVA_OPTS="-Xms${LS_MEMORY}m -Xmx${LS_MEMORY}m"
96+
break
97+
else
98+
echo "[HELK-LOGSTASH-DOCKER-INSTALLATION-INFO] $LS_MEMORY MB is not enough memory for Logstash yet.."
99+
sleep 1
100+
fi
101+
done
102+
fi
103+
echo "[HELK-LOGSTASH-DOCKER-INSTALLATION-INFO] Setting LS_JAVA_OPTS to $LS_JAVA_OPTS"
104+
97105
# ********** Starting Logstash *****************
98106
echo "[HELK-LOGSTASH-DOCKER-INSTALLATION-INFO] Running docker-entrypoint script.."
99107
/usr/local/bin/docker-entrypoint

docker/helk_docker_install.sh

+66-6
Original file line numberDiff line numberDiff line change
@@ -19,20 +19,80 @@ echoerror() {
1919
}
2020

2121
# ********* Globals **********************
22-
systemKernel="$(uname -s)"
22+
SYSTEM_KERNEL="$(uname -s)"
23+
24+
echo "[HELK-DOCKER-INSTALLATION-INFO] Checking distribution list and product version"
25+
if [ "$SYSTEM_KERNEL" == "Linux" ]; then
26+
# *********** Check distribution list ***************
27+
LSB_DIST="$(. /etc/os-release && echo "$ID")"
28+
LSB_DIST="$(echo "$LSB_DIST" | tr '[:upper:]' '[:lower:]')"
29+
# *********** Check distribution version ***************
30+
case "$LSB_DIST" in
31+
ubuntu)
32+
if [ -x "$(command -v lsb_release)" ]; then
33+
DIST_VERSION="$(lsb_release --codename | cut -f2)"
34+
fi
35+
if [ -z "$DIST_VERSION" ] && [ -r /etc/lsb-release ]; then
36+
DIST_VERSION="$(. /etc/lsb-release && echo "$DISTRIB_CODENAME")"
37+
fi
38+
# ********* Commenting Out CDROM **********************
39+
sed -i "s/\(^deb cdrom.*$\)/\#/g" /etc/apt/sources.list
40+
;;
41+
debian|raspbian)
42+
DIST_VERSION="$(sed 's/\/.*//' /etc/debian_version | sed 's/\..*//')"
43+
case "$DIST_VERSION" in
44+
9) DIST_VERSION="stretch";;
45+
8) DIST_VERSION="jessie";;
46+
7) DIST_VERSION="wheezy";;
47+
esac
48+
# ********* Commenting Out CDROM **********************
49+
sed -i "s/\(^deb cdrom.*$\)/\#/g" /etc/apt/sources.list
50+
;;
51+
centos)
52+
if [ -z "$DIST_VERSION" ] && [ -r /etc/os-release ]; then
53+
DIST_VERSION="$(. /etc/os-release && echo "$VERSION_ID")"
54+
fi
55+
;;
56+
rhel|ol|sles)
57+
ee_notice "$LSB_DIST"
58+
exit 1
59+
;;
60+
*)
61+
if [ -x "$(command -v lsb_release)" ]; then
62+
DIST_VERSION="$(lsb_release --release | cut -f2)"
63+
fi
64+
if [ -z "$DIST_VERSION" ] && [ -r /etc/os-release ]; then
65+
DIST_VERSION="$(. /etc/os-release && echo "$VERSION_ID")"
66+
fi
67+
;;
68+
esac
69+
ERROR=$?
70+
if [ $ERROR -ne 0 ]; then
71+
echoerror "Could not verify distribution or version of the OS (Error Code: $ERROR)."
72+
fi
73+
echo "[HELK-DOCKER-INSTALLATION-INFO] You're using $LSB_DIST version $DIST_VERSION"
74+
elif [ "$SYSTEM_KERNEL" == "Darwin" ]; then
75+
PRODUCT_NAME="$(sw_vers -productName)"
76+
PRODUCT_VERSION="$(sw_vers -productVersion)"
77+
BUILD_VERSION="$(sw_vers -buildVersion)"
78+
echo "[HELK-DOCKER-INSTALLATION-INFO] You're using $PRODUCT_NAME version $PRODUCT_VERSION"
79+
else
80+
echo "[HELK-DOCKER-INSTALLATION-INFO] We cannot figure out the SYSTEM_KERNEL, distribution or version of the OS"
81+
fi
82+
2383

2484
# ********** Install Curl ********************
2585
install_curl(){
2686
echo "[HELK-DOCKER-INSTALLATION-INFO] Installing curl before installing docker.."
27-
case "$lsb_dist" in
87+
case "$LSB_DIST" in
2888
ubuntu|debian|raspbian)
2989
apt-get install -y curl >> $LOGFILE 2>&1
3090
;;
3191
centos|rhel)
3292
yum install curl >> $LOGFILE 2>&1
3393
;;
3494
*)
35-
echo "[HELK-DOCKER-INSTALLATION-INFO] Please install curl for $lsb_dist $dist_version.."
95+
echo "[HELK-DOCKER-INSTALLATION-INFO] Please install curl for $LSB_DIST $DIST_VERSION .."
3696
exit 1
3797
;;
3898
esac
@@ -81,8 +141,8 @@ install_docker_compose(){
81141
fi
82142
}
83143

84-
# *********** Main steps
85-
if [ "$systemKernel" == "Linux" ]; then
144+
# *********** Main steps *********************
145+
if [ "$SYSTEM_KERNEL" == "Linux" ]; then
86146
# *********** Check if curl is installed ***************
87147
if [ -x "$(command -v curl)" ]; then
88148
echo "[HELK-DOCKER-INSTALLATION-INFO] curl is already installed"
@@ -110,7 +170,7 @@ else
110170
if [ -x "$(command -v docker)" ] && [ -x "$(command -v docker-compose)" ]; then
111171
echo "[HELK-DOCKER-INSTALLATION-INFO] Docker & Docker-compose already installed"
112172
else
113-
echo "[HELK-DOCKER-INSTALLATION-INFO] Please innstall Docker & Docker-compose for $systemKernel"
173+
echo "[HELK-DOCKER-INSTALLATION-INFO] Please innstall Docker & Docker-compose for $SYSTEM_KERNEL"
114174
exit 1
115175
fi
116176
fi

docker/helk_install.sh

+3-3
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ check_min_requirements(){
3636
echo "[HELK-INSTALLATION-ERROR] Installation Wiki: https://github.com/Cyb3rWard0g/HELK/wiki/Installation"
3737
exit 1
3838
fi
39-
if [ "${AVAILABLE_MEMORY}" -ge "11" ] && [ "${AVAILABLE_DISK}" -ge "25" ]; then
39+
if [ "${AVAILABLE_MEMORY}" -ge "12" ] && [ "${AVAILABLE_DISK}" -ge "25" ]; then
4040
echo "[HELK-INSTALLATION-INFO] Available Memory: $AVAILABLE_MEMORY"
4141
echo "[HELK-INSTALLATION-INFO] Available Disk: $AVAILABLE_DISK"
4242
else
@@ -442,7 +442,7 @@ show_banner(){
442442
echo "** HELK - THE HUNTING ELK **"
443443
echo "** **"
444444
echo "** Author: Roberto Rodriguez (@Cyb3rWard0g) **"
445-
echo "** HELK build version: v0.1.6-alpha01312019 **"
445+
echo "** HELK build version: v0.1.6-alpha02022019 **"
446446
echo "** HELK ELK version: 6.5.4 **"
447447
echo "** License: GPL-3.0 **"
448448
echo "**********************************************"
@@ -483,9 +483,9 @@ install_helk(){
483483
check_system_info
484484
set_helk_build
485485
set_helk_subscription
486+
set_network
486487
set_kibana_ui_password
487488
set_elasticsearch_password
488-
set_network
489489
prepare_helk
490490
build_helk
491491
sleep 180

0 commit comments

Comments
 (0)