Como faço para verificar se DDCLIENT está usando SSL e, se não estiver, como forçá-lo?

9

Tenho seguido este guia sobre como configurar a VPN no meu pi. Parte das etapas é instalar e configurar um serviço de DNS dinâmico. Criei várias contas em várias plataformas. Nenhum IP e dynamicdns são dois para nomear. Abaixo está uma saída do meu arquivo ddclient.conf, ele se conecta perfeitamente nos dois sites dinâmicos do DNS.

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

Meu problema é que, neste artigo, eles ilustram como verificar se o seu pi está se conectando por SSL. Quando eu corro

sudo ddclient -verbose -debug -noquiet -query 

mostra a conexão por HTTP vs HTTPS ou SSL para cada site. Eu verifiquei que o ssl foi instalado executando

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

Alguma idéia sobre se ele está se conectando via ssl ou como posso forçá-lo? Corri por este artigo também. Eu vi que o ddclient afirmou que usaria SSL se disponível, estou me perguntando se isso é uma limitação ao uso de um site dynamicdns gratuito ou se estou ignorando alguma coisa. Os artigos fizeram parecer que os sites que eu estou usando não suportam SSL e dnsdynamic.

Shaulinator
fonte
11
Eu vejo sudo ddclient -debug -verbose -noquietnão sudo ddclient -verbose -debug -noquiet -query como você tem ... como no segundo link
George Udosen
@ George, esse é o meu erro, senti falta de adicionar -query. No entanto, analisar o problema novamente com um novo estado de espírito e você me solicitando a examiná-lo novamente realmente me ajudaram a resolvê-lo! Adicionar a resposta e editará a pergunta.
Shaulinator

Respostas:

4

Eu encontrei a resposta e me sinto muito boba por não ter descoberto 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

O acima forçará o SSL e se conectará ao SSL. Eu fiz duas mudanças.

A linha use=web, web=myip.dnsdynamic.comdeve ser use=web, web=https://myip.dnsdynamic.org. Mudar de .compara .orginterrompe as falhas de conexão. A adição https://anterior à cadeia de conexão permite que ela se conecte por SSL.

Saída de 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

Saída de 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

Ainda não sei ao certo por que o forçar ssl=yesnão faz com que ele use HTTPS automaticamente, mas ele está se conectando via SSL agora e o comando visto pelo @George me ajuda a verificar se é:sudo ddclient -verbose -debug -noquiet -query

Shaulinator
fonte
1

Esta é apenas a parte "obter IP". A atualização real para o servidor DNS dinâmico não é mostrada na sua saída. Ainda pode ser feito por 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

Se eu colocar https na frente do servidor, recebo:

DEBUG:    url    = http://https://dyndns.strato.com/nic/update?system=dyndns&hostname=bla.mydomain.com&myip=10.0.0.1
itbastian
fonte
Desde a publicação, desativei meu Pi que executa meu DDClient. Vou ter que criar uma instância e fazer outro teste para ver o que a depuração mostra. Obrigado!
Shaulinator 03/10/19
0

Desde que eu também estava confuso pelo fato de que o URL na linha de saída

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

começa com HTTP em vez de HTTPS, embora eu tenha ssl=yesna minha configuração, decidi procurar no código-fonte para ver o que está acontecendo. Acontece que, na função em geturlque a conexão com o servidor é iniciada, a http://parte é retirada da URL de qualquer maneira, para que não seja indicativa do tipo de conexão real. Se você quiser ter certeza de que o ddclient usa SSL, chame o ddclient no terminal como

sudo ddclient -verbose -force

e procure as linhas

CONNECTED:  using HTTP

ou

CONNECTED:  using SSL

Neste último caso, o ddclient está realmente usando SSL e você estará pronto. Observe que a ssl=yesconfiguração não se aplica à pesquisa de IP inicial que o ddclient usa para verificar se o seu endereço IP público foi alterado (o que é configurado por use=...), para que, para a conexão inicial, você ainda vejaCONNECTED: using HTTPconforme mencionado por @Shaulinator, a menos que você defina explicitamente um endereço HTTPS. No entanto, isso não deve ser um problema de segurança, pois o endereço IP retornado por essa solicitação provavelmente é usado apenas para evitar esforços desnecessários no lado do servidor; ele não é enviado ao servidor em uma solicitação de atualização real, pois o servidor conhece trivialmente seu endereço IP quando o ddclient inicia a conexão SSL. Eu verifiquei isso explicitamente apenas para o protocolo freedns, mas ficaria surpreso se fosse diferente para os outros protocolos.

Eruvaer
fonte