0

EdgeRouter X : DNS overs TLS

Ayant fait depuis peu l’acquisition d’un Ubiquiti Edge Router X, je souhaite anonymiser au maximum mes connexions sortantes depuis mon réseau local. Les requêtes DNS circulant en clair sur le port 53, j’opte pour la solution DoT écoutant sur un port dédié (853) plutôt que d’encapsuler mes requêtes DNS dans du HTTPS (DoH – DNS over HTTPS). Les requêtes DNS de mon routeur seront donc chiffrés !

DoT vs DoH

Backup

Avant toute modifications, on sauvegarde la configuration actuelle !

La configuration est stockée dans le répertoire /config. On peut sauvegarder ce répertoire via l’interface web, mais également en CLI vers un serveur réseau distant (SCP, FTP, TFTP ..).

Unbound

Pour la résolution DNS, on n’utilise plus dnsmasq mais unbound. Attention, dnsmasq fait également office de serveur DHCP. On va donc le laisser, mais simplement lui retirer la fonction de serveur DNS.

Installation

Pour l’installer, il est nécessaire d’installer les repository Debian ajouter nos propres paquets sur l’EdgeRouter X

$ show version
Version: v1.10.7

Avec cette version-là (firmware pas à jour), je doit utiliser les paquets de Debian 7 (Wheezy). Pour la V2.0, ce sont les paquets Debian 9.

$ configure
$ set system package repository wheezy components 'main contrib non-free' 
$ set system package repository wheezy distribution wheezy 
$ set system package repository wheezy url http://archive.debian.org/debian

On commit, et on sauvegarde

$ commit ; save

On met ensuite à jour la liste des paquets disponible

$ apt-get update

Installation d’unbound

$ apt-get install unbound wget

Désactivation de dnsmasq

Unbound est maintenant installé, mais non-fonctionnel car son port d’écoute est déja pris par le service DNS de dnsmasq qui est lui encore actif.

On lui indique son propre serveur DNS

$ configure
$ set system name-server 127.0.0.1

Si ça n’a pas déja été configuré, on indique l’adresse du serveur DNS distribuée dans les baux DHCP.

$ set service dhcp-server shared-network-name lan subnet MY_LAN/24 dns-server IP_EDGE_ROUTER

On désactive le service DNS de dnsmasq

$ set service dhcp-server use-dnsmasq disable
$ commit ; save
$ exit

Configuration

Je me suis basé sur la configuration d’ici.

$ vi /etc/unbound/unbound.conf

server:
auto-trust-anchor-file: "/var/lib/unbound/root.key"
verbosity: 1
interface: 0.0.0.0
interface: ::0
port: 53
do-ip4: yes
do-ip6: yes
do-udp: yes
do-tcp: yes
access-control: 192.168.0.0/16 allow
access-control: 127.0.0.0/8 allow
access-control: 10.0.0.0/8 allow
root-hints: "/var/lib/unbound/root.hints"

hide-identity: yes
hide-version: yes
harden-glue: yes
harden-dnssec-stripped: yes

cache-min-ttl: 3600
cache-max-ttl: 86400
prefetch: yes
rrset-roundrobin: yes
ssl-upstream: yes
use-caps-for-id: yes

private-address: 192.168.0.0/16
private-address: 172.16.0.0/12
private-address: 10.0.0.0/8

logfile: "/var/lib/unbound/unbound.log"
verbosity: 0
val-log-level: 3

forward-zone:
name: "."
forward-addr: 9.9.9.9@853

Quelques valeurs importantes :

  • L’emplacement du fichier de clé (auto-trust-anchor-file)
  • L’emplacement du fichier contenant les serveurs racines DNS, les “premiers” serveurs (root-hints)
  • Le port d’écoute (53)
  • La gestion du cache du serveur (cache-min-ttl et cache-max-ttl)
  • L’emplacement des logs (/var/lib/unbound/unbound.log). La verbosité 0 n’affichera que les erreurs
  • Le forward-addr concerne le serveur DNS qui reçevras les requêtes, les requêtes qui n’auront pas été servies par mon serveur unbound

Je vais donc utiliser Quad9 en résolveur DNS sur le port 853, qui est le port du DoT ! Quad9 utilise l’IP 9.9.9.9.

Quad9 est un résolveur DNS public, géré par une organisation à but non-lucratif. En plus d’être respectueux de la vie privée de ses utilisateurs, il se classe parmi les top 10 en résolveurs DNS publiques.

Source de l’image : https://www.dnsperf.com/#!dns-resolvers

Serveurs racine DNS

Pour récupérer la liste :

$ wget ftp://FTP.INTERNIC.NET/domain/named.cache -O /var/lib/unbound/root.hints

Démarrage

A ce stade, unbound est prêt à démarrer ! 🙂

$ service unbound start

Le DoT est fonctionnel. Une écoute sur le port 853 nous le confirmeras.

$ tcpdump -i eth0 port 853

Il n’y a maintenant plus rien qui circule sur le port 53 !

EDIT : suite à des soucis rencontrés avec le root.key lors de chaque reboot du routeur (résolution DNS qui ne se fait plus), j’ai ajouté un petit script qui s’exécute à chaque démarrage pour corriger le problème.

Sources

J’ai repris et fait un mixe de deux documentations que j’ai trouvé à ce sujet :

https://www.chameth.com/2017/12/17/dns-over-tls-on-edgerouter-lite/

https://wiki.obsd4a.net/network:service:unbound-dnssec

 

Supras

S’abonner
Notification pour
guest

0 Commentaires
Commentaires en ligne
Afficher tous les commentaires