Pédants Principes PPP
Précédent |  |

# 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:

- `/etc/namedb/named.boot`

- `/etc/namedb/named.root`

- `/etc/namedb/mydomain.db`

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`:

- `afilter` - filtre compteur d'accès (ou ``Keep Alive'' - garder en vie)

  Ils définissent quels événements sont ignorés par l'instruction `set timeout=`.

- `dfilter` - filtre d'appel

  Ils définissent quels événements sont ignorés par `ppp` en mode connexion à la demande.

- `ifilter` - filtre d'entrée

  Ils définissent quels paquets entrants sont acceptés ou refusés par le programme `ppp`.

- `ofilter` - filtre de sortie

  Ils définissent quels paquets sortants sont acceptés ou refusés par le 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).

Précédent | Sommaire |
Tester le réseau |  |

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>.