webinterface thermostaat beschikbaar maken via apache server

Pagina: 1
Acties:

Onderwerpen

Vraag


Acties:
  • 0 Henk 'm!

  • engibenchi
  • Registratie: December 2004
  • Laatst online: 09-07 18:43
Mijn vraag:
Ik heb lokaal een webserver draaien en zou graag een aantal web-interfaces van verschillen apparaten via die route bereikbaar maken.


Relevante software en hardware die ik gebruik
  • Anna Smile Thermostaat
  • Ubuntu 18.04.4 LTS
  • Apache/2.4.29 (Ubuntu)
  • eigen domeinnaam
  • let's encryp certificaat
Wat ik al gevonden of geprobeerd heb:
Wat tot nu begrepen denk te hebben gaat door een virtualhost aan te maken. Er worden hier en daar wel wat voorbeelden getoond maar die lijken allemaal wat anders En wat ik niet terug vind is in welk bestand moet ik dit zetten. Of dat het een nieuw bestand moet worden.
Ik verwacht in /etc/apache2/sites-available. Daar staan nu drie soortgelijke .conf files

Voorbeeld van Apacher website:
code:
1
2
3
4
5
6
7
<VirtualHost 10.1.2.3:80>
  ServerAdmin webmaster@host.example.com
  DocumentRoot "/www/docs/host.example.com"
  ServerName host.example.com
  ErrorLog "logs/host.example.com-error_log"
  TransferLog "logs/host.example.com-access_log"
</VirtualHost>


Waar ik denk dat het bij moet komen te staan:
File: 000-default-le-ssl.conf

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<IfModule mod_ssl.c>
<VirtualHost *:443>

        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

ServerName mijnfncydn.nl
Include /etc/letsencrypt/options-ssl-apache.conf
ServerAlias www.mijnfancydn.nl
SSLCertificateFile /etc/letsencrypt/live/mijnfancydn.nl/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/mijnfancydn.nl/privkey.pem
    <Directory /var/www/html>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>
</IfModule>

EngiBenchi

Alle reacties


Acties:
  • 0 Henk 'm!

  • JaDatIsPeter
  • Registratie: Februari 2019
  • Niet online
engibenchi schreef op vrijdag 6 maart 2020 @ 11:49:
Ik heb lokaal een webserver draaien en zou graag een aantal web-interfaces van verschillen apparaten via die route bereikbaar maken.
Klinkt als reverse-proxy.

Maar als je (achterliggende) doel is om op afstand de webinterfaces van die apparaten veilig te kunnen bekijken, dan zou ik iets als thuis een OpenVPN server draaien onderzoeken.

Acties:
  • 0 Henk 'm!

  • engibenchi
  • Registratie: December 2004
  • Laatst online: 09-07 18:43
Dat is zeker een veiligere methode. En staat ook op de Todo list. Maar ik zou ook graag wat meer inzicht krijgen in hoe dit alles werkt. En hoop dat via deze manier te bereiken.
Reverse-proxy daar moet ik dan nog even naar googlen. Is dat iets anders dan Virtual host of een andere naam voor ongeveer het zelfde?

EngiBenchi


Acties:
  • 0 Henk 'm!

  • webfreakz.nl
  • Registratie: November 2003
  • Laatst online: 21-08 15:56

webfreakz.nl

el-nul-zet-é-er

engibenchi schreef op vrijdag 6 maart 2020 @ 12:13:
Is dat iets anders dan Virtual host of een andere naam voor ongeveer het zelfde?
Over je huidige config kan ik niet veel zeggen. Maar een "reverse proxy" zal het HTTP verkeer doorsturen naar je verschillende interne apparaten. Die kan je per URL koppelen.

code:
1
ProxyPass "/anna"  "http://10.1.2.3/anna-smile/"


Ik zou de volgende stappen doorlopen:
  • HTTP Webserver bereikbaar vanaf het internet
  • SSL toevoegen (eventueel daarna HTTP blokkeren)
  • HTTP Basic Auth toevoegen
  • Reverse proxy / meerdere proxies toevoegen

"You smell that, son? What sir? Napalm, I love the smell of napalm in the mornin!" || Children of Bodom fan!


Acties:
  • 0 Henk 'm!

  • Mijzelf
  • Registratie: September 2004
  • Niet online
Is iets anders. Een virtual host past op basis van een hostname de webroot directory aan. Dus http://een.jouwdomein.nl zou naar /var/www/een/index.html kunnen verwijzen, en http://twee.jouwdomein.nl zou naar /var/www/twee/index.html.

