| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174 |
- # IRIS Source Code
- # Copyright (C) 2021 - Airbus CyberSecurity (SAS)
- # ir@cyberactionlab.net
- #
- # This program is free software; you can redistribute it and/or
- # modify it under the terms of the GNU Lesser General Public
- # License as published by the Free Software Foundation; either
- # version 3 of the License, or (at your option) any later version.
- #
- # This program is distributed in the hope that it will be useful,
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- # Lesser General Public License for more details.
- #
- # You should have received a copy of the GNU Lesser General Public License
- # along with this program; if not, write to the Free Software Foundation,
- # Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- worker_processes auto;
- pid /var/run/nginx.pid;
- events {
- worker_connections 1024;
- }
- http {
- map $request_uri $csp_header {
- default "default-src 'self' https://analytics.dfir-iris.org; script-src 'self' 'unsafe-inline' https://analytics.dfir-iris.org; style-src 'self' 'unsafe-inline'; img-src 'self' data:;";
- }
- include /etc/nginx/mime.types;
- default_type application/octet-stream;
- log_format main '$remote_addr - $remote_user [$time_local] "$request" '
- '$status $body_bytes_sent "$http_referer" '
- '"$http_user_agent" "$http_x_forwarded_for"';
- access_log /var/log/nginx/access.log main;
- error_log /var/log/nginx/error.log debug;
- server_tokens off;
- sendfile on;
- tcp_nopush on;
- tcp_nodelay on;
- types_hash_max_size 2048;
- types_hash_bucket_size 128;
- proxy_headers_hash_max_size 2048;
- proxy_headers_hash_bucket_size 128;
- proxy_buffering on;
- proxy_buffers 8 16k;
- proxy_buffer_size 4k;
- client_header_buffer_size 2k;
- large_client_header_buffers 8 64k;
- client_body_buffer_size 64k;
- client_max_body_size 100M;
- reset_timedout_connection on;
- keepalive_timeout 90s;
- client_body_timeout 90s;
- send_timeout 90s;
- client_header_timeout 90s;
- fastcgi_read_timeout 90s;
- # WORKING TIMEOUT FOR PROXY CONF
- proxy_read_timeout 90s;
- uwsgi_read_timeout 90s;
- gzip off;
- gzip_disable "MSIE [1-6]\.";
- # FORWARD CLIENT IDENTITY TO SERVER
- proxy_set_header HOST $http_host;
- proxy_set_header X-Forwarded-Proto $scheme;
- proxy_set_header X-Real-IP $remote_addr;
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
- # FULLY DISABLE SERVER CACHE
- add_header Last-Modified $date_gmt;
- add_header 'Cache-Control' 'no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0';
- if_modified_since off;
- expires off;
- etag off;
- proxy_no_cache 1;
- proxy_cache_bypass 1;
- # SSL CONF, STRONG CIPHERS ONLY
- ssl_protocols TLSv1.2 TLSv1.3;
- ssl_prefer_server_ciphers on;
- ssl_certificate /www/certs/${CERT_FILENAME};
- ssl_certificate_key /www/certs/${KEY_FILENAME};
- ssl_ecdh_curve secp521r1:secp384r1:prime256v1;
- ssl_buffer_size 4k;
- # DISABLE SSL SESSION CACHE
- ssl_session_tickets off;
- ssl_session_cache none;
- access_log /var/log/nginx/audit_platform_access.log main;
- error_log /var/log/nginx/audit_platform_error.log debug;
- server {
- listen ${INTERFACE_HTTPS_PORT} ssl;
- server_name ${SERVER_NAME};
- root /www/data;
- index index.html;
- error_page 500 502 503 504 /50x.html;
- add_header Content-Security-Policy $csp_header;
- # SECURITY HEADERS
- add_header X-XSS-Protection "1; mode=block";
- add_header X-Frame-Options DENY;
- add_header X-Content-Type-Options nosniff;
- # max-age = 31536000s = 1 year
- add_header Strict-Transport-Security "max-age=31536000: includeSubDomains" always;
- add_header Front-End-Https on;
- location / {
- proxy_pass http://${IRIS_FRONTEND_SERVER}:${IRIS_FRONTEND_PORT};
- proxy_http_version 1.1;
- proxy_set_header Upgrade $http_upgrade;
- proxy_set_header Connection 'upgrade';
- proxy_set_header Host $host;
- proxy_cache_bypass $http_upgrade;
- proxy_set_header X-Forwarded-Proto $scheme;
- proxy_set_header X-Forwarded-For $remote_addr;
- proxy_set_header Origin $http_origin;
- }
- location /api/v2/ {
- proxy_pass http://${IRIS_UPSTREAM_SERVER}:${IRIS_UPSTREAM_PORT};
- location ~ ^/(manage/templates/add|manage/cases/upload_files) {
- keepalive_timeout 10m;
- client_body_timeout 10m;
- send_timeout 10m;
- proxy_read_timeout 10m;
- client_max_body_size 0M;
- proxy_request_buffering off;
- proxy_pass http://${IRIS_UPSTREAM_SERVER}:${IRIS_UPSTREAM_PORT};
- }
- location ~ ^/(datastore/file/add|datastore/file/add-interactive) {
- keepalive_timeout 10m;
- client_body_timeout 10m;
- send_timeout 10m;
- proxy_read_timeout 10m;
- client_max_body_size 0M;
- proxy_request_buffering off;
- proxy_pass http://${IRIS_UPSTREAM_SERVER}:${IRIS_UPSTREAM_PORT};
- }
- }
- location /socket.io {
- proxy_set_header Host $http_host;
- proxy_set_header X-Real-IP $remote_addr;
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
- proxy_set_header X-Forwarded-Proto $scheme;
- proxy_http_version 1.1;
- proxy_buffering off;
- proxy_set_header Upgrade $http_upgrade;
- proxy_set_header Connection "Upgrade";
- proxy_pass http://${IRIS_UPSTREAM_SERVER}:${IRIS_UPSTREAM_PORT}/socket.io;
- }
- location = /50x.html {
- root /usr/share/nginx/html;
- }
- }
- }
|