--- categories: ['OpenBSD','Réseau','Client'] date: 2018-03-22T14:21:09+01:00 description: "Expérimentation d'installation de stubby, un client DoT pour DNS, et DNSSEC, sur OpenBSD (6.3)." draft: false tags: ['OpenBSD','stubby','experimental','DNS','DoT','DNSSEC'] title: "Stubby : Client DNS/TLS sous OpenBSD (EXPÉRIMENTAL) " translationKey: "openbsd-experimental-stubby" --- ## Description [Stubby](https://github.com/getdnsapi/stubby) est une application qui agit en tant que client DNS, sur protocole sécurisé (en utilisant {{< abbr DoT "DNS-over-TLS" >}}). 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. {{< note warning >}} 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… {{< /note >}} ## 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 ```sh # pkg_add autoconf automake libyaml quirks-2.414 signed on 2018-03-28T14:24:37Z Ambiguous: choose package for autoconf a 0: 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: 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](https://dnsprivacy.org/wiki/pages/viewpage.action?pageId=3145786) - *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 ```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 ```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 ```sh $ make # make install ``` Bien-sûr, à la place de la dernière commande, si vous avez configuré *{{< man 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 : ```cfg 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 : ```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 ```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 : ```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 ``` ---