+ Antworten
Ergebnis 1 bis 10 von 10
  1. #1
    Registriert seit
    Oct 2010
    Beiträge
    843

    Standard Reverse Proxy - Funktion und wie geht es

    Hallo,

    Im Umfeld von Geofency kommt immer wieder das Thema ReverseProxy auf Basis von nginx auf.

    Ich habe etwas gegoogelt, mir ist aber nicht klar warum das mehr Sicherheit bringt.
    Ich würde mich freuen, wenn da jeman erklären könnte.

    Und natürlich wüsste ich gerne wie die Conference von nginx unter Windows dann grob aussehen muss.
    Wäre es möglich die hier mal zu posten, so dass von extern nur eine Adresse zugänglich ist, und nicht das ganze Webfront offen steht.

    Vielen Dank und Gruß
    Christian

  2. #2
    Registriert seit
    Dec 2005
    Ort
    Köln
    Beiträge
    2,623

    Wenn du nur bestimmte Seiten verfügbar machen möchtest, kannst du eine eigen Webserverinstanz erstellen ohne das Webfront. Das wiederrum zeigt auf einem Verzeichnis wo nur bestimmte Dateien sind. Besser wäre jedoch VPN.

    Mit Reverseproxy veröffentlich man z.B. mehrere URLs unter einer Adresse:

    z.B. home.dyndns.org/ips -> 192.168.1.3:82
    home.dyndns.org/owa -> 192.168.1.1:443
    home.dyndns.org/irgenwas -> 192.168.1.2:12345

    Dann am besten noch die URL mit eine SSL Zertifikat sichern - die Anwendungen nach hinten sprechen dann nackt HTTP - die Sicherung mit SSL macht dann der Server vorne (LAN sollte ja in der "Regel" sicherer sein).

    Somit mehr Sicherheit .
    Hausautomations-BLOG

    --
    Hinweis: Wer einen Rechtschreibfehler findet, darf diesen behalten - da bin ich gar nicht so .

  3. #3
    Registriert seit
    Apr 2011
    Ort
    Cologne
    Beiträge
    801

    Ich gehe noch ein Schritt weiter und lasse auf den beiden offenen Ports 443 und 80 nur Anfragen durch, deren Ziel-FQDN erlaubt ist.

    So werden alle Anfragen aus dem Internet an Port 443 grundsätzlich mit Fehler 444 beantwortet, nur wenn die Anfrage an spezielle my.domain.tld geht, dann wird's an IPS geleitet. Ist ehrlich gesagt ein wenig Security by Obscurity, aber Username/Password braucht man dann ja auch noch. Nur Geofency lasse ich direkt auf Port 80 durch, weil die App es damals noch nicht unterstützt hat.

    Hier die Beispiel-Config: nginx.conf.txt.

    Netter Nebeneffekt: mein IPS ist von innen und außen über die gleiche URL erreichbar. Die App bekommt das gar nicht mit und läuft einfach weiter

    Grüße, Axel
    Geändert von axelp (26.05.15 um 08:11 Uhr)

  4. #4
    Registriert seit
    Oct 2010
    Beiträge
    843

    Hallo,

    vielen Dank für die Erklärung.
    Das bedeute, wenn ich mein Webfront intern über Port 80 ohne Kennwort erreiche, sollte ich den ReverseProxy auf z.B. Port 82 mit Kennwort leiten, also dafür eine Webserverinstanz einrichten.
    Wenn ich dann nginx entsprechend der beigefügten Konfig laufen lassen (angepasst an mein dyndns und Port) habe ich keine Probleme zu erwarten.

    Ich werd das mal versuchen. Am liebsten wäre es mir, wenn ich sogar nur das Webfront/user/Geofence Verzeichnis erreichen kann, dann käme man gar nicht auf das ganze Webfront, sollte man das Kennwort erraten oder mitschneiden.

    Gruß
    Christian

  5. #5
    Registriert seit
    Apr 2011
    Ort
    Cologne
    Beiträge
    801

    Zitat Zitat von c.radi Beitrag anzeigen
    Das bedeute, wenn ich mein Webfront intern über Port 80 ohne Kennwort erreiche, sollte ich den ReverseProxy auf z.B. Port 82 mit Kennwort leiten, also dafür eine Webserverinstanz einrichten.
    Du kannst auch nginx als SSL-Endpunkt laufen lassen und dann alles intern und unverschlüsselt auf Port 80 leiten. In meiner Konfig hab ich das anders, aber auch nur, weil ich zu faul bin das entsprechend einzustellen

    Zitat Zitat von c.radi Beitrag anzeigen
    Am liebsten wäre es mir, wenn ich sogar nur das Webfront/user/Geofence Verzeichnis erreichen kann, dann käme man gar nicht auf das ganze Webfront, sollte man das Kennwort erraten oder mitschneiden.
    Genau das ist in meiner Konfig oben abgebildet.

    Grüße, Axel

  6. #6
    Registriert seit
    Oct 2010
    Beiträge
    843

    Hallo,

    ich danke für die Erklärung, und die Beispielkonfiguration.

    Jetzt läuft auf dem IPS Server ein nginx, der nur den Link zum Geofency Skript durchlässt und alles andere blockt.
    Wenn ich zu Haus remote drauf möchte mach ich eh ein VPN auf. Nur mit Geofency geht das nicht automatisch. Das ist somit das einzige "Loch" in mein Netz neben VPN.

    Gruß
    Christian

  7. #7
    Registriert seit
    Dec 2010
    Beiträge
    921

    Du kannst auch nginx als SSL-Endpunkt laufen lassen und dann alles intern und unverschlüsselt auf Port 80 leiten
    Hätte dazu jemand bitte ein kommentiertes Beispiel? Ich blicks mit den Anleitungen im Internet nicht.
    Grüsse, Wolfgang
    IPS 3.4 #3775 auf Windows7 x64. Hardware: FB 7490 06.51, Synology NAS DS 109+ DSM 4.2-3252 (Apache 2.2.22, MySQL 5.1.49), Gigaset S685IP, S0-Stomzähler, IPSwitchAddE, PlugWise USB 30 Circles, EnOcean, Sonos Play3.

  8. #8
    Registriert seit
    Dec 2010
    Beiträge
    921

    Standard Reverse Proxy - Funktion und wie geht es

    Hallo zusammen,

    ich fang mal wieder klein ang.

    Erstes Ziel ist die Weiterleitung der Eingangsanfragen an verschiedene Webserver.

    Habs jetz mal selber versucht nach der Anleitung unter:

    youresuchageek: Howto Raspberry Pi - Use your Pi as a secure Reverse Proxy gateway to your Web internal Sites and Services

    Der Zugang ist passwortgeschützt.
    Die Zielseiten (ausser IPS extern) sind nicht psswortgeschützt.

    Das mit den locations direkt auf dem ReverseProxy (shellinabox / rpimonitor) funktioniert.

    Das mit den ip's/namen und verzeichnissen auf andere/n Webservern/Hosts funktioniert leider nicht.

    Bekomme immer "404 NotFound".

    Die Adresse sowohl der Name des Hosts wären vom ReversProxy aus zu pingen -> DNS funktioniert.

    Wenn ich die Adressen in der config klicke komm ich auf der richtigen Site raus.

    Hier mal meine (nach /etc/nginx/sites-available) verlinkte main:

    PHP-Code:
    access_log on;
    add_header Cache-Control public;
    server_tokens off;


    # HTTP 80
    #server {
    # listen         80;
    # server_name _;
    # rewrite ^ https://my.dyndns.org$request_uri? permanent;
    #}

    ### Default Server für Port 80

    server {
            
    listen 80 default_server;
            return 
    444;
            
    access_log /var/log/nginx/port80.log;
    }

    # HTTPS 443
    server  {
     include    /
    etc/nginx/proxy.conf;

     
    listen 443 ssl;
     
    keepalive_timeout 70;

     
    server_name my.dyndny.org;

     
    # SSL config
     
    ssl on;
     
    ssl_certificate /etc/ssl/localcerts/autosigned.crt;
     
    ssl_certificate_key /etc/ssl/localcerts/autosigned.key;

     
    ssl_session_timeout 5m;
     
    ssl_protocols SSLv3 TLSv1.2;
     
    ssl_ciphers RC4:HIGH:!aNULL:!MD5;
     
    ssl_prefer_server_ciphers on;
     
    ssl_session_cache shared:SSL:10m;

     
    add_header X-Frame-Options DENY;

     
    # DDOS protection - Tune Values or deactivate in case of issue
     # limit_conn conn_limit_per_ip 20;
     # limit_req zone=req_limit_per_ip burst=20 nodelay;

     # status for ngxin auditing
     
    location /nginx-status {
          
    stub_status on;
          
    access_log off;
          
    allow 127.0.0.1;
          
    deny all;
      }

    # wofür ist das denn? funktioniert, zumindest PI-intern ohne
    # location / {
    #  rewrite ^ https://my.dyndns.org/ips/ permanent;
    #  }


    #    location /shellinabox/ {
    #    proxy_pass http://192.168.178.2:4200; # Shell in a Box auf rasp-reverseproxy #funktioniert
    #                proxy_set_header Host $host;
    #                auth_basic "Passwortgeschützter Bereich";
    #                auth_basic_user_file  "/etc/nginx/.htpasswd";
    #                access_log /var/log/nginx/ips.access.log;
    #                error_log /var/log/nginx/ips.error.log;
    #    }

        
    location /rpimonitor/ {
        
    proxy_pass http://192.168.178.2:8888; # RPI-Monitor auf rasp-reverseproxy #funktioniert

                    
    proxy_set_header Host $host;
                    
    auth_basic "Passwortgeschützter Bereich";
                    
    auth_basic_user_file  "/etc/nginx/.htpasswd";
                    
    access_log /var/log/nginx/ips.access.log;
                    
    error_log /var/log/nginx/ips.error.log;
        }

    #    location /rpimonitor/status.html/ {
    #    proxy_pass http://192.168.178.2:8888/status.html; # RPI-Monitor auf rasp-reverseproxy #funktioniert nicht ->  Can not get information (dynamic.json) from RPi-Monitor server.
    #    # und beim 2. refresh nur noch ein quadratischer Punkt
    #                proxy_set_header Host $host;
    #                proxy_set_header X-Real-IP $remote_addr;
    #                auth_basic "Passwortgeschützter Bereich";
    #                auth_basic_user_file  "/etc/nginx/.htpasswd";
    #                access_log /var/log/nginx/ips.access.log;
    #                error_log /var/log/nginx/ips.error.log;
    #    }
      
        
    location /ips/ {
        
    proxy_pass https://192.168.178.17:82; # IPS 1 # funktioniert nicht -> 404 not found
                    
    proxy_set_header Host $host;
                    
    auth_basic "Passwortgeschützter Bereich";
                    
    auth_basic_user_file  "/etc/nginx/.htpasswd";
                    
    access_log /var/log/nginx/ips.access.log;
                    
    error_log /var/log/nginx/ips.error.log;
        }

        
    location /CarPort/ {
        
    proxy_pass http://192.168.178.16/2011ProjectCarport ; # NAS Web-Verzeichnis 2011ProjectCarport # funktioniert nicht -> 404 not found
                    
    proxy_set_header Host $host;
                    
    proxy_set_header X-Real-IP $remote_addr;
                    
    auth_basic "Passwortgeschützter Bereich";
                    
    auth_basic_user_file  "/etc/nginx/.htpasswd";
                    
    access_log /var/log/nginx/ips.access.log;
                    
    error_log /var/log/nginx/ips.error.log;
        }


    Kann mir bitte jemand einen Tipp geben was ich in der main ändern muss um zum Ziel zu kommen?

    Die "/etc/nginx/nginx.conf" wurde verglichen aber nicht angepasst.

    Vielen Dank für Eure Hilfe im Voraus.
    Grüsse, Wolfgang
    IPS 3.4 #3775 auf Windows7 x64. Hardware: FB 7490 06.51, Synology NAS DS 109+ DSM 4.2-3252 (Apache 2.2.22, MySQL 5.1.49), Gigaset S685IP, S0-Stomzähler, IPSwitchAddE, PlugWise USB 30 Circles, EnOcean, Sonos Play3.

  9. #9
    Registriert seit
    Dec 2010
    Beiträge
    921

    Sorry Leute,

    war ein Tippfehler meinerseits. Hatte nicht beachtet, dass die locations CaseSensitive sind. Jetzt funktionierts.

    Jetzt taucht ein neues Problem auf: einige Scriptinterne includes funktionieren nicht (Thema HighCharts).

    Ist bstimmt nur ein Problem für dummies.

    Zustandsbeschreibung:
    Wenn ich die URL im Webbrowser direkt aufrufe bekomm ich eine Site mit dem gewünschten Ergebnis. Sowohl von intern, als auch über die Weiterleitung des ReverseProxys.
    Die selbe Datei hab ich auch über das IPS-Webfront als externe Seite eingebunden und funktioniert sowohl von intern als auch von extern über den RevereseProxy.

    Problem:
    ! Was nicht funktioniert ist der Aufruf der Datei, sowohl intern als auch über den Reverseproxy, wenn ich die Seite über einen Link in einem jq-Menü, aufrufe.

    Da kommt immer Warning: include_once(): open_basedir restriction in effect. file ...
    Das Include verweist auf ein Verzeichnis 2 Ebenen höher, das direkt unter dem Gesamtverzeichnis liegt.

    Wenn ich die Datei direkt unter das Gesamtverzeichnis lege, und den include() Pfad anpasse, dann funktionierts.

    PHP-Code:
                // Verbrauche
                
    if($_GET['ac'] == "trinkwasserjahr"// VerbrauchsCharts
                
    {
            
    #    include_once './Verbrauche/Trinkwasser/TrinkwasserJahr.php'; // funktioniert nicht
                
    include_once 'TrinkwasserJahr.php'// funktioniert 
    Nun die Frage: wie kann ich die .php Datei in ein Unterverzeichnis mit Unterverzeichnis legen, so dass die includes noch funktionieren?

    Was ich schon gelesen hab ist sowas wie irgend wo open_basedir azupassen. Hab aber keine Ahnung wo. Auf dem Nas auf dem die Datei liegt? In welcher Datei? Oder auf dem Reverseproxy? In welcher Datei?

    Wenn ich mittlerweile mit meinen Fragen im falschen Threat bin, dan bitte verschieben.
    Grüsse, Wolfgang
    IPS 3.4 #3775 auf Windows7 x64. Hardware: FB 7490 06.51, Synology NAS DS 109+ DSM 4.2-3252 (Apache 2.2.22, MySQL 5.1.49), Gigaset S685IP, S0-Stomzähler, IPSwitchAddE, PlugWise USB 30 Circles, EnOcean, Sonos Play3.

  10. #10
    Registriert seit
    Dec 2010
    Beiträge
    921

    Standard 504 Gateway Time-out nginx

    Hallo zusammen,

    nach dem mein ReversProxy einige Zeit super funktioniert hat, bekomm ich seit kurzem bei 2 Weiterleitungen einen
    504 Gateway Time-out


    nginx
    die WebCam und IPS bekommen diesen Fehler.

    andere wie meine Synology (diverse Weiterleitungen), der Pi-Statusmonitor, funktionieren weiterhin.

    Hab am ReverseProxy, an der Kamera und an IPS nix rumgespielt.

    Wo kann ich suchen um das Problem einzugrenzen/zu lösen?

    Vielen Dank für Eure Hilfe im vorraus,

    Edit: Ich bin voll angepixxt. Kaum hatte ich den Post geschrieben, da seh ich nach einer Aktualisierung des Browsers, dass sich IPS wieder aufrufen lässt. Die Cam auch.

    Hab nix verändert. Nur gesucht und BackupKonfigs mit der aktiven Konfig verglichen ???

    Was mich am meisten ärgert ist, dass das jeder Zeit wieder passieren kann und ich dann wieder keine Lösung hab.

    Hat evtl schon jemand das selbe Phänomen gehabt oder eine Lösung zu o.g. Problem?

    Vielen Dank für Eure Hilfe im vorraus,
    Geändert von wolfgang (11.04.16 um 21:35 Uhr)
    Grüsse, Wolfgang
    IPS 3.4 #3775 auf Windows7 x64. Hardware: FB 7490 06.51, Synology NAS DS 109+ DSM 4.2-3252 (Apache 2.2.22, MySQL 5.1.49), Gigaset S685IP, S0-Stomzähler, IPSwitchAddE, PlugWise USB 30 Circles, EnOcean, Sonos Play3.

Ähnliche Themen

  1. Antworten: 22
    Letzter Beitrag: 12.05.15, 09:32
  2. reverse proxy IIS
    Von aag im Forum WebFront
    Antworten: 2
    Letzter Beitrag: 11.08.14, 08:01
  3. Problem mit Reverse Proxy mit ARR und Rewrite im IIS und Version 3.0
    Von Strichcode im Forum Allgemeine Diskussion (2.x/3.x)
    Antworten: 2
    Letzter Beitrag: 07.10.13, 14:13
  4. Webfrontend auf Subdomain umleiten (Reverse-Proxy)?
    Von Raketenschnecke im Forum Alles rund um den PC
    Antworten: 15
    Letzter Beitrag: 13.01.12, 12:40
  5. WWW Reader benutze Proxy geht nicht
    Von hbraun im Forum Allgemeine Diskussion (2.x/3.x)
    Antworten: 3
    Letzter Beitrag: 29.04.09, 11:45