¿Cómo verifico que DDCLIENT está usando SSL y, si no es así, cómo lo fuerzo?

9

He estado siguiendo esta guía sobre la configuración de VPN en mi pi. Parte de los pasos son configurar y configurar un servicio dns dinámico. He creado varias cuentas en múltiples plataformas. No Ip y dynamicdns son dos para nombrar. A continuación se muestra una salida de mi archivo ddclient.conf, se conecta bien en ambos sitios dns dinámicos.

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

Mi problema es que en este artículo, ilustran cómo verificar si su pi se conecta a través de SSL. Cuando corro

sudo ddclient -verbose -debug -noquiet -query 

muestra la conexión a través de HTTP vs HTTPS o SSL para cada sitio. Verifiqué que ssl se instaló ejecutando

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

¿Alguna idea sobre si se conecta a través de SSL o cómo puedo forzarlo? También he leído este artículo. Vi que ddclient declaró que usaría SSL si estuviera disponible, me pregunto si esto es una limitación para usar un sitio dinámico dinámico o si estoy pasando por alto algo. Los artículos hicieron que pareciera que los sitios que estoy usando no tienen soporte para ip y dnsdynamic SSL.

Shaulinator
fuente
1
No veo sudo ddclient -debug -verbose -noquietlo sudo ddclient -verbose -debug -noquiet -query que tienes ... como en el segundo enlace
George Udosen
@ George, ese es mi error, perdí agregar-consulta Sin embargo, mirar el problema nuevamente con un nuevo estado mental y pedirme que revise el problema nuevamente, ¡realmente me ayudó a resolverlo! Agregar la respuesta y editará la pregunta.
Shaulinator

Respuestas:

4

He encontrado la respuesta y me siento muy tonto por no haberlo descubierto antes.

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

Lo anterior forzará SSL y se conectará a través de SSL. Hay dos cambios que he hecho.

La línea use=web, web=myip.dnsdynamic.comdebería ser use=web, web=https://myip.dnsdynamic.org. Cambiar de .coma .orgdetiene las fallas de conexión. Agregar https://antes de la cadena de conexión le permite conectarse a través de SSL.

Salida de use=web, web=myip.dnsdynamic.orgespectáculos:

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

Salida de use=web, web=https://myip.dnsdynamic.orgespectáculos:

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

Todavía no estoy seguro de por qué el forzamiento ssl=yesno hace que use HTTPS automáticamente, pero ahora se conecta a través de SSL y el comando como lo ve @George me ayuda a verificar que sea:sudo ddclient -verbose -debug -noquiet -query

Shaulinator
fuente
1

Esta es solo la parte "obtener IP". La actualización real del servidor DNS dinámico no se muestra en su salida. Todavía se puede hacer a través de 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 pongo https delante del servidor, obtengo:

DEBUG:    url    = http://https://dyndns.strato.com/nic/update?system=dyndns&hostname=bla.mydomain.com&myip=10.0.0.1
itbastian
fuente
Desde la publicación, apagué mi Pi que ejecuta mi DDClient. Tendré que girar una instancia y darle otra prueba para ver qué muestra la depuración. ¡Gracias!
Shaulinator, el
0

Como también estaba confundido por el hecho de que la URL en la línea de salida

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

comienza con HTTP en lugar de HTTPS, aunque tengo ssl=yesen mi configuración, decidí buscar en el código fuente para ver qué está pasando. Resulta que en la función geturldonde se inicia la conexión al servidor, la http://parte se elimina de la URL de todos modos, por lo que no es indicativo del tipo de conexión real. Si desea asegurarse de que ddclient use SSL, simplemente llame a ddclient desde el terminal como

sudo ddclient -verbose -force

y busca las líneas

CONNECTED:  using HTTP

o

CONNECTED:  using SSL

En el último caso, ddclient realmente está utilizando SSL y está listo para comenzar. Tenga en cuenta que la ssl=yesconfiguración no se aplica a la búsqueda inicial de IP que ddclient usa para verificar si su dirección IP pública ha cambiado (la que está configurada por use=...), de modo que para esa conexión inicial aún veráCONNECTED: using HTTPsegún lo mencionado por @Shaulinator a menos que establezca explícitamente una dirección HTTPS. Sin embargo, esto no debería ser un problema de seguridad ya que la dirección IP devuelta por esta solicitud probablemente solo se use para evitar esfuerzos innecesarios en el lado del servidor; no se envía al servidor en una solicitud de actualización real, ya que el servidor conoce trivialmente su dirección IP cuando ddclient inicia la conexión SSL. Solo he comprobado esto explícitamente para el protocolo de libertades, pero me sorprendería si fuera diferente para los otros protocolos.

Eruvaer
fuente