Comment puis-je vérifier que DDCLIENT utilise SSL et si ce n'est pas le cas, comment le forcer?

9

J'ai suivi ce guide sur la configuration du VPN sur mon pi. Une partie des étapes consiste à installer et configurer un service DNS dynamique. J'ai créé plusieurs comptes sur plusieurs plateformes. Aucun Ip et dynamicdns ne sont deux pour nommer. Ci-dessous est une sortie de mon fichier ddclient.conf, il se connecte bien sur les deux sites DNS dynamiques.

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

Mon problème est que dans cet article, ils illustrent comment vérifier si votre pi se connecte via SSL. Quand je cours

sudo ddclient -verbose -debug -noquiet -query 

il montre la connexion via HTTP vs HTTPS ou SSL pour chaque site. J'ai vérifié que SSL était installé en exécutant

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

Des idées sur si elle se connecte via SSL ou comment puis-je la forcer? J'ai également parcouru cet article. J'ai vu que ddclient a déclaré qu'il utiliserait SSL si disponible, je me demande si c'est une limitation à l'utilisation d'un site dynamicdns gratuit ou si j'oublie quelque chose. Les articles ont fait apparaître comme si les sites que j'utilisais comme aucun ip et dnsdynamic supportaient SSL.

Shaulinator
la source
1
Je sudo ddclient -debug -verbose -noquietne vois pas sudo ddclient -verbose -debug -noquiet -query comme vous avez ... comme dans le deuxième lien
George Udosen
@George c'est mon erreur, j'ai manqué d'ajouter -query. Cependant, en regardant à nouveau le problème avec un nouvel état d'esprit et en m'invitant à réexaminer le problème, vous m'avez aidé à le résoudre! Ajouter la réponse et modifiera la question.
Shaulinator

Réponses:

4

J'ai trouvé la réponse et je me sens très idiot de ne pas l'avoir trouvée plus tôt.

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

Ce qui précède forcera SSL et se connectera via SSL. J'ai fait deux changements.

La ligne use=web, web=myip.dnsdynamic.comdevrait être use=web, web=https://myip.dnsdynamic.org. Le passage de .comà .orgarrête les échecs de connexion. L'ajout https://avant la chaîne de connexion lui permet de se connecter via SSL.

Sortie des use=web, web=myip.dnsdynamic.orgspectacles:

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

Sortie des use=web, web=https://myip.dnsdynamic.orgspectacles:

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

Je ne sais toujours pas pourquoi le forçage ssl=yesne le fait pas utiliser automatiquement HTTPS mais il se connecte via SSL maintenant et la commande telle que vue par @George m'aide à vérifier que c'est:sudo ddclient -verbose -debug -noquiet -query

Shaulinator
la source
1

Ce n'est que la partie "obtenir IP". La mise à jour réelle du serveur DNS dynamique n'est pas affichée dans votre sortie. Cela peut toujours être fait via HTTP.

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

Si je mets https devant le serveur, j'obtiens:

DEBUG:    url    = http://https://dyndns.strato.com/nic/update?system=dyndns&hostname=bla.mydomain.com&myip=10.0.0.1
itbastian
la source
Depuis la publication, j'ai éteint mon Pi qui exécute mon DDClient. Je vais devoir faire tourner une instance et faire un autre test pour voir ce que le débogage montre. Je vous remercie!
Shaulinator du
0

Étant donné que j'étais également dérouté par le fait que l'URL dans la ligne de sortie

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

commence par HTTP au lieu de HTTPS bien que je l'ai ssl=yesdans ma configuration, j'ai décidé de regarder dans le code source pour voir ce qui se passe. Il s'avère que dans la fonction geturloù la connexion au serveur est initiée, la http://partie est de toute façon supprimée de l'URL afin qu'elle n'indique pas le type de connexion réel. Si vous voulez vous assurer que ddclient utilise SSL, appelez simplement ddclient depuis le terminal en tant que

sudo ddclient -verbose -force

et cherchez les lignes

CONNECTED:  using HTTP

ou

CONNECTED:  using SSL

Dans ce dernier cas, ddclient utilise vraiment SSL et vous êtes prêt à partir. Notez que le ssl=yesparamètre ne s'applique pas à la recherche IP initiale que ddclient utilise pour vérifier si votre adresse IP publique a changé (celle qui est configurée par use=...), de sorte que pour cette connexion initiale, vous voyez toujoursCONNECTED: using HTTPcomme mentionné par @Shaulinator, sauf si vous définissez explicitement une adresse HTTPS. Cependant, cela ne devrait pas être un problème de sécurité car l'adresse IP renvoyée par cette demande n'est probablement utilisée que pour éviter des efforts inutiles côté serveur; il n'est pas envoyé au serveur dans une demande de mise à jour réelle car le serveur connaît trivialement votre adresse IP lorsque ddclient lance la connexion SSL. Je n'ai vérifié cela explicitement que pour le protocole freedns, mais je serais surpris que ce soit différent pour les autres protocoles.

Eruvaer
la source