Reverse Proxy und direkte IP-Adressen

JUK-Bavaria

Benutzer
Mitglied seit
10. Okt 2023
Beiträge
8
Punkte für Reaktionen
1
Punkte
9
Hallo,

ich habe folgendes Problem:

Ich stelle mit dem eingebauten Reverse Proxy auf meiner DS423+ Dienste (Photos, Drive und die File Station) sowie eine VM ins Internet. Das funktioniert auch gut, ich komme so mit den gewählten Subdomains (xxx.meinedomain.de) genau auf diese Dienste. Auch die VM ist mittels einer Umleitung von 443 auf einen speziellen Port von außen erreichbar (alles ist per 2FA abgesichert, meine Domain ist nur dafür und die Subdomains sind für Fremde unbekannt, trotzdem bin ich mir des Restrisikos bewusst). Von außen sind nur die Ports 80 und 443 sichtbar. Ein direkter Zugriff auf die Web Station ist über eine Subdomain nicht möglich.

Jetzt zum Problem: Ich bin gezwungen, dass die VM von außen über den Port 443 erreichbar ist, da diese mit einem Internetdienst kommuniziert, bei dem ich den Port nicht ändern kann. Wenn ich jetzt die IP (ich habe eine feste Internet-IP) statt einer der Subdomains aufrufe, komme ich auf die Web Station. Das will ich unbedingt verhindern, weiß aber nicht wie. Ich hab jetzt erst einmal den Zugriff mit einer .htaccess für die IP gesperrt, aber leider ist die /phpmyadmin/ immer noch über die IP erreichbar, da der phpMyAdmin über das Paket installiert wurde und damit über nginx statt über Apache läuft.

Habt ihr eine Lösung hierfür? Ich möchte nur ungerne einen vollständigen nginx-Server im Netz installieren.
 

Ulfhednir

Benutzer
Sehr erfahren
Mitglied seit
26. Aug 2013
Beiträge
3.476
Punkte für Reaktionen
1.087
Punkte
194
Wenn ich deinen eigentlich Pain richtig herauslese, möchtest du den Zugriff auf die mySQL-Datenbank einschränken. Ist das korrekt?
Dafür gibt es zwei Möglichkeiten:
Die wohl einfachste und effektivste lautet: Deaktiviere phpMyAdmin, wenn du es nicht brauchst und aktiviere das Paket nur dann, wenn du es brauchst.
Die andere Option geht in Richtung Whitelist. Du erlaubst nur den Zugriff von spezifischen IP-Bereichen.
https://www.synology-forum.de/threads/zugriff-auf-phpmyadmin-von-aussen-verhindern.50068/

P.S.:
Ich möchte nur ungerne einen vollständigen nginx-Server im Netz installieren.

Dann solltest du den Reverse Proxy nicht verwenden. Der ist nämlich auch "nur" ein Nginx.
 

JUK-Bavaria

Benutzer
Mitglied seit
10. Okt 2023
Beiträge
8
Punkte für Reaktionen
1
Punkte
9
Nein, ich will verhindern, dass durch die Anwendung der IP-Adresse der Reverse-Proxy umgangen werden kann. Auch der 403-Error weckt nur Begehrlichkeiten, die NAS soll einen Zugriff über die IP statt über einen Domainnamen komplett blockieren.

Dann solltest du den Reverse Proxy nicht verwenden. Der ist nämlich auch "nur" ein Nginx.
Natürlich ist der Reverse Proxy auch "nur" ein nginx, aber ein kastrierter (zumindest über die GUI). Ich hatte mal einen nginx auf einem System am laufen, da konnte man auch in der GUI einstellen, dass Anfragen über die IP statt über einen Domainnamen blockiert werden. Gerne editiere ich auch eine Konfigdatei, bin da aber bei nginx nicht firm und vor allem überschreibt die Synology ja gerne mal Konfigs beim Reboot.
 
Zuletzt bearbeitet:

plang.pl

Benutzer
Contributor
Sehr erfahren
Mitglied seit
28. Okt 2020
Beiträge
15.028
Punkte für Reaktionen
5.401
Punkte
564

Ulfhednir

Benutzer
Sehr erfahren
Mitglied seit
26. Aug 2013
Beiträge
3.476
Punkte für Reaktionen
1.087
Punkte
194
Dann würde ich dir empfehlen, dass du auf den Einsatz des internen Proxies verzichtest und dir stattdessen SWAG (nutze ich) oder den Nginx Proxy Manager anschaust. Den könntest du über Docker konfigurieren und setzt dich nicht der Gefahr aus, dass das nächste Update die Config zerschießt.
Damit einher hättest du auch einen weiteren Sicherheitsgewinn, weil du hier MFA nutzen könntest.
Auf Grundlage der neuen Installation könntest du auch prüfen, ob du den Access IP basiert einschränken kannst.
https://community.hetzner.com/tutorials/restrict-access-by-ip-or-password-in-nginx

Wobei sich die Frage stellt, ob das dann überhaupt noch erforderlich wäre. HTTPS://ip:443 würde nämlich dann zum Nginx führen und nicht auf den "regulären" Webserver verweisen. Müsstest für den Fall dann allerdings einen zusätzlichen Eintrag für den Webserver ergänzen.

Was man natürlich auch machen kann, wäre die Verwendung einer skriptbasierten Lösung.
So in etwa:
PHP:
<?php
$protocol = strpos(strtolower($_SERVER['SERVER_PROTOCOL']),'https')
                === FALSE ? 'http' : 'https';
$host     = $_SERVER['HTTP_HOST'];
$script   = $_SERVER['SCRIPT_NAME'];
$params   = $_SERVER['QUERY_STRING'];
 
$currentUrl = $protocol . '://' . $host . $script . '?' . $params;

### Wenn externe IP aufgerufen, leite auf Google um
if ($currentUrl == 'https://DEINE-IP-ADRESSE')
{
  echo '<script type="text/javascript">
    window.location.href = "https://www.google.com/";
</script>';
    
?>
 

JUK-Bavaria

Benutzer
Mitglied seit
10. Okt 2023
Beiträge
8
Punkte für Reaktionen
1
Punkte
9
Danke für die Antworten, ich hab es jetzt erstmal mit .htaccess (Umleitung auf Google)

<IfModule mod_rewrite.c> RewriteEngine On RewriteCond expr "! -R '192.168.1.1/24'" RewriteRule $ https://google.com [R=301,L] </IfModule>

und Stoppen des phpMayAdmin bei nicht Nichtbenutzung gelöst. Nicht perfekt, aber es erhöht die Sicherheit etwas.
 


 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat