GNU/Linux >> Tutoriales Linux >  >> Ubuntu

Proteja su privacidad de DNS en Ubuntu 20.04/18.04 (DNS sobre TLS)

Este tutorial le mostrará cómo proteger su privacidad de DNS en el escritorio Ubuntu 20.04/18.04 con DNS sobre TLS . Usaremos una herramienta llamada stubby para lograr eso Pero primero, déjame decirte por qué el DNS no es seguro.

vulnerabilidad de DNS

El DNS es inseguro porque, de forma predeterminada, las consultas de DNS no están cifradas, lo que puede ser explotado por entidades intermedias. El veneno de caché de DNS es uno de los abusos de DNS que utiliza ampliamente el Gran Cortafuegos de China (GFW) para censurar Internet chino. GFW verifica cada consulta de DNS que se envía a un servidor DNS fuera de China. Dado que el protocolo DNS de texto sin formato se basa en UDP, que es un protocolo sin conexión, GFW puede falsificar tanto la IP del cliente como la IP del servidor. Cuando GFW encuentra un nombre de dominio en su lista de bloqueo, cambia la respuesta de DNS. Por ejemplo, si un internauta chino desea visitar google.com, el Gran cortafuegos de China devuelve al sistema de resolución de DNS una dirección IP ubicada en China en lugar de la dirección IP real de Google. Luego, el sistema de resolución de DNS devuelve la dirección IP falsa a la computadora del usuario.

¿Qué es DNS sobre TLS? ¿Cómo protege su privacidad?

DNS sobre TLS significa que las consultas de DNS se envían a través de una conexión segura cifrada con TLS, la misma tecnología que cifra el tráfico HTTP, por lo que ningún tercero puede ver sus consultas de DNS. Junto con HTTPS y SNI (Indicación de nombre de servidor) cifrado, su historial de navegación está completamente protegido contra el espionaje de ISP.

Stubby es un solucionador de stubs de DNS de código abierto desarrollado por el equipo de getdns. Utiliza la biblioteca getdns. Un resolutor de código auxiliar es un pequeño cliente DNS en la computadora del usuario final que recibe solicitudes de DNS de aplicaciones como Firefox y las reenvía a un resolutor recursivo como 1.1.1.1 o 8.8.8.8. Stubby es especial porque admite DNS sobre TLS. De forma predeterminada, solo enviará solicitudes de DNS encriptadas. Hay otro solucionador de stubs de código abierto llamado cloudflared que admite DNS sobre HTTPS pero stubby ya está en el repositorio de Ubuntu 20.04/18.04 y es muy fácil de usar.

Cómo instalar y usar Stubby en el escritorio Ubuntu 20.04/18.04

Stubby está en el repositorio de Ubuntu 20.04/18.04. Abra una ventana de terminal y ejecute el siguiente comando para instalarlo.

sudo apt install stubby

Esto instalará stubby y getdns biblioteca. Una vez instalado, stubby se ejecuta en segundo plano. Compruebas su estado con:

systemctl status stubby

Stubby escucha en el puerto TCP y UDP 53 de localhost (127.0.0.1), como se puede ver al ejecutar este comando:

sudo netstat -lnptu | grep stubby

El solucionador de stub predeterminado proporcionado por systemd-resolved escucha en el puerto TCP y UDP 53 de 127.0.0.53.

sudo netstat -lnptu | grep systemd-resolv

Nota:Si dnsmasq está escuchando en el puerto TCP 53 de 127.0.0.1, entonces Stubby escuchará solo en el puerto UDP 53 de 127.0.0.1.

El archivo de configuración principal es /etc/stubby/stubby.yml . Normalmente, no es necesario realizar cambios a menos que desee utilizar otro solucionador recursivo o el suyo propio. Permítanme explicar algunas configuraciones predeterminadas. Puede abrir el archivo con:

sudo nano /etc/stubby/stubby.yml

La siguiente línea hace que stubby se ejecute como un resolutor stub en lugar de un resolutor recursivo completo, razón por la cual se llama stubby.

resolution_type: GETDNS_RESOLUTION_STUB

La siguiente configuración hace que las consultas de DNS de envío rechoncho estén cifradas con TLS. No enviará consultas en texto sin formato.

dns_transport_list:
- GETDNS_TRANSPORT_TLS

La siguiente línea requiere un certificado TLS válido en la resolución recursiva remota.

tls_authentication: GETDNS_AUTHENTICATION_REQUIRED

Las siguientes líneas establecen las direcciones de escucha para el demonio rechoncho. De manera predeterminada, tanto IPv4 como IPv6 están habilitados.

listen_addresses:
- 127.0.0.1
- 0::1

La siguiente línea crea resolutores recursivos de consultas rechonchas de forma rotatoria. Si se establece en 0 , Stubby usará cada servidor ascendente de forma secuencial hasta que deje de estar disponible y luego pasará a usar el siguiente.

round_robin_upstreams: 1

De manera predeterminada, hay 3 solucionadores recursivos habilitados en el archivo de configuración rechoncho. Están a cargo de desarrolladores rechonchos y admiten DNS sobre TLS. Puede ver la lista completa de servidores recomendados en el sitio web de privacidad de DNS.

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

Hay otros servidores DNS en los Additional Servers sección que están deshabilitadas por defecto.

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
......

También hay servidores DNS que escuchan en el puerto 443. Si el puerto 853 está bloqueado en su red, puede descomentarlos para usar estos servidores.

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

Ahora puede salir del editor de texto nano presionando Ctrl+X .

Cambiando a Rechoncho

Editando el /etc/resolve.conf Ya no se recomienda el archivo para cambiar el servidor de nombres. Siga las instrucciones a continuación para hacer que systemd-resolved enviar consultas de DNS a stubby.

Escritorio GNOME

Haga clic en el icono de Network Manager en la esquina superior derecha de su escritorio. A continuación, seleccione la configuración con cable. (Si está utilizando Wi-Fi, seleccione la configuración de Wi-Fi).

Haz clic en el botón de engranaje.

Seleccione IPv4 pestaña, luego en la configuración de DNS, cambie Automatic a APAGADO, lo que evitará que su sistema Ubuntu obtenga la dirección del servidor DNS de su enrutador. Introduce 127.0.0.1 en el campo DNS. Haz clic en Apply botón para guardar los cambios.

Luego reinicie NetworkManager para que los cambios surtan efecto.

sudo systemctl restart NetworkManager

Una vez que se haya vuelto a conectar, puede ver que su sistema Ubuntu ahora usa 127.0.0.1 como servidor DNS en Details pestaña.

Escritorio de la Unidad

Lectura recomendada:cómo instalar el entorno de escritorio de Unity en Ubuntu 20.04/18.04.

Haga clic en el ícono de Network Manager en la esquina superior derecha de su escritorio, luego haga clic en edit connections .

Selecciona el nombre de tu conexión y haz clic en el ícono de ajustes.

Seleccione la pestaña de configuración de IPv4, cambie el método de Automatic(DHCP) a Automatic(DHCP) addresses only , lo que evitará que su sistema Ubuntu obtenga la dirección del servidor DNS de su enrutador. Luego especifique un servidor DNS (127.0.0.1). Stubby escucha en 127.0.0.1.

Guarde sus cambios. Luego reinicie NetworkManager para que los cambios surtan efecto.

sudo systemctl restart NetworkManager

Una vez que se haya vuelto a conectar, vuelva a hacer clic en el icono del Administrador de red y seleccione connection information . Puede ver que su sistema Ubuntu ahora usa 127.0.0.1 como servidor DNS.

Cambiar el servidor DNS desde la línea de comandos

Puede usar el método a continuación para cambiar el servidor DNS siempre que su entorno de escritorio use NetworkManager.

Abra una ventana de terminal y vaya al directorio del perfil de conexiones de Network Manager.

cd /etc/NetworkManager/system-connections/

Luego enumere los nombres de conexión disponibles en su sistema.

ls

Como puede ver, tengo varias conexiones en mi sistema, una de las cuales es una conexión por cable. Algunas son conexiones inalámbricas y una es una conexión VPN. Debido a que mi computadora de escritorio está conectada a mi enrutador a través de un cable Ethernet, necesito editar el perfil de conexión por cable con el nano editor de texto de línea de comando.

sudo nano 'Wired connection 1'

Si su computadora está conectada a través de Wi-Fi, entonces necesita editar el perfil de conexión inalámbrica. En este archivo, busque el [ipv4] configuraciones De forma predeterminada, debería verse así:

[ipv4]
dns-search=
method=auto

Para hacer que su sistema use Stubby, cambie las configuraciones a lo siguiente.

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

Para guardar el archivo en el editor de texto Nano, presione Ctrl+O , luego presione Entrar para confirmar. Presiona Ctrl+X salir. Luego reinicie Network Manager para que los cambios surtan efecto.

sudo systemctl restart NetworkManager

Ahora puede verificar su servidor DNS actual ejecutando el siguiente comando:

systemd-resolve --status

Salida de muestra:

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

Si 127.0.0.1 aparece como el servidor DNS, entonces su sistema está usando Stubby.

Ignorar la configuración de DNS proporcionada por el servidor DHCP

Si usa edición de servidor Ubuntu , puede configurar systemd para ignorar la configuración de DNS proporcionada por el servidor DHCP, para que su sistema no use accidentalmente el servidor DNS incorrecto.

Primero, verifique el estado de su interfaz de red.

networkctl status enp5s0

Le mostrará el archivo de red para esta interfaz. Edite este archivo de red.

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

Encuentra el [DHCP] sección y agregue la siguiente línea.

UseDNS=false

Así:

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

Guarde y cierre el archivo. Luego reinicie systemd-netweorkd.service para que el cambio surta efecto.

sudo systemctl restart systemd-networkd

Ejecute el siguiente comando para verificar los servidores DNS para cada interfaz de red. Si todo es correcto, no verá el servidor DNS proporcionado por su servidor DHCP.

resolvectl status

Los cambios en el archivo de red pueden anularse con una nueva actualización del paquete. Si su servidor usa netplan para administrar la conexión de red, también puede configurar netplan para ignorar la configuración de DHCP DNS.

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

Agregue las siguientes dos líneas al archivo.

       dhcp4-overrides:
           use-dns: no

Así:

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

Guarde y cierre el archivo. Luego aplique los cambios.

sudo netplan apply

Cómo verificar si su tráfico DNS está encriptado

Podemos usar WireShark para monitorear el tráfico de DNS. Instale WireShark desde el repositorio de Ubuntu 20.04/18.04.

sudo apt install wireshark

Si se le pregunta "¿Deberían los no superusuarios poder capturar paquetes?", responda Sí. Una vez que esté instalado, ejecute el siguiente comando para agregar su cuenta de usuario al grupo de wireshark para que pueda capturar paquetes.

sudo adduser your-username wireshark

Cierre sesión y vuelva a iniciarla para que los cambios surtan efecto. Luego abra WireShark desde el menú de su aplicación, seleccione su interfaz de red en WireShark. Por ejemplo, el nombre de mi interfaz Ethernet es enp5s0. Luego ingrese port 853 como filtro de captura. Esto hará que WireShark solo capture tráfico en el puerto 853, que es el puerto que utiliza DNS sobre TLS.

Haga clic en el botón en la esquina superior izquierda para comenzar a capturar. Después de eso, en la ventana de terminal, ejecute el siguiente comando para consultar el nombre de dominio usando dig utilidad. Por ejemplo, puedo consultar el registro A de mi nombre de dominio.

dig A linuxbabe.com

Ahora puede ver el tráfico de DNS capturado en WireShark. Como puede ver, mi consulta de DNS se envió a 185.49.141.37 , 145.100.185.15 y 145.100.185.16 , que son los 3 solucionadores de DNS predeterminados definidos en el archivo de configuración stubby. Las conexiones se realizaron a través de TCP y se cifraron con TLS, que es lo que quiero.

Si las consultas de DNS se envían sin encriptación, la computadora contactará al servidor DNS en el puerto 53. Puede capturar paquetes nuevamente con port 53 como filtro de captura, pero no verá ningún paquete en WireShark, lo que significa que stubby está cifrando sus consultas de DNS.

Cómo agregar CloudFlare DNS a Stubby

Descubrí que hay una latencia alta (más de 200 ms) entre mi computadora y los 3 servidores DNS predeterminados, mientras que los servidores DNS de CloudFlare (1.1.1.1, 1.0.0.1) me dan una latencia muy baja (menos de 20 ms). CloudFlare también es compatible con DNS sobre TLS. Para agregar el servidor DNS de CloudFlare, edite el archivo de configuración stubby.

sudo nano /etc/stubby/stubby.yml

Desplácese hacia abajo hasta upstream_recursive_servers: y agregue el siguiente texto sobre otros servidores 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"

Luego busque la siguiente línea:

round_robin_upstreams: 1

Cambiar 1 a 0 . Esto hará que stubby siempre use el servidor DNS de CloudFlare. Si CloudFlare no está disponible, stubby usará otros servidores DNS. Guarde el archivo y reinicie stubby para que los cambios surtan efecto.

sudo systemctl restart stubby

Soporte de DNS sobre HTTPS

Stubby admitirá DNS sobre HTTPS en la versión 0.3. Ubuntu 20.10 se envía con la versión 0.2.6. Para verificar la versión de Stubby, ejecute

stubby -V

Ubuntu
  1. Cómo instalar Kodi Media Center 19.0 en Ubuntu 20.04/18.04

  2. ¡Lanzamiento de Wine 6.15! Cómo instalarlo en Ubuntu 20.04/21.04/18.04

  3. 12 herramientas simples para proteger su privacidad

  4. Restablecimiento de la contraseña raíz de MySQL/MariaDB en Ubuntu 16.04/18.04

  5. Cómo instalar Flatpak en Ubuntu 20.04/18.04

Cómo instalar el editor de fotos Lightzone en Ubuntu 20.04/18.04

Cómo instalar el escritorio GNOME en el servidor Linux Ubuntu 20.04/18.04

Cómo instalar el entorno Cinnamon Desktop en Ubuntu 20.04/18.04 LTS

Cómo instalar ifconfig en Ubuntu 20.04/18.04 o versiones anteriores

Cómo instalar Plex Media Server en Ubuntu 20.04/18.04

Cómo instalar Jenkins en Ubuntu 20.04/18.04