GNU/Linux >> Tutoriales Linux >  >> Cent OS

Configure la Zona de política de respuesta (RPZ) en BIND Resolver en CentOS/RHEL

Este tutorial le mostrará cómo anular registros DNS públicos en su sistema de resolución de DNS BIND con zona de política de respuesta (RPZ) en CentOS/RHEL.

¿Qué es la Zona de política de respuesta?

Zona de política de respuesta (RPZ) permite que un solucionador de DNS modifique los registros de DNS. Originalmente fue desarrollado como una forma de bloquear el acceso a sitios web peligrosos. Por ejemplo, si una computadora consulta la dirección IP de un sitio peligroso conocido que propaga malware, la resolución de DNS puede devolver 127.0.0.1 como la respuesta DNS, por lo que la computadora no puede conectarse al sitio peligroso. Este es el caso de uso original. Como tal, la zona de política de respuesta también se conoce como cortafuegos de DNS. .

Puede utilizar RPZ de otras formas. Por ejemplo,

  • Si tiene servicios autohospedados como Nextcloud en la red local, puede usar RPZ para apuntar su dominio Nextcloud (nextcloud.your-domain.com) a la dirección IP local, para que no tenga que salir a Internet y luego regrese a su red local para acceder al servidor Nextcloud.
  • Los padres pueden usar RPZ para impedir que sus hijos accedan a sitios pornográficos.
  • Puede bloquear los anuncios no deseados.
  • Instalo muchas aplicaciones web en mi VPS. Cuando la aplicación web no está diseñada para el acceso público, agrego un registro DNS solo en BIND RPZ y no publico un registro DNS en mi registrador de dominio para evitar la piratería.

Sí, puede crear una entrada de DNS en /etc/hosts archivo en la computadora local para anular los registros DNS públicos, pero no escala bien. Además, iOS y Android no le permiten crear entradas DNS locales. ¿No sería bueno si el sistema de resolución de BIND DNS anula el registro de DNS público, de modo que todos los dispositivos de la red que utilicen el sistema de resolución de BIND puedan utilizar el registro de DNS personalizado?

Requisitos

Para seguir este tutorial, se supone que tiene un sistema de resolución de DNS BIND ejecutándose en su servidor CentOS/RHEL. De lo contrario, lea el siguiente tutorial para configurar la resolución BIND.

  • Configure su propio solucionador de DNS BIND9 en CentOS 8/RHEL 8

Una vez que su BIND Resolver esté funcionando, siga las instrucciones a continuación.

Cómo configurar la zona de política de respuesta BIND en el servidor CentOS/RHEL

Primero, edite el named.conf archivo con un editor de texto de línea de comandos como Nano.

sudo nano /etc/named.conf

Agregue las siguientes líneas en las opciones options {...} cláusula para habilitar la zona de política de respuesta. (La primera línea es un comentario).

//enable response policy zone. 
response-policy { 
    zone "rpz.local"; 
};

Luego, desplácese hacia abajo hasta la parte inferior de este archivo y agregue la zona RPZ en este archivo.

zone "rpz.local" {
    type master;
    file "rpz.local";
    allow-query { localhost; };
    allow-transfer { 12.34.56.78; };
};

Notas:

  • Puede usar una ruta absoluta en lugar de un nombre de archivo simple en el file directiva. BIND asumiría que el archivo está en /var/named/ .
  • Las zonas RPZ deben permitir consultas solo desde localhost. No necesita agregar clientes de red local.
  • Reemplazar 12.34.56.78 con la dirección IP del resolutor de DNS BIND esclavo, que puede realizar transferencias de zona. Si solo hay una resolución de DNS, puede usar localhost así:allow-transfer { localhost; };

Se recomienda usar un archivo de registro separado para RPZ para analizar mejor el registro, así que agregue las siguientes líneas en logging {...}; cláusula.

    channel rpzlog {
  	file "/var/log/named/rpz.log" versions unlimited size 100m;
    	print-time yes;
    	print-category yes;
    	print-severity yes;
    	severity info;
    };
    category rpz { rpzlog; };

Guarde y cierre el archivo. Luego crea el /var/log/named/ directorio y hacer named como propietario.

sudo mkdir /var/log/named/
sudo chown named:named /var/log/named/ -R

Luego necesitamos crear el archivo de zona. En lugar de crear un archivo de zona desde cero, podemos usar un archivo de plantilla de zona. Copie el contenido de named.empty a un archivo nuevo.

sudo cp /var/named/named.empty /var/named/rpz.local

Edite el archivo de zona.

sudo nano /var/named/rpz.local

No hay necesidad de cambiar el contenido existente. Simplemente agregamos nuestros registros DNS personalizados. Por ejemplo, si tiene un servidor Nextcloud en la red local con una dirección IP 192.168.0.103, agregue el siguiente registro DNS, para que los clientes de Nextcloud no tengan que salir a Internet para conectarse al servidor Nextcloud. .

