01Waarom de router het moet doen
Je router geeft de apparaten het adres van Warda, en de meeste gebruiken het. Maar sommige apparaten hebben hun eigen DNS-server in hun software staan: tv's, speakers en camera's die 8.8.8.8 gebruiken wat het netwerk ook zegt. Een programma kan hetzelfde doen, en ook malware die ongezien met zijn servers wil praten.
Die verzoeken bereiken Warda nooit: het kan ze niet blokkeren, en zelfs niet zien. Alleen de router, waar elk pakket op weg naar buiten doorheen gaat, kan ze tegenhouden. De regel is eenvoudig: de DNS-poorten staan alleen open voor het Warda-kastje.
02De poorten die je sluit
Gewone DNS gebruikt poort 53 (UDP en TCP). DNS over TLS gebruikt poort 853 via TCP, DNS over QUIC poort 853 via UDP. Dit zijn de poorten die een regel kan sluiten:
- poort 53 en 853, TCP en UDP, toestaan vanaf het adres van Warda (en zijn IPv6-adressen) naar het internet: Warda heeft ze nodig om zijn eigen upstream-servers versleuteld te vragen;
- poort 53 en 853 weigeren vanaf alle andere apparaten van het netwerk naar het internet;
- of, alleen voor poort 53, de verzoeken naar Warda omleiden in plaats van ze te weigeren: een tv met 8.8.8.8 erin blijft dan werken, en wordt gefilterd.
03Een algemene regel
Op een router met Linux (OpenWrt, een zelfgebouwde router) volstaat een nftables-regel zoals hieronder, met 192.168.1.53 vervangen door het adres van je Warda-kastje. Op pfSense, OPNsense of een eigen router is het idee hetzelfde: een regel op de interface van het lokale netwerk die het adres van Warda doorlaat naar poort 53 en 853, en daaronder een regel die deze poorten blokkeert voor de rest van het netwerk.
Doe hetzelfde voor IPv6 met de adressen van Warda: een apparaat dat via IPv6 vraagt, gaat om een regel heen die alleen voor IPv4 geschreven is. Veel modems van providers hebben zo'n firewall niet: een eigen router achter het modem draagt dan de regel.
table inet warda_dns {
chain forward {
type filter hook forward priority filter; policy accept;
# 192.168.1.53: the address of Warda, the only one that may ask outside
ip saddr 192.168.1.53 accept
meta l4proto { tcp, udp } th dport { 53, 853 } reject
}
}
04De grenzen, eerlijk gezegd
Een poort sluit alleen af wat hem gebruikt. DNS over HTTPS gaat over poort 443, de poort van elke beveiligde site: geen poortregel kan die sluiten zonder het web te sluiten. Warda beantwoordt dat deel via de namen: de bekende diensten voor versleutelde DNS, VPN en proxy zijn geblokkeerd voor kinderen en tieners, en Firefox houdt de DNS van het netwerk (het vraagt een testnaam, die Warda op de juiste manier beantwoordt).
Poort 853 kun je niet omleiden: een versleuteld verzoek dat bij Warda terechtkomt in plaats van bij zijn server, zou falen op de controle van het certificaat. Weiger hem, en de meeste apparaten vallen terug op de DNS van het netwerk. Een VPN, ten slotte, draagt alles in zijn tunnel, DNS inbegrepen: Warda blokkeert de bekende VPN-diensten voor minderjarigen en meldt je met het abonnement de pogingen.