Een reverse proxy stuurt op basis van hostname of subdirectory de aanvraag door naar iets anders, en stuurt het resultaat terug. Dus http://thermostaat.jouwdomein.nl of http://jouwdomein.nl/thermostaat/ gaat naar de webserver in de thermostaat. Die laatste is trouwens lastiger, omdat de terugkomende data nog 'vertaalt' moet worden. Als de thermostaat een verwijzing naar /images/plaatje.gif heeft, moet dat vertaald naar /thermostaat/images/plaatje.gif, anders weet je browser niet waar hij dat plaatje moet halen. Bij complexe websites kan dat virtueel onmogelijk worden.

Acties:
  • 0 Henk 'm!

  • Frogmen
  • Registratie: Januari 2004
  • Niet online
Niet helemaal reverse proxy ontvangt de aanvraag, doet deze intern naar een host ontvangt het antwoordt en stuurt het antwoord terug naar de aanvrager. Dit in tegenstelling tot een virtual host met een redirect.
Bij reverse proxy zijn de hosts niet bereikbaar rechtstreeks bij virtual hosts wel.

Voor een Tweaker is de weg naar het resultaat net zo belangrijk als het resultaat.


Acties:
  • 0 Henk 'm!

  • engibenchi
  • Registratie: December 2004
  • Laatst online: 09-07 18:43
Okay even kijken of ik het goed begrijp...
Bij een virtual host redirect ik thermostaat-server naar een map op mijn apache webserver
en bij een reverse proxy stuur ik de bezoeker door naar de thermostaat webserver?

Mijn webserver ondersteund ssl de thermostaat is alleen http. Als ik reverse-proxy doe dan heb ik geen https verwacht ik. Lukt dat wel als ik het via virtualhost doe? Kan ik dan gebruik maken van mijn ssl certificaat?

EngiBenchi


Acties:
  • 0 Henk 'm!

  • servies
  • Registratie: December 1999
  • Laatst online: 20:48

servies

Veni Vidi Servici

engibenchi schreef op vrijdag 6 maart 2020 @ 16:09:
Okay even kijken of ik het goed begrijp...
Bij een virtual host redirect ik thermostaat-server naar een map op mijn apache webserver
en bij een reverse proxy stuur ik de bezoeker door naar de thermostaat webserver?

Mijn webserver ondersteund ssl de thermostaat is alleen http. Als ik reverse-proxy doe dan heb ik geen https verwacht ik. Lukt dat wel als ik het via virtualhost doe? Kan ik dan gebruik maken van mijn ssl certificaat?
In jouw apache config moet iets als het volgende komen te staan:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<VirtualHost *:80>
    ServerAdmin blabla@blabla.nl
    ServerName subsite.blabla.nl
    ServerAlias subsite
    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteCond %{REQUEST_URI} !^/.well-known/
    RewriteRule ^/(.*) https://%{HTTP_HOST}/$1 [NC,R=301,L]
    DocumentRoot "/var/www/blabla.nl"
    ErrorLog /var/log/httpd/subsite_blabla_nl_log
    CustomLog /var/log/httpd/subsite-blabla_nl_log combined
</VirtualHost>
#
#
<VirtualHost *:443>
    ServerName subsite.blabla.nl
    ServerAlias subsite
    ErrorLog /var/log/httpd/subsite_blabla_nl-error_log
    CustomLog /var/log/httpd/subsite_blabla_nl-access_log combined

#   SSL Engine Switch:
    SSLEngine on
    SSLProxyEngine on

#   SSL Cipher Suite:
    SSLProtocol ALL -SSLv2 -SSLv3 -TLSv1
    SSLCipherSuite  ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SH>
    SSLHonorCipherOrder on

#   Server Certificate:
    SSLCertificateFile /etc/letsencrypt/live/blabla.nl/cert.pem
#   Server Private Key:
    SSLCertificateKeyFile /etc/letsencrypt/live/blabla.nl/privkey.pem

    ProxyRequests Off
    <Proxy *>
        Order deny,allow
        Allow From 192.168.1
    </Proxy>
    ProxyPass / http://192.168.1.129:8080/
    ProxyPassReverse / http://192.168.1.129:8080/
</VirtualHost>

Het eerste stuk <VirtualHost *:80> zorgt ervoor dat http access automatisch wordt omgeschreven naar https access. Het stukje met ".wellknown" is voor de LetsEncrypt challenge.
in het <VirtualHost *:443> gedeelte zorgt het gedeelte vanaf ProxyRequests Off er voor dat al het verkeer wordt doorgesluisd van en naar http://192.168.1.129 op poort 8080
Ipv dat IP adres kun je natuurlijk ook een URL gebruiken, deze hoeft alleen voor de webserver intern te resolven.
Hierna is 192.168.1.129 poort 8080 te bereiken via https://subsite.blabla.nl vanaf buiten (als je de DNS goed hebt staan natuurlijk).

Acties:
  • 0 Henk 'm!

  • engibenchi
  • Registratie: December 2004
  • Laatst online: 09-07 18:43
servies schreef op vrijdag 6 maart 2020 @ 16:32:
[...]