nextcloud.your-domain.com      A   192.168.0.103

Si no desea que sus hijos visiten sitios de pornografía como pornhub.com, agregue la siguiente línea en este archivo para bloquear todo el dominio de pornhub.com.

*.pornhub.com          CNAME  .

Si no desea ver anuncios de Google Adsense en las páginas web, puede agregar la siguiente línea para bloquear doubleclick.net dominio, que se utiliza para publicar anuncios de Adsense.

*.doubleclick.net      CNAME   .

Para anular el registro MX de un nombre de dominio, agregue una línea como la siguiente.

example.com         MX     0    mail.example.com.

Nota que todos los nombres de la mano izquierda NO deben terminar con un punto y todos los nombres de la mano derecha deben terminar con un punto.


Guarde y cierre el archivo. A continuación, debemos establecer named como propietario del grupo de /var/named/rpz.local file, o named no podrá cargar esta zona.

sudo chown root:named /var/named/rpz.local

A continuación, ejecute el siguiente comando para verificar si hay errores de sintaxis en el archivo de configuración principal. Una salida silenciosa indica que no se encontraron errores.

sudo named-checkconf

Luego verifique la sintaxis de los archivos de zona RPZ.

sudo named-checkzone rpz /var/named/rpz.local

Si no se encuentran errores, reinicie BIND.

sudo systemctl restart named

Ahora puedes ejecutar dig Comando en el servidor BIND para ver si RPZ está funcionando. Por ejemplo, consulte un registro DNS de un nombre de dominio que se incluye en la zona de política de respuesta.

dig A nextcloud.your-domain.com @127.0.0.1

Debería ver algo como a continuación en la salida del comando, lo que indica que la respuesta de DNS se envió desde RPZ local.

;; AUTHORITY SECTION:
rpz.local			86400	IN	NS	localhost.

También puede consultar el registro de consultas de BIND9.

sudo tail /var/log/named/rpz.log

Vería algo como a continuación, lo que significa que la respuesta se envió desde RPZ local.

(example.com): rpz QNAME Local-Data rewrite example.com via example.com.rpz.local

¿El cliente de Fedora no usa RPZ?

De forma predeterminada, Fedora no utiliza RPZ. Puedes usar el dig utilidad de línea de comandos para encontrar la dirección IP de un nombre de host en la zona RPZ, pero si hace ping al nombre de host, no puede encontrar la dirección IP.

Para resolver este problema, debe cambiar el parámetro hosts en /etc/nsswitch.conf archivo en el cliente de Fedora.

sudo nano /etc/nsswitch.conf

De forma predeterminada, el parámetro hosts se define como:

hosts:   files myhostname mdns4_minimal [NOTFOUND=return] resolve [!UNAVAIL=return] dns

Cámbialo por:

hosts:   files mdns4_minimal [NOTFOUND=return] dns myhostname mymachines

Guarde y cierre el archivo. RPZ debería estar funcionando ahora.

Uso de RPZ con reenviadores

Si agrega un fowarders directiva como a continuación en las options cláusula en /etc/named.conf entonces su resolución BIND se convierte en un reenviador, que reenviará las solicitudes de DNS a una resolución de DNS ascendente como 8.8.8.8 .

options {
//      listen-on port 53 { 127.0.0.1; };
//      listen-on-v6 port 53 { ::1; };
        directory       "/var/named";
        max-cache-size 100m;
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        secroots-file   "/var/named/data/named.secroots";
        recursing-file  "/var/named/data/named.recursing";
        allow-query     { localhost; 10.10.60.0/24;};

        //enable response policy zone. 
        response-policy { 
           zone "rpz.local"; 
        };

        forwarders {
                8.8.8.8;
                8.8.4.4;
        };
        ...
};

La zona de política de respuesta funciona con esta configuración de reenviador. Bind consultará primero la zona de política de respuesta local. Si no se encuentra el registro DNS en la RPZ, la solicitud se reenviará a un solucionador de DNS ascendente. Es posible que desee utilizar un reenviador para acelerar la resolución de DNS cuando su propio sistema de resolución de BIND tarda demasiado en resolver los nombres de DNS.

Configurar transferencia de zona

Si tiene otro solucionador de DNS BIND, puede configurarlo como un solucionador esclavo para recibir automáticamente actualizaciones del solucionador de DNS maestro.

Primero, debe editar el /etc/named.conf archivo en el resolvedor de DNS maestro .

sudo nano /etc/named.conf

Agregue la dirección IP del solucionador de DNS esclavo a allow-transfer directiva.

zone "rpz.local" {
    type master;
    file "/etc/bind/db.rpz.local";
    allow-query { localhost; };
    allow-transfer { 12.34.56.78; };
    also-notify { 12.34.56.78; };
};

