7. Exercices pour l'étudiant intéressé

7.1. Gérer un mini-DNS

Bien que gérer une hiérarchie du service de noms de domaines (“Domain Name Service” - DNS) puisse être une tâche diabolique, il est tout à fait faisable d'installer un mini-serveur DNS sur le système FreeBSD qui vous sert aussi de passerelle vers votre fournisseur d'accès.

A partir des fichiers existants dans /etc/namedb après installation de FreeBSD, il est possible de définir un serveur DNS qui ait autorité sur le réseau de notre exemple et serve d'interface avec l'architecture DNS de l'Internet.

Pour cette configuration minimale, il suffit de trois fichiers:

Le fichier /etc/namedb/named.root est automatiquement initialisé à l'installation de FreeBSD, les deux autres fichiers doivent être renseignés manuellement.

7.1.1. Le fichier /etc/namedb/named.boot

Le fichier /etc/namedb/named.boot décrit la configuration initiale du serveur DNS. Essentiellement, il indique au serveur de noms:

  1. Où sont les fichiers de configuration,

  2. De quels “noms de domaines” il a la responsabilité,

  3. Où trouver les autres serveurs DNS.

Avec l'éditeur ee, créez un fichier /etc/namedb/named.boot comme suit:


; fichier de démarrage pour un mini-serveur de noms de domaines

directory       /etc/namedb

; type    domain             source machine/fichier   fichier de sauvegarde

cache     .                  named.root
primary   my.domain.         mydomain.db


Les lignes qui commencent par un point-virgule sont des commentaires. Voici la signification des autres lignes:

  • 
directory /etc/namedb
    


    Dit au serveur de noms où trouver les fichiers de configuration référencés dans la suite du fichier /etc/namedb/named.boot.

  • 
cache . named.root
    


    Dit au serveur de noms que la liste des serveurs de la racine (“Root Servers”) se trouve dans le fichier named.root. (Ce fichier est inclus dans l'installation standard et n'est pas décrit ici.)

  • 
primary my.domain mydomain.db
    


    Dit au serveur de noms qu'il a “autorité” sur un domaine DNS appelé “my.domain” et que la liste des adresses IP des machines du domaine “my.domain” (le réseau local) se trouve dans le fichier /etc/namedb/mydomain.db.

Une fois créé et sauvegardé le fichier /etc/namedb/named.boot, passez à l'étape suivante pour créer le fichier /etc/namedb/named.db.

7.1.2. Le fichier /etc/namedb/named.db

Le fichier /etc/namedb/named.boot liste les noms et les adresses IP de toutes les machines du réseau local.

Pour une description détaillée des instructions de ce fichier, reportez-vous aux pages de manuel de named.

Le fichier /etc/namedb/named.boot de notre serveur DNS minimum contient les lignes suivantes:


@       IN SOA  my.domain. root.my.domain.  (
			       961230  ; Serial
			       3600    ; Refresh
			       300     ; Retry
			       3600000 ; Expire
			       3600 )  ; Minimum
       IN NS   curly.my.domain.

curly.my.domain.        IN A    192.168.1.1     # The FreeBSD box
larry.my.domain.        IN A    192.168.1.2     # The Win'95 box
moe.my.domain.          IN A    192.168.1.3     # The WfW box
shemp.my.domain.        IN A    192.168.1.4     # The Windows NT box

$ORIGIN 1.168.192.IN-ADDR.ARPA
  	        IN NS   curly.my.domain.
1               IN PTR  curly.my.domain.
2               IN PTR  larry.my.domain.
3               IN PTR  moe.my.domain.
4               IN PTR  shemp.my.domain.

$ORIGIN 0.0.127.IN-ADDR.ARPA
	        IN NS   curly.my.domain.
1               IN PTR  localhost.my.domain.


Brièvement, ce fichier déclare que le serveur DNS local est:

  • Le “Début d'Autorité” (Start Of Authority) pour le domaine appelé “my.domain”,

  • Le serveur de noms (Name Server - “NS”) pour “my.domain”,

  • Responsable de la résolution inverse des adresses IP qui commencent par “192.168.1” et “127.0.0” (“$ORIGIN ...”).

Pour ajouter de nouvelles machines, vous devez ajouter deux lignes pour chaque système; une dans la section du haut où les noms des systèmes sont associés aux adresses Internet (“IN A”), et une autre ligne qui associe inversement l'adresse au nom de la machine (“IN PTR”), dans la section “$ORIGIN 1.168.192.IN-ADDR.ARPA”.

7.1.3. Démarrer le serveur DNS

Par défaut, le serveur DNS (/etc/sbin/named) n'est pas lancé au démarrage du système. Vous pouvez modifier ce comportement en rectifiant une seule ligne dans le fichier /etc/rc.conf, comme suit:

Avec l'éditeur ee, visualisez le fichier /etc/rc.conf. Descendez d'une quarantaine de lignes jusqu'à ce que vous trouviez la section qui dit:


---
named_enable="NO"                       # Run named, the DNS server (or NO).
named_flags="-b /etc/namedb/named.boot" # Flags to named (if enabled).
---


et modifiez-la en:


---
named_enable="YES"                      # Run named, the DNS server (or NO).
named_flags="-b /etc/namedb/named.boot" # Flags to named (if enabled).
---


Sauvegardez le fichier et redémarrez le système.

