OPNsense Forum

International Forums => German - Deutsch => Topic started by: atriemer on October 02, 2019, 06:46:03 PM

Title: nginx reverse proxy port 80
Post by: atriemer on October 02, 2019, 06:46:03 PM
Hallo,
habe folgendes Problem,
Webseiten werden nicht über http angesprochen geschweige denn von http auf https umgeleitet.
Firewall lässt den Port 80 durch, jedoch geschieht dann nichts mehr.
Ich komme an dieser Stelle leider mehrere wochen nicht weiter, kann mir bitte jemand weiterhlefen?
nginx.conf manuell anpassen funktioniert leider auch nicht, somal nach Serverrestart alle manuellen Anpassungen gelöscht werden.

Reverse Proxy ist erfolgreich eingerichtet,
Webseiten sind über Port 443 ansprechpar.
Konfig: Host lauscht auf Port 80 und 443 akzeptiert wird nur HTTPS.
Port 80 und 443 werden weitergeleitet.
Der Uploadserver wird ohne ssl angesprochen, dahinter steht ein IIS Webserver.

sockstat gibt folgendes aus
www      nginx      9568  14 stream /var/run/nginx_status.sock
www      nginx      9568  15 tcp4   *:80                  *:*
www      nginx      9568  16 tcp6   *:80                  *:*
www      nginx      9568  17 tcp4   *:443                 *:*
www      nginx      9568  18 tcp6   *:443                 *:*
www      nginx      9568  19 stream -> ??
root     nginx      3059  3  stream -> ??
root     nginx      3059  14 stream /var/run/nginx_status.sock
root     nginx      3059  15 tcp4   *:80                  *:*
root     nginx      3059  16 tcp6   *:80                  *:*
root     nginx      3059  17 tcp4   *:443                 *:*
root     nginx      3059  18 tcp6   *:443                 *:*

Vorab vielen Dank
Title: Re: nginx reverse proxy port 80
Post by: fabian on October 02, 2019, 07:41:00 PM
Hast du das Web interface schon verlegt? Kann sein, dass das noch 80 belegt für den redirect.
Title: Re: nginx reverse proxy port 80
Post by: atriemer on October 02, 2019, 08:16:51 PM
Interface ist auf einem anderen Port,
- Protokoll https
-(x) Enable HTTP Strict Transport Security
-(x) Disable web GUI redirect rule
-(x) Disable DNS Rebinding Checks
Title: Re: nginx reverse proxy port 80
Post by: fabian on October 03, 2019, 12:08:20 AM
port 443 auf der FW vergessen?
Title: Re: nginx reverse proxy port 80
Post by: atriemer on October 03, 2019, 09:46:31 AM
die URL ist ja per https erreichbar, jedoch über http nicht.
Es erfolgt dadurch auch kein redirect.

Anbei ein Auszug der nginx.conf


