Lösung apache2 Proxy?

Alles, was den Apache betrifft, kann hier besprochen werden.

Lösung apache2 Proxy?

Postby stharbich » 28. January 2021 09:52

Hallo Ihr Lieben,

ich beschäftige mich gerade mit folgender Aufgabenstellung

Aufgabe:
Ich habe einen SpeedPort Smart 2 Router der Deutschen Telekom am Netz. Dieser Router bekam von mir eine neue interne IP-Adresse und ist nicht mehr über den DNS Namen seedport.ip erreichbar. Ich kann den Router aber über seine interne neue IP-Adresse erreichen. Im internen Netzwerk läuft ein DNS Server der die neue IP-Adresse des Router in einen FQDN auflösen kann. Nutzen kann ich diese jedoch nicht, weil ich den Namen im Router nicht ändern kann.

Ich möchte nun den Apache Proxy nutzen um
1. den Router über seinen FQDN ansprechen zu können
2. die Verbindung über SSL zu realisieren.

Mögliche Lösung (Hilfestellung gern erwünscht)
Ich habe in meinen Hausnetz einen Debian Server Version 10 wo auch ein apache2 Webserver läuft. Ein DNS Server läuft auch.
Mein Router hat folgende interne IP-Adresse: 192.168.0.1 und folgenden FQDN mome01.intern.example.com
Code: Select all
root@dsme01:~# nslookup
> 192.168.0.1
1.0.168.192.in-addr.arpa   name = mome01.intern.example.com.
> mome01
Server:      192.168.20.20
Address:   192.168.20.20#53

Name:   mome01.intern.example.com
Address: 192.168.0.1

Könnte das in dieser Art eine mögliche Lösung sein . . .? Gerne ändern oder ergänzen
Code: Select all
        <VirtualHost *:80>
                ServerName plex.intern.example.com
                RewriteEngine On
                RewriteCond %{HTTPS} off
                RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
        </VirtualHost>

        <VirtualHost *:443>
                ServerName plex.intern.example.com
                ServerAlias ""
                Options -Includes -ExecCGI

                RewriteEngine on
                RewriteCond %{THE_REQUEST} !HTTP/1.1$
                RewriteRule .* - [F]

                LimitRequestBody 512000
                SSLEngine on
                SSLCertificateFile /etc/ssl/certs/plex.intern.example.com.pem
                SSLCertificateKeyFile /etc/ssl/private/plex.intern.exempale.com.key
                SSLProtocol +TLSv1.2

                Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains; preload"
                Header always set X-Frame-Options DENY
                FileETag None
                TraceEnable off
                Header set X-XSS-Protection "1; mode=block"
                Timeout 60
                . . .

Über weitere Denkansätze würde ich mich freuen.

Mit freundlichen Grüßen
Stefan Harbich
stharbich
 
Posts: 3
Joined: 28. January 2021 09:30
XAMPP version: apache2 2.4.38-3+deb10u
Operating System: Debian 10

Re: Lösung apache2 Proxy?

Postby Nobbie » 28. January 2021 14:02

stharbich wrote:Dieser Router bekam von mir eine neue interne IP-Adresse und ist nicht mehr über den DNS Namen seedport.ip erreichbar. Ich kann den Router aber über seine interne neue IP-Adresse erreichen.


Das wäre ein Fehler, wenn es so wäre. Ich habe den Router nicht (ich habe eine Fritzbox), aber im Internet gibt es einige Beiträge zum Problem, dass man eine neue IP zuweisen will, die Submask sollte möglichst weiterhin 255.255.255.0 sein und man soll den Router neu starten. Das ist ja gerade der Sinn von speedlink.ip, dass das auf die vereinbarte interne IP verweist, egal wie sie lautet. Möglicherweise hast Du Dein (W)LAN falsch konfiguriert, Du betreibst einen eigenen DNS Server? Das solltest Du im Router eintragen und den Router (wie gewohnt) als DNS Server in den einzelnen Clients. Wenn Du den eigenen DNS Server in den Clients verwendest, wird ja der Router als DNS Server ignoriert. (Ist nur eine Idee, ich kenne die Konfiguration nicht).

stharbich wrote:Ich möchte nun den Apache Proxy nutzen um


Welchen "Apache Proxy" meinst Du?

stharbich wrote:Mögliche Lösung (Hilfestellung gern erwünscht)
...


