Howto/DDNS für eigene Domain mit Fritzbox-Router und TLS

Achtung!

Die Verwendung dieses Howto geschieht auf eigene Gefahr. Insbesondere wird darauf hingewiesen, dass der Betrieb eines öffentlich erreichbaren Apache-Servers erhebliche Sicherheitsrisiken beinhaltet. Näheres dazu im Abschnitt Sicherheitshinweise. Bei Problemen mit der Anleitung melde dies bitte in der dazugehörigen Diskussion und wende dich zusätzlich an den Verfasser des Howtos.

Artikel für fortgeschrittene Anwender

Dieser Artikel erfordert mehr Erfahrung im Umgang mit Linux und ist daher nur für fortgeschrittene Benutzer gedacht.

Hinweis:

Diese Howto-Anleitung wurde zuletzt von mubuntuHH am 18.10.2020 unter Ubuntu 18.04 und Ubuntu 20.04 erfolgreich getestet.

Ziel

Server Es soll ein eigener, dezidierter Server (zu Hause) betrieben werden, der öffentlich über eine eigene Domain erreichbar ist, auch wenn der vom Server genutzte Internetanschluss eine täglich wechselnde IP-Adresse hat.

Im Detail: Es sollen lokal ein oder mehrere Linux-Apache-Server betrieben werden (zum Beispiel ein klassischer LAMP-Server), die über das Internet über eine oder mehrere eigene Domains erreichbar sind. Die Fritz!Box und ein MyFRITZ!-Konto sollen dabei als Portweiterleitung und als Dynamisches DNS (DDNS oder DynDNS) dienen - ohne einen zusätzlichen DDNS-Anbieter. Ein DynDNS-Dienst ist notwendig, weil normalerweise bei einem herkömmlichen (privaten) Internetanschluss die Internet Protocol (IP) Adresse regelmäßig vom Anbieter neu vergeben wird, womit eine Weiterleitung einer Domain-Adresse an den Rechner zu Hause auf herkömmlichen Wege unmöglich ist. Idealerweise sollen die Verbindungen noch über gültige und anerkannte Transport Layer Security (TLS) - in der Vergangenheit vor allem auch unter Secure Sockets Layer (SSL) bekannt - verschlüsselt werden.

Hinweis:

Das Prinzip hinter dieser Anleitung funktioniert auch mit einem andern DDNS-Anbieter, anstatt einem MyFRITZ!-Konto, und auch mit praktisch jeden anderem Internetrouter, in dem man Portweiterleitungen einrichten kann. Der Fokus dieser Anleitung liegt jedoch auf der Fritz!Box in Verbindung mit einem MyFRITZ!-Konto.

szenario.png

Mögliche Anwendungsfälle

Mit Hilfe der hier dargestellten Konfiguration lassen sich viele Anwendungsfälle umsetzen. Nachfolgend eine Auswahl möglicher Szenarien:

Voraussetzungen

Vorbemerkungen

In diesem Howto wird nicht für jede Einstellung in der Fritz!Box eine detaillierte Schritt-für-Schritt-Anleitung geliefert. Hierfür wird jeweils auf die ausführlichen Anleitungen in der Wissensdatenbank 🇩🇪 von AVM, dem Hersteller der Fritz!Box, verlinkt.

Zum besseren Verständnis werden folgende Seiten empfohlen:

Anleitung

1. Ein MyFRITZ!-Konto anlegen

Falls noch nicht geschehen, muss ein MyFRITZ!-Konto angelegt werden, das allen Besitzern einer Fritz!Box von AVM kostenlos angeboten wird.

AVM hat hierzu eine Schritt-für-Schritt-Anleitung 🇩🇪 veröffentlicht.

Ist das erledigt, erhält man eine zufällig generierte eigene myfritz.net Subdomain, nach dem Muster:

MEIN-SUBDOMAIN-SCHLÜSSEL.​myfritz.​net

myfritz.net kümmert sich nun darum, dass die Fritz!Box immer unter dieser Adresse erreichbar ist, auch wenn sich die IP täglich ändert, und fungiert damit als DDNS-Dienst.

2. Fritz!Box Freigabe einrichten

Als nächstes muss nun eine sogenannte "Fritz!Box Freigabe" eingerichtet werden.

Im Dialog-Fenster in der Fritz!Box "Internet ➡ Freigaben ➡ Portfreigaben ➡ Gerät für Freigaben hinzufügen" unter "Gerät" den gewünschten Ubuntu-Rechner auswählen und dann auf "Neue Freigabe" klicken.

Hier "MyFRITZ!-Freigabe" anklicken - nicht "Portfreigabe". Als "Anwendung" nun "HTTP-SERVER" auswählen. "Verzeichnis" leer lassen, dies wird später im Apache konfiguriert. "MyFRITZ!-Adresse" ebenfalls leer lassen; wird automatisch von der Fritz!Box vergeben.

Normalerweise kann man die per Default eingetragenen Portangaben (80 für HTTP beziehungsweise 443 für HTTPS) so belassen, da sie einer Standardinstallation eines Apache-Servers entsprechen.

3. CNAME Umleitung aktivieren

Nun muss der CNAME-Eintrag beim Hoster angepasst werden. Dort gibt man den von MyFRITZ! vergebenen Subdomain-Domainnamen plus den vorangestellten Rechner-Namen des freigegebenen Ubuntu-Servers ein, also mit folgenden Schema:

UBUNTU-RECHNER-NAME.MEIN-SUBDOMAIN-SCHLÜSSEL.​myfritz.​net

Ohne Protokollangaben eintragen, also ohne http:// oder https://.

Die genau Angabe findet man, wenn man in der Fritz!Box die eingerichtete MyFRITZ!-Freigabe öffnet oder auch in der Übersicht seines myfritz.net 🇩🇪 Benutzerkontos.

Hinweis:

Es kann erfahrungsgemäß mehrere Tage dauern, bis der CNAME-Eintrag greift und der Heimrechner auch tatsächlich und dauerhaft unter der eingerichteten Domain erreichbar ist.

Optional: Virtual Host anlegen

Nun ist das Verzeichnis /var/www/html über die eingerichtete Domain erreichbar. Vielleicht möchte man aber nur ein bestimmtes Verzeichnis über die frisch eingerichtete Domain erreichbar machen. Das ist mittels der Einrichtung eines Virtual Hosts möglich. Ein Beispiel: Soll die neu eingerichtete Domain example.com auf das Verzeichnis /var/www/vhosts/example.com/public geleitet werden, so könnte die Apache-Konfigurationsdatei für einen Virtual Host folgendermaßen aussehen:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
<VirtualHost *:80>
    ServerAdmin admin@example.com
    ServerName example.com
    DocumentRoot /var/www/vhosts/example.com/public
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost> 

<Directory /var/www/vhosts/example.com/public/>
    AllowOverride All
</Directory>

Optional: TLS-Verschlüsselung

Hat man die Domainweiterleitung wie in dieser Anleitung beschrieben eingerichtet, so ist es auch problemlos möglich, eine von den gängigen Browsern als vertrauenswürdig akzeptierte SSL-Verschlüsselung einzurichten. Dies sollte üblicherweise der Standard sein, da heutzutage kaum noch ein Browser ohne Warnungen und Umwege unverschlüsselte Verbindungen oder ein nicht offiziell gültiges Zertifikat akzeptiert.

Dazu wird das Zertifikat direkt auf dem lokalen Server eingerichtet und nicht bei dem Hoster oder bei ​myfritz.​net. Dies ist natürlich sehr komfortabel, da man auf dem lokalen Ubuntu-Rechner viel mehr Möglichkeiten hat und zum Beispiel die Erneuerung des Zertifikates automatisieren lassen kann.

Zunächst muss aber direkt in der Fritz!Box eine weitere Freigabe eingerichtet werden, genau wie oben beschrieben, mit dem Unterschied, dass als "Anwendung" "HTTPS-SERVER" gewählt werden muss (üblicherweise Port 443).

Hinweis:

Zwar ist es direkt in der Fritz!Box möglich, ein Sicherheitszertifikat automatisiert anlegen zu lassen (mit Let's Encrypt). Damit wird aber nur der externe Zugriff auf die Benutzeroberfläche der FRITZ!Box abgesichert. Eine Verschlüsselung der Verbindung zu einem angeschlossenen Ubuntu-Rechner ist damit leider nicht möglich.

Anleitungen um Zertifikate von Let’s Encrypt 🇩🇪 unter Ubuntu einzurichten:

Mehrere Domains verwalten

Es ist möglich, mit dieser Methode beliebig viele Domains auf lokale Rechner umzuleiten und auch für jede einzelne ein eigenes TLS-Zertifikat anzulegen. Allerdings kann man in der Fritz!Box selbst pro Port nur eine einzige Weiterleitung einrichten, sprich: der Port 80 kann zum Beispiel nur für einen angeschlossenen Rechner allein vergeben werden. Mögliche Lösungsansätze:

Einen anderen Port vergeben

Bietet sich vor allem an, wenn die verschieden Domains auch auch auf unterschiedlichen an der Fritz!Box angeschlossenen Rechnern betrieben werden sollen. Dazu für den neuen Rechner eine MyFritz!-Freigabe wie folgt einrichten:

Gegebenenfalls für das "Schema" "https:// "wiederholen, falls ein verschlüsselter Zugang erwünscht ist.

Nun wieder beim Hoster für die gewünschte Domain einen CNAME-Eintrag vornehmen:

UBUNTU-RECHNER-NAME-2.MEIN-SUBDOMAIN-SCHLÜSSEL.​myfritz.​net

Ohne Protokollangaben eintragen und auch ohne Portangabe.

Nachteil dieser Methode: Die Domain muss immer mit der Portangabe aufgerufen werden, zum Beispiel www.example.com:8080/impressum.

Virtual Hosts einrichten

Sollen die verschiedenen Domains (auch Subdomains) ohnehin nur auf einem Apache-Rechner betrieben werden, so ist dies die beste Methode

Sicherheitshinweise

Wie immer bei einem Rechner, der öffentlich erreichbar ist, gilt: Man setzt sich damit dem beträchtlichen Risiko diverser bösartiger Attacken aus. Neben den üblichen Risiken, hier eine - nicht vollständige - Liste von Sicherheitsrisiken, die beim Befolgen dieser Anleitung entstehen:

Es sind geeignete Maßnahmen zu treffen, um den Angriffen vorzubeugen. Auch die folgende Liste ist nur eine Auswahl und erhebt keinen Anspruch auf Vollständigkeit.