Stubby : Client DNS/TLS sous OpenBSD (EXPÉRIMENTAL)

Article publié, le et modifié le
4 minute(s) de lecture

Cet article contient 799 mots.
Source brute de l'article : MD

Description

Stubby est une application qui agit en tant que client DNS, sur protocole sécurisé (en utilisant DoT ). Ce logiciel chiffre les requêtes DNS envoyées d’une machine cliente vers un résolveur DNS, ou un serveur DNS faisant autorité afin d’augmenter la confidentialité des communications de l’utilisateur, par le chiffrement des requêtes DNS. De même, il peut faire des requêtes DNS selon le protocole DNSSEC.

Attention

Installation

L’installation du client stubby se fait/fera sous OpenBSD stable.

  • la 6.3 à ce jour…

Pré-requis

  • OpenSSL : installé par défaut
  • Libyaml : à installer…
  • autoconfautomake : à installer pour les phases de configuration, compilation avant installation

Code : sh

# pkg_add autoconf automake libyaml
quirks-2.414 signed on 2018-03-28T14:24:37Z
Ambiguous: choose package for autoconf
a       0: <None>
        1: autoconf-2.13p4
        2: autoconf-2.52p6
        3: autoconf-2.54p5
        4: autoconf-2.56p4
        5: autoconf-2.57p4
        6: autoconf-2.58p5
        7: autoconf-2.59p5
        8: autoconf-2.60p5
        9: autoconf-2.61p5
        10: autoconf-2.62p2
        11: autoconf-2.63p1
        12: autoconf-2.64p1
        13: autoconf-2.65p1
        14: autoconf-2.67p1
        15: autoconf-2.68p1
        16: autoconf-2.69p2
Your choice: 16
Ambiguous: choose package for automake
a       0: <None>
        1: automake-1.10.3p8
        2: automake-1.11.6p2
        3: automake-1.12.6p1
        4: automake-1.13.4p1
        5: automake-1.14.1p0
        6: automake-1.15.1
        7: automake-1.4.6p5
        8: automake-1.8.5p9
        9: automake-1.9.6p12
Your choice: 6

Puis on va suivre les recommandations officielles d’installation depuis les sources

  • pour Linux - en les adaptant à notre cher OS qu’est OpenBSD. Chacune des étapes est à exécuter l’une après l’autre.

Téléchargement

Code : sh

$ git clone https://github.com/getdnsapi/getdns.git
$ cd getdns
$ git checkout develop

La deuxième commande git nous permet d’obtenir les sources les plus récentes…

Configuration

Code : sh

$ git submodule update --init
$ libtoolize -ci
$ export AUTOCONF_VERSION=2.69
$ export AUTOMAKE_VERSION=1.15
$ autoreconf -fi
$ mkdir build && cd build
$ ../configure --prefix=/usr/local --without-libidn --enable-stub-only --with-stubby

Compilation

$ make
# make install

Bien-sûr, à la place de la dernière commande, si vous avez configuré doas , vous pouvez ainsi l’exécuter :
$ doas make install

resolv.conf

Il est nécessaire de modifier votre fichier /etc/resolv.conf afin de communiquer directement avec stubby :
nameserver 127.0.0.1
nameserver ::1

stubby.yml

Le fichier de configuration de stubby se trouve être dans /usr/local/etc/stubby/stubby.yml. Si vous en créez un au format yaml dans votre répertoire personnel, tel que ~/.stubby.yml, il sera lu en premier.

Exécution

Pour exécuter stubby, il suffit de :

Code : sh

# stubby
[12:57:39.896254] STUBBY: Read config from file /usr/local/etc/stubby/stubby.yml
[12:57:39.898479] STUBBY: DNSSEC Validation is OFF
[12:57:39.898585] STUBBY: Transport list is:
[12:57:39.898617] STUBBY:   - TLS
[12:57:39.898681] STUBBY: Privacy Usage Profile is Strict (Authentication required)
[12:57:39.898713] STUBBY: (NOTE a Strict Profile only applies when TLS is the ONLY transport!!)
[12:57:39.898749] STUBBY: Starting DAEMON....

Quelques informations intéressantes :

  • le drapeau -C permet de spécifier un autre fichier de configuration, à la place de l’original.
  • le drapeau -g permet de fonctionner en arrière plan…
  • le drapeau -i permet de vérifier la configuration !
  • le drapeau -l a pour objectif de journaliser les connexions. Pour l’instant, la sortie se fait sur la sortie standard stdout !

Test

L’usage très simple de dig nous permettra de nous assurer du bon fonctionnement :

=> Version IPv4

Code : sh

$ dig @127.0.0.1 www.gandi.net

; <<>> DiG 9.4.2-P2 <<>> @127.0.0.1 www.gandi.net
; (1 server found)
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 40041
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 4, ADDITIONAL: 0

;; QUESTION SECTION:
;www.gandi.net.                 IN      A

;; ANSWER SECTION:
www.gandi.net.          21583   IN      CNAME   prod.gandi.map.fastly.net.
prod.gandi.map.fastly.net. 3600 IN      A       151.101.37.103

;; AUTHORITY SECTION:
fastly.net.             3600    IN      NS      ns1.fastly.net.
fastly.net.             3600    IN      NS      ns2.fastly.net.
fastly.net.             3600    IN      NS      ns3.fastly.net.
fastly.net.             3600    IN      NS      ns4.fastly.net.

;; Query time: 1888 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Thu Mar 22 14:15:51 2018
;; MSG SIZE  rcvd: 155

=> Version IPv6 :

Code : sh

$ dig @::1 www.gandi.net

; <<>> DiG 9.4.2-P2 <<>> @::1 www.gandi.net
; (1 server found)
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 24688
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 4, ADDITIONAL: 4

;; QUESTION SECTION:
;www.gandi.net.                 IN      A

;; ANSWER SECTION:
www.gandi.net.          84574   IN      CNAME   prod.gandi.map.fastly.net.
prod.gandi.map.fastly.net. 3600 IN      A       151.101.85.103

;; AUTHORITY SECTION:
fastly.net.             168207  IN      NS      ns4.fastly.net.
fastly.net.             168207  IN      NS      ns2.fastly.net.
fastly.net.             168207  IN      NS      ns1.fastly.net.
fastly.net.             168207  IN      NS      ns3.fastly.net.

;; ADDITIONAL SECTION:
ns1.fastly.net.         3600    IN      A       23.235.32.32
ns2.fastly.net.         3600    IN      A       104.156.80.32
ns3.fastly.net.         3600    IN      A       23.235.36.32
ns4.fastly.net.         3600    IN      A       104.156.84.32

;; Query time: 1614 msec
;; SERVER: ::1#53(::1)
;; WHEN: Thu Mar 22 14:16:40 2018
;; MSG SIZE  rcvd: 219