FreeDNS-IP-Update per HTTPS-Update-URL hängt unter OpenWrt
Wer mit einer dynamischen IP-Adresse einen Serverdienst nach außen anbieten will, ist auf einen dynamischen DNS-Hosting-Anbieter angewiesen. Die Anzahl der kostenfreien Dienste ist mittlerweile überschaubar und daher setze auf den aktuell kostenfrei nutzbaren Anbieter FreeDNS (freedns.afraid.org).
Das Update der IP-Adresse soll mein OpenWRT-Router erledigen, der die Änderung wohl als Erster direkt nach dem Modem mitbekommt und ich nutze dazu die Pakete luci-app-ddns und ddns-scripts um die Einstellungen komfortabel über die LuCI-Weboberfläche des Routers durchführen zu können.
FreeDNS bietet praktischerweise Update-URLs mit Tokens an, die keine zusätzliche Authentifizierung per Benutzername und Passwort benötigen, einfach hinter dem "betroffenen" Internetanschluss mit der dynamischen IP-Adresse aufgerufen werden und voilà die IP-Adresse wurde aktualisiert. Diese URL ist auch mittels HTTPS erreichbar und dort fängt es an interessant zu werden.
http://freedns.afraid.org/dynamic/update.php?UxKqVzNTZUh4VU1zZ1FfgW9nakwVeZdzOjk1Mz0wMTI=
Während der Aufruf aus dem Browser oder auch per wget von einer beliebigen Linux-Maschine aus einwandfrei funktioniert, hängt der Updater und auch ein manuelles wget von der Konsole des OpenWRT-Routers und kann keine Verbindung zum Zielhost aufbauen. Mein erster Verdacht war eine fehlende SSL-Unterstützung von wget - die ich schnell mittels der einfachen Anleitung aus der OpenWRT Wiki nachgerüstet hatte: https://wiki.openwrt.org/doc/howto/wget-ssl-certs
Dennoch hängt das Update per HTTPS nach wie vor, obwohl nun andere Quellen problemlos per HTTPS abrufbar sind. Einen Grund dafür bzw. eine Lösung konnte ich bis dato nicht finden.
Workaround
Ich habe die Update-URL auf HTTP umgestellt und schon funktioniert es wie erwartet. Dazu im Webinterface bei den Einstellungen des Dynamic DNS den DDNS Service-Provider [IPv4] auf --custom-- stellen und bei Custom update-URL die persönliche Update-URL mit HTTP anstelle von HTTPS angeben (Username und Password dürfen mit beliebigen Werten versehen werden, da diese nicht genutzt werden).
Meiner Meinung nach tut es der Sicherheit in diesem Fall keinen Abbruch, wenn die Update-URL nicht per HTTPS, sondern unverschlüsselt per HTTP aufgerufen wird, nachdem als Parameter bereits ein Token übergeben und keine weiteren Zugangsdaten übermittelt werden. Da das Token als URL-Parameter übergeben wird, ist es für einen potenziellen Angreifer auch bei Aufruf der URL mittels HTTPS-Verbindung ohne Probleme ersichtlich.
Hi, das würde soweit passen muss es aber noch testen. Was mir aber fehlt ist, wie man mehrere Adressen mit einer definierten IP ändert und das ganze noch automatisch. Grund: Mit einem Reverseproxy benötigt man mehrere Dyndns- Einträge die dann an die aktuelle öffentlich Adresse gebunden werden müssen.