Skip to content

Instantly share code, notes, and snippets.

@nullx5
Last active January 9, 2026 09:54
Show Gist options
  • Select an option

  • Save nullx5/07c9e021fbb26be4da135e2f32855aa2 to your computer and use it in GitHub Desktop.

Select an option

Save nullx5/07c9e021fbb26be4da135e2f32855aa2 to your computer and use it in GitHub Desktop.

SISTEMA DNS domain name system - dns

Documentacion:

image image image

Configurar DNSSEC en mi Servidor DNS autoritativo, firmar mi dominio, en BIND9

sudo apt install bind9 dnsutils

sudo nvim /etc/bind/named.conf.options
dnssec-validation auto;

#Firmar la zona
dnssec-keygen -a ECDSAP256SHA256 -n ZONE midominio.com
dnssec-signzone midominio.com.db


#Publicar el DS en el registrador, (Sin esto DNSSEC NO funciona)
dnssec-dsfromkey -2 Kmidominio.com.+013+12345.key
midominio.com. IN DS 12345 13 2 A1B2C3D4E5F6...
- 12345 → Key ID
- 13 → Algoritmo (ECDSA)
- 2 → Digest SHA-256
- A1B2… → Hash (lo importante)
crea un registro DS con esos datos tal cual

Mas facil, Si el panel del proveedor VPS soporta DNSSEC, úsalo. por ejemplo OVHCloud

Botón DNSSEC → Enable / Activate

Comprobar si un dominio usa DNSSEC:

dig +dnssec cloudflare.com      #  devuelve registro RRSIG
dig +dnssec bancolombia.com     # NO devuelve registro RRSIG
drill -D cloudflare.com         #  devuelve registro RRSIG

delv cloudflare.com             # fully validated, devuelve registro RRSIG
delv bancolombia.com            # unsigned answer, NO devuelve registro RRSIG


dig cloudflare.com DNSKEY +dnssec +multiline # devuelve registro DNSKEY
dig cloudflare.com DS +dnssec +multiline     # devuelve registro DS


drill DNSKEY cloudflare.com                  # devuelve registro DNSKEY                  
drill DS cloudflare.com                      # devuelve registro DS
image

1 https://cloudflare-ech.com/cdn-cgi/trace 2 https://test.defo.ie/ 3 https://defo.ie/ech-check.php 4 https://tls-ech.dev

image

TOOLS

  • host google.com # resuelve dns y dns inverso
  • nslookup google.com # resuelve dns y dns inverso
  • resolvectl query google.com # resuelve dns y dns inverso
  • dig -x 142.251.132.174 # resuelve dns y dns inverso
  • drill -x 142.251.132.174 # resuelve dns y dns inverso
  • dig +short google.com AAAA # consulta registros dns
  • drill mx cloudflare.com # consulta registros dns
  • nslookup -type=AAAA cloudflare.com # consulta registros dns
  • doggo cloudflare.com A AAAA MX NS SOA TXT --time # consulta registros dns
  • https://www.cual-es-mi-ip.net/dns-lookup # consulta registros dns online

Forzar recursion completa desde la zona raiz: . → root → gTLD → autoritativo

  • dig +trace cloudflare.com
  • drill -T cloudflare.com

  • resolvectl status # consultar mi servidor dns

  • resolvectl status wlp2s0 # consultar mi servidor dns por interfaz

  • sudo resolvectl dns wlp2s0 1.1.1.3 1.0.0.3 # cambiar mi servidor dns

  • sudo resolvectl flush-caches # elimina el cache dns local

👀 resolvectl dns es temporal recomendado para pruebas:
- Se pierde al reiniciar
- Se pierde al reconectar Wi-Fi
  • sudo resolvectl dnsovertls wlp2s0 yes # habilitar DNS over TLS (DoT) port 853

  • sudo resolvectl dnssec wlp2s0 yes # habilitar DNSSec

  • drill -s dnskey cloudflare.com # DNSKEY y DS

  • drill -D cloudflare.com # RRSIG

  • drill -TD cloudflare.com # Realiza rastreo DNSSEC desde los servidores root hasta un nombre de dominio

configuracion permanente cambiar servidor DNS a cloudflare y habilitar DNS over TLS (DoT):

  • sudo nvim /etc/systemd/resolved.conf
[Resolve]
DNS=1.1.1.3#family.cloudflare-dns.com 1.0.0.3#family.cloudflare-dns.com
DNSOverTLS=yes
DNSSEC=yes
  • sudo systemctl restart systemd-resolved # reiniciar para aplicar los cambios

👉 En Ubuntu 22.04+ systemd-resolved actúa como stub resolver.

Navegador
  ↓
127.0.0.53 (systemd-resolved)
  ↓
TLS cifrado (TCP/853)
  ↓
1.1.1.3

image image

👀 OJO habilitar puerto 853 saliente en el firewall, se puede deshabilitar el puerto 53:

To                         Action      From
--                         ------      ----
853                        ALLOW OUT   Anywhere
443                        ALLOW OUT   Anywhere

👀 OJO asegurarse que ls -l /etc/resolv.conf Debe apuntar a /run/systemd/resolve/stub-resolv.conf

cambiar servidor dns permanente usando sudo nmtui y luego reiniciar NetworkManager:

- restart NetworkManager

cloudflare Malware and Adult Content 1.1.1.3 1.0.0.3

https://blog.cloudflare.com/introducing-1-1-1-1-for-families/

software dns server

  • bind9
  • dnsmasq (dns y DHCP)
  • powerdns
  • unbound

en ubuntu 22.04 desktop quien maneja la resolucion dns systemd:

status systemd-resolved.service

Script para listar todos los 13 ROOT-SERVERS

#!/bin/bash
for r in $(dig . NS +short | sort); do
  printf "%-22s IPv4: %-15s IPv6: %s\n" \
    "$r" \
    "$(dig +short A $r | tr '\n' ' ')" \
    "$(dig +short AAAA $r | tr '\n' ' ')"
done

./root-servers-DNS.sh

a.root-servers.net.    IPv4: 198.41.0.4      IPv6: 2001:503:ba3e::2:30 
b.root-servers.net.    IPv4: 170.247.170.2   IPv6: 2801:1b8:10::b 
c.root-servers.net.    IPv4: 192.33.4.12     IPv6: 2001:500:2::c 
d.root-servers.net.    IPv4: 199.7.91.13     IPv6: 2001:500:2d::d 
e.root-servers.net.    IPv4: 192.203.230.10  IPv6: 2001:500:a8::e 
f.root-servers.net.    IPv4: 192.5.5.241     IPv6: 2001:500:2f::f 
g.root-servers.net.    IPv4: 192.112.36.4    IPv6: 2001:500:12::d0d 
h.root-servers.net.    IPv4: 198.97.190.53   IPv6: 2001:500:1::53 
i.root-servers.net.    IPv4: 192.36.148.17   IPv6: 2001:7fe::53 
j.root-servers.net.    IPv4: 192.58.128.30   IPv6: 2001:503:c27::2:30 
k.root-servers.net.    IPv4: 193.0.14.129    IPv6: 2001:7fd::1 
l.root-servers.net.    IPv4: 199.7.83.42     IPv6: 2001:500:9f::42 
m.root-servers.net.    IPv4: 202.12.27.33    IPv6: 2001:dc3::35 

https://root-servers.org/

@nullx5
Copy link
Author

nullx5 commented Jan 4, 2026

  • DNSSEC evita suplantacion dns, autenticacion del dominio, se configura en el servidor autoritativo, registros DNSKEY, RRSIG Y DS.(cloudflare por defcto lo trae), para que funcione bien y tú estés protegido, tanto el cliente y servidor deben usar DNSSEC. en el cliente con resolvectl(DNSSEC=yes) o dnscrypt-proxy(require_dnssec = true)

✅ DNSSEC completo Servidor + cliente (ideal)

 - Dominio firmado con DNSSEC
 -  Cliente valida con DNSSEC
 - Transporte cifrado(DNSCrypt, DoT, DoH)
 - 👉 Máxima seguridad
  • DNSOverTlS #cifra dns consultas desde el cliente hasta cloudflare, resolvectl cliente local, usa Cetificados CA
  • DNSOverHTTPS #cifra dns consultas desde el cliente hasta cloudflare, firefox o a nivel de sistema, con dnscrypt-proxy, usa Cetificados CA
  • dnscrypt-proxy → software que implementa: DNSCrypt, DNS over HTTPS, DNS over TLS:
  • DNSCrypt V2 # Es un protocolo que autentica las comunicaciones entre un cliente DNS y un resolvedor DNS. no usa certificados, DNS cifrado + identidad del resolver verificada.
sudo apt update
sudo apt install dnscrypt-proxy

sudo nano /etc/dnscrypt-proxy/dnscrypt-proxy.toml
## Escucha local
listen_addresses = ['127.0.0.1:53']

## Usar DNSCrypt v2
server_names = ['cloudflare', 'quad9-dnscrypt']

## Forzar seguridad
require_dnssec = true
require_nolog = true
require_nofilter = true

sudo systemctl enable --now dnscrypt-proxy
systemctl status dnscrypt-proxy

sudo resolvectl dns lo 127.0.0.1
sudo resolvectl domain lo "~."

resolvectl status

sudo ss -tunp | grep dnscrypt

sudo dnscrypt-proxy -resolve google.com

DNS Suplantacion escenarios:

  • DNS autoritativo del banco comprometido - Bancolombia sin DNSSEC
  • Ataque en tu máquina, Malware modifica /etc/hosts, Proxy malicioso,CA raíz instalada
  • El atacante necesitaría: Certificado TLS válido para bancolombia.com, Emitido por una CA confiable

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment