Tienda Wifi

Tienda Wifi
CiudadWireless es la tienda Wifi recomendada por elhacker.NET

Entradas Mensuales

Síguenos en:

Canal Oficial Telegram de elhacker.NET Grupo Facebook elhacker.NET Twitter elhacker.NET Canal Youtube elhacker.NET Comunidad Steam: Grupo elhacker.NET Mastodon

Entradas populares

PostHeaderIcon unbound: servidor dns caché rápido y seguro con listas negras


unbound permite cachear host lookups para los programas en ejecución y guardar los resultados para la siguiente consulta (query), con esto podemos reducir considerablemente el número de consultas DNS (host lookups).



 

Unbound es un software de servidor DNS gratuito y de código abierto que puede utilizarse para resolver DNS de validación, recursivos y de caché. Es un servidor DNS rico en funciones que admite DNS sobre TLS (DoT), DNS sobre HTTPS (DoH), minimización de nombres de consulta, uso agresivo de caché validada por DNSSEC y compatibilidad con zonas de autoridad. Unbound se centra en la privacidad y seguridad del DNS, pero sin sacrificar la velocidad y el rendimiento.

Un servidor DNS recursivo, es el intermediario entre los clientes y los servidores DNS que contienen la información veraz que relaciona los nombres de dominio con una o varias direcciones IP.

Primero el DNS recursivo consulta en su caché si dispone de la información solicitada, en caso negativo pregunta a un servidor DNS raíz, seguida de una solicitud a un servidor DNS de primer nivel y finalmente a un servidor DNS autoritativo.

Con lo anterior, deducimos que nuestro servidor DNS recursivo se volverá más rápido con el tiempo, al disponer de más información guardada en cache.

unbound

Podemos utilizar unbound, un servidor DNS recursivo seguro de código abierto desarrollado principalmente por NLnet Labs, VeriSign Inc, Nominet y Kirei. Es utilizado, por ejemplo, en Pi-Hole.

La configuración principal se encuentra en /etc/unbound/unbound.conf

Vamos a configurar paso a paso el servidor DNS:


Control de acceso al servidor DNS: se definen tantas reglas como necesitemos para permitir allow o denegar deny el acceso al servidor DNS. En este caso, damos acceso a la red local 192.168.1.0/24 y a la interfaz loopback.


access-control: 127.0.0.0/8 allow

access-control: 192.168.1.0/24 allow


    Definimos el puerto, interfaz y protocolo del servidor DNS. Podemos definir tantas interfaces como queramos, incluso cada una puede escuchar en un puerto distinto. En este caso, el servidor DNS escuchará en la red local y en la red interna, por el puerto 53, para los protocolos tcp y udp pero solo por ipv4.


interface: 127.0.0.1

interface: 192.168.1.1

port: 53

do-ip4: yes

do-udp: yes

do-tcp: yes


El resto de configuraciones son varias mejoras que se especifican en la documentación oficial:


harden-dnssec-stripped: yes     # habilita la verificación DNSSEC

prefetch: yes                   # el servidor actualiza la cache de elementos que van a expirar antes de que suceda,

                                # solo aplica a los dominios más utilizados


num-threads: 1                  # número de hilos a utilizar

so-rcvbuf: 1m                   # más espacio en el buffer para evitar errores bajo alta carga


El resultado será un servidor DNS recursivo funcional, a continuación el fichero de configuración completo:


include: "/etc/unbound/unbound.conf.d/*.conf"


server:

    logfile: "/var/log/unbound/unbound.log"

    verbosity: 1


    access-control: 127.0.0.0/8 allow

    access-control: 192.168.1.0/24 allow


    interface: 127.0.0.1

    interface: 192.168.1.1

    port: 53

    do-ip4: yes

    do-udp: yes

    do-tcp: yes


    harden-dnssec-stripped: yes

    prefetch: yes

    num-threads: 1

    so-rcvbuf: 1m

