PROJET DNS Administration Système - Ngoné DIOP Sébastien CARLES Informatique et Réseaux Première année

 
CONTINUER À LIRE
PROJET DNS Administration Système - Ngoné DIOP Sébastien CARLES Informatique et Réseaux Première année
Ngoné DIOP                                           Jeudi 15 décembre 2005
Sébastien CARLES
Informatique et Réseaux
Première année

             PROJET DNS
                 Administration Système

                          Professeur : Mme S. Charraire
                               s.charraire@voila.fr

                               Année : 2005/2006
PROJET DNS Administration Système - Ngoné DIOP Sébastien CARLES Informatique et Réseaux Première année
Rapport
                                                Projet DNS

SOMMAIRE

SUJET .............................................................................................................3

INTRODUCTION ...............................................................................................3

I- Préliminaire .................................................................................................4

II- Les outils / périphériques utilisé pour le serveur DNS ........................................5
1. Bind............................................................................................................5
2. Le moniteur Syslog .......................................................................................6
3. L'analyseur de réseau Ethereal .......................................................................7
4. L'utilitaire « dig »..........................................................................................8

III- Procédure d'installation des serveurs .......................................................... 10
1. Installation proprement dite ......................................................................... 10
2. Configuration de l'environnement Unix pour BIND ........................................... 10
3. Test de la configuration initiale ..................................................................... 11

IV- Un serveur primaire et un serveur secondaire qui gèrent notre domaine ........... 12
1. Configuration du serveur principal ................................................................ 12
2. Configuration du serveur secondaire.............................................................. 15
3. Test de la synchronisation............................................................................ 16
3.1 Synchronisation au démarrage.................................................................... 16
3.2 Synchronisation journalisée ........................................................................ 18

V- Sécurisation des serveurs ............................................................................ 20
1. Mise en place d'un Firewall ........................................................................... 20
2. Sauvegarde système ................................................................................... 22
3. L'utilitaire rndc ........................................................................................... 23

CONCLUSION................................................................................................. 24

SITOGRAPHIE ................................................................................................ 25

Ingénieurs 2000                                                                                                   2
Filière Informatique et Réseaux
PROJET DNS Administration Système - Ngoné DIOP Sébastien CARLES Informatique et Réseaux Première année
Rapport
                                     Projet DNS

SUJET

       Mise en place d'une infrastructure DNS comprenant un serveur primaire, un
serveur secondaire et au moins un client. Il faut également fournir la procédure
d'intégration de nouveaux clients. Vous expliciterez les synchronisations.

INTRODUCTION

       Chaque ordinateur directement connecté à Internet possède au moins une
