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 3, 2026

👀 DNSOverTLS SNI del TLS handshake Client Hello. ECH Encrypted Client Hello | ISP no pueder ver las consultas de los dominios, todo va encriptado desde tu maquina hasta cloudflare, solo puede ver el "outer SNI". de cloudflare, el "inner SNI" va protegido.

image image

El DNSOver HTTPS de firefox, deja pasar en texto claro, el SNI del TLS handshake Client Hello, cualquiera en el medio puede ver los dominios consultados 👀

image image

@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