Présentation des serveurs DNS DHCP FTP

Transcription

Présentation des serveurs DNS DHCP FTP
Formation CAFA – GNU/Linux
EMOP Réseaux
FORMATION CAFA -- EMOP -- GNU/LINUX
Présentation des
serveurs
DNS
DHCP
FTP
sur les distributions
Debian Woody 3.0
Mandrake Linux 9.1/9.2
Formateur : Olivier DARTOIS
Olivier DARTOIS
[email protected]
Page 1
Formation CAFA – GNU/Linux
EMOP Réseaux
Sommaire
1. Introduction et pré-requis........................................................................................................ 3
2. Les commandes de gestion des paquetages.............................................................................4
2.1 Les commandes « apt » et « dpkg » sous Debian............................................................. 4
2.2 Les commandes « rpm » et « urpmi » sous Mandrake......................................................4
2.3 Installation des paquetages supplémentaires.................................................................... 5
3. Le serveur DNS Bind (Bekerley Internet Name Daemon)......................................................6
3.1 Présentation...................................................................................................................... 6
3.2 Installation du serveur Bind 9 sous Debian 3.0................................................................ 6
3.3 Installation du serveur Bind 9 sous Mandrake 9.1........................................................... 7
3.4 Modifification du fichier named.conf et création des fichiers de zones...........................7
3.5 Tests et configuration des clients................................................................................... 10
3.6 Utilisation de Webmin avec Bind.................................................................................. 10
3.7 Extensions possibles et liens.......................................................................................... 11
4. Le serveur DHCP de l'ISC (Internet Software Consortium)................................................. 12
4.1 Présentation.................................................................................................................... 12
4.2 Installation du serveur DHCP sous Debian 3.0.............................................................. 12
4.3 Installation du serveur DHCP sous Mandrake 9.1......................................................... 12
4.4 Création du fichier dhcpd.conf....................................................................................... 12
4.5 Tests et configurations des clients..................................................................................14
4.6 Utilisation de Webmin avec ISC DHCP........................................................................ 14
4.7 Extensions possibles et liens.......................................................................................... 14
5. Le serveur FTP ProFTP.........................................................................................................14
5.1 Présentation.................................................................................................................... 14
5.2 Installation du serveur ProFTP sous Debian 3.0............................................................ 14
5.3 Installation du serveur ProFTP sous Mandrake 9.1........................................................15
5.4 Création de fichier proftpd.conf..................................................................................... 15
5.5 Tests du serveur ProFTP................................................................................................ 18
5.6 Utilisation de Webmin avec ProFTPd............................................................................19
5.7 Extensions possibles et liens.......................................................................................... 19
6. Conclusion............................................................................................................................ 19
Olivier DARTOIS
Page 2
Formation CAFA – GNU/Linux
EMOP Réseaux
1. Introduction et pré-requis
Nous allons étudier la mise en oeuvre de trois services :
•
•
•
le service DNS (Domain Name System) avec le logiciel Bind,
le service DHCP (Dynamic Host Configuration Protocol) avec le logiciel de l'Internet
Software Consorcium ISC DHCP,
le service FTP (File Transfert Protocol) avec le logiciel ProFTP.
Nous installerons ces services sur deux types de configuration :
•
•
sur des ordinateurs installés avec une distribution Debian 3.0 Woody,
sur des ordinateurs installés avec une distribution Mandrake Linux 9.1/9.2.
Les ordinateurs seront pré-installés avec ces distributions à partir d'Internet. Les distributions
seront installés en version de « base », c'est-à-dire avec le minimum de paquetages.
L'installation du système X-Window et d'un gestionnaire de fenêtre n'est absolument pas
nécessaire mais peut faciliter la configuration (éditeur en mode graphique, gestionnaire de
fichiers, etc.)1
Vous pouvez rester en mode texte et utiliser l'éditeur de texte Vi pour saisir les fichiers de
configuration. En effet, seul un éditeur de texte et un interpréteur de commandes sont
nécessaires.
Après l'installation des distributions, nous obtenons l'occupation disque suivante :
•
•
pour la debian : 121 Mb (sans système X-Window),
pour la mandrake : 163 Mb (sans système X-Window).
Nous installerons donc manuellement les paquetages nécessaire à la formation à la
« demande ».
Les commandes de bases du système GNU/Linux (cd, mkdir, ls, more, etc.), l'arborescence, la
gestion des droits sont considérés comme acquis pour cette formation.
Nous installerons aussi un serveur ssh ainsi que webmin. Nous pourrons donc contrôler à
distance notre serveur soit :
•
•
en utilisant un client ssh sous GNU/Linux ou Putty sous Windows,
un navigateur web (Mozilla, Konqueror ou InternetExplorer).
1 Pour la mandrake, l'installation s'effectue à partir de la disquette d'amorçage network.img (attention 68Mo de
ram minimum pour ce type d'installation) puis se poursuit à partir d'Internet. Il faut sélectionner l'installation
minimum avec le support de urpmi. Pour la Debian, l'installation s'effectue à partir du CD1 puis se poursuit
sur Internet. Il suffit de ne prendre aucun paquetage pour obtenir l'installation minimum.
Les mises à jour de sécurité, pour ces deux distributions, sont faites par le biais d'Internet lors de l'installation.
Olivier DARTOIS
Page 3
Formation CAFA – GNU/Linux
EMOP Réseaux
2. Les commandes de gestion des paquetages
Nous allons installer les paquetages nécessaire à la demande afin de ne pas surcharger notre
système. Pour cela nous allons utiliser le système de gestion des paquetages de chaque
distribution.
•
•
pour la debian, les paquetages portent l'extension « deb » et seront gérés par les
commandes « dpkg » et « apt »,
pour la mandrake, les paquetages portent l'extension « rpm » et seront gérés par les
commandes « rpm » et « urpmi ».
Nous allons détailler l'utilisation de ces commandes pour chacunes des distributions.
2.1 Les commandes « apt » et « dpkg » sous Debian
La distribution maintient une base de données sur les paquetages installés/installables. La
commande apt est configuré par apt.conf situé dans /etc/apt et utilise le fichier
sources.list qui indique ou télécharger des paquetages supplémentaires (pour plus
d'information, consulter la page de manuel : man sources.list).
Après toute modification du fichier sources.list, il faut mettre à jour la base de données
avec la commande : apt-get update.
•
•
•
•
•
•
•
•
•
Lister les paquetages installés : dpkg -l "*"|more ou dpkg -l "x*"|more pour
lister tous les paquetages commencant par la lettre « x »,
Afficher la description d'un paquetage : apt-cache show nom_paquetage,
Rechercher un paquetage : apt-cache search "ce_que_vous_voulez",
Installer un paquetage : apt-get install nom_paquetage,
Réinstaller ou régler un problème d'installation : apt-get install --reinstall
nom_paquetage ou apt-get -f install,
Retirer un paquetage : apt-get remove nom_paquetage,
Retirer un paquetage et tous les fichiers de configuration : apt-get remove
--purge nom_paquetage,
Mise à jour de la distribution (par exemple pour des mises à jour de sécurité) :
apt-get update suivi de apt-get upgrade,
Faire le ménage des paquetages téléchargés dans /var/cache/apt/archives et /
var/cache/apt/archives/partial : apt-get clean.
N'oubliez pas de consulter les pages de manuel : man dpkg, man apt-get, man aptcache, etc... Toutes les commandes précédentes doivent être utilisées en tant qu'utilisateur
« root ».
Une documentation simple sur la gestion des paquetages, en français, de Nicolas Boos sur
http://www.debianworld.org/Docs_admin_apt.php
2.2 Les commandes « rpm » et « urpmi » sous Mandrake
La commande urpmi et ses dérivés utilisent le fichier /etc/urpmi/urpmi.cfg pour
installer des paquetages supplémentaires.
Après toute modification du fichier urpmi.cfg, il faut mettre à jour la base de données avec
la commande : urpmi.update -a.
Olivier DARTOIS
Page 4
Formation CAFA – GNU/Linux
•
•
•
•
•
•
•
•
EMOP Réseaux
Lister les paquetages installés : rpm -qa|more ou rpm -qa|grep x pour lister tous
les paquetages contenant la lettre « x »,
Afficher la description d'un paquetage : rpm -qi nom_paquetage,
Rechercher un paquetage : urpmq ce_que_vous_voulez2,
Installer un paquetage : urpmi nom_paquetage,
Retirer un paquetage : urpme nom_paquetage,
Rechercher un fichier dans un paquetage : urpmf nom_fichier,
Mise à jour de la distribution (par exemple pour des mises à jour de sécurité) :
urpmi.update -a suivi de urpmi --auto-select,
Faire le ménage des paquetages téléchargés dans /var/cache/urpmi/rpms :
urpmi --clean.
N'oubliez pas de consulter les pages de manuel : man urpmi, man urmpq, man urpmf,
etc... Toutes les commandes précédentes doivent être utilisées en tant qu'utilisateur « root ».
Une documentation simple sur la gestion des paquetages, en anglais, de JW Robinson sur
http://www.dunelm.org.uk/.
2.3 Installation des paquetages supplémentaires
Nous allons installer le serveur ssh et webmin.
Pour la distribution debian, vous tapez :
root@tux#apt-get install ssh
root@tux#apt-get install webmin webmin-core
Pour la distribution mandrake, vous tapez :
root@tux#urpmi sshd
root@tux#/etc/init.d/sshd start
root@tux#urpmi webmin
root@tux#/etc/init.d/webmin start
Répondez aux différentes questions qui pourrait vous être posé, en particulier avec la debian.
Vous pouvez tester le serveur ssh, par exemple sous Windows avec Putty. Connectez-vous en
tant qu'utilisateur « root ».
Toujours depuis votre machine Windows, connectez-vous sur le serveur webmin. Tapez
l'adresse suivante dans votre navigateur : https://adresse_ip_serveur:10000/ puis identifiezvous en tant qu'utilisateur « root ».
Sous debian, une version minimale de webmin est installé, nous rajouterons par la suite les
modules manquant.
2 Vous devez saisir un mot sans espace, ni guillemet.
Olivier DARTOIS
Page 5
Formation CAFA – GNU/Linux
EMOP Réseaux
3. Le serveur DNS Bind (Bekerley Internet Name Daemon)
Nous utiliserons la version 9 de Bind. Les fichiers de configurations données en exemple sont
issus d'une configuration utilisant Bind 8. Ils doivent fonctionner tels quels mais n'ont jamais
été testé sur le long terme.
Les principales différences entre ces deux versions de Bind sont relatives à la sécurité, en
particulier les transferts de zones entre dns primaire et secondaire.
3.1 Présentation
Un serveur DNS est un serveur qui transforme une adresse du type http://www.ac-limoges.fr
en adresse IP 195.83.100.1. Le serveur DNS indique aussi le serveur SMTP (serveur de
messagerie) qui est autorisé à recevoir les messages pour votre domaine (vous écrivez à
[email protected] et pas à [email protected]).
La première raison d'avoir un serveur DNS dans un établissement est de disposer d'un serveur
cache DNS afin d'accélérer les requêtes.
La seconde raison, la plus intéressante pour nous, est de simplifier l'adressage des machines
internes à l'établissement. Nous allons travailler avec le domaine fictif « monetab »3, ainsi les
élèves taperont www.monetab pour accéder au serveur web de l'établissement, ftp.monetab
pour accéder au serveur ftp, etc... plutôt que de retenir des adresses IP.
3.2 Installation du serveur Bind 9 sous Debian 3.0
Dans un shell, installez les paquetages bind9, dnsutils, bind9doc :
root@tux# apt-get install bind9 dnsutils bind9-doc
Le paquetage bind9 installe le serveur named lui-même, dnsutils les utilitaires de tests du
serveur de nom (dig en particulier), bind9-doc la documentation du serveur.
Le fichier de configuration de named est /etc/bind/named.conf.
La documentation se trouve dans /usr/share/doc/bind/.
Les fichiers de configuration par défaut sont installés dans /etc/bind/ :
•
•
•
•
•
named.conf
db.root
db.local
db.127
db.255 et db.0
: le fichier de configuration du serveur DNS,
: contient les adresses IP des serveurs racines,
: fichier de zone pour l'interface de boucle local (loopback),
: fichier pour la résolution inverse de l'interface de boucle local,
: fichier optionnel pour être conforme à la RFC (optionnel).
Nous ne modifierons que le fichier named.conf pour l'adapter à nos besoins.
3 Nous n'utiliserons pas de nom de domaine « complet », par exemple monetab.fr. En effet, un domaine n'existe
au sens légal que s'il a été déposé. De plus, le rectorat a prévu le nommage des établissements comme un sous
domaine de ac-limoges.fr.
Olivier DARTOIS
Page 6
Formation CAFA – GNU/Linux
EMOP Réseaux
3.3 Installation du serveur Bind 9 sous Mandrake 9.1
Dans un shell, installez les paquetages bind, caching-nameserver:
root@tux#urpmi bind caching-nameserver
Le paquetage bind installe le serveur named lui-même et les utilitaires de tests du serveur de
nom (dig en particulier), caching-nameserver le fichier named.conf pour réaliser un cache
DNS.
Le fichier de configuration de named est /etc/named.conf.
La documentation se trouve dans /usr/share/doc/bind-9.2.2/.
Les fichiers de configuration par défaut sont installés dans /var/named/ :
•
•
named.ca
named.local
: contient les adresses IP des serveurs racines,
: fichier de zone pour l'interface de boucle local (loopback).
3.4 Modifification du fichier named.conf et création des fichiers de zones
Nous allons nous placer dans le cas d'un établissement qui aura comme nom de domaine
monetab. L'adressage IP sera en 192.168.0.* (dans l'académie 10.187.*.*). Le serveur dns
sera aussi serveur cache dns4.
Dans cet établissement, nous aurons :
•
•
un serveur dns avec le nom ns.monetab,
un serveur ftp avec le nom ftp.monetab.
Tous ces services seront hébergés sur une seule et même machine qui portera le nom
monserveur.monetab. L'adresse IP de cette machine sera 192.168.0.1.
Un serveur web sera hébergé sur une machine portant le nom tux.monetab. L'adresse IP de
cette machine sera 192.168.0.2. Cette machine aura comme alias www.monetab. Les
machines clientes s'étendront de 192.168.0.31 à 192.168.0.244.
Nous allons donc créer deux fichiers de zones :
•
•
monetab
monetab.rev
nom de la machine.
: fichier qui indique la correspondance nom machine adresse IP,
: fichier de zone inverse qui fait correspondre l'adresse IP avec le
Vous créerez ces fichiers dans les répertoires adéquates pour chaque distribution. Nous allons
examiner le fichier de configuration named.conf de la distribution debian, le commenter et
rajouter nos modifications. Le fichier de configuration de la mandrake est quasiment identique
sauf qu'il intègre la clé de l'utilitaire rndc et les chemins des fichiers de zones sont relatifs à
/var/named.
N'oubliez pas de consulter l'aide en ligne : man named.conf
4 Le cache du serveur dns n'existe qu'en mémoire. Si vous arrêtez le service named (ou éteignez la machine),
vous perdez toutes les correspondances noms-adresse ip qu'a pu enregistrer le serveur.
Olivier DARTOIS
Page 7
Formation CAFA – GNU/Linux
// Fichier exemple named.conf
options {
directory "/var/cache/bind";
forward first;
forwarders {
193.252.19.3;
193.252.19.4;
};
};
// --- Fichier tronqué ---
EMOP Réseaux
Les signes « // », « # », « /*.....*/ » introduisent un
commentaire.
options gère les options globales du serveur.
directory indique le chemin par défaut pour les
fichiers de zones (attention debian différent de
mandrake).
forward indique que les requêtes dns peuvent être
résolus par les dns de votre fai. Ceux-ci sont indiqués
avec forwarders et les adresses IP des dns (ici ceux
de wanadoo).
};
zone définit les options s'appliquant à des zones
particulières. Ici la zone « . » définit les serveurs
racines d'Internet. type hint est spécifique à cette
zone, c'est l'endroit pour débuter les recherches. file
indique le fichier qui contient les renseignements sur
cette zone.
// Les zones locales
La zone localhost doit être défini pour le réseau
loopback.
// Zone pour les serveur racines d'Internet
zone "." {
type hint;
file "/etc/bind/db.root";
zone "localhost" {
type master;
file "/etc/bind/db.local";
type master déclare ce serveur comme étant un
serveur primaire. Si vous avez un serveur secondaire, il
faudra mettre type slave.
};
zone "127.in-addr.arpa" {
type master;
La zone « 127.in-addr.arpa » définit la zone de
résolution inverse pour le réseau de boucle locale
(loopback).
file "/etc/bind/db.127";
};
// --- Fichier tronqué --// Rajout de nos zones
zone "monetab" {
type master;
file "/etc/bind/monetab";
notify no;
};
zone "0.168.192.in-addr.arpa" {
type master;
file "/etc/bind/monetab.rev";
notify no;
};
La zone « monetab » définit la zone de résolution
directe pour l'établissement. Le fichier contenant les
renseignements de cette zone sera
« /etc/bind/monetab » en chemin absolu.
Le paramètre notify indique si le serveur bind
primaire doit informer le serveur secondaire des
changements de cette zone. Pour l'instant, nous n'avons
qu'un serveur primaire donc l'option est à no.
La zone « 0.168.192.in-addr.arpa » permet la
résolution inverse pour l'établissement.
Remarque importante : si votre établissement suit le
plan d'adressage du rectorat (10.187.XX.XX), vous
avez donc une adresse de classe A privé, la déclaration
se fera donc comme suit et ceci quelque soit votre
masque de sous-réseau :
zone "10.in-addr.arpa" { etc...
Pour récupérer le fichier des serveurs de noms racine d'Internet, connectez-vous sur
ftp://ftp.rs.internic.net/domain et rapatriez le fichier named.root.
puis remplacer l'ancien fichier (db.root ou named.ca) par celui que vous venez de télécharger
en le renommant.
Olivier DARTOIS
Page 8
Formation CAFA – GNU/Linux
EMOP Réseaux
Il faut maintenant créer les deux fichiers de zones :
$TTL 3D
; Fichier de configuration de la zone monetab
; Nom du fichier : monetab
@ IN
SOA
monserveur.monetab. postmaster.monetab. (
2003061401
; numéro de série YYYYMMDDNN
8H
; rafraichissment toutes les 8 heures
2H
; nouvel essai toutes les 2 heures
1W
; expiration dans 1 semaine
1D
; temps de vie minimal 1 journée
)
La ligne $TTL3D est obligatoire avec bind9 et indique
le temps maximum qu'il peut garder en cache ce fichier
(ici 3 jours = 3Day).
Les commentaires commencent par « ; ».
Normalement les valeurs n'ont pas à être changé. Vous
incrémentez le numéro de série (NN) à chaque
modification pour que les autres serveurs de noms
soient informés.
@ indique que l'on parle de cet ordinateur.
@
IN
A
192.168.0.1
@
IN
NS
monserveur
@
IN
NS
monserveur.monetab.
localhost
IN
A
127.0.0.1
monserveur
IN
A
192.168.0.1
ns
CNAME
monserveur
ftp
CNAME
monserveur
tux
IN
192.168.0.2
www
CNAME
A
; Fichier de configuration de la zone inverse
; Nom du fichier : monetab.rev
SOA
On déclare ensuite les noms de machine et leur adresse
IP. Les alias sont déclarés avec la directive CNAME. Un
alias ne doit jamais pointer sur un autre alias mais sur
la machine d'origine.
tux
$TTL 3D
@ IN
On indique l'adresse IP de cette machine et ensuite le
nom du serveur de nom. De ces trois lignes, seule la
dernière est vraiment nécessaire.
monserveur.monetab. postmaster.monetab. (
2003061401
8H
Nous renseignons la zone 0.168.192 donc les pointeurs
(PTR) se réfèrrent à cette adresse.
Nous aurons donc le dernier octet de l'adresse
correspondant à chaque machine et son nom complet
terminé par un point.
Remarque importante : si vous avez un adressage en
10.187.XX.XX, la déclaration inverse des adresses IP
de machines se fera de la manière suivante (par exe.
Pour 10.187.36.1) :
2H
1W
1D )
1.36.187
@
IN
NS
1
IN
PTR
monserveur.monetab.
2
IN
PTR
tux.monetab.
IN
PTR
monserveur.monetab.
monserveur.monetab.
Modifiez le fichier /etc/resolv.conf de la manière suivante :
search monetab
nameserver 127.0.0.1
Vérifiez que dans le fichier /etc/nsswitch.conf, vous ayez une ligne du type :
hosts: files dns
Vous pouvez alors lancer le serveur dns avec la commande :
Olivier DARTOIS
Page 9
Formation CAFA – GNU/Linux
EMOP Réseaux
root@tux#/etc/init.d/{named|bind9} start
(ou si le serveur était déjà lancer /etc/init.d/named stop puis
/etc/init.d/named start). Ceci n'est valable qu'au premier lancement, ensuite vous
pouvez (devez ??) utiliser rndc (man rndc) avec la commande suivante :
rndc {start|stop|reload}
Pour savoir si le serveur dns est bien actif, vous visualisez les processus avec le nom
« named », s'il n'apparaît pas (et même s'il apparaît d'ailleurs), visualisez les journaux
systèmes :
root@tux#ps ax|grep named
root@tux#tail /var/log/messages
root@tux#tail /var/log/syslog
root@tux#tail /var/log/daemons/info
3.5 Tests et configuration des clients
Depuis votre serveur linux, tapez :
root@tux#ping
root@tux#ping
root@tux#ping
root@tux#ping
root@tux#ping
ns
ns.monetab
ftp.monetab
monserveur
www
La dernière ligne ne doit normalement pas provoquer de réponse de la machine concernée vu
qu'elle n'existe pas. Par contre la résolution de nom doit fonctionner.
Pour tester plus finement, utilisez l'utilitaire dig (man dig) :
root@tux#dig
root@tux#dig
root@tux#dig
root@tux#dig
monetab. NS
ftp.monetab.
-x 192.168.0.2
www.monetab. ANY
Configurez votre poste windows pour qu'il utilise comme serveur dns le serveur que vous
venez de configurer. Puis faites quelques tests avec la commande ping.
Si vous fixez l'adresse IP de la machine cliente à 192.168.0.31. Modifiez les fichiers de
configuration pour l'enregistrer sous le nom « clientwin » et comme alias « crosoft » (n'oubliez
pas la zone de résolution inverse), relancez named puis testez à nouveau (résolution directe et
inverse). Sous Windows NT/XP, vous disposez de la commande nslookup.
3.6 Utilisation de Webmin avec Bind
Euh, y a pas d'interface graphique pour gérer tout çà !!! Si, vous pouvez utiliser Webmin et
son module de gestion pour Bind8+.
Sous debian, il faut installer le module correspondant:
Olivier DARTOIS
Page 10
Formation CAFA – GNU/Linux
EMOP Réseaux
root@tux#apt-get install webmin-bind
Sous mandrake, le module est déjà disponible. Connectez-vous à webmin depuis un
navigateur, identifiez-vous en tant que root puis cliquez sur l'onglet serveur puis sur l'icône
bind8. Quasiment toutes les opérations sont faisables depuis l'interface. Pour ma part, je
n'utilise que les possibilités d'ajout de machines et de redémarrage du serveur.
Vous cliquez alors sur le nom de votre zone (ici monetab) enfin vous cliquez sur l'icône « A »
(Adresse) et vous complétez les champs. Vérifiez que la case « Mettre à jour l'adresse
inverse » soit sur « Oui » pour que la zone de résolution inverse soit mise à jour. Enfin cliquez
sur le bouton « Créer ».
Il faut ensuite relancez bind avec le bouton « Appliquer tous les changements » sur la page
d'accueil du module bind.
3.7 Extensions possibles et liens
Vous pouvez monter un serveur dns secondaire qui sera esclave du serveur dns primaire.
Vous pouvez aussi « chrooter » le démon named. Votre serveur sera alors plus difficile à
attaquer même si l'on découvre une faille dans bind. Vous pouvez configurer le serveur dns
avec des ACL pour qu'il ne réponde qu'à certaines adresses IP. Enfin vous pouvez masquer le
nom du type du serveur dns.
Quelques commandes à tester et à commenter :
root@tux#dig ac-limoges.fr NS
root@tux#dig ac-limoges.fr MX
root@tux#dig @ac-limoges.fr version.bind text chaos
Quelques liens :
Bind : http://www.isc.org/products/BIND
Un guide de l'AFNIC (obsolète) : http://www.nic.fr/guides/
Le DNS-HOWTO : http://www.tldp.org/HOWTO/DNS-HOWTO.html
Une présentation complète du DNS Bind : http://www.dns.net/dnsrd/
Le livre DNS and BIND chez O'Reilly
De plus, j'ai utilisé :
Hors-série Linux France Magazine Février/Mars 2002 (Complétez l'installation de votre
serveur Internet), article « Monter un serveur DNS ».
Hors-série MISC N°2 : Sécuriser un serveur DNS Bind.
La documentation de Philippe CHADEFAUX sur :
http://www.ac-creteil.fr/reseaux/systemes/linux/outils-tcp-ip/Linux-dns.html
Olivier DARTOIS
Page 11
Formation CAFA – GNU/Linux
EMOP Réseaux
4.Le serveur DHCP de l'ISC (Internet Software Consortium)
Nous allons utiliser la version 3 du serveur DHCP (Dynamic Host Configuration Protocol).
4.1 Présentation
Un serveur DHCP permet de délivrer de manière automatique une adresse IP valide sur le
réseau privé de l'établissement. De plus, il permet aussi de fournir la passerelle, les serveurs
de noms, le nom de domaine, le serveur WINS si vous utilisez SAMBA en tant que serveur
NT, etc...
Il peut aussi délivrer de manière « statique » une adresse IP pour une (ou plusieurs) machine
(s) en fonction de l'adresse MAC (adresse pseudo-unique sur 48bit).
4.2 Installation du serveur DHCP sous Debian 3.0
Dans un shell, installez le paquetages dhcp3-server :
root@tux# apt-get install dhcp3-server
Le fichier de configuration de dhcpd est /etc/dhcp3/dhcpd.conf.
Le fichier d'inscription des clients est /var/lib/dhcp3/dhcpd.leases.
La documentation se trouve dans /usr/share/doc/dhcp3-server/.
Pour indiquer sur quel interface réseau (eth0, eth1, etc.), le serveur dhcp doit répondre, éditez
et modifiez le fichier /etc/default/dhcp3-server.
Le démon dhcp se gère avec les commandes :
/etc/init.d/dhcp3-server {start|stop|restart|status}.
4.3 Installation du serveur DHCP sous Mandrake 9.1
Dans un shell, installez les paquetages dhcp-server :
root@tux#urpmi dhcp-server
Le fichier de configuration de démonstration de dhcpd est /etc/dhcpd.conf.sample.
Le fichier d'inscription des clients est /var/lib/dhcp/dhcpd.leases.
La documentation se trouve dans /usr/share/doc/dhcp-common-3.0/.
Pour indiquer sur quel interface réseau (eth0, eth1, etc.), le serveur dhcp doit répondre, éditez
le fichier /etc/init.d/dhcpd et modifiez la ligne INTERFACES="".
Le démon dhcp se gère avec les commandes :
/etc/init.d/dhcpd {start|stop|restart|condrestart|status}.
4.4 Création du fichier dhcpd.conf
Vous pouvez déjà regarder les fichiers exemples de la mandrake ou de la debian. Prenons
comme exemple celui de la debian :
root@tux#more /etc/dhcpd.conf
Nous allons nous en inspirer pour créer notre fichier. Si nous prenons notre réseau précédent
comme exemple, les machines clientes s'étendent de 192.168.0.31 à 192.168.0.244. Le serveur
dns sera en 192.168.0.1 (et nous passerons par la même occasion le dns primaire de wanado),
Olivier DARTOIS
Page 12
Formation CAFA – GNU/Linux
EMOP Réseaux
la passerelle en 192.168.0.254, le nom de domaine est « monetab » et le masque de sousréseau 255.255.255.0.
Cela nous donne le fichier dhcpd.conf suivant :
ddns-update-style none;
subnet 192.168.0.0 netmask 255.255.255.0 {
option routers 192.168.0.254;
option broadcast-address 192.168.0.255;
option domain-name "monetab";
option domain-name-servers ns.nometab,
193.252.19.3;
Les commentaires commencent avec le signe « # ».
ddns-update-style permet de faire du dns
dynamique avec bind. Ici vous ne vous servirez pas de
cette fonction (paramètre none).
subnet et netmask indique pour quel réseau vous
souhaitez délivrer des adresses IP (attention, vous
mettez l'adresse de réseau 192.168.0.0).
Les options sont précédées du mot clé option:
•
routers indique l'adresse de la passerelle,
range 192.168.0.31 192.168.0.244;
•
broadcast-address l'adresse de diffusion,
default-lease-time 21600;
•
domain-name le nom de domaine comme précisé
dans le serveur dns,
•
domain-name-servers les noms ou les
adresses IP des serveurs dns (s'il y a plusieurs
serveurs dns, séparez-les par une virgule).
max-lease-time 43200;
# Fixer une adresse IP à une machine
host tux {
hardware ethernet 12:34:56:78:AB:CD;
fixed-address 192.168.0.2;
option domain-name-servers 193.252.19.4;
}
}
range indique la plage d'adresse IP délivré par le
serveur DHCP.
default-lease-time et max-lease-time
indiquent respectivement le temps de valadité de
l'adresse IP lorsque le client n'a pas demandé une durée
spécifique et le temps maximum de validité d'une
adresse IP (la demande de durée de la part du client ne
peut pas dépasser cette durée).
Si vous avez un serveur NT/Samba qui fait office de serveur WINS, vous rajouterez l'option
option netbios-name-servers adresse_ip.
Si vous désirez attribuer toujours la même adresse à une machine, vous rajoutez une section
host suivi du nom dns de la machine (ce nom n'a rien à voir avec le nom netbios de la
machine). Il faut alors relever l'adresse MAC de la carte (ifconfig sous GNU/Linux,
ipconfig sous WinNT/XP, winipcfg sous Win9X) puis indiquez l'adresse IP désiré avec
le paramètre fixed-address.
Vous pouvez rajouter des paramètres spécifiques pour un hôte qui viendront écraser les
paramètres globaux. Dans notre exemple, nous changeons le serveur dns (dns secondaire de
wanadoo).
Vous devez redémarrer le serveur DHCP. Puis vérifiez son bon lancement :
root@tux#ps ax|grep dhcp
root@tux#tail /var/log/messages
root@tux#tail /var/log/syslog
root@tux#tail /var/log/daemons/info
Olivier DARTOIS
Page 13
Formation CAFA – GNU/Linux
EMOP Réseaux
4.5 Tests et configurations des clients
Sous mandrake, vous pouvez suivre votre serveur dhcp avec la commande dhcpstatus.
Configurez votre client windows pour qu'il obtienne une adresse IP automatiquement.
Visualisez le fichier /var/lib/dhcp/dhcp-leases du coté GNU/Linux et visualisez le bail obtenu
du coté Windows (ipconfig /all sous WinNT/XP ou winipcfg sous Win9X).
4.6 Utilisation de Webmin avec ISC DHCP
Sous debian, le module de gestion de dhcp est valable pour la version 2. Nous allons donc
mettre à jour notre distribution Woody pour qu'elle supporte une version plus récente de
Webmin. Editez le fichier /etc/apt/sources.list et rajoutez la ligne suivante :
deb http://www.fs.tum.de/~bunk/debian woody/bunk-1 main contrib non-free
ensuite tapez les commandes suivantes :
root@tux#apt-get update
root@tux#apt-get upgrade
root@tux#apt-get install webmin-dhcp
Lors de la mise à jour des paquetages, il vous sera posé différentes questions, validez
systématiquement avec la touche « Entrée ».
Sous mandrake, le module est déjà disponible. Connectez-vous à webmin depuis un
navigateur, identifiez-vous en tant que root puis cliquez sur l'onglet serveur puis sur l'icône
serveur DHCP. Quasiment toutes les opérations sont faisables depuis l'interface.
Sous debian, il faut adapter légèrement les emplacements des fichiers pour l'exécutable dhcpd
et dhcpd.conf. Lorsque vous êtes dans le module de gestion du DHCP, cliquez sur le lien
« Configuration du module » puis modifiez les lignes « Fichier de configuration du serveur
DHCP » en « /etc/dhcp3/dhcpd.conf » et « Exécutable du serveur DHCP » en
« /usr/sbin/dhcpd3-server ». N'oubliez de sauvegarder votre configuration en cliquant sur le
bouton « Sauvegarder ».
Vous cliquez sur l'icône de votre réseau pour en éditer les caractéristiques (modification de
l'adresse du réseau, du masque, de la plage d'adresses disponibles,...). Si vous souhaitez
rajouter des machines avec un adressage statique, cliquez sur « Ajouter une nouvelle
machine » puis éditez les champs « nom de la machine », « adresse matériel (adresse MAC) »,
« adresse IP fixe » et « Machine assignée à sous-réseau ».
4.7 Extensions possibles et liens
La suite logique de cette présentation serait de lier le serveur dns et dhcp pour réaliser un
serveur dns dynamique. Des exemples de cette configuration sont présentés dans les deux
distributions.
Quelques liens :
ISC DHCP : http://www.isc.org/products/DHCP
Le DHCP-HOWTO : http://www.tldp.org/HOWTO/mini/DHCP/index.html
Olivier DARTOIS
Page 14
Formation CAFA – GNU/Linux
EMOP Réseaux
5. Le serveur FTP ProFTP
Nous allons utiliser la version 1.2.5 de ProFTP.
5.1 Présentation
Le service FTP est très souvent mis à la disposition des utilisateurs pour faire des
téléchargements en « download » et moins souvent en « upload ». Cependant, il est plus facile
de mettre en place un répertoire de téléchargement de manière sécurisé avec un serveur FTP
qu'avec un serveur web et php. Il permet aussi de gérer plus finement l'occupation de la bande
passante.
5.2 Installation du serveur ProFTP sous Debian 3.0
Dans un shell, installez les paquetages proftpd proftpd-doc :
root@tux# apt-get install proftpd proftpd-doc
Mettre le serveur en mode « standalone », vous pouvez avoir un accès anonyme au serveur
FTP en répondant par l'affirmative aux questions de l'installeur debian. Demandez à
l'installeur de modifier le fichier proftpd.conf pour nous.
Le fichier de configuration de ProFTP est /etc/proftpd.conf.
La documentation se trouve dans /usr/share/doc/proftpd-doc/.
Le démon dhcp se gère avec les commandes :
/etc/init.d/proftpd {start|stop|restart|reload|status}.
Si vous avez activé l'accès ftp anonyme, le répertoire de cet accès sera dans /home/ftp.
5.3 Installation du serveur ProFTP sous Mandrake 9.1
Dans un shell, installez les paquetages proftpd proftpd-anonymous :
root@tux#urpmi proftpd proftpd-anonymous
Les fichiers de configuration de ProFTP sont /etc/proftpd.conf et /etc/proftpdanonymous.conf.
La documentation se trouve dans /usr/share/doc/proftpd/.
Le démon dhcp se gère avec les commandes :
/etc/init.d/proftpd {start|stop|restart|reload|status}.
Si vous avez activé l'accès ftp anonyme, le répertoire de cet accès sera dans /var/ftp.
5.4 Création de fichier proftpd.conf
Tout d'abord, il faut vérifier l'existence du fichier /etc/ftpusers. Tous les comptes listés
dans ce fichier ne seront pas autorisés à se connecter au service ftp.
Nous allons nous placer dans le cas suivant :
•
•
les utilisateurs ont un accès ftp à leur compte, ils peuvent lister le contenu de leur compte
mais il ne sont autorisés qu'à écrire dans le répertoire public_html (répertoire ou ils
peuvent déposer leur page web et que apache gère lors d'un accès du type :
http://monserveur/~dartoiso/). C'est un choix de ma part, vous pouvez en changer !
Un accès ftp anonyme sera disponible (pour stocker tous les utilitaires Windows et
Olivier DARTOIS
Page 15
Formation CAFA – GNU/Linux
EMOP Réseaux
GNU/Linux, les images iso de distributions, etc...) en téléchargement (dowload). Les
utilisateurs ont aussi la possibilité « d'uploader » des fichiers dans le répertoire incoming
mais ils ne peuvent lister le contenu de ce répertoire (le tri de ce qui a été téléchargé revient
à l'administrateur du ftp).
Il faut créer l'arborescence de notre serveur ftp avec les commandes suivantes (adapté à une
debian, pour une mandrake le répertoire racine est /var/ftp) :
root@tux#cd /home/ftp
root@tux#mkdir -p pub/linux pub/windows incoming
root@tux#chown -R ftp:nogroup /home/ftp/
La syntaxe du fichier de configuration est assez proche de celle d'apache. Le fichier de
configuration peut être « coupé » en « contexte de configuration » :
•
•
•
•
•
•
server config : tout ce qui concerne les paramètres de fonctionnement du serveur,
Global : tous les réglages par défaut des entités qui suivent,
<Anonymous> : le contexte pour le serveur anonyme,
<VirtualHost> : le contexte d'un hôte virtuel (hébergement de plusieurs serveurs FTP sur
une seule machine),
<Limit> : permet de limiter les commandes ou l'accès à un contexte de configuration,
<Directory> : permet de configurer l'accès à des répertoires.
Server config ne sera pas entre crochet car il est implicite.
Nous allons donc avoir le fichier de configuration /etc/proftpd.conf suivant :
Olivier DARTOIS
Page 16
Formation CAFA – GNU/Linux
EMOP Réseaux
# Fichier de configuration du serveur ProFTP
Les commentaires commencent avec le signe « # ».
ServerName
"Serveur FTP de monetab"
ServerName représente le nom du serveur qui
s'affiche à la connexion.
ServerType
standalone
DeferWelcome
on
ServerIdent
off
ShowSymlinks
on
MultilineRFC2228
on
DefaultServer
on
AllowOverwrite
on
TimeoutNoTransfer
600
TimeoutStalled
600
TimeoutIdle
1200
LsDefaultOptions
"-l"
MaxLoginAttempts
3
DefaultRoot
ServerType indique le mode de fonctionnement du
serveur (standalone, inetd). Standalone est plus adapté
car il permet de sécuriser le serveur.
DeferWelcome on permet de na pas afficher de
messages de bienvenue tant que l'utilisateur ne s'est pas
authentifié.
ServerIdent off : ne renvoie pas d'information
sur le serveur lorsqu'une connexion est établie, juste
« FTP server ready ».
ShowSymlinks on montre les liens symboliques.
MultilineRFC2228 permet une meilleur
compatibilité avec les clients http.
DefaultServer on permet de supporter les
serveurs virtuels.
AllowOverwrite on permet de réécire les
fichiers.
~
# Décommenter cette ligne si vous utilisez NIS ou
# LDAP pour valiser les mots de passe :
Tous les paramètres Timeout permettent de couper
une connexion s'il n'y a pas d'activité.
MaxLoginAttempts limite le nombre de tentatives
de connexion erronées.
#PersistentPasswd
off
Port
21
DefaultRoot ~ permet d'enfermer chaque
utilisateur dans son répertoire racine.
MaxInstances
30
Port 21 : le port standard d'écoute du serveur FTP.
Dans un serveur virtuel, vous pouvez changer ce port.
User
nobody
Group
nogroup
MaxInstances limite le nombre de processus fils
simultanées (protection DOS, ne fonctionne qu'en
mode standalone).
Umask
022
User et Group indique avec quels droits le serveur
FTP doit tourner (le moins possible).
AllowOverwrite
on
<Directory /*>
022
</Directory>
<Directory ~>
<Limit READ WRITE>
DenyAll
</Limit>
</Directory>
<Directory ~/public_html>
<Limit WRITE STOR RNFR DELE>
Pour tous les répertoires sous la racine du serveur FTP,
les masques seront de 022 pour les fichiers et 022 pour
les répertoires (soit rwxr-xr-x).
Pour le répertoire personnel de chaque utilisateur
(<Directory ~>), nous allons limiter toutes les
opérations de lecture/écriture (<Limit READ
WRITE>) avec le paramètre DenyAll.
Puis pour le répertoire public_html, nous limitons le
nombre d'actions possibles (<Limit WRITE STOR
RNFR DELE>), celles-ci seront exécutables par tout le
monde (AllowAll).
AllowAll
</Limit>
</Directory>
Olivier DARTOIS
Je vous conseille très vivement de consulter la
documentation de ProFTP et en particulier la
commande Limit qui détaille toutes les commandes
FTP.
Page 17
Formation CAFA – GNU/Linux
EMOP Réseaux
Nous créons ici notre serveur ftp anonyme.
<Anonymous ~ftp>
User
ftp
Group
nogroup
UserAlias
anonymous ftp
RequireValidShell
off
MaxClients
10
MaxClientsPerHost
2
DisplayLogin
welcome.msg
DisplayFirstChdir
.message
<Directory *>
<Limit WRITE>
DenyAll
</Limit>
</Directory>
<Directory incoming/*>
<Limit ALL>
DenyAll
</Limit>
<Limit STOR>
AllowAll
Les fichiers auront les droits de ftp et du group
nogroup.
UserAlias permet de mettre un alias à l'utilisateur
ftp, ici ce sera anonymous.
RequireValidShell off : Les personnes qui se
connectent au serveur ftp anonyme n'ont pas besoin
d'avoir un shell valide sur la machine.
MaxClients limite le nombre de connexions
simultanées. MaxClientsPerHost limite le
nombre de connexion simultanées d'un même
utilisateur.
DisplayLogin affiche le message welcome.msg
à la connexion. DisplayFirstChdir affiche le
fichier .message qui se trouve dans le répertoire de
destination à chaque changement de répertoire.
Nous limitons l'accès en écriture à tout le répertoire du
ftp anonyme. Pour le répertoire incoming et ces
sous-répertoires, nous limitons d'abord tout puis nous
autorisons seulement la commande STOR (c'est à dire
le transfert de fichiers). La commande ls ne
fonctionnera pas dans ce répertoire.
</Limit>
</Directory>
</Anonymous>
Je vous rappelle à nouveau, que le fichier précédent n'est qu'un exemple. Il faut absolument
lire la documentation de ProFTP.
Vous allez maintenant relancer (ou lancer sur la mandrake) le serveur proftp. Puis vérifiez
dans les fichiers log que le serveur est bien lancé.
5.5 Tests du serveur ProFTP
Depuis votre machine GNU/Linux, vous pouvez tester votre serveur ftp avec la commande
ftp. Testez tout d'abord la connexion anonyme puis avec un utilisateur du système.
Pour la connexion anonyme : ftp localhost, nom : anonymous, mot de passe :
bidon@bidon. Puis faites des tests avec les commandes put get cd.
Pour la connexion avec un utilisateur, il faut que cet utilisateur existe sur le système
(adduser toto et passwd toto) puis il faut créer dans son répertoire home le
répertoire public_html. Testez enfin la connexion au serveur ftp, vérifiez que vous arrivez
bien dans votre répertoire puis que vous pouvez écrire uniquement dans le répertoire
public_html.
Installez sous Windows un client FTP quelconque puis testez votre serveur. Si la
configuration du serveur dhcp est correcte, celui-ci doit envoyer l'adresse ip du serveur dns. Le
serveur dns doit normalement avoir un alias vers ftp.monetab.
Sous GNU/Linux, utilisez les commandes ftpwho (man ftpwho) et ftpcount (man
ftpcount)pour suivre les connexions à votre serveur FTP.
Olivier DARTOIS
Page 18
Formation CAFA – GNU/Linux
EMOP Réseaux
5.6 Utilisation de Webmin avec ProFTPd
Sous Mandrake, le module est installé. Sous debian, le module n'existe pas dans la version
stable, il faut donc installer la version test de webmin.
Enfin installez le module pour ProFTPd : apt-get install webmin-proftpd
Connectez-vous à webmin depuis un navigateur, identifiez-vous en tant que root puis cliquez
sur l'onglet serveur puis sur l'icône serveur ProFTPD server. Quasiment toutes les opérations
sont faisables depuis l'interface.
5.7 Extensions possibles et liens
Il faut savoir que le service ftp ne crypte pas les données. Votre mot de passe transite donc en
clair entre votre machine cliente et le serveur. D'après ce que j'ai lu sur le site de proftp, il est
possible de crypter le canal de commande (port 21) mais pas les données.
L'authentification peut se faire avec LDAP ou une base de données (PostgresSQL, MySQL).
Il faut savoir qu'il existe aussi d'autres serveurs FTP (wu-ftp le plus vieux, vsftp pour very
secure ftp, etc...).
Liens :
Le site officiel de ProFTP : http://www.proftpd.net
6. Conclusion
Cet ensemble de service a été mis en place au sein du lycée Turgot à Limoges. Il fonctionne
maintenant, suivant les sections, depuis 2 ans. Nous allons améliorer notre installation par la
suite en essayant de passer un maximum de chose en crypté puis si la machine EOLE est
rapidement installé, nous basculerons toute l'authentification vers un annuaire LDAP.
Olivier DARTOIS
Page 19