adresse IP propre. Cependant, les utilisateurs ne veulent pas travailler avec des
adresses numériques du genre « 193.50.159.88 » mais avec des noms de machine ou
des adresses plus explicites (appelées adresses FQDN) du type « http://www.univ-
mlv.fr ». Ainsi, il est possible d'associer des noms en langage courant aux adresses
numériques grâce à un système appelé DNS (Domain Name System). On appelle
résolution de noms de domaines (ou résolution d'adresses), la corrélation entre les
adresses IP et le nom de domaine associé.

      Le but de ce projet d'installer et de configurer un serveur DNS primaire ainsi
qu'un serveur secondaire afin que le dernier puisse régulièrement synchroniser avec le
premier afin de récupérer les données de celui-ci. Le DNS primaire doit par définition
s'occuper de renseigner les acteurs des réseaux (processus, machines,...) sur les
noms des machines du domaine que l'on étudiera. Le serveur secondaire en plus de
sauvegarder les données du primaire devra lui aussi être capable de renseigner les
noms.

       Après avoir présenté les différents outils que l'on a utilisé pour mener à bien ce
projet, nous poursuivrons en montrant l'installation des deux serveurs. Nous
détaillerons ensuite les configurations effectuées sur ces deux serveurs pour aboutir à
la mise en place de la synchronisation entre eux. Nous finirons en évoquant les
problématiques de sécurité des serveurs DNS avant de parfaire à cette sécurisation.

Ingénieurs 2000                                                                        3
Filière Informatique et Réseaux
PROJET DNS Administration Système - Ngoné DIOP Sébastien CARLES Informatique et Réseaux Première année
Rapport
                                               Projet DNS

I- Préliminaire

        Pour mettre en place nos serveurs DNS, une étape préliminaire concernant
l'installation matérielle des serveurs a été nécessaire. Ci-dessous nous avons le
schéma général de notre domaine. Il est composé de trois parties principales : la
partie des postes de travail en IP fixe, les serveurs de la zone, une DMZ et une patte
vers Internet.

     On note que l’on identifie nos serveurs DNS (primaire et secondaire) par leur
nom et adresses IP.

                                                                     DOMAINE projetdns.umlv
              MACHINES CLIENTES AVEC IP FIXE
                                                                            192.168.50.0 /24

                                         SERVEUR DNS SECONDAIRE
                                                        capricorne
                                                     192.168.50.79

                                                                                   SERVEUR DNS PRIMAIRE
                                                                                          verseau
                                                                                       192.168.50.80

                                                                            ROUTEUR
                                                                            192.168.50.1

                                                                                           Internet

                                                                            DMZ

                             SERVEURS DU DOMAINE

                                     Fig. I.1 - Schéma du réseau

Ingénieurs 2000                                                                                           4
Filière Informatique et Réseaux
PROJET DNS Administration Système - Ngoné DIOP Sébastien CARLES Informatique et Réseaux Première année
Rapport
                                      Projet DNS

II- Les outils / périphériques utilisé pour le serveur DNS

       1. Bind

       Issu du monde des logiciels libres, BIND est l'implémentation du protocole DNS
 et le serveur de noms de domaine (BIND DNS) le plus largement utilisé sur Internet.
 Ainsi, ce logiciel a pour but premier la résolution de noms de domaine en adresses
 IP.

      Pour cela, BIND stocke en mémoire et maintient une base de données mettant
 en correspondance le domaine et l'adresse IP de l'hôte à contacter.

       Le principal fichier de configuration de BIND est le fichier « named.conf ». Ce
 fichier contient une suite de déclarations utilisant des options imbriquées qui sont
 placées entre accolades, { }. Lorsqu'ils modifient le fichier « named.conf », les
 administrateurs doivent veiller tout particulièrement à ne pas faire de fautes de
 syntaxe car des erreurs mineures en apparence empêcheront le démarrage du
 service « named ». A l'installation, ce fichier ne contient que les options générales du
 serveur et en particulier la description des zones racines, de la boucle locale et de
 diffusion.

       Parmi ces déclarations, on peut citer :

   •   acl : La déclaration acl (de l'anglais « access control list », ou déclaration de
       liste de contrôle d'accès) définit des groupes d'hôtes qui peuvent ensuite être
       autorisés ou non à accéder au serveur de noms.
   •   include : La déclaration include permet à des fichiers d'être inclus dans un
       fichier « named.conf ». Ce faisant, des données de configurations critiques
       (telles que les clés, keys) peuvent être placées dans un fichier séparé doté de
       permissions restrictives.
   •   options : La déclaration options définit les options globales de configuration
       serveur et établit des valeurs par défaut pour les autres déclarations. Cette
       déclaration peut être utilisée entre autres pour spécifier l'emplacement du
       répertoire de travail « named » ou pour déterminer les types de requêtes
       autorisés.
   •   zone : Une déclaration zone définit les caractéristiques d'une zone tels que
       l'emplacement de ses fichiers de configuration et les options spécifiques à la
       zone. Cette déclaration peut être utilisée pour remplacer les déclarations
       globales d'options.

       BIND permet également de gérer un serveur primaire et un ou plusieurs
serveurs secondaires. Cette fonctionnalité nous intéresse particulièrement. Ainsi
allons-nous utiliser cet outil pour mener à bien notre projet.

Ingénieurs 2000                                                                        5
Filière Informatique et Réseaux
PROJET DNS Administration Système - Ngoné DIOP Sébastien CARLES Informatique et Réseaux Première année
Rapport
                                        Projet DNS

           2. Le moniteur Syslog

       Le noyau UNIX, et beaucoup de programmes systèmes, produisent des
messages d'erreurs, des avertissements et d'autres messages. Souvent, il est
important de pouvoir relire ces messages plus tard, même bien plus tard. Ces
messages doivent donc être écrits dans un fichier. Le programme qui est chargé de
cette tâche s'appelle syslog. Il peut être configuré pour trier les messages dans
différents fichiers selon leur origine et leur degré de sévérité. Par exemple, les
messages du noyau sont souvent redirigés dans un fichier à part puisqu'ils sont
généralement plus importants et ont besoin d'être lus régulièrement pour identifier les
problèmes.

      Nous l'utilisons pour voir en temps ce qui se passe sur notre serveur DNS. Par
exemple lors du démarrage, on peut vérifier que BIND se lance correctement. Pour le
lancer en mode temps réel, on demande à voir la fin du fichier contenant ces logs.
Avec la commande « tail -f /var/log/syslog ». Ce log va donc nous permettre de voire
nos actions sur notre serveur de noms ainsi que leurs conséquences.

                                  Fig. II.1 – Moniteur Syslog

Ingénieurs 2000                                                                      6
Filière Informatique et Réseaux
PROJET DNS Administration Système - Ngoné DIOP Sébastien CARLES Informatique et Réseaux Première année
Rapport
                                         Projet DNS

       3. L'analyseur de réseau Ethereal

       Ethereal est un analyseur de protocole de réseau qui examine les données à
partir d'un réseau en direct ou à partir d'une capture de fichier sur disque. Il permet
de naviguer de façon interactive sur les données capturées, visionner le résumé et
l'information détaillée pour chaque ensemble. Ethereal possède quelques fonctions
puissantes, incluant un affichage de langage filtré et la possibilité de visionner le flux
reconstitué de la session TCP.

     Cet outil nous permettra d'observer la communication entre les deux serveurs,
notamment lors des synchronisations par la capture de trames DNS.

                                  Fig. II.2 – Logiciel Ethereal

       L'affichage des résultats se décompose en trois parties :

       •   La liste des paquets capturés disponibles en dessous de la barre de menu
           avec un affichage synthétique du contenu de chaque paquet.
           •   La décomposition exacte du paquet actuellement sélectionné dans la
               liste. Cette décomposition permet de visualiser les champs des entêtes
               des protocoles ainsi que l'imbrication des différentes couches de
               protocoles connus.
           •   La troisième zone contient le paquet affiché en hexadécimal et en ASCII.

Ingénieurs 2000                                                                         7
Filière Informatique et Réseaux
PROJET DNS Administration Système - Ngoné DIOP Sébastien CARLES Informatique et Réseaux Première année
Rapport
                                      Projet DNS

       4. L'utilitaire « dig »

       L'utilitaire « dig » permet de faire des requêtes DNS évoluées et fournit un
maximum d'informations sur la requête. Il est très utile pour vérifier la bonne
configuration d'un serveur DNS. D'autres commandes (moins précis ou peu
conseillées) comme « host » et « nslookup » peuvent fournir le même genre
d'informations. La syntaxe générale est simple, il suffit de taper « dig » suivi du nom
de l'hôte qu'on veut résoudre, puis du type (par exemple dig univ-mlv.fr MX pour
demande adresses des serveurs mail du serveur de l'université ». Pour utiliser un
serveur DNS autre que celui renseigné dans le fichier « /etc/resolv.conf », il faut
ajouter une options « @ » suivi de son adresse.

   Exemple d'utilisation de « dig »

     Pour déterminer l'adresse du nom « www.inria.fr », il faut taper la commande
« dig www.inria.fr A ». Le serveur interrogé, à la suite d'un certain nombre de
requêtes DNS, nous répond que le nom précité a pour adresse IP « 138.96.146.2 ».

      La réponse retournée par « dig » est très riche. Elle nous permet notamment de
déterminer si le serveur qui a répondu à notre demande supporte la récursion ou non.
La récursion veut dire que lorsqu'un serveur le supportant reçoit une question dont il
ne connais pas la réponse, il l'envoie directement au serveur d'autorité supérieure
c'est à dire au serveur jusqu'à ce qu'on trouve la bonne adresse. On le remarque sur
la présence du flag « rd » (récursion souhaitée), donc ce serveur supporte la
récursion. On remarque par contre que cette réponse ne fait pas autorité ; c'est-à-dire
que l'on a interrogé un serveur DNS qui avait l'information dans son cache. En effet,
le flag « aa » n'apparaît dans l'entête de la réponse. Pour avoir une réponse qui fait
autorité, on fait la requête en utilisant le serveur « dns.inria.fr » qui est le serveur qui
fait autorité dans la zone inria.

Ingénieurs 2000                                                                           8
Filière Informatique et Réseaux
Rapport
                                         Projet DNS

                          Fig. II.3 – Dig sur le domaine www.insria.fr

Ingénieurs 2000                                                          9
Filière Informatique et Réseaux
Rapport
                                      Projet DNS

III- Procédure d'installation des serveurs

       1. Installation proprement dite

      Nous avons téléchargé des sources de la version 9.3 de Bind depuis le site
« www.bind9.net » que nous avons décompressé avec la commande « tar ». Nous
l'avons ensuite compilé ces sources avec « make » puis installé avec « make install ».

       2. Configuration de l'environnement Unix pour BIND

   •   Ajout du dossier des exécutables de BIND dans la variable d'environnement
       PATH pour lancer les divers programmes directement avec leur nom et nom en
       tapant le chemin complet vers ceux-ci.
               vi /root/.bashrc
               [...]
               PATH= $(PATH) : /root/named/sbin : .
               [...]

   •   Le démon « named » qui démarrage/s'arrête au démarrage/arrêt du système :

       Pour lancer un programme automatique au démarrage du système Unix et
       l'arrêter correctement à l'arrêt, il faut utiliser les « runlevel ». Ce sont les
       différents niveaux de démarrage/arrêt sous Unix/Linux. Il existe donc 6 runlevel
       sous Debian GNU/Linux:

  z Le runlevel 0 correspond à l'arrêt du système
  z Le runlevel 1 correspond au démarrage single user
  z Le runlevel 2 correspond mode de démarrage normal
  z Les runlevels 3-5 correspondent à des modes de démarrage que l'on peut se
    configurer
  z Le runlevel 6 correspond au redémarrage

       Les runlevel sont des niveaux constitués d'un ensemble de liens situés dans les
répertoires /etc/rcX.d/ qui, pour la plupart pointe vers les scripts situés dans
/etc/init.d/. Le X de etc/rcX.d/ représente un runlevel (0-6).

Ces liens sont de la forme Cnnprog ce qui pointe vers le programme qu'on veut
traiter.
  z C= S ou K, où S passe le paramètre « start » au programme et K passe le
      paramètre « stop ».
  z nn= numéro correspondant à la priorité de démarrage dans le runlevel. Les
      numéros les plus petits sont démarrés en premiers.
  Les programmes dont le lien commence par K sont exécutés en premier, ensuite
  vient les scripts dont le lien commence par S.

       Comme on veut démarrer notre serveur au runlevel 2 et l'arrêter au 0 en
priorité maximale, il nous suffit de créer correctement les deux liens vers
/root/named/sbin/named avec les deux commandes suivantes :
ln -s /root/named/sbin/named K00bind
ln -s /root/named/sbin/named S00bind
Ingénieurs 2000                                                                     10
Filière Informatique et Réseaux
Rapport
                                            Projet DNS

       3. Test de la configuration initiale

        On teste la configuration initiale de BIND ; celle qu'on a obtenue après
l'installation. Notre machine se comporte à présent comme un serveur DNS normal.
La commande « dig @localhost www.google.fr » nous permet de demander l'adresse
IP de l'hôte « www.google.fr » en utilisant le serveur qu'on vient d'installer. On
remarque que ça marche bien. On ajoute alors dans notre fichier « /etc/resolv.conf »
la ligne « nameserver localhost » pour que notre machine utilise notre serveur pour
résoudre les noms.

                                  Fig. III.1 – Test du serveur initial

Ingénieurs 2000                                                                  11
Filière Informatique et Réseaux
Rapport
                                        Projet DNS

IV- Un serveur primaire et un serveur secondaire qui gèrent notre domaine

      C'est ici où on commence à avoir la notion de serveur primaire et de serveur
secondaire et la notion de zone. On va en effet considérer que l'on se trouve dans la
zone « projetdns.umlv ». Nous allons configurer un serveur de telle sorte qu'il fasse
serveur primaire de cette zone pendant que l'autre fera serveur secondaire.

   1. Configuration du serveur principal

      On commence par renseigner le fichier de zone que l'on stocke dans
« /root/named/etc/bind/db.projetdns.umlv ». Ce fichier sera partagé par tous les
serveurs DNS de la zone. Il sera notamment utilisé pour renseigner les demandeurs
du réseau sur le nom des machines se trouvant dans notre domaine.

                                  Fig. IV.1 – Fichier de zone

      Contenu de notre fichier de zone :
      On a d'abord la définition de notre serveur en tant que serveur autoritaire de la
zone. L'adresse IP de notre serveur est le « 192.168.50.80 » et le nom associé est
« verseau ». Dans cette définition, nous avons des attributs intéressant notamment le
numéro de série (20041124 dans notre fichier de zone. Ce numéro doit être
incrémenté à chaque fois que le fichier de zone est modifié. Il va permettre au(x)
serveur(s) DNS secondaire (s) de se remettre à jour. En effet, dès qu’un serveur
secondaire détecte le changement de ce numéro, celui-ci demande un transfert de
zone.
Ingénieurs 2000                                                                      12
Filière Informatique et Réseaux
Rapport
                                         Projet DNS

      Pour l'instant, dans notre fichier de zone, on a résolu les noms d'un certain
nombre de serveurs de notre réseau ; notamment le serveur WEB, SMTP, POP, DHCP,
WEB... et on leur a donnée des noms explicites.

      En bas, on donne des noms canoniques à certains serveurs notamment le
serveur web qui a pour nom, par convention, « www », le serveur smtp, « smtp »...
Ces noms se comporteront comme des noms de machines normaux et seront résolus
par notre serveur si on lui demandait.

       Un autre fichier de zone a du être établie. Il s'agit du fichier de zone qui traite
la résolution inverse des machines de la zone. Il est similaire au fichier de zone qui
traite la résolution normale. Ce fichier est également partagé par les différents
serveurs DNS de la zone.

                      Fig. IV.2 – Fichier de résolution inverse de la zone

       Maintenant que les fichiers de zone ont été établies, il reste à modifier le fichier
de configuration « named.conf » pour que notre serveur s'occupe de la résolution des
machines de notre zone, qu'il y soit le serveur principal, et qu'il déclare le serveur
dont l'adresse IP est « 192.168.50.79 » et dont le nom est capricorne. On ajoute
pour cela les lignes de définition de la zone qui suivent :

       Ajout d'un nouveau client :

       L'ajout d'un nouveau client à notre domaine est facile. Il suffit, en effet, de
renseigner les fichiers de zones (résolution normale et inverse) avec les informations
du client en question (adresse IP, nom...) comme nous l'avons fait ci-dessus avec les
serveurs.

      Pour permettre à ce client d’utiliser nos serveur pour résoudre les noms, il suffit
d’ajouter les lignes « nameserver 192.168.50.80 » et « nameserver 192.168.50.79 »
dans son fichier « /etc/resolv.conf ».
Ingénieurs 2000                                                                         13
Filière Informatique et Réseaux
Rapport
                                        Projet DNS

      Testons notre fichier de zone avec la commande « dig » depuis un autre poste.
Le « @ » nous permet de spécifier le serveur qu’on utilise pour faire le test. On
demande l'adresse IP correspondant au nom de domaine « scorpion.projetdns.umlv »
en utilisant notre serveur DNS : « dig @192.168.50.80 scorpion.projetdns.fr ». On
aurait pu se contenter de modifier le fichier « /etc/resolv.conf ». Dans ce cas, la
commande « dig scorpion.projetdns.fr » sans l’instruction « @ » serait suffisant.

                                  Fig. IV.3 – Test avec dig

      Dig nous retourne donc l'adresse IP du nom demandé : 192.168.50.77. La
réponse nous renseigne également sur le serveur principal, notamment sur le fait qu'il
est autoritaire dans notre zone.

       Un autre test en faisant un « ping » directement en utilisant le nom de la
machine. Cette étape suppose que nous avons modifié le fichier « /etc/resolv.conf »
du client en y intégrant la ligne « nameserver 192.168.50.80 ». On fait alors un ping
vers « capricorne.projetdns.umlv » et on reçoit des réponses.

                                  Fig. IV.4 – Test avec ping
Ingénieurs 2000                                                                    14
Filière Informatique et Réseaux
Rapport
                                       Projet DNS

   2. Configuration du serveur secondaire

      La configuration du serveur secondaire a été faite sur la deuxième machine, qui
porte le nom de capricorne. Il va donc falloir la paramétrer pour quel soit le serveur
secondaire de la zone « projetdns.umlv ».

      Nous allons procéder à la configuration, en modifiant le fichier named.conf,
pour déclarer la nouvelle zone (projetdns.umlv), et indiquer que le serveur est esclave
de la machine verseau (192.168.50.80), qui est le serveur DNS primaire de la zone.
Pour cela nous rajoutons les lignes suivantes dans le fichier « named.conf » :

                   Fig. IV.5 – fichier named.conf du serveur secondaire :

       Nous avons ainsi mise en place la résolution normale et inverse du domaine :
« projetdns.umlv », comme nous l'avions fait pour le serveur primaire. Mais comme
cette machine est un serveur DNS secondaire (« type slave »), les fichiers de zone
mentionnés dans le champs « file » (« /root/named/etc/bind/db.projetdns.umlv-sec »
et « /root/named/etc/bind/db.projetdns.umlv-sec-reverse ») ne sont pas créés a la
configuration, mais lors de la première synchronisation. Par la suite, ils seront remis à
jour lors de chaque synchronisation avec le serveur primaire. L'adresse de ce serveur
est mentionnée par le champ « masters » (192.168.50.80).

       Une fois le serveur DNS secondaire installé et configuré, il faut tester la
synchronisation avec le serveur primaire du domaine afin d’observer l’échange
d’information (transfert de zone).

Ingénieurs 2000                                                                       15
Filière Informatique et Réseaux
Rapport
                                         Projet DNS

   3. Test de la synchronisation

       3.1 Synchronisation au démarrage

      Maintenant que les deux serveurs sont configurés pour s'occuper de la zone,
procédons aux tests de synchronisation. Pour cela, lançons le serveur DNS secondaire
et observons, a l'aide de l'outil syslog la synchronisation entre les deux serveurs.

                              Fig. IV.6 – Syslog, transfert de zone

      La fenêtre ci-dessus retourne les différents logs émis par le programme du
serveur secondaire lors de son démarrage. Ces logs nous renseignent sur la
synchronisation de notre serveur secondaire sur le serveur primaire. En effet, on voit
le début du transfert de zone qui c'est effectué entre nos deux serveur (ligne 2 :
« zone projetdns.umlv/IN: Transfert started »). Le serveur DNS secondaire
(192.168.50.79) reçoit donc le fichier de zone depuis le serveur DNS primaire
(192.168.50.80).

            Fig. IV.7– Fichier de zone récupéré sur le serveur DNS secondaire

Ingénieurs 2000                                                                    16
Filière Informatique et Réseaux
Rapport
                                         Projet DNS

    Pour tester le bon fonctionnement du serveur DNS secondaire, on tape la
commande « dig @192.168.50.79 www.projetdns.umlv » depuis un poste client.

                             Fig. IV.8 – Test du serveur secondaire

Ingénieurs 2000                                                          17
Filière Informatique et Réseaux
Rapport
                                          Projet DNS

       3.2 Synchronisation journalisée

      Pour constater la mise à jours du serveur DNS secondaire, nous avons changé
le numéro de série (20041127) et baissé le temps de rafraîchissement du cache (2).
Nous avons en plus ajouté la résolution d'autres machines dans le fichier de zone (du
serveur DNS primaire), pour bien distinguer le changement.

                Fig. IV.9 – Fichier de zone après ajout des postes de travail

      Après redémarrage nous avons pu observé que le serveur secondaire se
synchronise bien avec le serveur DNS principale pour récupérer le nouveau fichier de
zone (numéro de série : 20041127)

                                  Fig. IV.10 - Transfert de zone

Ingénieurs 2000                                                                   18
Filière Informatique et Réseaux
Rapport
                                         Projet DNS

      On voit également la mise à travers une capture de trame avec l’outil Ethereal.
Dans la section « Answer » de la trame DNS capturée, on voit les différentes
informations du nouveau fichier dont le nouveau numéro de série (20041127)…

                           Fig. IV. 11 - Capture du transfert de zone

       Regardons le nouveau fichier de zone : celui qui a été téléchargé lors du
transfert de zone depuis le serveur DNS principal « verseau » vers le serveur DNS
secondaire « capricorne ».

                       Fig. IV.12 - Nouveau Fichier de zone téléchargé
Ingénieurs 2000                                                                   19
Filière Informatique et Réseaux
Rapport
                                      Projet DNS

V- Sécurisation des serveurs

       1. Mise en place d'un Firewall

       Description d’Iptables :

       Le firewall a pour but de sécuriser au maximum le réseau local de l'entreprise,
de détecter les tentatives d'intrusion et d'y parer au mieux possible. De plus, il peut
permettre de restreindre l'accès interne vers l'extérieur. En plaçant un firewall limitant
ou interdisant l'accès à ces services, l'entreprise peut donc avoir un contrôle sur les
activités se déroulant dans son enceinte.

        Le firewall propose donc un véritable contrôle sur le trafic réseau de
l'entreprise. Il permet d'analyser, de sécuriser et de gérer le trafic réseau, et ainsi
d'utiliser le réseau tel qu'il a été prévu pour et sans l'encombrer avec des activités
inutiles, et d'empêcher une personne sans autorisation d'accéder à ce réseau de
données.

      Le filtrage « stateless » est la méthode de filtrage la plus simple, elle opère au
niveau de la couche réseau et transport du modèle OSI. Cela consiste à accorder ou
refuser le passage de paquet d'un réseau à un autre en se basant sur:
      - l'adresse IP Source/Destination.
      - le numéro de port Source/Destination.
      - le protocole de niveau 3 ou 4.

       La politique la plus sécuritaire au niveau des règles de filtrage est de tout
interdire sauf ce dont on a besoin et ce en quoi on a confiance. Ainsi, pas de
mauvaises surprises sur un service que l'on pensait ne pas avoir installé: tout service
autorisé est explicitement déclaré dans le firewall.

      Iptables repose sur un système de tables qui correspondent aux différents
types de trafic. Ici, nous allons utiliser la table FILTER. La table FILTER va contenir
toutes les règles qui permettront de filtrer les paquets. Elle contient 3 chaînes:

       - La chaîne INPUT : cette chaîne décidera du sort des paquets entrant
       localement sur l’hôte.
       - La chaîne OUTPUT : concerne les paquets émis par l’hôte local.
       - La chaîne FORWARD : filtre les paquets qui traversent l’hôte suivant les routes
       implémentées.

       Le pare-feu doit être activé au démarrage de la machine. On place donc le
script dans le répertoire /etc/init.d/. On le déclare ensuite en tant que service avec la
commande chkconfig au niveau d’exécution 3, 4 et 5 et l’activation au démarrage se
fait avec l’outil ntsysv.

       Script Iptables :

      Le script utilisé (Fig. V.1) accepte le protocole DNS, et les connexions en SSH
(pour paramétrer le serveur à distance). Tous autres types de protocole (Web, FTP,
etc…) est automatiquement rejetés, afin de respecter l’intégrité du serveur.
Ingénieurs 2000                                                                        20
Filière Informatique et Réseaux
Rapport
                                        Projet DNS

#!/bin/bash
# chkconfig: 345 60 50
# description: Pare-Feux ServeurDNS
clear()
{
# Effacer toutes les règles existantes et les chaînes utilisateur
for TABLE in filter nat mangle; do
iptables -t $TABLE -F
iptables -t $TABLE -X
done
}
stop()
{
clear
echo "Pare-Feux Desactive!"
exit 0
}
start()
{
clear
### DNS ACCEPTE
for DNS in $(grep ^nameserver /etc/resolv.conf | cut -d " " -f2); do
iptables -t filter -A INPUT -p udp -s $DNS \
--source-port domain -j ACCEPT
done
# SSH ACCEPTE POUR ADMINISTRATER NOTRE MACHINE A DISTANCE
iptables -t filter -A INPUT -p tcp --destination-port ssh -j ACCEPT
#DENY ALL : ON REFUSE TOUS LE RESTE
iptables -N logdeny
iptables -t filter -A logdeny -j LOG --log-prefix "iptables: "
iptables -t filter -A logdeny -j DROP
iptables -t filter -A INPUT -i ! lo -p all -j logdeny
echo "Pare-Feux Active!"
exit 0;
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart|reload)
stop
start
;;
status)
iptables -L
;;
*)
echo $"Usage: $0 {start|stop|restart|status}"
exit 1
esac
exit 0
                                  Fig. V.1 – Script IPTABLES

