Wie überprüfe ich, ob DDCLIENT SSL verwendet, und wie erzwinge ich es, wenn dies nicht der Fall ist?

9

Ich habe diese Anleitung zum Einrichten von VPN auf meinem Pi befolgt. Ein Teil der Schritte besteht darin, einen dynamischen DNS-Dienst einzurichten und zu konfigurieren. Ich habe mehrere Konten auf mehreren Plattformen erstellt. No Ip und dynamicdns sind zwei zu nennen. Unten ist eine Ausgabe meiner Datei ddclient.conf, die auf beiden dynamischen DNS-Sites eine gute Verbindung herstellt.

daemon=60                               # check every 60 seconds
syslog=yes                              # log update msgs to syslog
mail=root                               # mail all msgs to root
mail-failure=root                       # mail failed update msgs to root
pid=/var/run/ddclient.pid               # record PID in file.
ssl=yes                                 # use ssl-support.  Works with
                                        # ssl-library
use=web, web=myip.dnsdynamic.com        # get ip from server.
server=www.dnsdynamic.org               # default server
login=YOURUSERNAME                      # default login
password=YOURPASSWORD                       # default password
server=www.dnsdynamic.org,              \
protocol=dyndns2                        \
MYDOMAIN.dnsdynamic.COM

Mein Problem ist, dass in diesem Artikel veranschaulicht wird, wie überprüft wird, ob Ihr Pi über SSL eine Verbindung herstellt. Wenn ich renne

sudo ddclient -verbose -debug -noquiet -query 

Es zeigt die Verbindung über HTTP mit HTTPS oder SSL für jede Site. Ich habe durch Ausführen überprüft, ob ssl installiert wurde

sudo apt-get install ssh libio-socket-ssl-perl

Irgendwelche Ideen, ob es eine Verbindung über SSL herstellt oder wie ich es erzwingen kann? Ich habe diesen Artikel auch durchgesehen . Ich habe gesehen, dass ddclient angegeben hat, dass es SSL verwenden würde, wenn verfügbar. Ich frage mich, ob dies eine Einschränkung für die Verwendung einer kostenlosen dynamicdns-Site darstellt oder ob ich etwas übersehen habe. In den Artikeln wurde der Eindruck erweckt, dass die von mir verwendeten Websites keine IP- und DNS-Dynamik-Unterstützung für SSL bieten.

Shaulinator
quelle
1
Ich sehe sudo ddclient -debug -verbose -noquietnicht so sudo ddclient -verbose -debug -noquiet -query wie du ... wie im zweiten Link
George Udosen
@ George, das ist mein Fehler, ich habe das Hinzufügen von -query verpasst. Es hat mir jedoch tatsächlich geholfen, das Problem mit einem neuen Geisteszustand zu betrachten und mich zu veranlassen, das Problem erneut zu untersuchen! Hinzufügen der Antwort und Bearbeiten der Frage.
Shaulinator

Antworten:

4

Ich habe die Antwort gefunden und fühle mich sehr dumm, es nicht früher herauszufinden.

daemon=60                               # check every 60 seconds
syslog=yes                              # log update msgs to syslog
mail=root                               # mail all msgs to root
mail-failure=root                       # mail failed update msgs to root
pid=/var/run/ddclient.pid               # record PID in file.
ssl=yes                                 # use ssl-support.  Works with
                                        # ssl-library
use=web, web=https://myip.dnsdynamic.org        # get ip from server.
server=www.dnsdynamic.org               # default server
login=USERNAME                          # default login
password=PASSWORD                       # default password
server=www.dnsdynamic.org,              \
protocol=dyndns2                        \
YOUR DOMAIN GOES HERE

Das oben Gesagte erzwingt SSL und stellt eine Verbindung über SSL her. Ich habe zwei Änderungen vorgenommen.

Die Linie use=web, web=myip.dnsdynamic.comsollte sein use=web, web=https://myip.dnsdynamic.org. Durch Ändern von .comzu werden .orgVerbindungsfehler gestoppt. Durch Hinzufügen https://vor der Verbindungszeichenfolge kann eine Verbindung über SSL hergestellt werden.

Ausgabe von use=web, web=myip.dnsdynamic.orgShows:

use=web, web=loopia address is IPADDRESSISHERE
CONNECT:  myip.dnsdynamic.org
CONNECTED:  using HTTP
SENDING:  GET / HTTP/1.0
SENDING:   Host: myip.dnsdynamic.org
SENDING:   User-Agent: ddclient/3.8.2
SENDING:   Connection: close

