Pour augmenter encore d’un cran l’anonymat sur le réseau internet, un système de chiffrement de requètes DNS va être mis en place sur l’ordinateur. Ce qui permet aussi de contourner les règles de filtrages ou de blocages mis en place par certains FAI/Pays.
Ce système de chiffrement sera basé sur le couple DNSCrypt et DNSMasq.
DNSCrypt est un service d’OpenDNS, qui permet de chiffrer les requêtes DNS.
Cependant, pour que DNSCrypt fonctionne, il a besoin d’un serveur cache DNS. C’est donc DNSMasq, qui en aura la fonction.
Pour rappel, un serveur cache DNS n’a pas le même rôle qu’un serveur DNS. Effectivement, un serveur DNS va essayer de résoudre un nom de domaine par une adresse IP où le serveur cache DNS ne va juste mettre en cache mémoire les requètes. Chaque requète qui n’est pas présente en cache sera résolue par le ou les serveurs DNS. Ici OpenDNS.
Cet article décrit les étapes pour les distribution ArchLinux et Manjaro.
Pour les distributions Ubuntu et dérivées, voir cet autre article: OpenDNS DNSCrypt.
Installation de DNSCrypt et DNSMasq
sudo pacman -S dnsmasq dnscrypt-proxy
Configuration de DNSMasq
DNSMasq sera à l’écoute sur l’adresse 127.0.0.1, si la requète DNS n’est pas dans son cache alors il envoie la demande à DNSCrypt sur l’interface 127.0.0.2.
Faire une sauvegarde du fichier de configuration par défaut:
sudo mv /etc/dnsmasq.conf /etc/dnsmasq.old
Créer un nouveau fichier de configuration:
sudo nano /etc/dnsmasq.conf
Exemple d’un fichier fonctionnel:
# ne pa prendre en compte /etc/hosts. no-hosts # Do not go into the background at startup but otherwise run as # normal. keep-in-foreground # Do not provide DHCP or TFTP on the loopback interface. no-dhcp-interface=lo # Only listen on the loopback interface. listen-address=127.0.0.1 # Only bind to interfaces dnsmasq is listening on. bind-interfaces # Never forward addresses in the non-routed address spaces. bogus-priv # Don't read /etc/resolv.conf. no-resolv # Reject (and log) addresses from upstream nameservers which are in # the private IP ranges. This blocks an attack where a browser behind # a firewall is used to probe machines on the local network. stop-dns-rebind # Exempt 127.0.0.0/8 from rebinding checks. This address range is # returned by realtime black hole servers, so blocking it may disable # these services. rebind-localhost-ok # Never forward plain names (without a dot or domain part). domain-needed # Upstream server is dnscrypt-proxy on local machine. server=127.0.0.2 # Set the cache size here. If you don't use spam blocking add-ons such # Adblock Plus or Ghostery, you may want to increase this value as you # will be resolving more domain names. cache-size=1000 # Pass through DNSSEC validation results from dnscrypt-proxy. proxy-dnssec
Configuration de Dnscrypt
Editer le fichier de configuration de Dnscrypt:
sudo nano /etc/conf.d/dnscrypt-proxy
Et modifier comme suit:
DNSCRYPT_LOCALIP=127.0.0.2 ##adresse IP de Dnscrypt DNSCRYPT_LOCALPORT=53 ## le port d'écoute DNSCRYPT_USER=nobody DNSCRYPT_PROVIDER_NAME=2.dnscrypt-cert.opendns.com ## le serveur d'OpenDNS certifié DNSCRYPT_PROVIDER_KEY=B735:1140:206F:225D:3E2B:D822:D7FD:691E:A1C3:3CC8:D666:8D0C:BE04:BFAB:CA43:FB79 ## la clé de véréficiation DNSCRYPT_RESOLVERIP=208.67.220.220 ## l'adresse Ip du serveur OpenDNS DNSCRYPT_RESOLVERPORT=443 ## son port d'écoute 443, qui est un port SSL
Activation et démarrage des services dnscrypt-proxy et dnsmasq
Activer les services dnscrypt-proxy et dnsmasq au démarrage du système:
sudo systemctl enable dnscrypt-proxy.service sudo systemctl enable dnsmasq.service
Démarrer les services:
sudo systemctl start dnscrypt-proxy.service sudo systemctl start dnsmasq.service
Vérification du bon fonctionnement
Vérification du port d’écoute(53) sur les interfaces locales:
sudo netstat -alputen | grep 53 tcp 0 0 127.0.0.2:53 0.0.0.0:* LISTEN 0 37985 2773/dnscrypt-proxy tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 0 36846 2768/dnsmasq udp 0 0 127.0.0.2:53 0.0.0.0:* 0 37983 2773/dnscrypt-proxy udp 0 0 127.0.0.1:53 0.0.0.0:* 0 36845 2768/dnsmasq
Si Network-Manager est utilisé pour la gestion du réseau, il faut aller ajouter l’IP 127.0.0.1 comme serveur DNS supplémentaire:
Test avec la commande dig:
dig google.fr ; <<>> DiG 9.9.2-P2 <<>> google.fr ;; global options: +cmd ;; Got answer: ;; ->>HEADER<;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;google.fr. IN A ;; ANSWER SECTION: google.fr. 300 IN A 173.194.45.87 google.fr. 300 IN A 173.194.45.95 google.fr. 300 IN A 173.194.45.88 ;; Query time: 1877 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: Mon Mar 24 15:14:46 2014 ;; MSG SIZE rcvd: 86
Si dig n’est pas présent, il faut installer le paquet: dnsutils
sudo pacman -S dnsutils
via blog.jam.net.ve
Pour moi la commande sudo netstat -alputen | grep 53
me retourne cela
tcp 0 0 0.0.0.0:53 0.0.0.0:* LISTEN 0 338457 25845/dnsmasq
tcp6 0 0 :::53 :::* LISTEN 0 338459 25845/dnsmasq
udp 0 0 0.0.0.0:53 0.0.0.0:* 0 338456 25845/dnsmasq
udp6 0 0 :::53 :::* 0 338458 25845/dnsmasq
Si tu n’utilise pas l’IPv6 tu peux déjà le désactiver.
le service dnscrypt-proxy est-il démarré?
[code lang= »shell »]ps -e | grep dnscrypt[/code]
slt, une question j’ai bind d’installé, faut il le désinstaller pour profiter de dnsmasq et dnscrypt ?
Salut zoulou!
tu peux garder Bind mais il faut le configurer en sorte qu’il fonctionne avec dnscrypt…
Merci de ta réponse je vais me pencher dessus des que j’ai un peux de temps ;)
@fred la commande me retourne rien
@wilfried18: t’as suivis chaque étape du tuto?
oui
Concernant dig maintenant j’ai
; <> DiG 9.9.2-P2 <> google.fr
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 28194
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1280
;; QUESTION SECTION:
;google.fr. IN A
;; ANSWER SECTION:
google.fr. 85 IN A 173.194.40.127
google.fr. 85 IN A 173.194.40.120
google.fr. 85 IN A 173.194.40.119
;; Query time: 37 msec
;; SERVER: 192.168.1.254#53(192.168.1.254)
;; WHEN: Wed Mar 26 19:07:39 2014
;; MSG SIZE rcvd: 86
Tu as un serveur DNS sur ton réseau local ?
[code lang= »shell »]
SERVER: 192.168.1.254#53(192.168.1.254)
[/code]
dnscrypt n’est pas un service d’open dns. open dns est juste l’un des services gratuits compatible, il y en a plein d’autres, voir la page du projet: http://dnscrypt.org
il y a meme des serveurs en france: http://paste.d0wn.biz/dns.txt
Salut Sledge,
merci pour ton complément d’informations, mais après quelques recherches, voici ce qu’il est possible de trouver:
« DNSCrypt. The main objectives of DNSCrypt is full encryption of the communication channel between the client (you) and server (OpenDNS) »
http://wiki.openwrt.org/inbox/dnscrypt
et
http://korben.info/chiffrer-dns.html
Quoiqu’il en soit, je pensais que c’était un projet initialement réaliser par OpenDNS.
slt, il y a quelques temps j’avais lu un article sur le blog de Stéphane Bortzmeyer qu’il fallait éviter opendns qu’en est il dans le cas present ?
PS: lien de l’article (http://www.bortzmeyer.org/opendns-non-merci.html )