Ingénieurs 2000                                                        21
Filière Informatique et Réseaux
Rapport
                                      Projet DNS

2. Sauvegarde système

       S’agissant de serveur DNS, nos machines n’ont pas besoin d’une sauvegarde
très régulière du système. C’est pour cela que nous avons non nécessaire le fait de
faire un script de sauvegarde automatisé. Nous avons donc choisi la sauvegarde
différentielle.

Pré requis

       Pour ce type de sauvegarde, il faut au préalable réserver une taille de partition
adéquate, qui doit être égale à la somme des tailles des partitions de notre système
original. Nous avons donc réservé /mnt/save_dns pour la sauvegarde. On peut en plus
mettre cette sauvegarde dans une archive (« tar ») que nous stockerons sur un autre
media, ou sur une autre machine.

Sauvegarde

        Nous avons, dans un premier temps, créé un fichier d'exclusion, qui comme son
nom l'indique, contiendra la liste des fichiers ou répertoires à ne pas sauvegarder. Ce
fichier contiendra les lignes suivantes.
/proc
/tmp
/mnt
/etc/fstab

       Ce fichier doit aussi contenir le répertoire où nous allons fait la copie. Une fois
ce fichier créé. Maintenant, procédons au sauvegarde de notre système avec la
commande qui suit.
              rsync -ravH --exclude-from=exclud.lst / /mnt/save_dns

