DNS DHCP FTP - Présentation des serveurs

DNS DHCP FTP - Présentation des serveurs

Formation CAFA – GNU/Linux EMOP Réseaux F FORMATION ORMATION CAFA -- EMOP -- GNU/L CAFA -- EMOP -- GNU/LINUX INUX 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@ac-limoges.fr Olivier DARTOIS 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 à toto@ac-limoges.fr et pas à toto@proxy.ac-limoges.fr). 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 : le fichier de configuration du serveur DNS,
  • db.root : contient les adresses IP des serveurs racines,
  • db.local : fichier de zone pour l'interface de boucle local (loopback),
  • db.127 : fichier pour la résolution inverse de l'interface de boucle local,
  • db.255 et db.0 : 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 : contient les adresses IP des serveurs racines,
  • named.local : 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 : fichier qui indique la correspondance nom machine adresse IP,
  • monetab.rev : fichier de zone inverse qui fait correspondre l'adresse IP avec le nom de la machine.

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 EMOP Réseaux // Fichier exemple named.conf options { directory "/var/cache/bind"; forward first; forwarders { 193.252.19.3; 193.252.19.4; }; }; - Fichier tronqué --- // Zone pour les serveur racines d'Internet zone { type hint; file "/etc/bind/db.root"; }; // Les zones locales zone "localhost" { type master; file "/etc/bind/db.local"; }; zone "127.in-addr.arpa" { type master; 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; }; 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.

La zone localhost doit être défini pour le réseau loopback. type master déclare ce serveur comme étant un serveur primaire. Si vous avez un serveur secondaire, il faudra mettre type slave. La zone « 127.in-addr.arpa » définit la zone de résolution inverse pour le réseau de boucle locale (loopback). 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 ) @ 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 A 192.168.0.2 www CNAME tux 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. 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. 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.

TTL 3D ; Fichier de configuration de la zone inverse ; Nom du fichier : monetab.rev @ IN SOA monserveur.monetab.

postmaster.monetab. ( 2003061401 8H 2H 1W 1D ) @ IN NS monserveur.monetab. 1 IN PTR monserveur.monetab. 2 IN PTR tux.monetab. 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) : 1.36.187 IN PTR 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 ns root@tux#ping ns.monetab root@tux#ping ftp.monetab root@tux#ping monserveur root@tux#ping 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 monetab. NS root@tux#dig ftp.monetab. root@tux#dig -x 192.168.0.2 root@tux#dig 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.htm l 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; range 192.168.0.31 192.168.0.244; default-lease-time 21600; 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; } } 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,
  • broadcast-address l'adresse de diffusion,
  • 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). 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,
  • : le contexte pour le serveur anonyme,
  • : le contexte d'un hôte virtuel (hébergement de plusieurs serveurs FTP sur une seule machine),
  • : permet de limiter les commandes ou l'accès à un contexte de configuration,
  • : 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 ServerName "Serveur FTP de monetab" 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 ~ # Décommenter cette ligne si vous utilisez NIS ou # LDAP pour valiser les mots de passe : #PersistentPasswd off Port 21 MaxInstances 30 User nobody Group nogroup Umask 022 022 AllowOverwrite on DenyAll AllowAll Les commentaires commencent avec le signe » .

ServerName représente le nom du serveur qui s'affiche à la connexion. 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. 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.

DefaultRoot ~ permet d'enfermer chaque utilisateur dans son répertoire racine.

Port 21 : le port standard d'écoute du serveur FTP. Dans un serveur virtuel, vous pouvez changer ce port. MaxInstances limite le nombre de processus fils simultanées (protection DOS, ne fonctionne qu'en mode standalone). User et Group indique avec quels droits le serveur FTP doit tourner (le moins possible). 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 (), nous allons limiter toutes les opérations de lecture/écriture () avec le paramètre DenyAll.

Puis pour le répertoire public_html, nous limitons le nombre d'actions possibles (), celles-ci seront exécutables par tout le monde (AllowAll).

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. Olivier DARTOIS Page 17

Formation CAFA – GNU/Linux EMOP Réseaux User ftp Group nogroup UserAlias anonymous ftp RequireValidShell off MaxClients 10 MaxClientsPerHost 2 DisplayLogin welcome.msg DisplayFirstChdir .message DenyAll DenyAll AllowAll Nous créons ici notre serveur ftp anonyme. 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. 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

Vous pouvez aussi lire
Aller aux pages suivantes ... Annuler