GNU/Linux >> Tutoriels Linux >  >> Cent OS

Configurer la zone de stratégie de réponse (RPZ) dans BIND Resolver sur CentOS/RHEL

Ce didacticiel vous montrera comment remplacer les enregistrements DNS publics dans votre résolveur DNS BIND avec zone de stratégie de réponse (RPZ) sur CentOS/RHEL.

Qu'est-ce que la zone de politique de réponse ?

Zone de politique de réponse (RPZ) permet à un résolveur DNS de modifier les enregistrements DNS. Il a été développé à l'origine pour bloquer l'accès aux sites Web dangereux. Par exemple, si un ordinateur interroge l'adresse IP d'un site dangereux connu qui propage des logiciels malveillants, le résolveur DNS peut renvoyer 127.0.0.1 comme réponse DNS, de sorte que l'ordinateur ne puisse pas se connecter au site dangereux. C'est le cas d'utilisation d'origine. En tant que telle, la zone de stratégie de réponse est également connue sous le nom de pare-feu DNS .

Vous pouvez utiliser RPZ d'autres manières. Par exemple,

  • Si vous avez des services auto-hébergés comme Nextcloud sur le réseau local, vous pouvez utiliser RPZ pour faire pointer votre domaine Nextcloud (nextcloud.votre-domaine.com) vers l'adresse IP locale, vous n'avez donc pas à vous déplacer sur Internet, puis revenez sur votre réseau local pour accéder au serveur Nextcloud.
  • Les parents peuvent utiliser RPZ pour empêcher leurs enfants d'accéder à des sites pornographiques.
  • Vous pouvez bloquer les publicités indésirables.
  • J'installe de nombreuses applications Web sur mon VPS. Lorsque l'application Web n'est pas destinée à un accès public, j'ajoute un enregistrement DNS dans BIND RPZ uniquement et je ne publie pas d'enregistrement DNS sur mon bureau d'enregistrement de domaine pour empêcher le piratage.

Oui, vous pouvez créer une entrée DNS dans le /etc/hosts fichier sur l'ordinateur local pour remplacer les enregistrements DNS publics, mais il ne s'adapte pas bien. De plus, iOS et Android ne vous permettent pas de créer des entrées DNS locales. Ne serait-il pas agréable que le résolveur DNS BIND remplace l'enregistrement DNS public, afin que tous les appareils du réseau utilisant le résolveur BIND puissent utiliser l'enregistrement DNS personnalisé ?

Prérequis

Pour suivre ce tutoriel, on suppose que vous avez un résolveur DNS BIND en cours d'exécution sur votre serveur CentOS/RHEL. Si ce n'est pas le cas, veuillez lire le didacticiel suivant pour configurer le résolveur BIND.

  • Configurez votre propre résolveur DNS BIND9 sur CentOS 8/RHEL 8

Une fois que votre BIND Resolver est opérationnel, suivez les instructions ci-dessous.

Comment configurer la zone de stratégie de réponse BIND sur le serveur CentOS/RHEL

Tout d'abord, modifiez le named.conf fichier avec un éditeur de texte en ligne de commande comme Nano.

sudo nano /etc/named.conf

Ajoutez les lignes suivantes dans les options {...} clause pour activer la zone de stratégie de réponse. (La première ligne est un commentaire.)

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

Ensuite, faites défiler vers le bas de ce fichier et ajoutez la zone RPZ dans ce fichier.

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

Remarques :

  • Vous pouvez utiliser un chemin absolu au lieu d'un simple nom de fichier dans le file directif. BIND supposerait que le fichier est dans /var/named/ .
  • Les zones RPZ doivent autoriser les requêtes de localhost uniquement. Vous n'avez pas besoin d'ajouter des clients de réseau local.
  • Remplacer 12.34.56.78 avec l'adresse IP du résolveur DNS BIND esclave, qui est autorisé à effectuer un transfert de zone. S'il n'y a qu'un seul résolveur DNS, vous pouvez utiliser localhost comme ceci :allow-transfer { localhost; };

Il est recommandé d'utiliser un fichier journal séparé pour RPZ afin de mieux analyser le journal, ajoutez donc les lignes suivantes dans le logging {...}; clause.

    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; };

Enregistrez et fermez le fichier. Créez ensuite le /var/log/named/ répertoire et faites named en tant que propriétaire.

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

Ensuite, nous devons créer le fichier de zone. Au lieu de créer un fichier de zone à partir de zéro, nous pouvons utiliser un fichier de modèle de zone. Copiez le contenu de named.empty dans un nouveau fichier.

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

Modifiez le fichier de zone.

sudo nano /var/named/rpz.local

Il n'est pas nécessaire de modifier le contenu existant. Nous ajoutons simplement nos enregistrements DNS personnalisés. Par exemple, si vous avez un serveur Nextcloud sur le réseau local avec une adresse IP 192.168.0.103, alors vous ajoutez l'enregistrement DNS suivant, ainsi les clients Nextcloud n'ont pas besoin d'aller sur Internet pour se connecter au serveur Nextcloud .

nextcloud.your-domain.com      A   192.168.0.103

Si vous ne voulez pas que vos enfants visitent des sites pornographiques comme pornhub.com, ajoutez la ligne suivante dans ce fichier pour bloquer tout le domaine pornhub.com.

*.pornhub.com          CNAME  .

Si vous n'aimez pas voir les publicités Google Adsense sur les pages Web, vous pouvez ajouter la ligne suivante pour bloquer le doubleclick.net domaine, qui est utilisé pour diffuser des annonces Adsense.

*.doubleclick.net      CNAME   .

Pour remplacer l'enregistrement MX d'un nom de domaine, ajoutez une ligne comme ci-dessous.

example.com         MX     0    mail.example.com.

Remarque que tous les noms de gauche ne doivent PAS se terminer par un point et que tous les noms de droite doivent se terminer par un point.


Enregistrez et fermez le fichier. Ensuite, nous devrions définir named en tant que propriétaire du groupe /var/named/rpz.local file, ou named ne pourra pas charger cette zone.

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

Ensuite, exécutez la commande suivante pour vérifier s'il y a des erreurs de syntaxe dans le fichier de configuration principal. Une sortie silencieuse indique qu'aucune erreur n'a été trouvée.

sudo named-checkconf

Vérifiez ensuite la syntaxe des fichiers de zone RPZ.

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

Si aucune erreur n'est détectée, redémarrez BIND.

sudo systemctl restart named

Vous pouvez maintenant exécuter le dig commande sur le serveur BIND pour voir si RPZ fonctionne. Par exemple, interrogez un enregistrement DNS d'un nom de domaine inclus dans la zone de stratégie de réponse.

dig A nextcloud.your-domain.com @127.0.0.1

Vous devriez voir quelque chose comme ci-dessous dans la sortie de la commande, qui indique que la réponse DNS a été servie à partir du RPZ local.

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

Vous pouvez également consulter le journal des requêtes BIND9.

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

Vous verrez quelque chose comme ci-dessous, ce qui signifie que la réponse a été servie à partir du RPZ local.

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

Le client Fedora n'utilise pas RPZ ?

Par défaut, Fedora n'utilise pas RPZ. Vous pouvez utiliser le dig utilitaire de ligne de commande pour trouver l'adresse IP d'un nom d'hôte dans la zone RPZ, mais si vous envoyez un ping au nom d'hôte, il ne peut pas trouver l'adresse IP.

Pour résoudre ce problème, vous devez modifier le paramètre hosts dans le /etc/nsswitch.conf fichier sur le client Fedora.

sudo nano /etc/nsswitch.conf

Par défaut, le paramètre hosts est défini comme :

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

Changez-le en :

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

Enregistrez et fermez le fichier. RPZ devrait fonctionner maintenant.

Utiliser RPZ avec les transitaires

Si vous ajoutez un fowarders directive comme ci-dessous dans les options clause dans /etc/named.conf fichier, alors votre résolveur BIND devient un redirecteur, qui transmettra les requêtes DNS à un résolveur DNS en amont comme 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 zone de stratégie de réponse fonctionne avec cette configuration de redirecteur. Bind interrogera d'abord la zone de stratégie de réponse locale. Si l'enregistrement DNS n'est pas trouvé dans la RPZ, la demande sera transmise à un résolveur DNS en amont. Vous pouvez utiliser un redirecteur pour accélérer la résolution DNS lorsque votre propre résolveur BIND prend trop de temps à résoudre les noms DNS.

Configurer le transfert de zone

Si vous avez un autre résolveur DNS BIND, vous pouvez le configurer en tant que résolveur esclave pour recevoir automatiquement les mises à jour du résolveur DNS maître.

Tout d'abord, vous devez modifier le /etc/named.conf fichier sur le résolveur DNS maître .

sudo nano /etc/named.conf

Ajoutez l'adresse IP du résolveur DNS esclave au allow-transfer directives.

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 vous avez plusieurs résolveurs DNS esclaves, ajoutez plusieurs adresses IP comme ci-dessous.

 allow-transfer { 12.34.56.78; 12.34.56.79; };

Le also-notify obligera le résolveur DNS maître à envoyer un message de notification au résolveur esclave lorsque la zone RPZ est modifiée. Enregistrez et fermez le fichier. Redémarrez BIND pour que les modifications prennent effet.

sudo systemctl restart named

Si un pare-feu s'exécute sur le résolveur DNS maître, vous devez autoriser le résolveur DNS esclave à se connecter au port 53.

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

Ensuite, modifiez le /etc/named.conf fichier sur le résolveur DNS esclave .

sudo nano /etc/named.conf

Ajoutez les lignes suivantes dans les options {...} clause pour activer la zone de stratégie de réponse. (La première ligne est un commentaire.)

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

Ajoutez ensuite une zone RPZ esclave à la fin de ce fichier. Remplacer 11.22.33.44 avec l'adresse IP du résolveur DNS maître.

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; };
};

Enregistrez et fermez le fichier.

Vous devez également configurer le pare-feu du résolveur esclave pour permettre au résolveur DNS maître d'envoyer une notify messages.

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

Ensuite, exécutez la commande suivante pour vérifier s'il y a des erreurs de syntaxe dans le fichier de configuration principal. Une sortie silencieuse indique qu'aucune erreur n'a été trouvée.

sudo named-checkconf

Si aucune erreur n'est détectée, redémarrez BIND.

sudo systemctl restart named

Après le redémarrage de BIND, le transfert de zone commencera immédiatement. Vérifiez le journal BIND9 avec la commande suivante.

sudo journalctl -eu named

Vous pouvez voir des messages comme ci-dessous, qui indiquent que le transfert de zone a réussi.

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)

Le fichier de zone sera enregistré sous /var/named/rpz.local sur le résolveur esclave.

Remarque : Chaque fois que vous modifiez la zone RPZ sur le résolveur maître, vous devez mettre à jour le numéro de série. Agrandissez-le, afin que les résolveurs esclaves sachent que la zone RPZ est modifiée.

Création de plusieurs zones RPZ

Parfois, vous ne souhaitez pas que certains enregistrements DNS soient transférés vers des résolveurs esclaves. Vous pouvez créer une zone RPZ distincte. Modifiez le /etc/named.conf fichier.

sudo nano /etcnamed.conf

Ajouter une nouvelle zone RPZ.

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

Ajoutez une définition pour la nouvelle zone au bas de ce fichier.

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

Enregistrez et fermez le fichier. Ensuite, nous devons créer le fichier de zone. Au lieu de créer un fichier de zone à partir de zéro, nous pouvons utiliser un fichier de modèle de zone. Copiez le contenu de named.empty dans un nouveau fichier.

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

Modifiez le fichier de zone.

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

Cent OS
  1. Installer et configurer DNS/BIND sur Linux/Rhel/CentOS avec la fonctionnalité Chroot

  2. Configurer DNS sur CentOS 5 / RHEL 5 avec chroot

  3. Comment configurer le serveur DNS sur CentOS 5 / RHEL 5

  4. Comment définir ou modifier le nom d'hôte dans CentOS 7 / RHEL 7

  5. Comment configurer le DNS esclave (BIND) sur CentOS 7 / RHEL 7

Comment configurer le serveur DNS (BIND) sur CentOS 8 / RHEL 8

Comment changer le fuseau horaire dans CentOS 8 / RHEL 8

Configurer la zone de stratégie de réponse (RPZ) dans BIND Resolver sur Debian/Ubuntu

Configurer SpamAssassin sur CentOS/RHEL pour bloquer le spam par e-mail

Comment configurer un VPN basé sur IPsec avec Strongswan sur CentOS/RHEL 8

Comment configurer FirewallD dans RHEL, CentOS et Fedora