GNU/Linux >> Znalost Linux >  >> Ubuntu

Chraňte své soukromí DNS na Ubuntu 20.04/18.04 (DNS přes TLS)

Tento tutoriál vám ukáže, jak chránit vaše soukromí DNS na ploše Ubuntu 20.04/18.04 pomocí DNS přes TLS . Použijeme nástroj zvaný stubby abychom toho dosáhli. Nejprve vám ale řeknu, proč není DNS bezpečný.

Chyba zabezpečení DNS

DNS je nejistý, protože dotazy DNS nejsou ve výchozím nastavení šifrovány, což mohou prostřední entity zneužít. Jed mezipaměti DNS je jedním ze zneužití DNS, který je široce používán Velkým čínským firewallem (GFW) k cenzuře čínského internetu. GFW kontroluje každý dotaz DNS odeslaný na server DNS mimo Čínu. Vzhledem k tomu, že protokol DNS ve formátu prostého textu je založen na UDP, což je protokol bez připojení, GFW může podvrhnout IP klienta i IP server. Když GFW nalezne název domény na svém seznamu blokovaných, změní odpověď DNS. Pokud chce například čínský uživatel internetu navštívit google.com, čínský velký firewall vrátí do DNS resolveru IP adresu umístěnou v Číně namísto skutečné IP adresy Google. Potom DNS resolver vrátí falešnou IP adresu do počítače uživatele.

Co je DNS přes TLS? Jak chrání vaše soukromí?

DNS over TLS znamená, že dotazy DNS jsou odesílány přes zabezpečené připojení šifrované pomocí TLS, stejné technologie, která šifruje provoz HTTP, takže vaše dotazy DNS nemohou vidět žádné třetí strany. Společně s HTTPS a šifrovaným SNI (Server Name Indication) je vaše historie prohlížení plně chráněna před špehováním ISP.

Stubby je open-source DNS stub resolver vyvinutý týmem getdns. Používá knihovnu getdns. Překladač stub je malý klient DNS v počítači koncového uživatele, který přijímá požadavky DNS z aplikací, jako je Firefox, a předává požadavky rekurzivnímu překladači, jako je 1.1.1.1 nebo 8.8.8.8. Stubby je speciální v tom, že podporuje DNS přes TLS. Ve výchozím nastavení bude odesílat požadavky DNS pouze zašifrované. Existuje další open-source stub resolver s názvem cloudflared který podporuje DNS přes HTTPS, ale stubby je již v úložišti Ubuntu 20.04/18.04 a je velmi snadno použitelný.

Jak nainstalovat a používat Stubby na Ubuntu 20.04/18.04 Desktop

Stubby je v úložišti Ubuntu 20.04/18.04. Otevřete okno terminálu a spusťte následující příkaz pro jeho instalaci.

sudo apt install stubby

Tím se nainstaluje stubby a getdns knihovna. Po instalaci stubby běží na pozadí. Jeho stav zkontrolujete pomocí:

systemctl status stubby

Stubby naslouchá na TCP a UDP portu 53 localhost (127.0.0.1), jak můžete vidět spuštěním tohoto příkazu:

sudo netstat -lnptu | grep stubby

Výchozí stub resolver poskytovaný systemd-resolved naslouchá na TCP a UDP portu 53 z 127.0.0.53.

sudo netstat -lnptu | grep systemd-resolv

Poznámka:Pokud dnsmasq naslouchá na portu TCP 53 z 127.0.0.1, bude Stubby naslouchat pouze na portu UDP 53 z 127.0.0.1.

Hlavní konfigurační soubor je /etc/stubby/stubby.yml . Normálně v něm není potřeba provádět změny, pokud nechcete použít jiný nebo svůj vlastní rekurzivní překladač. Dovolte mi vysvětlit některé výchozí konfigurace. Soubor můžete otevřít pomocí:

sudo nano /etc/stubby/stubby.yml

Následující řádek způsobí, že stubby běží jako stub resolver namísto plného rekurzivního resolveru, proto se nazývá stubby.

resolution_type: GETDNS_RESOLUTION_STUB

Následující konfigurace umožňuje stubby odesílat dotazy DNS šifrované pomocí TLS. Nebude odesílat dotazy v prostém textu.

dns_transport_list:
- GETDNS_TRANSPORT_TLS

Tento následující řádek vyžaduje platný certifikát TLS na vzdáleném rekurzivním překladači.

tls_authentication: GETDNS_AUTHENTICATION_REQUIRED

Následující řádky nastavují adresy naslouchání pro démona stubby. Ve výchozím nastavení jsou povoleny protokoly IPv4 i IPv6.

listen_addresses:
- 127.0.0.1
- 0::1

Následující řádek vytváří hloupé rekurzivní překladače dotazů v režimu round-robin. Pokud je nastaveno na 0 , Stubby bude používat každý upstream server postupně, dokud nebude dostupný, a poté přejde k použití dalšího.

round_robin_upstreams: 1

Ve výchozím nastavení jsou v konfiguračním souboru stubby povoleny 3 rekurzivní překladače. Provozují je nemotorní vývojáři a podporují DNS přes TLS. Úplný seznam doporučených serverů si můžete prohlédnout na webu DNS Privacy.

dnsovertls.sinodun.com     145.100.185.15
dnsovertls1.sinodun.com    145.100.185.16
getdnsapi.net              185.49.141.37

V Additional Servers jsou další servery DNS sekce, které jsou ve výchozím nastavení zakázány.

dns.quad9.net
unicast.censurfridns.dk
dnsovertls3.sinodun.com (supporting TLS1.2 and TLS 1.3)
dnsovertls2.sinodun.com
dns.cmrg.net
dns.larsdebruin.net
......

Existují také servery DNS naslouchající na portu 443. Pokud je port 853 ve vaší síti blokován, můžete pro použití těchto serverů zrušit komentář.

dnsovertls.sinodun.com
dnsovertls1.sinodun.com
dns.cmrg.net
dns.neutopia.org

Nyní můžete ukončit nano textový editor stisknutím Ctrl+X .

Přepnutí na Stubby

Úprava souboru /etc/resolve.conf soubor pro změnu jmenného serveru se již nedoporučuje. Chcete-li systemd-resolved, postupujte podle pokynů níže odesílat dotazy DNS na stubby.

Plocha GNOME

Klepněte na ikonu Správce sítě v pravém horním rohu pracovní plochy. Poté vyberte nastavení kabelového připojení. (Pokud používáte Wi-Fi, vyberte Nastavení Wi-Fi.)

Klikněte na tlačítko ozubeného kola.

Vyberte IPv4 a poté v nastavení DNS přepněte na Automatic na OFF, což zabrání vašemu systému Ubuntu získat adresu serveru DNS z vašeho routeru. Zadejte 127.0.0.1 v poli DNS. Klikněte na Apply pro uložení změn.

Poté restartujte NetworkManager, aby se změny projevily.

sudo systemctl restart NetworkManager

Jakmile se znovu připojíte, můžete vidět, že váš systém Ubuntu nyní používá jako DNS server 127.0.0.1 v Details kartu.

Plocha Unity

Doporučená literatura:jak nainstalovat desktopové prostředí Unity na Ubuntu 20.04/18.04.

Klikněte na ikonu Správce sítě v pravém horním rohu plochy a poté klikněte na edit connections .

Vyberte název připojení a klikněte na ikonu ozubeného kola.

Vyberte kartu Nastavení IPv4, změňte metodu z Automatic(DHCP) na Automatic(DHCP) addresses only , což zabrání vašemu systému Ubuntu získat adresu serveru DNS z vašeho routeru. Poté zadejte server DNS (127.0.0.1). Stubby poslouchá na 127.0.0.1.

Uložte změny. Poté restartujte NetworkManager, aby se změny projevily.

sudo systemctl restart NetworkManager

Jakmile budete znovu připojeni, klikněte znovu na ikonu Network Manager a vyberte connection information . Můžete vidět, že váš systém Ubuntu nyní používá jako DNS server 127.0.0.1.

Změna serveru DNS z příkazového řádku

Ke změně serveru DNS můžete použít níže uvedený způsob, pokud vaše desktopové prostředí používá NetworkManager.

Otevřete okno terminálu a přejděte do adresáře profilu připojení Network Manager.

cd /etc/NetworkManager/system-connections/

Poté vypište názvy připojení, která jsou k dispozici ve vašem systému.

ls

Jak můžete vidět, mám v systému několik připojení, z nichž jedno je kabelové připojení. Některá jsou bezdrátová připojení a jedna je připojení VPN. Protože je můj stolní počítač připojen k routeru pomocí ethernetového kabelu, musím upravit profil kabelového připojení pomocí nano textový editor příkazového řádku.

sudo nano 'Wired connection 1'

Pokud je váš počítač připojen přes Wi-Fi, musíte upravit profil bezdrátového připojení. V tomto souboru najděte [ipv4] konfigurace. Ve výchozím nastavení by to mělo vypadat takto:

[ipv4]
dns-search=
method=auto

Chcete-li, aby váš systém používal Stubby, změňte konfigurace na následující.

[ipv4]
dns=127.0.0.1;
dns-search=
ignore-auto-dns=true
method=auto

Chcete-li soubor uložit v textovém editoru Nano, stiskněte Ctrl+O a poté stiskněte Enter pro potvrzení. Stiskněte Ctrl+X k východu. Poté restartujte Network Manager, aby se změny projevily.

sudo systemctl restart NetworkManager

Nyní můžete zkontrolovat svůj aktuální server DNS spuštěním následujícího příkazu:

systemd-resolve --status

Ukázkový výstup:

Link 2 (enp5s0)
Current Scopes: DNS
LLMNR setting: yes
MulticastDNS setting: no
DNSSEC setting: no
DNSSEC supported: no
DNS Servers: 127.0.0.1

Pokud je jako server DNS uveden 127.0.0.1, pak váš systém používá Stubby.

Ignorujte nastavení DNS poskytovaná serverem DHCP

Pokud používáte serverovou edici Ubuntu , můžete nakonfigurovat systemd ignorovat nastavení DNS poskytovaná serverem DHCP, takže váš systém nebude náhodně používat nesprávný server DNS.

Nejprve zkontrolujte stav síťového rozhraní.

networkctl status enp5s0

Zobrazí se vám síťový soubor pro toto rozhraní. Upravte tento síťový soubor.

sudo nano /run/systemd/network/10-netplan-enp5s0.network

Najděte [DHCP] a přidejte následující řádek.

UseDNS=false

Takhle:

[DHCP]
RouteMetric=100
UseMTU=true
UseDNS=false

Uložte a zavřete soubor. Poté restartujte systemd-netweorkd.service aby se změna projevila.

sudo systemctl restart systemd-networkd

Spuštěním následujícího příkazu zkontrolujte servery DNS pro každé síťové rozhraní. Pokud je vše v pořádku, neuvidíte server DNS poskytovaný vaším serverem DHCP.

resolvectl status

Změny v síťovém souboru lze přepsat novou aktualizací balíčku. Pokud váš server používá netplan pro správu síťového připojení můžete také nakonfigurovat síťový plán tak, aby ignoroval nastavení DHCP DNS.

sudo nano /etc/netplan/50-cloud-init.yaml

Přidejte do souboru následující dva řádky.

       dhcp4-overrides:
           use-dns: no

Takhle:

network:
    ethernets:
        eth0:
            dhcp4: true
            dhcp4-overrides:
                use-dns: no
            optional: true
            set-name: eth0
            nameservers:
               search: [ invalid ]
               addresses: 127.0.0.1
    version: 2

Uložte a zavřete soubor. Poté použijte změny.

sudo netplan apply

Jak zkontrolovat, zda je váš provoz DNS šifrován

Ke sledování DNS provozu můžeme použít WireShark. Nainstalujte WireShark z úložiště Ubuntu 20.04/18.04.

sudo apt install wireshark