Por último, queremos añadir al menos una entrada que indique a Unbound a dónde reenviar las peticiones para la recursividad. Ten en cuenta que podríamos reenviar dominios específicos a servidores DNS específicos. En este ejemplo, voy a reenviar todo a un par de servidores DNS en Internet:

    ###########################################################################

    # FORWARD ZONE

    ###########################################################################

    forward-zone:

        # Forward all queries (except those in cache and local zone) to

        # upstream recursive servers

        name: "."

        # Queries to this forward zone use TLS

        forward-tls-upstream: yes


        # https://dnsprivacy.org/wiki/display/DP/DNS+Privacy+Test+Servers


        # Cloudflare

        forward-addr: 1.1.1.1@853#cloudflare-dns.com

        forward-addr: 1.0.0.1@853#cloudflare-dns.com

        #forward-addr: 2606:4700:4700::1111@853#cloudflare-dns.com

        #forward-addr: 2606:4700:4700::1001@853#cloudflare-dns.com

Si vas a utilizar este servidor Unbound como servidor DNS autoritativo, también querrás asegurarte de que tienes un archivo root hints, que es el archivo de zona para los servidores DNS raíz.

Consigue el archivo en InterNIC. Lo más fácil es descargarlo directamente donde lo quieras. Mi preferencia suele ser seguir adelante y ponerlo donde están los otros archivos relacionados con unbound en /etc/unbound:

wget https://www.internic.net/domain/named.root -O /etc/unbound/root.hints

Luego añade una entrada a tu archivo unbound.conf para que Unbound sepa dónde va el archivo hints:

# archivo del que leer los hits root
        root-hints: "/etc/unbound/root.hints"


Forwarding Reenvío utilizando DNS sobre TLS en unbound


Para utilizar DNS sobre TLS, necesitará habilitar la opción tls-system-cert, permitir que unbound reenvíe peticiones TLS y también especificar cualquier número de servidores que permitan DNS sobre TLS.


Para cada servidor tendrá que especificar el puerto de conexión utilizando @ y su nombre de dominio con #. El nombre de dominio es necesario para la autenticación TLS y también permite establecer stub-zones y utilizar el comando unbound-control forward control con nombres de dominio. No debe haber espacios en la especificación forward-addr.

...

server:

...

tls-system-cert: yes

...

forward-zone:

        name: "."

        forward-tls-upstream: yes

        forward-addr: 1.1.1.1@853#cloudflare-dns.com


Ejemplos parámetros 


#Adding DNS-Over-TLS support

server:

    use-syslog: yes

    username: "unbound"

    directory: "/etc/unbound"

    tls-cert-bundle: /etc/ssl/certs/ca-certificates.crt

    

    do-ip6: no

    interface: 192.168.5.100

    port: 53

    prefetch: yes

Algunos parámetros explicados:

  • use-syslog: activar el registro en mensajes Syslog.
  • username: ejecutar como usuario unbound, que es el usuario por defecto.
  • directorio: el directorio de trabajo por defecto de Unbound es el directorio ‘/etc/unbound’.
  • tls-cert-bundle: Certificados que se utilizan para autenticar las conexiones que se establecen. En las distribuciones basadas en Debian, el archivo cert se encuentra en ‘/etc/ssl/certs/ca-certificates.crt‘.
  • do-ip6: usa ‘sí’ para ejecutar Unbound con IPv6 o pon‘no‘ para desactivar IPv6.
  • interfaz: interfaz de red o dirección IP en la que se ejecutará Unbound. Puedes utilizar una dirección IP o el nombre de la interfaz, como«eth0«. También puedes ejecutar en un puerto específico añadiendo un formato como este ‘DIRECCIÓN-IP@PUERTO‘.
  • puerto: especifica el puerto en el que se ejecutará Unbound, y este puerto gestionará las conexiones del cliente. El puerto DNS por defecto es el 53.
  • prefetch: establece‘yes‘ para activar la prefetch de las entradas de la caché de mensajes casi caducadas.
  • root-hints: un archivo que contiene detalles del servidor DNS raíz. El archivo ‘/usr/share/dns/root.hints’ lo proporciona el paquete‘dns-root-data‘. Y también puedes descargar el archivo root-hints desde aquí‘https://www.internic.net/domain/named.cache’.
  • harden-dnssec-stripped: ajústalo a«yes» para evitar la recepción de datos «dnssec-stripped».

Activar la caché DNS

A continuación, añade las siguientes líneas para habilitar la consulta de caché DNS en tu instalación de Unbound.

    cache-max-ttl: 14400
    cache-min-ttl: 11000

Parámetros detallados:

  • cache-max-ttl: TTL o Tiempo de Vida para los RRSets y mensajes en la caché DNS. El formato es en segundos.
  • cache-min-ttl: Tiempo de vida mínimo para la caché. El valor por defecto es 0, pero puedes cambiarlo a tu gusto, como por ejemplo«11000» segundos. No lo establezcas en más de 1 hora o tendrás problemas debido a los datos obsoletos.

Privacidad y seguridad


Ahora puedes añadir las siguientes líneas para configurar la privacidad y seguridad básicas de Unbound.

    aggressive-nsec: yes
    hide-identity: yes
    hide-version: yes
    use-caps-for-id: yes

Parámetros detallados:

  • aggressive-nsec: configúralo como «yes» para activar la NSEC agresiva y utilizar la cadena DNSSEC NSEC para sintetizar NXDOMAIN y otras denegaciones. Consulta la página web del IETF sobre ‘NSEC’ https://www.ietf.org/archive/id/draft-ietf-dnsop-nsec-ttl-00.html.
  • hide-identity: configurado como sí para desactivar las respuestas de las consultas bind sobre id.servidor o hostname.bind.
  • hide-version: establece sí para desactivar las consultas versión.servidor y versión.bind.
  • use-caps-for-id: establece sí para activar el uso de «0x100-encoded» en la consulta para frustrar los intentos de suplantación.
Bit 0x20

El uso del bit 0x20 se considera experimental. Utiliza un bit no utilizado en un paquete DNS para pedir a un servidor autorizado que responda con una respuesta que imite el caso utilizado en la consulta.
Por ejemplo, al utilizar esta función, una consulta para www.google.com podría aparecer en la solicitud como www.google.com o Www.GoogLe.coM o WWW.GoOGlE.cOm o cualquier otra combinación de mayúsculas y minúsculas. El servidor autoritativo debe responder con las mismas mayúsculas y minúsculas. Esto ayuda a prevenir ataques de suplantación de DNS.
En algunos casos, un número muy pequeño de servidores antiguos o mal configurados pueden devolver un error (menos del 1% de los servidores responderán incorrectamente). Para activar esta función, simplemente añada use-caps-for-id: yes en la sección 'server' de /etc/unbound/unbound.conf y reinicie el servidor

Ajuste y mejora del rendimiento de Unbound


Añade las siguientes líneas para obtener más rendimiento. Puedes ajustar los siguientes parámetros a tu entorno actual.

    num-threads: 4
    msg-cache-slabs: 8
    rrset-cache-slabs: 8
    infra-cache-slabs: 8
    key-cache-slabs: 8
    rrset-cache-size: 256m
    msg-cache-size: 128m
    so-rcvbuf: 8m

Parámetros detallados:

  • num-threads: el número de hilos que se crearán. El valor debe coincidir con los núcleos de CPU del servidor.
  • msg-cache-slabs: el número de slabs a utilizar para la caché de mensajes. Establécelo en 8 para optimizar Unbound para que utilice más memoria para la caché.
  • rrset-cache-slabs: el número de losas a utilizar para la caché RRset. Establécelo en 8 para optimizar Unbound para que utilice más memoria para la caché RRSet.
  • infra-cache-slabs: el número de losas a utilizar para la caché de Infraestructura. Establécelo en 8 para que Unbound utilice más memoria para la caché de Infraestructura.
  • key-cache-slabs: el número de losas a utilizar para la caché de claves. Establécelo en 8 para que Unbound utilice más memoria para la caché de claves.
  • rrset-cache-size: especifica la cantidad de memoria para la caché RRSet. En este ejemplo se utilizan 256MB, mientras que el valor por defecto es de sólo 4MB.
  • msg-cache-size: especifica la cantidad de memoria para la caché de mensajes. Este ejemplo utiliza 128MB, siendo el valor por defecto de sólo 4MB.
  • so-rcvbuf: establece el tamaño del búfer para el puerto DNS 53/udp en 8 MB. En el sistema Ubuntu, también debes configurar un valor superior para el parámetro del núcleo‘net.core.rmem_max‘.