Also da sehe ich rein GAR NICHTS, was auch nur ansatzweise irgendetwas mit Deinem Problem zu tun hätte, geschweige denn auch nur ansatzweise irgendetwas mit einem Proxy zu tun hätte oder gar irgendetwas lösen würde. Ich sehe zwei VirtualHosts (auf denselben Servername), einer für HTTP und den anderen für HTTPS. Im VirtualHost für den Port 80 (HTTP) ist ein merkwürdig krumpeliger Rewrite drin (von hinten durch die Brust ins Auge), warum steht da nicht einfach ein "Redirect / https://plex.intern.example.com/", und der andere VirtualHost ist für den sicheren Zugang konfiguriert (mit allen möglichen zusätzlichen Optionen). Erkläre doch mal, was die einzelnen Zeilen bewirken sollen und warum Du das brauchst?

Und wo ist jetzt der Zusammenhang mit diesem "Apache Proxy"? Was ist da jetzt eine Lösung für was?
Nobbie
 
Posts: 13170
Joined: 09. March 2008 13:04

Re: Lösung apache2 Proxy?

Postby stharbich » 28. January 2021 22:44

Nobbie wrote:Welchen "Apache Proxy" meinst Du?

Den Apache2 als http / https Proxy zu meinem Router nutzen, damit ich den Verkehr verschlüsseln kann. Dazu würde ich folgende Module nutzen.
Code: Select all
a2enmod rewrite
a2enmod proxy_http
a2enmod ssl

Das obige Beispiel ist sehr komplex.
In meinen Netz läuft ein Plex Media Server. Damit ich den Datenverkehr verschlüsseln kann nutze ich den Apache als Proxy.
Hier mal ein einfaches Beispiel wie ich es mir vorstellen könnte.
Code: Select all
<Directory /var/www/mome01.intern.example.com>
               AllowOverride None
               Require all denied
</Directory>
<VirtualHost 192.168.20.60:80>
               ServerName mome01.intern.example.com
               ServerAdmin webmaster@example.com
               ProxyPass / http://192.168.0.1/
               ProxyPassReverse / http://192.168.0.1/
</VirtualHost>
 <VirtualHost 192.168.20.60:443>
               ServerName mome01.intern.example.com
               ServerAdmin webmaster@example.com
               SSLEngine on
               SSLCertificateFile /...mome01.intern.example.com.crt
               SSLCertificateKeyFile /.../mome01.intern.exampale.com.key
               ProxyPass / http://192.168.0.1/
               ProxyPassReverse / http://192.168.0.1/
               SSLProxyEngine On
               ProxyPass / https://192.168.0.1/
               ProxyPassReverse / https://192.168.0.1/
</VirtualHost>

Die IP-Adresse des Routers ist die 192.168.0.1
Ich kann an den Telekom Router fast gar nichts einstellen. Weder einen DNS Server noch den Hostnamen ändern, geschweige ein FQDN irgendwo eintragen. SSL Verschlüsselung unterstütz das Modem auch nicht.
Gerne weitere Vorschläge.
Gruß von Stefan Harbich
stharbich
 
Posts: 3
Joined: 28. January 2021 09:30
XAMPP version: apache2 2.4.38-3+deb10u
Operating System: Debian 10

Re: Lösung apache2 Proxy?

Postby stharbich » 29. January 2021 07:51

Hallo Ihr Lieben,

ich konnte die Fragestellung / Aufgabe nun selbst lösen. Ich habe auf meinen Webserver eine zusätzliche IP-Adresse eingerichtet.
Code: Select all
root@dsme01:~# cat /etc/network/interfaces
...
# IP Address for virtuel Apache Host
   up ip addr add 192.168.20.100 brd + dev bond0
...
Den FQDN des Router auf diese IP-Adresse im DNS konfiguriert. Die Weiterleitung via SSL über die folgende Konfiguration des Apache erstellt
Code: Select all
  GNU nano 3.2                                          /etc/apache2/sites-available/mome01.conf                                                     

<VirtualHost mome01.intern.example.com:80>
        ServerName mome01.intern.example.com
        ServerAlias mom01.intern.example.com
        RedirectMatch permanent ^(.*)$ https://mome01.intern.example.com
</VirtualHost>

<VirtualHost mome01.intern.example.com:443>
        ServerName mome01.intern.example.com:443
        ServerAdmin webmaster@example.com
        SSLEngine on
        SSLCertificateFile /etc/ssl/certs/mome01.intern.example.com.crt
        SSLCertificateKeyFile /etc/ssl/private/mome01.intern.example.com.key
        ProxyPass / http://192.168.0.1/
        ProxyPassReverse / http://192.168.0.1/
        SSLProxyEngine On
        ProxyPass / https://192.168.0.1/
        ProxyPassReverse / https://192.168.0.1/
        ErrorLog /var/log/apache2/apache-mome01-error.log
        TransferLog /var/log/apache2/apache-mome01-access.log
        CustomLog /var/log/apache2/apache-mome01-request.log combined
</VirtualHost>
Lieben Dank für Eure Unterstützung.
Gruß von Stefan Harbich
stharbich
 
Posts: 3
Joined: 28. January 2021 09:30
XAMPP version: apache2 2.4.38-3+deb10u
Operating System: Debian 10

Re: Lösung apache2 Proxy?

Postby Nobbie » 29. January 2021 13:35

Das ist immer noch ziemlich wild. Konkret erst einmal folgende Anmerkung:

1)
Code: Select all
<VirtualHost mome01.intern.example.com:80>


Das funktioniert zwar in vielen Fällen, aber es wird dringend davon abgeraten, einen Servernamen im VirtualHost Tag anzugeben. Da muss der Apache eine DNS Lookup machen, der in vielen Konfigurationen aber einen anderen Wert rückgeben soll, als der Lookup des Browsers, der vor dem Request auch einen DNS Lookup gemacht hat. Nehmen wir an, Du hättest eine Domain gekauft http://www.meinedomain.de und läßt sie von einem Provider verdrahten auf Deine WAN IP (bzw. die des Routers). Irgendsoetwas 207.12.12.23 oder so. Du willst aber, dass http://www.meinedomain.de ein VirtualHost in Deinem Server ist und die IP 192.168.0.20. auf http://www.meinedomain.de verweist. Siehst Du das Problem? Die Browser sollen auf 207.12.12.23 auflösen (weltweit), aber der Apache soll auf 192.168.0.20 auflösen.

Der Lookup ist auch vollkommen unnötiger Ballast, in die VirtualHost Anweisung schreibt man entweder direkt die IP oder (noch besser) einfach die Wildcard "*":

Code: Select all
<VirtualHost *:80>


Und der Wert von ServerName im VirtualHost entscheidet alleine darüber, auf welchen Host der Request ausgeführt wird.

2)
Code: Select all
RedirectMatch permanent ^(.*)$ https://mome01.intern.example.com


Wieso ein RedirectMatch und als Pattern "alles" (.*)? Dann doch gleich einfach einen Redirect, unbedingt und ohne Pattern:

Code: Select all
Redirect permanent / https://mome01.intern.example.com/


3) Das ist jetzt ganz wüst, was soll denn dieser ReverseProxy:
Code: Select all
        ProxyPass / https://192.168.0.1/
        ProxyPassReverse / https://192.168.0.1/


Erstens ist das unmöglich, zwei ProxyPass Anweisungen nacheinander auszuführen (was soll Apache denn damit machen), glücklicherweise scheint er nicht mit Fehler abzubrechen. Zweitens ist es vollkommen sinnlos, eine SSL Verbindung zu einer IP aufzubauen (https://192.168.0.1), denn man kann keine Zertifikate für IPs erstellen. Da muss ein Domainname stehen und der wird mit dem Wert im SSL Zertifikat abgeglichen. Last not least behauptest Du weiter oben, der Router würde sowieso keine SSL Verbindung zulassen (was ich eigentlich nicht glaube). Aber auf eine IP kann man sicher keine https: Verbindung aufbauen.

Also die beiden Zeilen in jedem Fall streichen.

Und damit kommen wir zum Abschluss zur Frage: was soll das ganze jetzt eigentlich bringen?? Der Router ist nach wie vor unter http://192.168.0.1 erreichbar, der Zugriff via https://mome01.intern.example.com/ ist NICHT(!) verschlüsselt (wie wahrscheinlich gewünscht), sondern nur die Kommunikation des Browser mit dem Apache Server, der dazwischen geschaltet ist. Die Kommunikation zwischen Apache und (dem entscheidenden) Router hingegen ist weiterhin nicht verschlüsselt.

Und wozu machst Du jetzt das ganze??
Nobbie
 
Posts: 13170
Joined: 09. March 2008 13:04


Return to Apache

Who is online

Users browsing this forum: No registered users and 26 guests