server {
    listen  80 proxy_protocol;
    listen  [::]:80 proxy_protocol;
    listen  443 http2 ssl;
    listen  [::]:443 http2 ssl;
    ssl_client_certificate /usr/local/etc/nginx/key/finest-lessel.de_ca.pem;
    ssl_verify_client off;
    ssl_early_data on;
    ssl_certificate_key /usr/local/etc/nginx/key/finest-lessel.de.key;
    ssl_certificate /usr/local/etc/nginx/key/finest-lessel.de.pem;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_dhparam /usr/local/etc/dh-parameters.4096;
    ssl_ciphers 'ECDHE-ECDSA-CAMELLIA256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-CAMELLIA256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-ECDSA-CAMELLIA128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-CAMELLIA128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-CAMELLIA256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-CAMELLIA256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-ECDSA-CAMELLIA128-SHA256:ECDHE-RSA-AES128-SHA256';
    ssl_session_timeout 1d;
    ssl_session_cache shared:SSL:50m;
    ssl_session_tickets off;
    ssl_prefer_server_ciphers on;
    sendfile On;
    server_name  finest-lessel.de www.finest-lessel.de;
    real_ip_header X-Forwarded-For;
    charset utf-8;
    access_log  /var/log/nginx/finest-lessel.de,www.finest-lessel.de.access.log main;
    access_log  /var/log/nginx/tls_handshake.log handshake;
    error_log  /var/log/nginx/finest-lessel.de,www.finest-lessel.de.error.log;
    #include tls.conf;
    error_page 404 /opnsense_error_404.html;
    error_page 500 501 502 503 504 /opnsense_server_error.html;
    # location to ban the host permanently
    set $naxsi_extensive_log 0;
    location @permanentban {
        access_log /var/log/nginx/permanentban.access.log main;
        internal;
        add_header Content-Type text/plain;
        add_header Charset utf-8;
        return 403 "You got banned permanently from this server.";
    }
    error_page 418 = @permanentban;
    location = /opnsense_server_error.html {
        internal;
        root /usr/local/etc/nginx/views;
    }
    location = /opnsense_error_404.html {
        internal;
        root /usr/local/etc/nginx/views;
    }
    location = /waf_denied.html {
        root /usr/local/etc/nginx/views;
        access_log /var/log/nginx/waf_denied.access.log main;
    }
    location ^~ /.well-known/acme-challenge/ {
        default_type "text/plain";
        proxy_pass http://127.0.0.1:43580;
    }
    # block based on User Agents - stuff I have found over the years in my server log
    if ($http_user_agent ~* Python-urllib|Nmap|python-requests|libwww-perl|MJ12bot|Jorgee|fasthttp|libwww|Telesphoreo|A6-Indexer|ltx71|okhttp|ZmEu|sqlmap|LMAO/2.0|ltx71|zgrab|Ronin/2.0|Hakai/2.0) {
      return 418;
    }
        if ($http_user_agent ~ "Indy\sLibrary|Morfeus Fucking Scanner|MSIE [0-6]\.\d+")
    {
      return 418;
    }
    if ($http_user_agent ~ ^Mozilla/[\d\.]+$)
    {
      return 418;
    }

    location = /opnsense-report-csp-violation {
      include       fastcgi_params;
      fastcgi_param QUERY_STRING $query_string;
      fastcgi_param SCRIPT_FILENAME /usr/local/opnsense/scripts/nginx/csp_report.php;
      fastcgi_param TLS-Cipher $ssl_cipher;
      fastcgi_param TLS-Protocol $ssl_protocol;
      fastcgi_param TLS-SNI-Host $ssl_server_name;
      fastcgi_param SERVER-UUID "816a-3435e5ea2bfc";
      fastcgi_intercept_errors on;
      fastcgi_pass  unix:/var/run/php-webgui.socket;
    }
    location /opnsense-auth-request {
      internal;
      fastcgi_pass  unix:/var/run/php-webgui.socket;
      fastcgi_index index.php;
      fastcgi_param TLS-Cipher $ssl_cipher;
      fastcgi_param TLS-Protocol $ssl_protocol;
      fastcgi_param TLS-SNI-Host $ssl_server_name;
      fastcgi_param Original-URI $request_uri;
      fastcgi_param Original-HOST $host;
      fastcgi_param SERVER-UUID "3435e5ea2bfc";
      fastcgi_param SCRIPT_FILENAME  /usr/local/opnsense/scripts/nginx/ngx_auth.php;
      fastcgi_param AUTH_SERVER "Local Database";
      fastcgi_intercept_errors on;
      include        fastcgi_params;
    }
    # apache htpasswd and htaccess
    location ~ /\.ht {
        return 403;
    }
    # those files may expose file system stuff
    location ~ \.DS_Store$ {
        return 403;
    }
    if ($scheme != "https") {
        return 302 https://$host$request_uri;
    }
    include 77c2f0d6-a0ba-43b435e5ea2bfc_pre/*.conf;


location  / {
    SecRulesEnabled;
    LearningMode;
    BasicRule wl:19;
    CheckRule "$policy8d47af41869f4ea335903e1c5 >= 8" BLOCK;
    DeniedUrl "/waf_denied.html";
    if ($scheme != "https") {
        return 302 https://$host$request_uri;
    }
    client_max_body_size 200m;
    client_body_buffer_size 1m;
    autoindex off;
    http2_push_preload on;
    proxy_set_header Host $host;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $connection_upgrade;
    proxy_set_header X-TLS-Cipher $ssl_cipher;
    proxy_set_header X-TLS-Protocol $ssl_protocol;
    proxy_set_header X-TLS-SNI-Host $ssl_server_name;
    # proxy headers for backend server
    proxy_set_header Early-Data $ssl_early_data;
    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_set_header X-TLS-Client-Intercepted $tls_intercepted;
    proxy_ignore_client_abort on;
    proxy_request_buffering on;
    proxy_max_temp_file_size 1024m;
    proxy_buffering on;
    proxy_pass http://upstreame062cf8b81e64cbcb9372d97fa741271;
    proxy_hide_header X-Powered-By;

}
    include 3435e5ea2bfc_post/*.conf;

}

}
Title: Re: nginx reverse proxy port 80
Post by: banym on October 04, 2019, 12:27:13 AM
Würde auch drauf tippen, dass noch etwas anderes auf Port80 lauscht. Transparenter Proxy ist auch off?

Such doch mal auf der Shell mit netstat ob und was auf Port 80 gebunden ist.
Title: Re: nginx reverse proxy port 80
Post by: atriemer on October 04, 2019, 10:04:47 AM
mir wird nur nginx auf port 80 angezeigt


www      nginx      9568  15 tcp4   *:80                  *:*
www      nginx      9568  16 tcp6   *:80                  *:*
root     nginx      3059  15 tcp4   *:80                  *:*
root     nginx      3059  16 tcp6   *:80                  *:*


Wo finde ich die Einstellung für den Transparenter Proxy?

Quote from: banym on October 04, 2019, 12:27:13 AM
Würde auch drauf tippen, dass noch etwas anderes auf Port80 lauscht. Transparenter Proxy ist auch off?

Such doch mal auf der Shell mit netstat ob und was auf Port 80 gebunden ist.

Im errorlog konnte ich noch folgendes finden, jedoch kann ich nicht viel damit anfangen:

" while reading PROXY protocol, client: 79.234.147.129, server: 0.0.0.0:80
2019/10/04 11:52:51 [error] 53804#100330: *260 broken header: "GET / HTTP/1.1
Host: www.finest-lessel.de



# netstat -a -p TCP -n | grep 80
tcp4       0      0 192.168.1.1.80         185.131.61.186.35021   SYN_RCVD
tcp4       0      0 192.168.1.1.80         88.103.194.93.58176    TIME_WAIT
tcp4       0      0 88.198.13.75.80        88.198.13.75.3721      TIME_WAIT
tcp4       0      0 88.198.13.75.80        88.198.13.75.46489     TIME_WAIT
tcp4       0      0 192.168.1.1.80         200.122.251.26.43385   TIME_WAIT
tcp6       0      0 *.80                   *.*                    LISTEN
tcp4       0      0 *.80                   *.*                    LISTEN
tcp4       0      0 192.168.1.1.80         79.234.147.129.57618   FIN_WAIT_2
tcp4       0      0 127.0.0.1.43580        *.*                    LISTEN
Title: Re: nginx reverse proxy port 80
Post by: fabian on October 05, 2019, 10:33:42 AM
Geh mal in den HTTP Server in die advanced settings und deaktiviere die Checkbox "PROXY Protocol" - scheinbar hast du nginx für eine Proxy Chain konfiguriert (hauptsächlich für die Verwendung als nachgelagerter Proxy für HAProxy wenn man das braucht).
Title: Re: nginx reverse proxy port 80
Post by: atriemer on October 05, 2019, 01:10:54 PM
ok, hab ich umgestellt.
Leider immer noch keinen Erfolg.

Wenn ich Port 80 direkt auf den dahinter liegenden IIS Webserver umleite, funktioniert es.
Das sollte aber nicht die Lösung sein. Gibt es eine Beispiel-Grundkonfiguration?
Title: Re: nginx reverse proxy port 80
Post by: fabian on October 05, 2019, 05:12:28 PM
reload auch gemacht?

das hier ist vermutlich dein Problem:

    listen  80 proxy_protocol;
    listen  [::]:80 proxy_protocol;
    listen  443 http2 ssl;
    listen  [::]:443 http2 ssl;
Title: Re: nginx reverse proxy port 80
Post by: atriemer on October 06, 2019, 10:10:35 AM
@fabian die Einstellung wurde wohl nicht richtig übernommen, jetzt funktioniert es! Vielen lieben Dank für deine Geduld  ;)