Restauration

      Pour la restauration, il suffit de recopier les fichiers qui ont été sauvegardé
depuis notre partition vers leur emplacement d’origine.

Ingénieurs 2000                                                                        22
Filière Informatique et Réseaux
Rapport
                                           Projet DNS

     3. L'utilitaire rndc

       Qu'est-ce que c'est ?

      BIND contient un utilitaire appelé « rndc » qui permet d'utiliser des lignes de
commande pour administrer le démon « named » à partir de l'hôte local ou d'un hôte
distant.     Afin d'empêcher l'accès non-autorisé au démon « named », BIND utilise
une méthode d'authentification à clé secrète partagée pour accorder des privilèges
aux hôtes. Ainsi, une clé identique doit être présente aussi bien dans
« /etc/named.conf » que dans le fichier de configuration de « rndc », à savoir
« /etc/rndc.conf ».

       Mise en place

      On génère une configuration sécurisée par défaut, pour cela, on lance la
commande « rndc-confgen ». On obtient un script dont une partie devra être copié
dans le fichier de configuration du server « /root/named/etc/named.conf » et l'autre
dans celui de rndc « /root/named/etc/named.conf ».

Partie copiée dans « rndc.conf » :
# Start of rndc.conf
key "rndc-key" {
       algorithm hmac-md5;
       secret "i3vA56SIOWBb7AgHNiPrlg==";
};
options {
       default-key "rndc-key";
       default-server 127.0.0.1;
       default-port 953;
};
# End of rndc.conf

Partie copiée dans named.conf
# Use with the following in named.conf, adjusting the allow list as needed :
key "rndc-key" {
        algorithm hmac-md5;
        secret "i3vA56SIOWBb7AgHNiPrlg==";
};
controls {
       inet 127.0.0.1 port 953
       allow { 127.0.0.1; } keys { "rndc-key"; };
};
# End of named.conf

Ingénieurs 2000                                                                        23
Filière Informatique et Réseaux
Rapport
                                    Projet DNS

       On a donc la même clé secrète partagée par les deux fichiers. Rechargeons à
présent la configuration que nous venons d'effectuer avec « rndc reload » après avoir
lancé « named ». La configuration est correcte, le syslog nous indique que le serveur
a été rechargé avec succès.

root@linuxportable:~/named/sbin # .named
root@linuxportable:~/named/sbin # rndc reload
server reload successful
root@linuxportable:~/named/sbin #

CONCLUSION

       Dans ce projet, nous avons mis en place la gestion de la résolution des noms
d’un domaine. Nous avons supposé que ce domaine comprenait un ensemble de
serveurs qui disposent d’un nom propre. Pour ce faire, nous avons installé deux
serveurs DNS (un primaire et un secondaire) avec le logiciel BIND. Nous avons
également observé la synchronisation entre ces derniers. Nous avons finis par mettre
en place un système de sécurisation de nos serveurs ; une sécurisation à base de
firewall et de sauvegarde des différents systèmes.

Ingénieurs 2000                                                                     24
Filière Informatique et Réseaux
Rapport
                                  Projet DNS

SITOGRAPHIE

www.lea-linux.org

www.linux-khops.com

Ingénieurs 2000                                25
Filière Informatique et Réseaux
Vous pouvez aussi lire