Configurar Unbound como resolvedor DNS con DNS-sobre-TLS (DoT)


Por último, añade una nueva sección ‘forward-zone ‘ para configurar Unbound como resolvedor DNS para tus redes locales. Este ejemplo utiliza servidores DNS Quad9 con DoT (DNS-over-TLS) activado.

forward-zone:
    name: "."
    forward-ssl-upstream: yes
    ## Also add IBM IPv6 Quad9 over TLS
    forward-addr: 9.9.9.9@853#dns.quad9.net
    forward-addr: 149.112.112.112@853#dns.quad9.net

Detalle de los parámetros:
  • forward-zone: define la zona de reenvío para Unbound.
  • name: establece «.» para reenviar todas las consultas DNS.
  • forward-addr: utiliza un reenviador específico para reenviar todas las consultas DNS. Este ejemplo utiliza Quad9 DNS con DNS sobre TLS (DoT) activado.

Guarda y sal del archivo ‘/etc/unbound/unbound.conf’ cuando hayas terminado. Con el archivo de configuración de Unbound modificado, ya puedes reiniciar el servicio Unbound y aplicar los cambios.

Ahora, como control de sanidad, queremos ejecutar el  siguiente comando  para comprobar la sintaxis de nuestro archivo de configuración.


 unbound-checkconf,


Para poner en marcha unbound lo habilitamos y reiniciamos:


$ sudo systemctl enable unbound.service

$ sudo systemctl restart unbound.service


Configuración del control remoto en Unbound


  • Configuración de unbound-control

Antes de empezar a utilizarlo, es necesario realizar los siguientes pasos:
1) En primer lugar, debe ejecutar el siguiente comando

# unbound-control-setup

que generará un certificado autofirmado y una clave privada para el
 servidor, así como para el cliente. Estos archivos se crearán en el directorio /etc/unbound.

2) Después de esto, edita /etc/unbound/unbound.conf y pon los siguientes contenidos en él. La opción control-enable: yes es necesaria, el resto puede ajustarse como desees.

remote-control:
    # Enable remote control with unbound-control(8) here.
    # set up the keys and certificates with unbound-control-setup.
    control-enable: yes
   
    # what interfaces are listened to for remote control.
    # give 0.0.0.0 and ::0 to listen to all interfaces.
    control-interface: 127.0.0.1
   
    # port number for remote control operations.
    control-port: 8953
   
    # unbound server key file.
    server-key-file: "/etc/unbound/unbound_server.key"
   
    # unbound server certificate file.
    server-cert-file: "/etc/unbound/unbound_server.pem"
   
    # unbound-control key file.
    control-key-file: "/etc/unbound/unbound_control.key"
   
    # unbound-control certificate file.
    control-cert-file: "/etc/unbound/unbound_control.pem"
Uso de unbound-control

Algunos de los comandos que se pueden utilizar con unbound-control son:

    imprimir estadísticas sin restablecerlas

 # unbound-control stats_noreset

    volcar la caché a stdout

 # unbound-control dump_cache

    vaciar la caché y recargar la configuración

 # unbound-control reload

BlackList en unbound


  • Lista negra de dominios

Vamos a configurar unbound para bloquear publicidad, dominios maliciosos y lo que queramos. Los bloqueos se realizarán a nivel de resolución DNS, retornando una IP incorrecta a los clientes que consulten un dominio que se encuentre en una de las blacklist de unbound.

Una blacklist es un listado de dominios para los que no devolveremos su IP real, de forma que el navegador o aplicación no cargue el contenido. Dependiendo de las listas que carguemos, podemos mejorar nuestra experiencia en la red de distintas maneras:

  1. Eliminar anuncios.
  2. Mejorar nuestra privacidad.
  3. Optimizar el uso de datos de red.
  4. Controlar el acceso a ciertos dominios.
Crear una blacklist de forma manual

Unbound por defecto carga todos los ficheros de configuración en el directorio /etc/unbound/unbound.conf.d/, para crear una blacklist simplemente creamos un fichero en el directorio anterior con el siguiente contenido:

$ cat /etc/unbound/unbound.conf.d/my-blacklist.conf
server:
  local-zone: "facebook.com" always_nxdomain

Con la configuración anterior, indicamos que si no existe una entrada local indicando la IP del dominio Facebook.com, se retornará un mensaje NXDOMAIN, que significa que el dominio no existe.

Para poner un dominio en la lista negra, utiliza:

local-zone: "domainname" always_refuse

Guarda la lista negra como un archivo independiente (por ejemplo, /etc/unbound/blacklist.conf) para facilitar su gestión e inclúyalo desde /etc/unbound/unbound.conf. Por ejemplo

/etc/unbound/blacklist.conf

local-zone: "blacklisted.example" always_refuse
zona-local: "anotherblacklisted.example" always_refuse

/etc/unbound/unbound.conf

server:
...
  include: /etc/unbound/blacklist.conf


Configurar una blacklist de la comunidad

Actualmente podemos encontrar multitud de blacklist por internet, por ejemplo Steven Black, que contiene distintas blacklist para anuncios, redes sociales, webs sospechosas de publicar fake news, etc.

La idea es descargar una de estas listas que se actualizan periódicamente y configurarla para funcionar en nuestro servidor DNS. El problema es que no están en el formato que vimos en el punto anterior, por lo que hay que procesarlas y adecuarlas al formato esperado por unbound.


Configurar el log mediante Rsyslog y Logrotate


Ejecuta el siguiente comando para añadir una nueva configuración de Rsyslog‘/etc/rsyslog.d/unbound.conf’ para el servicio Unbound. Con esto, los registros de Unbound se almacenarán en‘/var/log/unbound.log‘.


cat <<EOF | sudo tee /etc/rsyslog.d/unbound.conf

# Log messages generated by unbound application 

if $programname == 'unbound' then /var/log/unbound.log

# stop processing it further

& stop

EOF


A continuación, ejecuta el siguiente comando para añadir la configuración de logrotate ‘/etc/logrotate.d/unbound‘ para el servicio Unbound. Esto creará una rotación de registro para el archivo de registro de Unbound‘/var/log/unbound.log‘ diariamente.


cat <<EOF | sudo tee /etc/logrotate.d/unbound

/var/log/unbound.log {

  daily

  rotate 7

  missingok

  create 0640 root adm

  postrotate

    /usr/lib/rsyslog/rsyslog-rotate

  endscript

}

EOF

Lista de servidores DNS Públicos (recursivos):

Puedes utilizar como forwarders:

Proveedor IP DNS Primario IP DNS Secundario
CloudFlare1.1.1.11.0.0.1
Level3209.244.0.3209.244.0.4
Google8.8.8.88.8.4.4
Securly184.169.143.224184.169.161.155
Comodo Secure DNS8.26.56.268.20.247.20
OpenDNS Home208.67.222.222208.67.220.220
Quad99.9.9.9149.112.112.112
DNS Advantage156.154.70.1156.154.71.1
Norton ConnectSafe198.153.192.40198.153.194.40
ScrubIT67.138.54.120207.225.209.77
SafeDNS195.46.39.39195.46.39.40
DNSResolvers.com205.210.42.20564.68.200.200
OpenNIC74.207.247.464.0.55.201
Public-Root199.5.157.131208.71.35.137
SmartViper208.76.50.50208.76.51.51
Dyn216.146.35.35216.146.36.36
censurfridns.dk89.233.43.7189.104.194.142
Hurricane Electric74.82.42.42-
puntCAT109.69.8.51