Si tiene varios solucionadores de DNS esclavos, agregue varias direcciones IP como se muestra a continuación.

 allow-transfer { 12.34.56.78; 12.34.56.79; };

El also-notify La directiva hará que el solucionador de DNS maestro envíe un mensaje de notificación al solucionador de esclavos cuando se cambie la zona RPZ. Guarde y cierre el archivo. Reinicie BIND para que los cambios surtan efecto.

sudo systemctl restart named

Si hay un firewall ejecutándose en el solucionador de DNS maestro, debe permitir que el solucionador de DNS esclavo se conecte al puerto 53.

sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="12.34.56.78" accept'
sudo systemctl reload firewalld

A continuación, edite el /etc/named.conf archivo en el resolutor de DNS esclavo .

sudo nano /etc/named.conf

Agregue las siguientes líneas en las opciones options {...} cláusula para habilitar la zona de política de respuesta. (La primera línea es un comentario).

//enable response policy zone. 
response-policy { 
    zone "rpz.local"; 
};

Luego agregue una zona RPZ esclava al final de este archivo. Reemplazar 11.22.33.44 con la dirección IP del maestro de resolución de DNS.

zone "rpz.local" {
    type slave;
    file "rpz.local";
    masters { 11.22.33.44;};
    allow-notify { 11.22.33.44; };
    allow-transfer { none; };
    allow-query { localhost; };
};

Guarde y cierre el archivo.

También debe configurar el cortafuegos del resolutor esclavo para permitir que el resolutor DNS maestro envíe notify mensajes.

sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="11.22.33.44" accept'
sudo systemctl reload firewalld

A continuación, ejecute el siguiente comando para verificar si hay errores de sintaxis en el archivo de configuración principal. Una salida silenciosa indica que no se encontraron errores.

sudo named-checkconf

Si no se encuentran errores, reinicie BIND.

sudo systemctl restart named

Después de que BIND se reinicie, la transferencia de zona comenzará de inmediato. Verifique el registro de BIND9 con el siguiente comando.

sudo journalctl -eu named

Puede ver mensajes como los siguientes, que indican que la transferencia de zona se realizó correctamente.

transfer of 'rpz.local/IN' from xx.xx.xx.xx#53: Transfer status: success
transfer of 'rpz.local/IN' from xx.xx.xx.xx#53: Transfer completed: 1 messages, 34 records, 899 bytes, 0.248 secs (3625 bytes/sec)

El archivo de zona se guardará como /var/named/rpz.local en el resolutor esclavo.

Nota: Siempre que modifique la zona RPZ en el resolver maestro, debe actualizar el número de serie. Hazlo más grande, para que los resolutores esclavos sepan que la zona RPZ ha cambiado.

Creación de múltiples zonas RPZ

A veces, es posible que no desee que ciertos registros DNS se transfieran a los resolutores esclavos. Puede crear una zona RPZ separada. Edite el /etc/named.conf archivo.

sudo nano /etcnamed.conf

Agregue una nueva zona RPZ.

//enable response policy zone. 
response-policy { 
    zone "rpz.local";
    zone "rpz.local.notransfer"; 
};

Agregue una definición para la nueva zona al final de este archivo.

zone "rpz.local.notransfer" {
    type master;
    file "/var/named/rpz.local.notransfer";
    allow-query { localhost; };
    allow-transfer { localhost; };
};

Guarde y cierre el archivo. Luego necesitamos crear el archivo de zona. En lugar de crear un archivo de zona desde cero, podemos usar un archivo de plantilla de zona. Copie el contenido de named.empty a un archivo nuevo.

sudo cp /var/named/named.empty /var/named/rpz.local.notransfer

Edite el archivo de zona.

sudo nano /var/named/rpz.local.notransfer

Cent OS
  1. Cómo instalar un servidor DNS en RHEL 8 / CentOS 8 Linux

  2. Configurar DNS en CentOS 5/RHEL 5 con chroot

  3. Cómo configurar el servidor DNS en CentOS 5 / RHEL 5

  4. Cómo configurar o cambiar el nombre de host en CentOS 7 / RHEL 7

  5. Cómo configurar DNS esclavo (BIND) en CentOS 7 / RHEL 7

Cómo configurar el servidor DNS (BIND) en CentOS 8 / RHEL 8

Cómo cambiar la zona horaria en CentOS 8 / RHEL 8

Configure la Zona de política de respuesta (RPZ) en BIND Resolver en Debian/Ubuntu

Configure SpamAssassin en CentOS/RHEL para bloquear el spam de correo electrónico

Cómo configurar una VPN basada en IPsec con Strongswan en CentOS/RHEL 8

Cómo configurar FirewallD en RHEL, CentOS y Fedora