Skip to content

Commit 7542208

Browse files
Diogo-Regodiegolamaral
andauthored
add security settings for nginx (#159)
Co-authored-by: diegolamaral <[email protected]>
1 parent 31db79c commit 7542208

File tree

3 files changed

+57
-0
lines changed

3 files changed

+57
-0
lines changed

core/files/entrypoint_nginx.sh

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -226,6 +226,47 @@ init_nginx() {
226226
fi
227227
fi
228228
229+
# Adjust Content-Security-Policy
230+
echo "... adjusting Content-Security-Policy"
231+
# Remove any existing CSP header
232+
sed -i '/add_header Content-Security-Policy/d' /etc/nginx/includes/misp
233+
234+
if [[ -n "$CONTENT_SECURITY_POLICY" ]]; then
235+
# If $CONTENT_SECURITY_POLICY is set, add CSP header
236+
echo "... setting Content-Security-Policy to '$CONTENT_SECURITY_POLICY'"
237+
sed -i "/add_header X-Download-Options/a add_header Content-Security-Policy \"$CONTENT_SECURITY_POLICY\";" /etc/nginx/includes/misp
238+
else
239+
# Otherwise, do not add any CSP headers
240+
echo "... no Content-Security-Policy header will be set as CONTENT_SECURITY_POLICY is not defined"
241+
fi
242+
243+
# Adjust X-Frame-Options
244+
echo "... adjusting X-Frame-Options"
245+
# Remove any existing X-Frame-Options header
246+
sed -i '/add_header X-Frame-Options/d' /etc/nginx/includes/misp
247+
248+
if [[ -z "$X_FRAME_OPTIONS" ]]; then
249+
echo "... setting 'X-Frame-Options SAMEORIGIN'"
250+
sed -i "/add_header X-Download-Options/a add_header X-Frame-Options \"SAMEORIGIN\" always;" /etc/nginx/includes/misp
251+
else
252+
echo "... setting 'X-Frame-Options $X_FRAME_OPTIONS'"
253+
sed -i "/add_header X-Download-Options/a add_header X-Frame-Options \"$X_FRAME_OPTIONS\";" /etc/nginx/includes/misp
254+
fi
255+
256+
# Adjust HTTP Strict Transport Security (HSTS)
257+
echo "... adjusting HTTP Strict Transport Security (HSTS)"
258+
# Remove any existing HSTS header
259+
sed -i '/add_header Strict-Transport-Security/d' /etc/nginx/includes/misp
260+
261+
if [[ -n "$HSTS_MAX_AGE" ]]; then
262+
# If $HSTS_MAX_AGE is defined, add the HSTS header
263+
echo "... setting HSTS to 'max-age=$HSTS_MAX_AGE; includeSubdomains'"
264+
sed -i "/add_header X-Download-Options/a add_header Strict-Transport-Security \"max-age=$HSTS_MAX_AGE; includeSubdomains\";" /etc/nginx/includes/misp
265+
else
266+
# Otherwise, do nothing, keeping without the HSTS header
267+
echo "... no HSTS header will be set as HSTS_MAX_AGE is not defined"
268+
fi
269+
229270
# Testing for files also test for links, and generalize better to mounted files
230271
if [[ ! -f "/etc/nginx/sites-enabled/misp80" ]]; then
231272
echo "... enabling port 80 redirect"

docker-compose.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -193,6 +193,10 @@ services:
193193
- "PHP_UPLOAD_MAX_FILESIZE=${PHP_UPLOAD_MAX_FILESIZE:-50M}"
194194
- "PHP_POST_MAX_SIZE=${PHP_POST_MAX_SIZE:-50M}"
195195
- "PHP_MAX_INPUT_TIME:${PHP_MAX_INPUT_TIME:-300}"
196+
# Security Settings
197+
- "HSTS_MAX_AGE=${HSTS_MAX_AGE}"
198+
- "X_FRAME_OPTIONS=${X_FRAME_OPTIONS}"
199+
- "CONTENT_SECURITY_POLICY=${CONTENT_SECURITY_POLICY}"
196200

197201
misp-modules:
198202
image: ghcr.io/misp/misp-docker/misp-modules:${MODULES_RUNNING_TAG:-latest}

template.env

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -199,3 +199,15 @@ SYNCSERVERS_1_PULL_RULES=
199199
# NGINX_X_FORWARDED_FOR=true
200200
# Comma separated list of trusted IP addresses
201201
# NGINX_SET_REAL_IP_FROM=127.0.0.1
202+
203+
# Security Settings
204+
# Maximum time (in seconds) for HSTS (HTTP Strict Transport Security), ensures HTTPS is used.
205+
HSTS_MAX_AGE=
206+
207+
# X-Frame-Options policy configuration: controls whether the site can be embedded in frames or iframes.
208+
# Options: DENY, SAMEORIGIN, ALLOW-FROM <URL> Default: SAMEORIGIN
209+
X_FRAME_OPTIONS=""
210+
211+
# Content-Security-Policy (CSP) configuration: defines allowed resources and prevents attacks like XSS.
212+
# Example: "frame-src 'self' https://*.example.com; frame-ancestors 'self' https://*.example.com; object-src 'none'; report-uri https://example.com/cspReport"
213+
CONTENT_SECURITY_POLICY=""

0 commit comments

Comments
 (0)