Ausgabe von use=web, web=https://myip.dnsdynamic.orgShows:

use=web, web=loopia address is IPADDRESSISHERE
CONNECT:  myip.dnsdynamic.org

The verification of cert '/C=US/O=GeoTrust Inc./CN=RapidSSL SHA256 CA/CN=www.dnsdynamic.org'
failed against the host 'myip.dnsdynamic.org' with the default verification scheme.

   THIS MIGHT BE A MAN-IN-THE-MIDDLE ATTACK !!!!

To stop this warning you might need to set SSL_verifycn_name to
the name of the host you expect in the certificate.

CONNECTED:  using SSL
SENDING:  GET / HTTP/1.0
SENDING:   Host: myip.dnsdynamic.org
SENDING:   User-Agent: ddclient/3.8.2
SENDING:   Connection: close

Ich bin mir immer noch nicht sicher, warum das Erzwingen ssl=yesnicht dazu führt, dass HTTPS automatisch verwendet wird, aber es wird jetzt eine Verbindung über SSL hergestellt, und der Befehl von @George hilft mir dabei, Folgendes zu überprüfen:sudo ddclient -verbose -debug -noquiet -query

Shaulinator
quelle
1

Dies ist nur der Teil "get IP". Das tatsächliche Update des dynamischen DNS-Servers wird in Ihrer Ausgabe nicht angezeigt. Dies kann weiterhin über HTTP erfolgen.

root@ad26e03e9704:/bin# ddclient -daemon=0 -noquiet -debug -file /config/ddclient.conf
DEBUG:    get_ip: using cmd, /config/get_ip.sh reports 10.0.0.1
DEBUG:
DEBUG:     nic_dyndns2_update -------------------
DEBUG:    proxy  =
DEBUG:    url    = http://dyndns.strato.com/nic/update?system=dyndns&hostname=bla.mydomain.com&myip=10.0.0.1
DEBUG:    server = dyndns.strato.com
SUCCESS:  updating bla.mydomain.com: good: IP address set to 10.0.0.1

Wenn ich https vor den Server stelle, erhalte ich:

DEBUG:    url    = http://https://dyndns.strato.com/nic/update?system=dyndns&hostname=bla.mydomain.com&myip=10.0.0.1
itbastian
quelle
Seit dem Posten habe ich meinen Pi ausgeschaltet, auf dem mein DDClient ausgeführt wird. Ich muss eine Instanz hochfahren und einen weiteren Test durchführen, um zu sehen, was das Debug zeigt. Danke!
Shaulinator
0

Da war ich auch durch die Tatsache verwirrt, dass die URL in der Ausgabezeile

DEBUG:    url    = http://(...)

Beginnt mit HTTP anstelle von HTTPS, obwohl ich ssl=yesin meiner Konfiguration habe, habe ich beschlossen, in den Quellcode zu schauen, um zu sehen, was los ist. Es stellt sich heraus, dass in der Funktion, in der geturldie Verbindung zum Server initiiert wird, der http://Teil ohnehin von der URL entfernt wird, sodass er nicht den tatsächlichen Verbindungstyp angibt. Wenn Sie sicherstellen möchten, dass ddclient SSL verwendet, rufen Sie ddclient einfach vom Terminal aus als auf

sudo ddclient -verbose -force

und suchen Sie nach den Zeilen

CONNECTED:  using HTTP

oder

CONNECTED:  using SSL

Im letzteren Fall verwendet ddclient wirklich SSL und Sie können loslegen. Beachten Sie, dass die ssl=yesEinstellung nicht für die anfängliche IP-Suche gilt, mit der ddclient überprüft, ob sich Ihre öffentliche IP-Adresse geändert hat (die von konfiguriert ist use=...), sodass für diese anfängliche Verbindung weiterhin angezeigt wirdCONNECTED: using HTTPwie von @Shaulinator erwähnt, es sei denn, Sie legen explizit eine HTTPS-Adresse fest. Dies sollte jedoch kein Sicherheitsproblem sein, da die von dieser Anforderung zurückgegebene IP-Adresse wahrscheinlich nur verwendet wird, um unnötigen Aufwand auf der Serverseite zu vermeiden. Es wird nicht in einer tatsächlichen Aktualisierungsanforderung an den Server gesendet, da der Server Ihre IP-Adresse trivial kennt, wenn ddclient die SSL-Verbindung initiiert. Ich habe dies nur explizit für das freedns-Protokoll überprüft, aber ich wäre überrascht, wenn es für die anderen Protokolle anders wäre.

Eruvaer
quelle