Bloquer l’usage du DoH sur Windows
Le DoH DNS over HTTPS va devenir un vrai casse-tête pour les administrateurs réseau et système. Il a été conçu pour bloquer la censure dans les pays où la liberté d’expression serait limitée. C’est évidemment un leurre dans la mesure où il suffit de bloquer les adresses IP de ces serveurs DoH pour empêcher les requêtes DNS en HTTPS.
Sur Chromium, allez dans Paramètres > Confidentialité et sécurité > Sécurité ou tapez à partir de la barre d’adresses de votre navigateur chrome://settings/security. Et désactivez Utilisez un DNS sécurisé. Ce service est surtout fait pour piller vos données personnelles. Les GAFAM et d’autres pourront ainsi collecter tous les sites sur lesquels vous êtes allés. OpenDNS appartient à Cisco. Sur Chromium, il n’est pas activé par défaut. Sur Google Chrome, Edge, Opera, Vivaldi, Brave et compagnie, je n’ai pas été voir.
Pour Firefox, c’est vraiment pas mieux, même s’il n’est pas activé par défaut. Allez dans Paramètres > Vie privée et sécurité > Mode HTTPS uniquement.
Le client DNS
Le client DNS ou Dnscache présent sur les systèmes Microsoft peut être configuré pour faire du DoH. Il n’est pas activé par défaut. Il faut créer la valeur DWORD EnableAutoDoh > 2 dans la clé HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters. Vous pouvez aussi couper ce service qui a tout de même l’intérêt de mettre en cache votre résolution DNS.
Pour ma part, j’utilise Unbound. A souligner que ce redirecteur DNS peut être configuré en DoH !
Bloquer les adresses de serveurs publics DoT
J’ai trouvé sur le site AdGuard DNS la liste des serveurs publics utilisables en DoH. J’ai scrappé la page en PowerShell, pour en extraire une liste d’adresses Ip v4 et v6 des serveurs DoH répertoriés, que j’ai décidé de bloquer au niveau du pare-feu Windows.
[string[]] $ips=@() Clear-Host #Get your user agent from https://dsfc.net/useragent.php $ua='Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/113.0' $url='https://adguard-dns.io/kb/fr/general/dns-providers/' $page=Invoke-WebRequest -Uri $url -UserAgent $ua $codes=$page.content|Select-String -Pattern '<code>([^<]+)</code>' -AllMatches ForEach($code in $codes.Matches) { $element=$code.Value -replace '</?code>','' $element=$element -replace '^(tls|https?|quic)://','' $element=$element -replace '/[^$]*$','' $element=$element -replace '([a-z]):[0-9]{2,5}$','$1' $element=$element -replace '^\[([^\]]+)\]','$1' $element=$element -replace ':[0-9]{2,5}','' If($element -notmatch ':' -and $element -match '[a-z]') { $addresses=Resolve-DnsName -Name $element -type A_AAAA -ErrorAction SilentlyContinue|Select-Object -Property IPAddress If($addresses.Count -gt 0) { ForEach($address in $addresses) { if($address.IPAddress) { $ips+=($address.IPAddress).Trim() } } } } else { $ips+=$element.Trim() } } $ips=$ips|Sort-Object -Unique|Where { -not($_ -Match '[0-9a-fA-F]{5,}' -or $_ -Match '^([0-9a-fA-F]{1,4}:?){1,6}$') } Remove-NetFirewallRule -DisplayName 'DNS interdits'-ErrorAction SilentlyContinue New-NetFirewallRule -DisplayName 'DNS interdits' -Name 'DNS interdits' -Enabled True -Action Block -Direction Outbound -RemoteAddress $ips