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 : il ne fait pas office de résolveur cache DNS, ni de serveur faisant autorité ; ce n’est qu’un client DNS !
De plus, il n’existe ni package, ni port de Stubby sous OpenBSD stable… et encore moins de port officiel du projet stubbly vers OpenBSD, d’où le titre “EXPÉRIMENTAL”. Nous allons devoir récupérer les sources, les compiler, installer, configurer, etc…
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…
- autoconf,- automake: à installer pour les phases de configuration, compilation avant installation
# 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
$ 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
$ 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 :
# 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 -Cpermet de spécifier un autre fichier de configuration, à la place de l’original.
- le drapeau -gpermet de fonctionner en arrière plan…
- le drapeau -ipermet de vérifier la configuration !
- le drapeau -la pour objectif de journaliser les connexions. Pour l’instant, la sortie se fait sur la sortie standardstdout!
Test
L’usage très simple de dig nous permettra de nous assurer du bon
fonctionnement :
⇒ Version IPv4
$ 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 :
$ 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