Vous pouvez aussi démarrer le serveur DNS avec la commande suivante:

# named -b /etc/namedb/named.boot

Chaque fois que vous modifiez les fichiers du répertoire /etc/namedb/named.boot, vous devez faire relire ces modifications par le serveur DNS avec la commande suivante:

# kill -HUP `cat /var/run/named.pid`

7.2. Essayer les filtres PPP

Le programme ppp a la capacité d'appliquer des règles de filtrage au trafic qu'il route. Bien que cela ne soit pas aussi sécurisé qu'un véritable coupe-feu, cela autorise quelques contrôles d'accès à la liaison.

(“man ipfw” pour plus d'informations sur la configuration d'un système FreeBSD plus sécurisé.)

La documentation complète des différents filtres et règles utilisables avec le programme ppp se trouve dans les pages de manuel de ppp.

Il y a quatre classes de filtres qui s'appliquent au programme ppp:

L'exemple qui suit est un extrait de la configuration d'un système opérationnel qui donne une bonne base pour un fonctionnement Internet “normal”, tout en empêchant que ppp accepte n'importe quoi sur la liaison. Les commentaires décrivent la logique de chaque jeu de règles.:


       #
       # filtres KeepAlive
       # ne pa prendre en compte les paquets ICMP,DNS et RIP
       #
        set afilter 0 deny icmp
        set afilter 1 deny udp src eq 53
        set afilter 2 deny udp dst eq 53
        set afilter 3 deny udp src eq 520
        set afilter 4 deny udp dst eq 520
        set afilter 5 permit 0/0 0/0
       #
       # filtre d'appel:
       #  Note:  ICMP établira la connexion dans cette configuration!
       #
        set dfilter 0 permit 0/0 0/0
       #
       # autoriser les paquets ident
       #
        set ifilter 0 permit tcp dst eq 113
        set ofilter 0 permit tcp src eq 113
       #
       # autoriser les connexions telnet à l'Internet
       #
        set ifilter 1 permit tcp src eq 23 estab
        set ofilter 1 permit tcp dst eq 23
       #
       # autoriser l'accès ftp à l'Internet
       #
        set ifilter 2 permit tcp src eq 21 estab
        set ofilter 2 permit tcp dst eq 21
        set ifilter 3 permit tcp src eq 20 dst gt 1023
        set ofilter 3 permit tcp dst eq 20
       #
       # autoriser les requêtes DNS
       #
        set ifilter 4 permit udp src eq 53
        set ofilter 4 permit udp dst eq 53
       #
       # autoriser les transferts de zone DNS
       #
        set ifilter 5 permit tcp src eq 53
        set ofilter 5 permit tcp dst eq 53
       #
       # autoriser l'accès depuis/vers le réseau local
       #
        set ifilter 6 permit 0/0 192.168.1.0/24
        set ofilter 6 permit 192.168.1.0/24 0/0
       #
       # autoriser les réponses au ping et traceroute
       #
        set ifilter 7 permit icmp
        set ofilter 7 permit icmp
        set ifilter 8 permit udp dst gt 33433
        set ofilter 9 permit udp dst gt 33433
       #
       # autoriser cvsup
       #
        set ifilter 9 permit tcp src eq 5998
        set ofilter 9 permit tcp dst eq 5998
        set ifilter 10 permit tcp src eq 5999
        set ofilter 10 permit tcp dst eq 5999
       #
       # autoriser NTP pour la synchronization des horloges
       #
        set ifilter 11 permit tcp src eq 123 dst eq 123
        set ofilter 11 permit tcp src eq 123 dst eq 123
        set ifilter 12 permit udp src eq 123 dst eq 123
        set ofilter 12 permit udp src eq 123 dst eq 123
       #
       # SMTP serait une bonne idée!
       #
        set ifilter 13 permit tcp src eq 25
        set ofilter 13 permit tcp dst eq 25
       #
       #
       # nous utilisons beaucoup whois, donc nous le laissons passer
       #
        set ifilter 14 permit tcp src eq 43
        set ofilter 14 permit tcp dst eq 43
        set ifilter 15 permit udp src eq 43
        set ofilter 15 permit udp dst eq 43
       #
       # si aucune des conditions ci-dessus n'est remplie, le paquet est refusé
       #-------


Il peut y avoir jusqu'à vingt règles dans chaque classe de filtres. Dans chaque classe, les règles sont numérotées séquentiellement de 0 à 20, mais aucune règle dans une classe particulière n'est appliquée tant que la règle “0” n'est pas définie!

Si vous décidez de ne pas utiliser de règles de filtrage dans votre configuration du programme ppp, alors TOUT le trafic de/vers votre système sera accepté lorsqu'il est connecté à votre fournisseur d'accès.

Si vous décidez d'appliquer des règles de filtrages, ajoutez les lignes précédentes à votre fichier /etc/ppp/ppp.conf dans l'une des sections “default”, “demand” ou “interactive” (ou à toutes - c'est à vous de voir).

Ce document, ainsi que d'autres peut être téléchargé sur ftp.FreeBSD.org/pub/FreeBSD/doc/.

Pour toutes questions à propos de FreeBSD, lisez la documentation avant de contacter <questions@FreeBSD.org>.
Pour les questions sur cette documentation, contactez <doc@FreeBSD.org>.