Pokud budete dotázáni:„Měli by uživatelé, kteří nejsou superuživateli, moci zachytit pakety?“, odpovězte Ano. Po instalaci spusťte následující příkaz a přidejte svůj uživatelský účet do skupiny wireshark, abyste mohli zachycovat pakety.

sudo adduser your-username wireshark

Odhlaste se a znovu přihlaste, aby se změny projevily. Poté otevřete WireShark z nabídky aplikace a vyberte své síťové rozhraní ve WireShark. Například název mého rozhraní Ethernet je enp5s0. Poté zadejte port 853 jako zachytávací filtr. Díky tomu bude WireShark zachycovat provoz pouze na portu 853, což je port používaný DNS přes TLS.

Kliknutím na tlačítko v levém horním rohu zahájíte snímání. Poté v okně terminálu spusťte následující příkaz pro dotaz na název domény pomocí dig užitečnost. Mohu se například dotázat na záznam A názvu mé domény.

dig A linuxbabe.com

Nyní můžete vidět zachycený provoz DNS ve WireShark. Jak vidíte, můj dotaz DNS byl odeslán na adresu 185.49.141.37 , 145.100.185.15 a 145.100.185.16 , což jsou 3 výchozí překladače DNS definované v konfiguračním souboru stubby. Připojení byla vytvořena přes TCP a šifrována pomocí TLS, což je to, co chci.

Pokud jsou dotazy DNS odesílány bez šifrování, počítač by kontaktoval server DNS na portu 53. Pakety můžete znovu zachytit pomocí port 53 jako zachytávací filtr, ale ve WireShark neuvidíte žádné pakety, což znamená, že stubby šifruje vaše dotazy DNS.

Jak přidat CloudFlare DNS do Stubby

Zjistil jsem, že mezi mým počítačem a 3 výchozími servery DNS je vysoká latence (přes 200 ms), zatímco servery CloudFlare DNS (1.1.1.1, 1.0.0.1) mi poskytují velmi nízkou latenci (méně než 20 ms). CloudFlare také podporuje DNS přes TLS. Chcete-li přidat server DNS CloudFlare, upravte konfigurační soubor stubby.

sudo nano /etc/stubby/stubby.yml

Přejděte dolů na upstream_recursive_servers: a přidejte následující text nad ostatní servery DNS.

#CloudFlare servers
  - address_data: 1.1.1.1
    tls_auth_name: "cloudflare-dns.com"
  - address_data: 1.0.0.1
    tls_auth_name: "cloudflare-dns.com"

Poté najděte následující řádek:

round_robin_upstreams: 1

Změňte 1 na 0 . Díky tomu bude stubby vždy používat server DNS CloudFlare. Pokud CloudFlare není k dispozici, stubby použije jiné servery DNS. Uložte soubor a restartujte stubby, aby se změny projevily.

sudo systemctl restart stubby

Podpora DNS přes HTTPS

Stubby bude podporovat DNS přes HTTPS ve verzi 0.3. Ubuntu 20.10 se dodává s verzí 0.2.6. Chcete-li zkontrolovat verzi Stubby, spusťte

stubby -V

Ubuntu
  1. Jak nainstalovat Kodi Media Center 19.0 v Ubuntu 20.04/18.04

  2. Vydáno víno 6.15! Jak jej nainstalovat v Ubuntu 20.04/21.04/18.04

  3. 12 jednoduchých nástrojů na ochranu vašeho soukromí

  1. Jak nainstalovat KDE Plasma 5.16 na Ubuntu 16.04/Ubuntu 18.04, 19.04

  2. Obnovení hesla root MySQL/MariaDB v Ubuntu 16.04/18.04

  3. Jak nainstalovat Flatpak na Ubuntu 20.04/18.04

  1. Jak nainstalovat klienta SABnzbd Usenet na Ubuntu 16.04/18.04

  2. 2 způsoby instalace Android Studio v Ubuntu 20.04/Ubuntu 18.04

  3. Nastavte si svůj vlastní WireGuard VPN server na Ubuntu 20.04/18.04