In jouw apache config moet iets als het volgende komen te staan:........
knip/knip
Top! Weer een deel van de puzzel opgelost.
Je maakt dus een virtualhost aan die een reverse-proxy ding doet naar, in mijn situatie, de thermostaat web-interface.
En begrijp ik het goed dat je met het volgende zorgt dat het ook nog versleuteld wordt?

code:
1
2
3
4
5
6
7
8
#   SSL Engine Switch:
    SSLEngine on
    SSLProxyEngine on

#   SSL Cipher Suite:
    SSLProtocol ALL -SSLv2 -SSLv3 -TLSv1
    SSLCipherSuite  ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SH>
    SSLHonorCipherOrder on


Dit stuk: "SSLCipherSuite ECDHE-RSA-A........ " kom ik niet in mijn config tegen. Terwijl het wel https is. Werkt is dit proxy specifiek of werkt het bij mijn huidige setup anders? En waar komt deze lange "sleutelstring"? vandaan?

EngiBenchi


Acties:
  • +1 Henk 'm!

  • Douweegbertje
  • Registratie: Mei 2008
  • Laatst online: 11-10 16:28

Douweegbertje

Wat kinderachtig.. godverdomme

engibenchi schreef op vrijdag 6 maart 2020 @ 16:55:
[...]


Top! Weer een deel van de puzzel opgelost.
Je maakt dus een virtualhost aan die een reverse-proxy ding doet naar, in mijn situatie, de thermostaat web-interface.
En begrijp ik het goed dat je met het volgende zorgt dat het ook nog versleuteld wordt?

code:
1
2
3
4
5
6
7
8
#   SSL Engine Switch:
    SSLEngine on
    SSLProxyEngine on

#   SSL Cipher Suite:
    SSLProtocol ALL -SSLv2 -SSLv3 -TLSv1
    SSLCipherSuite  ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SH>
    SSLHonorCipherOrder on


Dit stuk: "SSLCipherSuite ECDHE-RSA-A........ " kom ik niet in mijn config tegen. Terwijl het wel https is. Werkt is dit proxy specifiek of werkt het bij mijn huidige setup anders? En waar komt deze lange "sleutelstring"? vandaan?
tbh zou ik gewoon even googlen hoe een vhost werkt en hoe ssl daar werkt. Zo'n beschrijving is veel netter en uitgebreider dan een antwoord hier ;)
Lang verhaal kort is dat de SSLCipherSuite defineert welke ciphers er gebruikt mogen worden in de TLS handshake.
Dat is o.a. om te zorgen dat je een bepaalde minimum security vereist (sommige cyphers zijn oud, broken, etc) maar visa-versa kunnen niet alle clients overweg met de aller nieuwste/veiligste ciphers.

Verder mag je het plaatje zo zien:

client <-- --> reverse proxy <-- --> interface
In je proxy wordt SSL ook ge-offload (https://avinetworks.com/glossary/ssl-offload/)

Acties:
  • 0 Henk 'm!

  • JaDatIsPeter
  • Registratie: Februari 2019
  • Niet online
engibenchi schreef op vrijdag 6 maart 2020 @ 16:09:
Mijn webserver ondersteund ssl de thermostaat is alleen http. Als ik reverse-proxy doe dan heb ik geen https verwacht ik. Lukt dat wel als ik het via virtualhost doe? Kan ik dan gebruik maken van mijn ssl certificaat?
Andersom.

VirtualHost heeft de DocumentRoot op de Apache server. De html-bestanden staan op die Apache server. VirtualHost met een redirect is vergelijkbaar met een webpagina met daarop een link naar een andere site. Het verschil is dat er als het ware automatisch op de link geklikt wordt. Nadat je bent doorgestuurd, is dus ook de url in je adresbalk veranderd. Je gaat dan van Apache met https naar je thermostaat zonder https.

Bij een reverse-proxy is Apache een doorgeefluik. De browser blijft tegen Apache praten, onder water haalt Apache stiekem de informatie op bij jouw thermostaat. De thermostaat kan dan, als het ware, wel gebruik maken van jouw certificaat, dat heet SSL offload.

Acties:
  • 0 Henk 'm!

  • engibenchi
  • Registratie: December 2004
  • Laatst online: 09-07 18:43
Het juiste jargon (ssl-offload) is het halve werk bij een google speurtocht.
Bedankt voor de linkjes daar ga ik mee aan de slag.
Ik heb nog honderd vraagtekens met name over het laten versleutelen van de reverse-proxy maar die bewaar ik nog even tot ik hier mee aan de slag geweest ben.

Bedankt tot zover. Ik laat deze thread nog even openstaan dit werkweekend helaas weinig tijd om er ook mee aan de slag te gaan. Maar wordt vervolgd.

EngiBenchi

Pagina: 1