Met DNS-over-HTTPS voer je DNS resolving uit over een beveiligde HTTPS verbinding. Op deze manier verhoog je de veiligheid voor jezelf omdat niemand kan ‘meekijken’ en je DNS aanvraag kan manipuleren door een ‘man-in-het-midden’ aanval.
DNS-over-HTTPS (onder de volksmond bekend als DoH) is nog niet voor veel DNS resolvers beschikbaar. Cloudflare heeft nu wel een implementatie met de tool cloudflared.
Om deze in te stellen moet je onderstaande stappen uitvoeren. Ik heb hiervan gebruik gemaakt van de informatie die ik vond in deze link.
Installeren
AMD64 architecture (meeste devices)
Download het installatie paket en gebruik dan ‘apt-get’ om het pakket te installeren. Voer het pakket met de -v vlag uit om te controleren dat alles goed werkt:
# Voor Debian/Ubuntu wget https://bin.equinox.io/c/VdrWdbjqyF/cloudflared-stable-linux-amd64.deb sudo apt-get install ./cloudflared-stable-linux-amd64.deb cloudflared -v # Voor CentOS/RHEL/Fedora wget https://bin.equinox.io/c/VdrWdbjqyF/cloudflared-stable-linux-amd64.rpm sudo yum install ./cloudflared-stable-linux-amd64.rpm cloudflared -v
Binaries voor andere operating systemen kun je hier vinden.
ARM architecture (Raspberry Pi)
Hiervoor moet je de precompiled binary downloaden en copiëren naar de ‘/usr/local/bin/’ directory zodat deze door de ‘cloudflared’ gebruiker kan worden uitgevoerd. Gebruik de -v vlag om de juiste werking te controleren.
wget https://bin.equinox.io/c/VdrWdbjqyF/cloudflared-stable-linux-arm.tgz tar -xvzf cloudflared-stable-linux-arm.tgz sudo cp ./cloudflared /usr/local/bin sudo chmod +x /usr/local/bin/cloudflared cloudflared -v
Configureren
Creëer een ‘cloudflared’ gebruiker om de daemon service uit te voeren:
sudo useradd -s /usr/sbin/nologin -r -M cloudflared
Creëer een configuratie file voor cloudflared:
sudo nano /etc/default/cloudflared
Zet hierin de volgende inhoud:
# Commandline args for cloudflared CLOUDFLARED_OPTS=--port 5053 --upstream https://1.1.1.1/dns-query --upstream https://1.0.0.1/dns-query
Update de permissies van deze configuratie en binary file:
sudo chown cloudflared:cloudflared /etc/default/cloudflared sudo chown cloudflared:cloudflared /usr/local/bin/cloudflared
Creëer nu het systemd script ‘/etc/systemd/system/cloudflared.service’
sudo nano /etc/systemd/system/cloudflared.service
Zet hierin de volgende inhoud:
[Unit] Description=cloudflared DNS over HTTPS proxy After=syslog.target network-online.target [Service] Type=simple User=cloudflared EnvironmentFile=/etc/default/cloudflared ExecStart=/usr/local/bin/cloudflared proxy-dns $CLOUDFLARED_OPTS Restart=on-failure RestartSec=10 KillMode=process [Install] WantedBy=multi-user.target
Zorg ervoor dat de systemd service uitgevoerd wordt tijden opstarten, start de service en controleer de status:
sudo systemctl enable cloudflared sudo systemctl start cloudflared sudo systemctl status cloudflared
Om te controleren of alles werkt kun je het dig commando gebruiken:
pi@Pi-Hole3:~ $ dig @127.0.0.1 -p 5053 google.com ; <<>> DiG 9.11.5-P4-5.1+deb10u1-Raspbian <<>> @127.0.0.1 -p 5053 google.com ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 25697 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 1452 ;; QUESTION SECTION: ;google.com. IN A ;; ANSWER SECTION: google.com. 208 IN A 172.217.4.78 ;; Query time: 17 msec ;; SERVER: 127.0.0.1#5053(127.0.0.1) ;; WHEN: Sun Jun 28 17:03:12 CEST 2020 ;; MSG SIZE rcvd: 65
Configureren Pi-Hole
Tenslotte moeten we Pi-Hole configureren om de lokale cloudflared service te gebruiken als upstream DNS server. Dit doe je door ‘127.0.0.1#5053’ toe te voegen als Custom DNS (IPv4):
Testen
Om te testen of DOH werkt kun je deze link gebruiken.
Updaten ‘cloudflared’
Voer de volgende acties uit:
wget https://bin.equinox.io/c/VdrWdbjqyF/cloudflared-stable-linux-arm.tgz tar -xvzf cloudflared-stable-linux-arm.tgz sudo systemctl stop cloudflared sudo cp ./cloudflared /usr/local/bin sudo chmod +x /usr/local/bin/cloudflared sudo systemctl start cloudflared cloudflared -v sudo systemctl status cloudflared
Verwijderen ‘cloudflared’
Voer de volgende acties uit:
sudo systemctl stop cloudflared sudo systemctl disable cloudflared sudo systemctl daemon-reload sudo deluser cloudflared sudo rm /etc/default/cloudflared sudo rm /etc/systemd/system/cloudflared.service sudo rm /usr/local/bin/cloudflared
Conclusie
Met een paar eenvoudige stappen kun je DoH gebruiken met Pi-Hole. Hierdoor wordt internet weer een stukje veiliger voor je.