Bagaimana saya memverifikasi DDCLIENT menggunakan SSL dan jika tidak, bagaimana saya memaksakannya?

9

Saya telah mengikuti panduan ini tentang pengaturan VPN di pi saya. Bagian dari langkah-langkah ini adalah mengatur dan mengkonfigurasi layanan dns dinamis. Saya telah membuat beberapa akun di berbagai platform. Tidak ada Ip dan dynamicdns adalah dua nama. Di bawah ini adalah output dari file ddclient.conf saya, itu terhubung dengan baik di kedua situs dns dinamis.

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

Masalah saya adalah bahwa dalam artikel ini , mereka menggambarkan cara memverifikasi jika pi Anda terhubung melalui SSL. Ketika saya berlari

sudo ddclient -verbose -debug -noquiet -query 

itu menunjukkan menghubungkan melalui HTTP vs HTTPS atau SSL untuk setiap situs. Saya memverifikasi bahwa ssl diinstal dengan menjalankan

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

Ada gagasan tentang apakah itu terhubung melalui ssl atau bagaimana saya bisa memaksanya? Saya telah membaca artikel ini juga. Saya memang melihat bahwa ddclient menyatakan bahwa ia akan menggunakan SSL jika tersedia, saya ingin tahu apakah ini adalah batasan untuk menggunakan situs dynamicdns gratis atau jika saya sedang melihat sesuatu. Artikel membuatnya seolah-olah situs yang saya gunakan tidak seperti ip dan dnsdynamic mendukung SSL.

Shaulinator
sumber
1
Saya sudo ddclient -debug -verbose -noquiettidak melihat sudo ddclient -verbose -debug -noquiet -query seperti yang Anda miliki ... seperti pada tautan kedua
George Udosen
@ George itu kesalahan saya, saya melewatkan menambahkan -query. Namun, melihat masalah lagi dengan pikiran segar dan Anda mendorong saya untuk melihat kembali masalah itu benar-benar membantu saya menyelesaikannya! Menambahkan jawaban dan akan mengedit pertanyaan.
Shaulinator

Jawaban:

4

Saya telah menemukan jawabannya dan saya merasa sangat konyol tidak mencari tahu lebih awal.

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

Hal di atas akan memaksa SSL dan akan terhubung melalui SSL. Ada dua perubahan yang saya buat.

Garisnya use=web, web=myip.dnsdynamic.comseharusnya use=web, web=https://myip.dnsdynamic.org. Mengubah dari berhenti .comke .orgkegagalan koneksi. Menambahkan https://sebelum string koneksi memungkinkan untuk terhubung melalui SSL.

Output dari use=web, web=myip.dnsdynamic.orgpertunjukan:

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

Output dari use=web, web=https://myip.dnsdynamic.orgpertunjukan:

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

Saya masih tidak yakin mengapa pemaksaan ssl=yestidak membuatnya menggunakan HTTPS secara otomatis tetapi sekarang terhubung melalui SSL dan perintah seperti yang terlihat oleh @George membantu saya memverifikasi itu adalah:sudo ddclient -verbose -debug -noquiet -query

Shaulinator
sumber
1

Ini hanya bagian "dapatkan IP". Pembaruan aktual ke server DNS dinamis tidak ditampilkan dalam output Anda. Mungkin masih dilakukan melalui 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

Jika saya meletakkan https di depan server, saya mendapatkan:

DEBUG:    url    = http://https://dyndns.strato.com/nic/update?system=dyndns&hostname=bla.mydomain.com&myip=10.0.0.1
itbastian
sumber
Sejak posting, saya telah mematikan Pi saya yang menjalankan DDClient saya. Saya harus memutar contoh dan memberikan tes ini lagi untuk melihat apa yang ditunjukkan oleh debug. Terima kasih!
Shaulinator
0

Karena saya juga bingung dengan fakta bahwa URL di baris output

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

dimulai dengan HTTP alih-alih HTTPS walaupun saya miliki ssl=yesdi konfigurasi saya, saya memutuskan untuk melihat kode sumber untuk melihat apa yang terjadi. Ternyata dalam fungsi di geturlmana koneksi ke server dimulai, http://bagian itu dilucuti dari URL sehingga tidak menunjukkan jenis koneksi yang sebenarnya. Jika Anda ingin memastikan bahwa ddclient menggunakan SSL, panggil saja ddclient dari terminal sebagai

sudo ddclient -verbose -force

dan mencari garis

CONNECTED:  using HTTP

atau

CONNECTED:  using SSL

Dalam kasus yang terakhir, ddclient benar-benar menggunakan SSL dan Anda siap melakukannya. Perhatikan bahwa ssl=yespengaturan tidak berlaku untuk pencarian IP awal yang digunakan ddclient untuk memeriksa apakah alamat IP publik Anda telah berubah (yang dikonfigurasi oleh use=...), sehingga untuk koneksi awal itu Anda masih melihatCONNECTED: using HTTPseperti yang disebutkan oleh @Shaulinator kecuali Anda secara eksplisit menetapkan alamat HTTPS. Namun, ini seharusnya tidak menjadi masalah keamanan karena alamat IP yang dikembalikan oleh permintaan ini mungkin hanya digunakan untuk menghindari upaya yang tidak perlu di sisi server; itu tidak dikirim ke server dalam permintaan pembaruan aktual karena server mengetahui alamat IP Anda secara sepele ketika ddclient memulai koneksi SSL. Saya hanya memeriksa ini secara eksplisit untuk protokol freedns, tetapi saya akan terkejut jika akan berbeda untuk protokol lain.

Eruvaer
sumber