Ankündigung

Einklappen
Keine Ankündigung bisher.

Amazon Alexa Plugin

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • hotzen
    antwortet
    Zitat von psilo Beitrag anzeigen
    was meinst du mit "aber gute FYI warum du die client-zertifikate einsetzt."? "for your information" passt in den satz nicht wirklich?!
    dein client Zertifikat Satz habe ich als FYI aufgefasst

    Einen Kommentar schreiben:


  • psilo
    antwortet
    Zum Thema weiterkommen: https://knx-user-forum.de/forum/supp...se-proxy/page7

    Er hatte ganz seltsame Effekte mit seiner DynDNS domain..

    Und ich hatte meine Erfahrungen mit einer Installation auf Raspbian Stretch mal zusammengeschrieben: https://github.com/smarthomeNG/smart...s-ReverseProxy

    Einen Kommentar schreiben:


  • psilo
    antwortet
    was meinst du mit "aber gute FYI warum du die client-zertifikate einsetzt."? "for your information" passt in den satz nicht wirklich?!

    Einen Kommentar schreiben:


  • hotzen
    antwortet
    ich wollte seine konfiguration nicht gross aendern.
    generell ist port 80 nur für lets-encrypt challenge-response notwendig und convenience zum weiterleiten auf https (wobei ggf. angreifbar durch ssl-strip o.ä.).

    websockets und http-auth funktionieren nach meiner (begrenzten) erfahrungen ganz gut zusammen. der browser verwendet hier in der regel einfach die gecachten basic-auth daten, man kriegt eigentlich nichts davon mit. aber gute FYI warum du die client-zertifikate einsetzt.

    bist du denn weitergekommen, Max2612 ?

    Einen Kommentar schreiben:


  • psilo
    antwortet
    hotzen wieso sollte er denn überhaupt Port 80 nutzen? sicherheitstechnisch eher weniger ideal..

    und wie soll das mit den websockets gehen, wenn du pauschal ne basic auth reinhaengst? die müsste ja auch auf die websocket "location" ziehen? bei mir wollte das nicht, deshalb habe ich jetzt (sinnvollerweise) die clientzertifikate am laufen.

    Einen Kommentar schreiben:


  • hotzen
    antwortet
    deine config inkl. dem obigen websocket support aber php-handling nicht veraendert
    Code:
    upstream php {    
      server localhost:9090;
    }    
    
    server {    
      listen 80 default_server;    
      server_name xyz.spdns.eu;    
      satisfy any;    
      allow 192.168.1.0/24;    
      deny all;    
      auth_basic "SmartVisu Anmeldung";    
      auth_basic_user_file /etc/nginx/htpasswd.smartvisu;    
      root /var/www/html;    
      index index.php index.html index.htm;    
    
      location / {      
      root /var/www/html;
      index index.html index.php;
      autoindex on;
      if ($http_upgrade = websocket) {
        proxy_pass http://localhost:2424;
        } 
      }  
    
      location ~ \.php$ {      
        include /etc/nginx/fastcgi_params;          
        fastcgi_pass 127.0.0.1:9090;          
        fastcgi_read_timeout 300;        
        fastcgi_index index.php;      
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;  
      }
    
     location /.well-known {              
        allow all;    
      }
    
    }  
     # Alexa  
    
    server {    
      listen 443 ssl default_server;    
      server_name xyz.spdns.eu;    
      access_log /var/log/nginx/alexa.log combined;    
      auth_basic "Alexa";    
      auth_basic_user_file /etc/nginx/htpasswd.alexa;    
      include /etc/nginx/include.d/common;      
    
      location / {        
        proxy_pass http://192.168.1.13:9000/;    
        proxy_set_header Host $host;        
        proxy_set_header X-Real-IP $remote_addr;        
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;    
      }  
    }

    Einen Kommentar schreiben:


  • psilo
    antwortet
    achja: wenn mir noch jemand nen tipp geben könnte, wie ich das letsencrypt zertifikat ohne eine HTTP (ohne S) Connection auf den ReverseProxy automatisch renewen kann, immer her damit.. etwas nervig alle 3 Monate die Firewall auf den Raspi für HTTP zu öffnen und am Router ein Forwarding reinzuhängen.

    HTTPS hat letsencrypt irgendwie nicht gemocht

    Einen Kommentar schreiben:


  • psilo
    antwortet
    Bei mir sieht das etwas anders aus.. Da vielleicht eine Muster-Config mit einigen Absicherungsmaßnahmen wie Clientzertifikaten, ausgeschlossenen SSL Ciphers, Ländererkennung etc. auch ganz spannend ist, anbei:

    Code:
    server {
        server_tokens off;
    
        if ($allowed_country = no) {
            return 403;
        }    
        if ($http_user_agent ~* LWP::Simple|BBBike) {
            return 403;
        }
        if ( $http_referer ~* (babes|forsale|girl|jewelry|love|nudit|organic|poker|porn|sex) ) {
             return 403;
        }
    
        listen 443 ssl default_server;
        server_name xxx.dyndns.de;
    
        ##
        # SSL
        ##
    
        ssl on;
        ssl_certificate /etc/letsencrypt/live/xxx.dyndns.de/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/xxx.dyndns.de/privkey.pem;
        ssl_session_cache builtin:1000 shared:SSL:10m;
        ssl_ciphers    HIGH:!aNULL:!eNULL:!LOW:!3DES:!MD5:!RC4;
    
        ssl_client_certificate /etc/ssl/ca/certs/ca.crt;
        ssl_crl /etc/ssl/ca/private/ca.crl;
        ssl_verify_client optional;
        # client certifcate creation: https://arcweb.co/securing-websites-nginx-and-client-side-certificate-authentication-linux/
        ssl_session_timeout 5m;
    
    
        ##
        # HSTS
        ##
    
        add_header Strict-Transport-Security "max-age 31536000; includeSubDomains";
    
        ##
        # global
        ##
    
        root /var/www/xxx.dyndns.de;
        index index.php index.htm index.html;
    
        location / {    
            if ($ssl_client_verify != SUCCESS) {
                    return 403;
                    break;
            }
    
            if ($http_upgrade = websocket) {
                proxy_pass http://192.168.178.100:2424;
            }
            if ($http_upgrade != websocket) {
                 return 403;
            }
        }
    
        location = /privacy.htm { }    
    
        location /smartVISU {
            if ($ssl_client_verify != SUCCESS) {
                return 403;
                break;
            }
            #auth_basic "Restricted Area: smartVISU";
            #auth_basic_user_file /etc/nginx/.htpasswd;
    
            if ($allowed_country = no)  {
                    return 403;
            }
            proxy_pass https://192.168.178.100/smartVISU;
            proxy_set_header Host $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;
        }
    
        location /video {
            if ($ssl_client_verify != SUCCESS) {
                return 403;
                break;
            }
            #auth_basic "Restricted Area: FlurCam";
            #auth_basic_user_file /etc/nginx/.flurcam;
    
            if ($allowed_country = no)  {
                    return 403;
            }
            proxy_pass http://192.168.178.40/video;
            proxy_set_header Host $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_set_header Authorization "Basic xxxxxxxxxxxxxxxxxxxxxxx";
        }
    
        location /alexa {
            auth_basic "Restricted Area: Alexa";
            auth_basic_user_file /etc/nginx/.alexa;
    
            if ($allowed_country = no) {
                return 403;
            }
            proxy_pass http://192.168.178.100:9000/;
            proxy_set_header Host $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;
        }    
    
        location /shng {
            auth_basic "Restricted Area: SmartHomeNG";
            auth_basic_user_file /etc/nginx/.shng;
    
            if ($allowed_country = no) {
                return 403;
            }
            proxy_pass http://192.168.178.100:8888/;
            proxy_set_header Host $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;
        }
    }
    allowed country wird außerhalb ermittelt..

    wie man sieht leite ich neben alexa und den websocket verbindungen auch noch den videostream meiner kamera durch.. auch habe ich das network plugin über basic auth zugreifbar gemacht, um egigeozone zu nutzen.

    anstatt localhost würde ich lieber IMMER die IP im Netzwerk nehmen..
    Zuletzt geändert von psilo; 25.09.2017, 16:18.

    Einen Kommentar schreiben:


  • Max2612
    antwortet
    Alles klar, ich versuchs mal im Smartvisu Forum.
    Gruß, Max

    Einen Kommentar schreiben:


  • patrickgoll
    antwortet
    Hi Max,

    sorry an der Stelle muss ich passen (no pun intended). Da bin ich leider selbst nicht weitergekommen. Sicherlich wird dir aber in dem von dir verlinkten Thread eher geholfen, als hier.

    Grüße,
    Patrick

    Einen Kommentar schreiben:


  • Max2612
    antwortet
    Es wäre ja zu schön gewesen...
    Mir ist noch was aufgefallen. Beim externen Aufruf der Visu, kann ich nichts schalten.(Could´nt connect to sh.py server)
    Ich hab im Smartvisu-Forum einen passenden Thread dazu gefunden. (https://knx-user-forum.de/forum/supp...-reverse-proxy)

    Da sollte folgendes funktionieren:
    Zitat von kaiwerner Beitrag anzeigen
    ../sites-enabled/smarthome
    Code:
    server {
    listen 443 ssl;
    server_name smarthome.home.***.de;
    
    ssl_certificate /etc/ssl/certs/smarthome@***.de.crt;
    ssl_certificate_key /etc/ssl/private/smarthome_private_key.pem;
    ssl_client_certificate /etc/ssl/ca/ca.crt;
    ssl_verify_client on;
    # ssl_verify_client off;
    
    location / {
    root /var/www/html;
    index index.html index.php;
    autoindex on;
    if ($http_upgrade = websocket) {
    proxy_pass http://localhost:2424;
    }
    }
    
    location ~ \.php$ {
    root /var/www/html;
    fastcgi_pass unix:/var/run/php5-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
    include fastcgi_params;
    }
    }
    
    server {
    listen 80;
    server_name smarthome.home.***.de;
    # return 301 https://$server_name$request_uri;
    
    location / {
    root /var/www/html;
    index index.html index.php;
    autoindex on;
    if ($http_upgrade = websocket) {
    proxy_pass http://localhost:2424;
    }
    }
    location ~ \.php$ {
    root /var/www/html;
    fastcgi_pass unix:/var/run/php5-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
    include fastcgi_params;
    }
    
    location /baos {
    return 301 http://debiantest.home.***.de/baos;
    }
    
    # location ~ ^/post/(.*) {
    # rewrite ^ http://debiantest.home.***.de/post/$1;
    # }
    
    }
    Ich hoffe das hilft.

    [Edit]
    Und in Smartvisu "ws://" durch "wss://" ersetzen und Port von 2424 auf 443 geändert.


    Nur leider weiß ich jetzt nicht, wie ich das auf meine nginx Konfiguration umbauen muss.
    Code:
    upstream php {    
      server localhost:9090;
    }    
    
    server {    
      listen 80 default_server;    
      server_name xyz.spdns.eu;    
      satisfy any;    
      allow 192.168.1.0/24;    
      deny all;    
      auth_basic "SmartVisu Anmeldung";    
      auth_basic_user_file /etc/nginx/htpasswd.smartvisu;    
      root /var/www/html;    
      index index.php index.html index.htm;    
    
      location / {      
         autoindex on;    
      }    
    
      location ~ \.php$ {      
        include /etc/nginx/fastcgi_params;          
        fastcgi_pass 127.0.0.1:9090;          
        fastcgi_read_timeout 300;        
        fastcgi_index index.php;      
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;  
      }    
    
     location /.well-known {              
        allow all;    
      }
    
    }  
     # Alexa  
    
    server {    
      listen 443 ssl default_server;    
      server_name xyz.spdns.eu;    
      access_log /var/log/nginx/alexa.log combined;    
      auth_basic "Alexa";    
      auth_basic_user_file /etc/nginx/htpasswd.alexa;    
      include /etc/nginx/include.d/common;      
    
      location / {        
        proxy_pass http://192.168.1.13:9000/;    
        proxy_set_header Host $host;        
        proxy_set_header X-Real-IP $remote_addr;        
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;    
      }  
    }
    Ich hab schon mehrere Varianten versucht, aber ohne Erfolg.
    Kann mir hier nochmal jemand helfen?

    Gruß, Max
    Zuletzt geändert von Max2612; 25.09.2017, 14:18.

    Einen Kommentar schreiben:


  • Max2612
    antwortet
    Zitat von henfri Beitrag anzeigen
    Den certbot musst du doch eh regelmäßig aufrufen um das Zertifikat zu erneuen
    Alles klar, danke!

    Einen Kommentar schreiben:


  • henfri
    antwortet
    Den certbot musst du doch eh regelmäßig aufrufen um das Zertifikat zu erneuen

    Einen Kommentar schreiben:


  • Max2612
    antwortet

    Einen Kommentar schreiben:


  • patrickgoll
    antwortet
    Den certbot neu ausführen wäre da die Lösung würde ich sagen. Gratulation. Wenn noch was ist.. einfach fragen.

    Einen Kommentar schreiben:

Lädt...
X