http://pcsupport.about.com/od/tipstricks/a/free-public-dns-servers.htm


 y ahora debemos indicar al fichero /etc/resolv.conf que somos nosotros mismos el servidor DNS de nombres:


nameserver 127.0.0.1

 

Vaciar o Limpiar caché de las DNS


  •  En Windows desde la línea de comandos (cmd) con el comando ipconfig podemos borrar la caché:
ipconfig /flushdns


Para ver la caché de las DNS de Windows

ipconfig /displaydns
  • En Linux si usamos el daemon nscd
/etc/rc.d/init.d/nscd restart 

 

  • Con Systemd  resolved
sudo systemd-resolve --flush-caches

Si usamos dnsmasq

/etc/init.d/dnsmasq restart

Limpiar caché bind

rndc flush

 Limpiar la cahé de un dominio

rndc flushname elhacker.net


Refrescar caché bind

rndc dumpdb -cache
vi /var/named/data/cache_dump.db


  • En MacOS según la versión:


Para limpiar la cache DNS en Mac OS X Leopard:

lookupd -flushcache


Para limpiar la cache DNS en Mac OS X:

dscacheutil -flushcache


Ir > Utilidades y a continuación seleccionamos Terminal. Una vez abierto el Terminal, debemos ejecutar el comando que corresponda en función de la versión de macOS que tengamos instalada:

  • macOS El Capitan, Sierra, High Sierra, Mojave y Catalina: sudo killall -HUP mDNSResponder
  • macOS Yosemite: sudo discoveryutil udnsflushcaches
  • macOS Lion, Mountain Lion y Mavericks: sudo killall -HUP mDNSResponder
  • macOS Snow Leopard: sudo dscacheutil -flushcache
  • macOS Leopard: sudo lookupd -flushcache



 Limpiar el caché DNS en el navegador Google Chrome 


Pestaña en blanco en el navegador y escribimos en la barra de direcciones del navegador:

chrome://net-internals/#dns


Hacer click en el botón "Clear host caché” para borrar todo el caché DNS que está almacenado.

Para limpiar las conexiones tenemos que abrir en la barra de direcciones:

chrome://net-internals/#sockets

 Limpiar el caché DNS en el navegador Mozilla Firefox

Los pasos a seguir para borrar la caché DNS en el navegador web de Mozilla cambian respecto al navegador de Google. Esto es lo que debemos hacer en Firefox:

  • Abrimos una nueva ventana de Mozilla Firefox.
  • Escribimos en la barra de direcciones about:config y pulsamos Enter.
  • Buscamos la entrada network.dnsCacheExpiration.
  • Una vez la hemos encontrado hacemos clic sobre ella y establecemos su valor a 0.
  • Esto hará que el propio navegador ignore su propia caché DNS.

 Limpiar el caché DNS en el navegador Microsoft Edge

Con la versión de Microsoft Edge basado en Chromium también es posible vaciar la caché DNS a nivel de navegador siguiendo estos sencillos pasos:

  • Abrimos una ventana de Edge Chromium.
  • Escribimos edge://net-internals/#dns en la barra de direcciones y pulsamos Enter.
  • Ahora de nos mostrará una página donde veremos todas las resoluciones DNS realizadas desde el navegador.
  • Pulsamos en el botón Clear host caché y automáticamente se borrará toda la caché DNS almacenada en Edge.

0 comentarios :

Publicar un comentario

Los comentarios pueden ser revisados en cualquier momento por los moderadores.

Serán publicados aquellos que cumplan las siguientes condiciones:
- Comentario acorde al contenido del post.
- Prohibido mensajes de tipo SPAM.
- Evite incluir links innecesarios en su comentario.
- Contenidos ofensivos, amenazas e insultos no serán permitidos.

Debe saber que los comentarios de los lectores no reflejan necesariamente la opinión del STAFF.