Administration r€seau sous Linux

1

Administration r€seau sous Linux
Ce livre est la transcription des notes de TP r€seau donn€s • l'IUT Informatique de Clermont-Ferrand. Ces notes ont €t€ r€alis€es par S€bastien Salva et adapt€es par Remy Malgouyres et Michael Witrant. Leur diffusion sur Wiki Books a €t€ autoris€e par les auteurs originaux. ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ƒ ƒ ƒ ƒ ƒ ƒ ƒ ƒ ƒ ƒ Configuration r€seau NFS Samba Apache FTP DHCP Netfilter TCP Wrapper Tcpdump SSH

Les TP associ€s : ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ƒ ƒ ƒ ƒ ƒ ƒ ƒ ƒ TP TP TP TP TP TP TP TP Apache FTP DHCP Netfilter TCP Wrapper Tcpdump SSH Global

Administration r€seau sous Linux/ Configuration r€seau

2

Administration r€seau sous Linux/ Configuration r€seau
Installation de la carte r€seau
Les cartes r€seau sont souvent d€tect€es au d€marrage. Si ce n'est pas le cas il faudra charger les modules correspondants. Pour obtenir la liste des interfaces r€seau qui ont €t€ d€tect€es, on peut utiliser la commande ifconfig -a Les sections qui commencent par ethX correspondent aux cartes ethernet, o„ X est le num€ro de la carte. Si la carte n'est pas d€tect€e, il faudra charger le module avec la commande modprobe <nom du module> Parmi les modules courants on peut noter : ne2k-pci pour les cartes NE2000, via-rhine, rtl8139... Les modules disponibles pour votre noyau se trouvent dans /lib/modules/<nom du noyau>/kernel/drivers/net/. La commande suivante affiche les modules r€seau disponibles pour le noyau en cours d'utilisation : ls /lib/modules/`uname -r`/kernel/drivers/net/ Pour conna…tre le nom du module en fonction du nom commercial d'une carte, une recherche sur internet est souvent la meilleure solution. Le noyau donne parfois des informations utiles sur les cartes r€seau. On peut rechercher les messages contenant "eth0" pour avoir plus d'informations sur la premi†re carte r€seau d€tect€e : dmesg | grep eth0 La commande suivante permet d'afficher les cartes r€seaux reli€es au bus PCI : lspci | grep Ethernet

Configuration de la carte r€seau
Une fois votre carte reconnue par le noyau, vous devez au moins pr€ciser l'adresse IP et le masque de sous-r€seau de la carte. Dans le cas d'un r€seau local connect€ • Internet, vous devez aussi ajouter l'adresse IP de la passerelle et l'adresse IP d'un ou plusieurs serveurs DNS.

Adresse IP
Pour attribuer une adresse IP • une interface r€seau, on peut utiliser la commande ifconfig : ifconfig <interface> <adresse ip>

Administration r€seau sous Linux/ Configuration r€seau Par exemple : ifconfig eth0 192.168.1.12 Le masque de sous-r€seau est d€termin€ automatiquement en fonction de la classe de l'adresse IP. S'il est diff€rent on peut le sp€cifier avec l'option netmask : ifconfig eth0 192.168.1.12 netmask 255.255.255.128 Pour voir si la carte r€seau est bien configur€e, on peut utiliser la commande : ifconfig eth0

3

Passerelle et routage
Pour ajouter une passerelle, on peut utiliser la commande route : route add default gw <adresse ip> Pour afficher les routes vers les diff€rents r€seaux : route -n

Tester le r€seau
Pour tester si la carte r€seau fonctionne, on peut essayer de communiquer avec une autre machine avec la commande ping <adresse ip> La commande ping envoi un paquet • l'adresse IP puis attend que la machine r€ponde. Elle affiche ensuite le temps qu'a pris toute l'op€ration, en millisecondes.

Informations sur les interfaces
Pour v€rifier le statuts de toutes les interfaces on peut utiliser la commande netstat -i

Nom d'h•te (hostname)
Le fichier /etc/hostname contient le nom de la machine et du domaine. Il est lu au d€marrage du syst†me ou lorsqu'on lance : /etc/init.d/hostname.sh

Configuration automatique au d€marrage
Le fichier /etc/network/interfaces permet de configurer les cartes r€seau. Ce fichier est lu au d€marrage du syst†me et lorsqu'on utilise les commandes ifup et ifdown. Par exemple : auto eth0 iface eth0 inet static address 192.168.1.2 netmask 255.255.255.0 gateway 192.168.1.1

Administration r€seau sous Linux/ Configuration r€seau Et si l'interface eth0 doit ‡tre configur€e automatique grˆce • un serveur DHCP : iface eth0 inet dhcp

4

R€solution de noms
Le fichier /etc/host.conf indique comment les noms doivent ‡tre r€solus (c'est • dire comment passer d'une adresse IP • un nom, et inversement). Par exemple : # D'abord traduire avec les serveurs DNS et ensuite avec /etc/hosts. order bind,hosts # Il existe des machines avec plusieurs adresses multi on # V€rifie l'usurpation d'adresse IP nospoof on Serveurs DNS Le fichier /etc/resolv.conf contient les adresses IP des serveurs DNS. Par exemple : nameserver 208.164.186.1 nameserver 208.164.186.2 search foo La commande search indique que si un nom de domaine n'est pas trouv€, il faudra essayer en lui ajoutant .foo. Fichier hosts Le fichier /etc/hosts contient une liste de r€solutions de noms (adresses IP et noms de machine). Par exemple: 192.168.105.2 sasa Ce fichier indique que sasa correspond • l'adresse IP 192.168.105.2, qui sera accessible par cet alias.

Administration r€seau sous Linux/ NFS

5

Administration r€seau sous Linux/ NFS
Le protocole NFS (Network file system) permet de partager des fichiers entre des machines Unix, et donc Linux. C'est un mod†le client-serveur : une machine met • disposition (exporte) des r€pertoires de son syst†me de fichier local sur le r€seau. Suivant les droits d'acc†s, les autres stations du r€seau peuvent monter ces r€pertoires, qui seront alors vus comme des r€pertoires locaux. Un ordinateur peut ‡tre • la fois client et serveur NFS.

Installation cot€ serveur
Commencer par v€rifier que les demons NFS (nfsd) ne sont pas d€j• lanc€s avec, par exemple, la commande ps ax | grep nfsd Pour lancer les d€mons manuellement sous Debian : /etc/init.d/nfs-kernel-server start ou, si c'est le serveur NFS en espace utilisateur qui est install€ : /etc/init.d/nfs-user-server start On peut remplacer start par restart pour red€marrer le serveur.

Configuration
Pour partager (ou exporter) des r€pertoires, il faut renseigner le fichier /etc/exports. Il indique la liste des r€pertoires partag€s et le nom des machines qui y ont acc†s. Chaque ligne correspond • un r€pertoire et a la forme : <r€pertoire local> <nom ou IP des machines autoris€es • se connecter>(<options>) <autres machines>(<options>)... Par exemple : /home ollinux(rw) station1(ro) /projet station1(rw) (ro) /brouillon Le serveur exporte son r€pertoire /home. La machine ollinux pourra le monter en lecture/€criture (rw), station1 en lecture seule (ro), et les autres machines ne pourront pas se connecter. De m‡me, station1 pourra acc€der en lecture/€criture au r€pertoire projet et toutes les autres stations en lecture seule. Enfin, tout le monde pourra acc€der en lecture/€criture au r€pertoire brouillon (l'option rw est celle par d€faut). Notez bien que les droits en €criture via le r€seau seront toujours inhib€s par les droits sur le syst†me de fichier. Prenons par exemple un fichier test appartenant • root, situ€ dans

) alors que d'autres sont sp€cifiques • NFS..105. utiliser la commande mount avec l'option nfs : mount -t nfs <machine distante>:<r€pertoire partag€> <r€pertoire local> -o <options> Par exemple : mount -t nfs 192. comme par exemple sasa. en lecture seule. . Certaines sont communes • d'autres syst†mes de fichiers (ext2. La syntaxe est la suivante : <ordinateur distant>:<r€pertoire distant> <r€pertoire local> nfs <options> 0 0 Pour reprendre l'exemple pr€c€dent. il ne pourra pas acc€der au fichier test.2. C'est le cas de toutes les distributions r€centes. Pour monter un syst†me de fichier distant. Le plus simple est de renseigner le fichier /etc/fstab qui contient une liste des syst†mes de fichiers connus. il faut que le nom sasa puisse ‡tre converti en adresse IP (en modifiant /etc/hosts par exemple.user. Il suffit de v€rifier que ce dernier a €t€ compil€ avec la prise en charge de NFS. par la station A la place d'une adresse IP. il suffit de relancer le service NFS par la commande suivante pour que les modifications soient prises en compte : /etc/init.168. Pour cela. bien qu'il ait les "droits r€seaux read-write".168.Administration r€seau sous Linux/ NFS le r€pertoire projet et avec les droits 600 (lecture/€criture pour root uniquement. export€ 192. Un fois le fichier /etc/exports correctement configur€. si on n'a pas de serveur DNS) Connexion au d€marrage Il est possible de connecter les r€pertoires partag€s au d€marrage de la station.. aucun droit pour les autres).2:/armor/plages /mnt/cotes -o ro Cette commande montera le r€pertoire /armor/plages. vfat. dans le r€pertoire local /mnt/cotes. vous pouvez aussi donner un nom de machine. cela donnerait : sasa:/armor/plages /mnt/cotes nfs auto.d/nfs-kernel-server reload 6 Installation cot€ client C'est relativement simple puisque le "syst†me de fichier r€seau" NFS est directement int€gr€ au noyau.soft 0 0 Les options sont d€crites dans la page de man de mount.rw. Si l'utilisateur toto acc†de via la station station1 au r€pertoire /projet.105.

il sera remplac€ par le nom d'h‰te de la machine. socket options Indique les options • mettre sur les sockets comme par exemple TCP_NODELAY pour que le syst†me envoi imm€diatement les petits paquets sans attendre d'en avoir plusieurs. qui apparaitra • cot€ de son nom dans l'explorateur Windows. C'est fortement recommand€ et tous les syst†mes Windows • partir de 98 et NT4 SP3 utilisent cette fonctionnalit€ par d€faut. Le %m sera remplac€ par le nom de la machine client.conf [1] Exemple [global] workgroup = maison server string = Serveur Samba sur %h encrypt passwords = true log file = /var/log/samba/log. Elles sont d€taill€es dans la page de man de smb. De nombreuses autres options sont disponibles. Il existe €galement des interfaces graphiques pour configurer Samba.conf qui se trouve g€n€ralement dans /etc ou /etc/samba selon la distribution. log file Le nom du fichier qui contiendra le journal des activit€s du serveur. Si la description contient le terme %h. encrypt passwords D€termine si les mots de passe doivent ‡tre crypt€s avant d'‡tre transmis. server string La description du serveur. La section [global] contient les options communes • tous les r€pertoires partag€s. Configuration du service Samba Pour la configuration de ce service le principal fichier • modifier est smb. Les ordinateurs du m‡me groupe de travail se retrouvent c‰te • c‰te dans le voisinnage r€seau de Windows. max log size Taille maximale du fichier journal.%m . en Kio. Voici quelques options utilisables : workgroup Le nom du groupe de travail. On peut avoir un journal par machine client en utilisant %m dans le nom du fichier.Administration r€seau sous Linux/ Samba 7 Administration r€seau sous Linux/ Samba Samba est un service permettant de partager des r€pertoires et imprimantes entre des stations Linux et des stations Windows.

Administration r€seau sous Linux/ Samba max log size = 1000 socket options = TCP_NODELAY 8 Configuration du partage des r€pertoires Les partages Samba sont d€crits dans des sections ayant la forme suivante : [<nom du partage>] <option> = <valeur> ..conf [1] Exemples [cdrom] comment = Samba server's CD-ROM read only = yes locking = no path = /cdrom guest ok = yes [partage] path = /media/d/partage available = yes browsable = yes public = yes writable = yes . La section [homes] est un partage particulier. De nombreuses autres options sont disponibles. public Autoriser ou non les connexions sans mot de passe. Elles sont d€taill€es dans la page de man de smb. Les param†tres principaux sont les suivantes : comment La description du r€pertoire partag€. path Le chemin du r€pertoire partag€. read only D€termine si les clients pourront €crire ou non dans le r€pertoire partag€.. Elle d€finit le partage des r€pertoires utilisateur des comptes unix de la machine. Si on veut autoriser tous les utilisateurs il ne faut pas mettre cette option. browseable D€termine si le partage apparaitra dans la liste des partages du serveur. C'est le contenu du r€pertoire indiqu€ qui sera partag€. valid users Liste des seuls utilisateurs autoris€s • se connecter s€par€s par des espaces.

d/samba stop Pour le relancer : /etc/init. il suffit d'ouvrir le voisinage r€seaux d'une station Windows et de v€rifier si la machine y est. il faut relancer Samba. Si ce n'est pas le cas. il faut ajouter l'utilisateur samba avec smbpasswd -a <nom de l'utilisateur> Un compte unix du m‡me nom doit exister. Lancement du service Lancement : /etc/init. on peut utiliser la commande smbclient //<nom du serveur>/<nom du partage> -U <utilisateur> Il est €galement possible de monter un partage Samba avec smbmount //<nom du serveur>/<nom du partage> <r€pertoire local> .d/samba start Pour le stopper : /etc/init. il faut le cr€er avec la commande adduser.conf sont prises en compte pour chaque nouvelle connexion. Pour les rendre effectives sur les connexions d€j• €tablies. Pour cela. Pour se connecter en ligne de commande • un partage • partir de Linux. Acc‚s aux r€pertoires Pour acc€der aux partage sous Windows.d/samba restart Les modifications du fichier smb.Administration r€seau sous Linux/ Samba [zelinux] comment = Site web path = /myrep/zelinux read only = no 9 Prot€ger les r€pertoires partag€s Il est possible de rendre priv€ un r€pertoire et d'autoriser ou non des utilisateurs • y acc€der. pour chaque r€pertoire partag€ ajoutez les options: public = no valid users = <nom des utilisateurs autoris€s • acc€der aux r€pertoires> Pour chaque nom que vous avez rentr€.

Configuration du serveur La configuration [2] du serveur se trouve dans /etc/apache2/apache2. Ce fichier contient des instructions Include [3] qui permettent de d€placer certaines parties de la configuration dans d'autres fichiers. Les sites web contiennent g€n€ralement plusieurs types de documents.log. Un serveur HTTP permet d'h€berger des sites web qui seront accessibles avec un navigateur tel que Mozilla Firefox. Un site web peut fournir tout type de contenu (des fichiers textes. conf. Apache enregistre les erreurs dans le fichier /var/log/apache2/error. Debian utilise cette fonctionnalit€ pour les modules [4] (comme PHP) et la gestion des serveurs virtuels [5] : Configuration des modules Le r€pertoire /etc/apache2/mods-available contient les modules install€s. Apache se lance automatiquement lorsqu'on l'installe et • chaque d€marrage du syst†me. html Administration r€seau sous Linux/ Apache Apache est un serveur HTTP libre. Quand quelque chose ne fonctionne pas. le lancer ou le relancer on utilisera la m‡me commande avec stop.conf. org/ samba/ docs/ man/ manpages-3/ smb. comme Ubuntu). Le r€pertoire /etc/apache2/mods-enabled contient les modules activ€s. Flash. Pour d'autres syst†mes il faudra consulter la documentation du syst†me ou celle d'Apache [1] . Configuration de base Sous Debian. Lorsqu'on modifie sa configuration. zip€). certains €tant statiques et d'autres dynamiques. Ce contenu peut ‡tre statique (le serveur transmet un fichier au navigateur) ou dynamique (le contenu est g€n€r€ par un programme ex€cut€ par le serveur).2 sur un syst†me Debian (et ses d€riv€s.Administration r€seau sous Linux/ Samba 10 R€f€rences [1] http:/ / us1. 5. samba. il faut lui faire prendre connaissance des changements avec la commande /etc/init. Nous traiterons ici d'Apache 2. Les modules activ€s sont des liens symboliques vers les modules install€s. start ou restart. Fichiers log Par d€faut sous Debian. Il enregistre €galement toutes les requ‡tes dans /var/log/apache2/access. ce fichier fournit souvent des pistes pour trouver la solution. .d/apache2 reload Pour l'arr‡ter.log. HTML.

.txt. Les sites peuvent s'activer ou se d€sactiver en manipulant les liens dans sites-enabled ou en utilisant a2ensite et a2dissite. d'interdire localement l'affichage de la . AccessFileName [10] d€finit le nom du fichier qu'on peut placer dans un r€pertoire pour en modifier sa configuration. le serveur cherchera le fichier /var/www/html/repertoire/fichier.> . DirectoryIndex [8] indique la liste des fichiers qu'Apache cherchera • afficher si l'URL n'en pr€cise pas. La directive UserDir public_html signifie qu'un utilisateur peut publier ses pages web personnelles dans un sous-r€pertoire public_html de son r€pertoire personnel. Cela permet..php et qu'on demande l'URL http://serveur/repertoire/. Pour l'utilisateur toto. le r€pertoire /etc/apache2/sites-available contient les sites web disponibles et /etc/apache2/sites-enabled les sites activ€s.. 11 Configuration des sites De la m‡me mani†re. Apache affichera soit la liste des fichiers. La directive DocumentRoot [6] fixe la racine du serveur Web. <Directory . Il en existe un pr€install€ : le site default. c'est-•-dire le r€pertoire de base o„ se trouvent les documents. </VirtualHost> # d€but de bloc VirtualHost # d€but de bloc Directory # fin de bloc Directory # fin de bloc VirtualHost et des directives comme par exemple Include /etc/apache2/sites-enabled/ Les directives qui permettent de configurer le serveur lui-m‡me sont g€n€ralement plac€es dans apache2. Si un de ces fichiers existe..> . si le navigateur demande la page http://serveur/repertoire/fichier. On trouve des blocs (ou contextes) comme par exemple : <VirtualHost ..txt.html index.. Par exemple si la configuration contient DirectoryIndex index...Administration r€seau sous Linux/ Apache Pour activer ou d€sactiver un module. Par exemple avec la directive DocumentRoot /var/www/html. Quelques directives classiques La syntaxe d'Apache est assez simple.. on peut manipuler directement les liens ou utiliser les commandes a2enmodet a2dismod (voir les pages de man). soit une erreur (suivant la pr€sence de Indexes dans la directive Options [9]).html ou index. c'est g€n€ralement /home/toto/public_html. </Directory> . Apache va chercher dans le r€pertoire un fichier index. par exemple..conf. Sinon. UserDir [7] permet d'indiquer le r€pertoire personnel des utilisateurs du syst†me.php. Celles qui ne concernent qu'un site web sont d€port€es dans le fichier de configuration du site (sites-available/mon-site-web). Sa page d'accueil sera alors accessible par l'URL sp€ciale http://serveur/~toto. il sera affich€.

<IfModule prefork. Comme ce n'est pas une URL valide (l'URL d'un r€pertoire doit se terminer par un slash).c> StartServers 5 MinSpareServers 5 MaxSpareServers 10 MaxClients 20 MaxRequestsPerChild 0 .. nb maximum de requ‚tes g€r€es par processus serveur. # Apres MaxRequestsPerChild requ€tes.. Listen [11] indique • Apache sur quel port TCP il doit €couter... Le premier module prefork utilise des processus (pour syst†mes stables ou plus anciens). ServerName [12] indique • Apache son nom de domaine et €ventuellement son port.. Le port par d€faut du protocole HTTP est 80. Exemple comment€ La partie du fichier de configuration traitant la gestion du nombre de processus et la suivante: ## ## Server-Pool Size Regulation (MPM specific) ## # prefork MPM # StartServers ... # Si MaxRequestsPerChild=0... le processus meurt. nb de processus serveur au demarrage # MinSpareServers .. Celui utilis€ par d€faut sous Linux est prefork.Administration r€seau sous Linux/ Apache liste des fichiers. C'est le cas par exemple lorsqu'on demande l'adresse http://serveur/repertoire sans slash (/) • la fin. 12 Gestion du nombre d'instances d'Apache Le serveur Apache utilise plusieurs processus et prends en charge plusieurs types de stations multi-processeurs en utilisant les modules MPM (multi processing modules).. Il s'en sert lorsqu'il doit communiquer son adresse au client (le navigateur).. nb maximum de processus serveurs qui peuvent demarrer # MaxRequestsPerChild .. et le dernier des threads par processus... S'il y en a MaxSpareServers+1 on les tues # MaxClients .. ou de prot€ger par mot de passe un r€pertoire et ses sous r€pertoires.. nb maximum de processus serveurs '''libres''' instanci€s. le deuxi†me worker utilise des threads. alors le processus n'expire jamais. Apache utilise la directive ServerName pour reconstruire une adresse avec un slash et la renvoi au client........ Le dernier module perchild est en cours de d€veloppement et n'est pas recommand€.. nb minimum de processus serveurs '''libres''' instanci€s # MaxSpareServers .....

. maximum number of worker threads which are kept spare # MaxThreadsPerChild . maximum number of server processes allowed to start # MinSpareThreads ........ initial number of worker threads in each server process # MinSpareThreads ....Administration r€seau sous Linux/ Apache </IfModule> # pthread MPM # StartServers .............. maximum number of requests a server process serves <IfModule worker... maximum number of worker threads in each server process # MaxRequestsPerChild ........ maximum number of worker threads which are kept spare # ThreadsPerChild .... minimum number of worker threads which are kept spare # MaxSpareThreads ....... initial number of server processes to start # MaxClients ....c> NumServers 5 StartThreads 5 MinSpareThreads 5 MaxSpareThreads 10 MaxThreadsPerChild 20 MaxRequestsPerChild 0 AcceptMutex fcntl </IfModule> 13 ...... maximum number of connections per server process (then it dies) <IfModule perchild....... constant number of worker threads in each server process # MaxRequestsPerChild ... constant number of server processes # StartThreads ..c> StartServers 2 MaxClients 150 MinSpareThreads 25 MaxSpareThreads 75 ThreadsPerChild 25 MaxRequestsPerChild 0 </IfModule> # perchild MPM # NumServers .. minimum number of worker threads which are kept spare # MaxSpareThreads ......

. # Configuration du r€pertoire racine du syst‚me <Directory /> # On n'autorise aucune option particuli‚re Options None # Aucune modification n'est autoris€ dans les fichiers .htaccess AllowOverride All # Permet • tout le monde d'acc€der aux documents Allow from All # Sp€cifie comment appliquer la r‚gle pr€c€dente Order allow. Le param€trage d'un r€pertoire se met dans un "conteneur" d€limit€ par <Directory chemin_du_r€pertoire> et </Directory>. "All". "Indexes".deny </Directory> # Le r€pertoire contenant des ex€cutables CGI <Directory /usr/lib/cgi-bin> AllowOverride None Options ExecCGI </Directory> Les param†tres possibles de la directive Options [13] sont : "None". Si un sous-r€pertoire poss†de €galement sa propre configuration. elle vient s'ajouter • celle du parent. Plus de d€tails sont donn€s dans la section "Un exemple de configuration". ou "MultiViews". "ExecCGI". "Includes".Administration r€seau sous Linux/ Apache 14 Param€trage des r€pertoires Chaque r€pertoire auquel Apache acc†de peut ‡tre configur€ ind€pendamment (et ses sous-r€pertoires en h€ritent).htaccess AllowOverride None </Directory> # Pour la racine du serveur: <Directory /var/www/html> # Quelques options Options Indexes Includes FollowSymLinks # Les options peuvent ƒtre chang€es dans un . Voici quelques exemples de contr‰le d'acc†s. "FollowSymLinks". La configuration s'applique au r€pertoire et • tous ses sous r€pertoires.

Le r€pertoire contenant le site web doit ‡tre cr€€ dans le home de l'utilisateur et doit ‡tre accessible en lecture pour tous. Il est possible de n'autoriser que certains utilisateurs • b€n€ficier du UserDir. clermont.iut. on peut utiliser une clause Directory pour le r€pertoire /home/*/public_html : <Directory /home/*/public_html> Order allow. il doit les pr€c€der d'un header http permettant de les identifier. Le nom du r€pertoire est d€fini par la directive UserDir [7]. Voici un exemple de programme CGI €crit en bash: #!/bin/bash # Header echo "Content-type: text/html" .clermont. iut. On peut utiliser une autre forme de UserDir pour autoriser les r€pertoires sans forc€ment qu'il y ait un compte unix associ€ : UserDir /home/*/public_html Scripts CGI ƒcrire un programme CGI Le CGI (Commone Gateway Interface) n'est pas un langage. La contrainte principale concerne la sortie du programme. Par exemple pour n'autoriser que sasa et toto • avoir un site personnel : UserDir disabled UserDir enabled sasa toto Pour d€finir les options de ces r€pertoires. c'est une norme.clermont.. pas seulement si le r€pertoire /home/toto/public_html existe. et on pourra y acc€der avec l'adresse : http://www. Par d€faut il s'agit du r€pertoire public_html.. Un programme CGI peut ‡tre €crit en n'importe quel langage (C. Par exemple un utilisateur toto sur le serveur www. bash.fr peut cr€er les pages de son site dans le r€pertoire /home/toto/public_html.fr/~toto/.deny Allow from all </Directory> La clause UserDir public_html ne fonctionne que pour des utilisateurs ayant un compte sur le syst†me. fr/ ~toto ne fonctionne que si toto est un v€ritable utilisateur (auquel cas l'expression Unix ~toto a un sens).Administration r€seau sous Linux/ Apache 15 G€rer les pages Web personnelles Il est possible de permettre aux utilisateurs du syst†me de diffuser des pages personnelles sans avoir • cr€er un site par utilisateur. L'URL http:/ / www. Java. Si un programme CGI g€n†re des donn€es sur sa sortie standard. Il faut pour cela utiliser le module userdir.iut. PHP. du moment qu'il est ex€cutable et qu'il respecte certaines contraintes d'entr€es/sortie. L'adresse pour acc€der • ces sites personnels est le nom de l'utilisateur pr€c€d€ d'un tilde (~).).

Il faut donc au moins €crire: ScriptAlias /cgi-bin /home/httpd/cgi-bin <Directory /home/httpd/cgi-bin> Options ExecCGI </Directory> L'appel • un script essai. Les fichiers /etc/apache2/mods-availiable/php.cgi sera effectu€ par l'URL: http://serveur/cgi-bin/essai. Exemple : ScriptAlias /cgi-bin /var/www/cgi-bin Le chemin /cgi-bin n'existe pas vraiment.ini. souvent /etc/php. On peut utiliser pour cela la commande a2enmod.conf contiennent les directives LoadModule et AddType qui permettent • Apache d'ex€cuter du PHP quand on demande un fichier se terminant par .load et /etc/apache2/mods-availiable/php. et vous voulez que /home/httpd/cgi-bin contienne les scripts. par la pr€sence de extension=mysql. PHP poss†de lui aussi son fichier de configuration. Configurer l'acc‚s aux scripts CGI Pour qu'Apache prenne en charge les scripts. . ce qui autorise Apache • ex€cuter les scripts sur le serveur : <Directory /var/www/cgi-bin> Options ExecCGI </Directory> Exemple : vous €crivez un script essai. contenant les fonctions d'acc†s au "moteur" de base de donn€es MySQL (qui a dŠ ‡tre install€ • part).Administration r€seau sous Linux/ Apache 16 # Fin de l'header echo "" # Contenu • afficher dans le navigateur echo "<html><body>Bonjour</body></html>" Ce script g€n†re une page HTML. On peut n€anmoins y observer que PHP prend bien en compte le module d'extension MySQL. Il n'est pas particuli†rement conseill€ d'y intervenir sauf si on sait ce que l'on fait.so. il est dirig€ vers /var/www/cgi-bin.php. Ils doivent ‡tre li€s dans /etc/apache2/mods-enabled pour activer PHP. La d€claration ScriptAlias /cgi-bin chemin pr€cise le nom du r€pertoire autoris€ • contenir des scripts CGI. il est n€cessaire d'effectuer un minimum de param€trage dans la configuration du site.cgi.cgi Le module PHP PHP a normalement €t€ int€gr€ au serveur Apache sous forme d'un module chargeable situ€ comme tous les autres modules d'Apache dans /usr/lib/apache2/modules. En marge de Apache. et cela permet d'€crire des URL comme http://serveur/cgi-bin/mon_script. La clause suivante active l'option ExecCGI dans /var/www/cgi-bin.

pr€cise qu'il faut un compte dans le fichier de mots de passe pour acc€der au r€pertoire On peut aussi utiliser Require user toto sasa pour n'autoriser que les comptes toto et sasa. Les directives • placer dans le .htaccess et maintenir un fichier de mots de passe. La premi†re requ‡te adress€e • ce r€pertoire prot€g€ provoquera l'affichage d'une bo…te de dialogue par laquelle l'utilisateur devra s'identifier (nom et mot de passe). comme PHP fonctionne comme module d'Apache. type d'authentification commun€ment adopt€ ‚ AuthName "Mon message".htaccess sont les suivantes : ‚ AuthType basic. Il faut pour cela utiliser le fichier .d/apache2 restart 17 Protection par mot de passe Il existe une beaucoup de solutions pour prot€ger un site par mot de passe. le navigateur l'enregistre et ne le demandera plus. . Si le mot de passe saisi est invalide. S'il est valide. la boite de dialogue s'affichera de nouveau. affichera le texte comme invite dans la bo…te de dialogue ‚ AuthUserFile /etc/apache2/my_passwd. On placera dans ce fichier la d€finition des restrictions. on utilisera la commande htpasswd -c /etc/apache2/my_passwd toto Pour ajouter ou modifier un utilisateur • un fichier de mots de passe existant : htpasswd /etc/apache2/my_passwd sasa .htaccess Le fichier . indique o„ vont se trouver les mots de passe ‚ Require valid-user. il faut red€marrer Apache pour qu'il r€initialise PHP par la lecture de php.ini. Il faudra relancer le navigateur pour qu'il le demande de nouveau. Par exemple pour cr€er le fichier de mots de passe /etc/apache2/default-passwd avec comme 1er utilisateur toto. Apache fournit une solution simple pour prot€ger un r€pertoire et ses sous-r€pertoires.htaccess doit se trouver dans le r€pertoire • prot€ger. Il est imp€ratif que la modification des param†tres d'authentification soit autoris€e dans la configuration d'Apache. Le type d'authentification basic fait circuler les mots de passe en clair. Il existe d'autres types plus s€curis€s. /etc/init.Administration r€seau sous Linux/ Apache En cas de modification d'un fichier de configuration. Fichier de mots de passe Pour maintenir le fichier de mots de passe on utilisera la commande htpasswd (voir page de man). Il faut que la directive AllowOverride [14] d'un r€pertoire parent contienne l'option AuthConfig.

com soient connus par la machine qui tente d'y acc€der (celle qui lance le navigateur).site1. Par exemple : <VirtualHost *> ServerAdmin admin@site1. [5] contient des informations d€taill€es Pour que ce serveur virtuel fonctionne.com ServerAlias www. il est imp€ratif que les noms site1. Par exemple si site1.site1.log <Directory /home/site1/racine> AllowOverride All </Directory> </VirtualHost> La documentation d'Apache sur les serveurs virtuels sur le sujet. Pour les diff€rencer. Ils seront tous accessibles • partir de la m‡me adresse IP et du m‡me port.com/ aboutiront sur le m‡me serveur.com AccessLog /home/site1/access.com pointent sur la m‡me http://site1. les URL Mais au moment de la http://site1. il y a g€n€ralement un fichier par section VirtualHost dans le r€pertoire /etc/apache2/sites-availiable. Apache se sert de cette information pour savoir parle de serveur virtuel ou virtual host.log ErrorLog /home/site1/error. On Pour indiquer • Apache quel site correspond • un nom de domaine. requ†te. adresse IP. Pour cela il y a plusieurs m€thodes : ‚ acheter le nom de domaine en question et le configurer pour qu'il pointe sur la bonne adresse IP ‚ utiliser un serveur DNS qui renverra la bonne IP pour ce domaine ‚ modifier le fichier hosts sur la machine cliente pour faire correspondre ce domaine • la bonne adresse IP (voir la partie Installation et configuration d'une carte r€seau) .com DocumentRoot /home/site1/racine ServerName site1.com/. Elle pourra €galement contenir une directive ServerAlias [15] si on veut que d'autres noms aboutissent • ce site.com/ et http://site2. Apache se sert de l'adresse demand€e par le navigateur. Sous Debian. on utilise une section <VirtualHost *>.com et www.com et site2. le navigateur pr€cise qu'il a demand€ l'adresse http://site2. La section devra contenir une directive ServerName [12] qui indiquera le nom associ€ • ce serveur virtuel.com/ ou quel site afficher.Administration r€seau sous Linux/ Apache 18 Serveurs virtuels (virtual hosts) Apache peut g€rer plusieurs sites web simultan€ment.

c'est • dire en comment€ pour 90% des cas (# devant). Le comportement est en fait choisi d'apr†s le MTM (Multi-processing module) choisi.scoreboard (config serveur uniquement. V€rifiez quand m‡me.Administration r€seau sous Linux/ Apache 19 Exemples de configuration Voici quelques exemples de configuration. 2/ mod/ directives. les scripts LockFile LockFile /var/run/httpd. pas dans un VirtualHost) V€rifiez bien que cette ligne est d€comment€e. Timeout Timeout 300 (config serveur uniquement. c'est en standalone.lock (config serveur uniquement.conf. Elle indique au script de d€marrage d'enregistrer le num€ro de processus d'Apache pour que lors de l'arr‡t du syst†me le processus Apache soit stopp€ corectement.pid (config serveur uniquement. Pour la plupart des configuration. ServerType ServerType standalone Cette ligne indique si le serveur Apache se lance en 'autonome' (standalone) ou via inetd (TCP_WRAPPER). qui dispose d'un autre moyen pour d€finir cela. Cette directive a disparu de Apache2. org/ docs/ 2. PidFile PidFile /var/run/httpd. ScoreBoardFile ScoreBoardFile /var/run/httpd. html Pensez que les directives doivent parfois se trouver dans apache2. pas dans un VirtualHost) Ce fichier stocke des informations pour le bon fonctionnement d'Apache. apache. Normalement d'installation ont bien renseign€ cette ligne. pas dans un VirtualHost) . pas dans un VirtualHost) Vous indiquez ici le r€pertoire d'installation d'Apache. pas dans un VirtualHost) Laissez cette ligne comme elle est. parfois dans le contexte VirtualHost d'un site donn€. L'ensemble des directives possibles peut ‡tre consult€ ici : http:/ / httpd. ServerRoot ServerRoot /etc/apache2 (config serveur uniquement.

il ne re‹oit pas de r€ponse. avant de renvoyer un timeout. pas dans un VirtualHost) Ces valeurs servent • l'auto-r€gulation de charge du serveur. il va s'interrompre et pr€venir l'utilisateur de l'erreur. MaxKeepAliveRequests MaxKeepAliveRequests 100 En combinaison avec l'option pr€c€dente. Mais avant. Ne pas monter trop haut cette valeur non plus car si le programme externe • "plant€". Ces valeurs par d€faut conviennent • la plupart des sites. En fait cela permet aux utilisateurs de votre serveur de lancer plusieurs requ‡tes • la fois. essayez avec la valeur off . ou si une erreur est survenue. Si ce nombre d€passe la valeur de MaxSpareServer il en arr‡te une (ou plusieurs). Quand le serveur attend une "r€ponse" (ex : script CGI. suivant le nombre de clients qu'il sert et le nombre de requ‡tes que demandent chaque client.Administration r€seau sous Linux/ Apache Temps en secondes avant que le serveur n'envoie ou ne re‹oive un timeout . Laissez cette valeur assez haute pour de tr†s bonnes performances. si au bout de ce temps. Pour de petits serveurs laissez cette option sur on . connexion\ldots). Laissez cette valeur par d€faut la plupart du temps. MinSpareServers & MaxSpareServer MinSpareServers 5 MaxSpareServer 10 (config serveur uniquement. et donc d'acc€l€rer les r€ponses du serveur. Pour un serveur tr†s sollicit€. Laissez cette valeur par d€faut • moins que vous n'effectuiez des traitements d€passant cette limite. sur une m‡me connexion. d†s que vous vous apercevez que le syst†me ralentit €norm€ment ou devient indisponible assez souvent. essayez de baisser la valeur de l'option suivante. Si ce nombre est inf€rieur • MinSpareServers il en ajoute une (ou plusieurs). En fait le serveur Apache contr‰le lui m‡me sa charge. 20 KeepAlive KeepAlive on Autorise ou non les connexions persistantes (plusieurs requ‡tes par connexions). L• aussi laisser la valeur par d€faut. Si vous mettez 0 comme valeur. Laissez la valeur par d€faut l• aussi. vous risquez de rendre inaccessible le serveur Apache pour trop de temps (il est toujours d€sagr€able d'attendre pour rien). KeepAliveTimeout KeepAliveTimeout 15 Valeur d'attente en secondes avant la requ‡te suivante d'un m‡me client. mais sont pr‡tes • servir de nouveaux clients qui se connecteraient. Il fait en sorte que tout le monde puisse ‡tre servi et ajoute tout seul un certain nombre d'instances Apaches "idle". vous en autorisez en fait un nombre illimit€ (attention donc). indique le nombre de requ‡tes pour une connexion. c'est-•-dire qui ne font rien. .

• cause de probl†mes de d€pendances. ExtendedStatus ExtendedStatus on (config serveur uniquement. LoadModule. .34. BindAdress BindAdress * Redondant avec Listen. off par d€faut. pas dans un VirtualHost) Support pour les modules DSO (Dynamic Shared Object). cela permet de sp€cifier le port d'€coute (80 par d€faut). o„ il doit "€couter" les demandes de connexions. Avant Apache 2.c (config serveur uniquement. car les APIs de modules leur permet de sp€cifier eux-m‡mes leur ordre. cela permet de sp€cifier des adresses IP d'interfaces r€seau. LoadModule permet de charger un module.so ClearModuleList AddModule zzzz. il faut cependant y pr‡ter une grande attention. Laissez cette valeur par d€faut sauf en cas de d€veloppement et de debuggage.56. Apache 2 peut maintenant faire cela automatiquement. ou les deux.78 Listen 12.78:3000 Indique au serveur des ports ou des adresses IP (il y en a une par interface r€seau du serveur!). ClearModuleList & AddModule LoadModule xxxxxx. et le maintenir • jour • l'ajout de tout nouveau module. Cette directive a disparu dans Apache 2. les directives ClearModuleList et AddModule permettaient de sp€cifier l'ordre d'ex€cution des modules. EN PLUS de l'adresse et port par d€faut. Port Port 80 Redondant avec Listen. Sous Apache 1. pas dans un VirtualHost) Indique si le serveur doit renvoyer des informations compl†tes de status (on ) ou des informations r€duites (off ).*.mod libexec/yyyyyy.34. Cette directive a disparu dans Apache 2.56. Voir la directive VirtualHost plus loin.Administration r€seau sous Linux/ Apache 21 Listen Listen 3000 Listen 12. pour €couter les requ‡tes.

On peut placer • l'int€rieur les directives suivantes : .) ServerAdmin ServerAdmin root@localhost. Directory <Directory /var/lib/apache/htdocs> Options Indexes FollowSymlinks Multiviews AllowOverride None Order allow. pour que les visiteurs ne voient pas le nom r€el de votre machine (utile pour la s€curit€ aussi).domainname Adresse que le serveur va renvoyer au client web. il aura alors des droits lui permettant d'endommager votre syst†me.Administration r€seau sous Linux/ Apache 22 User & Group User nobody Group nobody Une fois le serveur d€marr€. Il est donc possible de modifier l'utiliseur et le groupe du processus pour lui donner un minimum de droits sur la machine du serveur. Donc si c'est nobody il n'a aucun droit sp€cifique. il serait dangereux de lui laisser les droits root pour r€pondre aux requ‡tes. ServerName ServerName www. (En fait si quelqu'un arrive • "exploiter" votre serveur. Cette adresse est affich€e par le serveur par exemple en cas d'erreur. pour que les utilisateurs puissent en avertir l'administrateur. DocumentRoot DocumentRoot /var/lib/apache/htdocs R€pertoire racine ou se trouve vos pages Web. il h€rite des droits du serveur lui m‡me. Il est pr€f€rable de mettre une adresse r€solue par DNS au lieu du nom de la machine r€elle.deny Allow from all </Directory> Change les param†tres du repertoire /var/lib/apache/htdocs. par exemple s'il arrive a faire ex€cuter du code par le serveur Apache.domainname Adresse e-mail de l'administrateur du site. Si c'est root ou un utilisateur r€el.

etc. AuthUserFile. Active la directive Option FileInfo Limit None Options Order Donne l'ordre d'application des r†gles Allow/Deny : deny. C'est • dire si l'index du r€pertoire (index. Autorise a suivre les liens seulement si l'user ID du fichier (ou r€pertoire) sur lequel le lien pointe est le m‡me que celui du lien.Administration r€seau sous Linux/ Apache Options on d€finit les options pour ce r€pertoire. AuthGroupFile. cela autorise le serveur a lister le contenu du r€pertoire (dangereux suivant les fichiers contenu dans ce r€pertoire).) Active la directive d'autorisation Limit Ne lit pas le fichier . Permet aux utilisateurs d'avoir des indexs g€n€r€ par le serveur. 23 FollowSymLinks ExecCGI Includes IncludesNOEXEC MultiViews SymLinksIfOwnerMatch AllowOverride d€finit comment sont g€r€s les fichiers . mais correspond • une r†gle allow .html le + souvent) est manquant. on interdit (deny par defaut). AuthType. Si le client ne correspond • aucune r†gle allow . Require. Les options possibles sont les suivantes : None All Indexes D€sactive toutes les options. Autorise des fichiers include pour le serveur.htaccess et laisse les droits "Linux" de ce r€pertoire. alors on autorise (allow par d€faut). etc. mais correspond • une r†gle deny . AuthDBMUserFile. AuthName. Active les directives contr‰lant le type de document (ErrorDocument.htaccess Active les directives d'autorisations AuthDBMGroupFile. LanguagePriority.\hline allow. Permet mais les includes mais emp‡che la commande EXEC (qui permet d'executer du code). Par exemple permet d'afficher les pages dans un language suivant la configuration du language du client. Autorise les vue multiples suivant un contexte.deny . Active toutes les options SAUF Multiviews. Autorise • ex€cuter des scripts CGI • partir de ce r€pertoire.htaccess de ce r€pertoire : All AuthConfig G†re tout ce qui est dans . Autorise a suivre les liens symboliques.allow Si le client ne correspond • aucune r†gle deny .

Il existe les m‡mes r†gles pour les fichiers (<Files> </Files>) et les locations (<Location> </Location>).htm. si on acc†de • http:/ / example.htm index.php5 Indique le ou les fichiers • charger lorsqu'on acc†de • un r€pertoire sans pr€ciser de fichier. index.Administration r€seau sous Linux/ Apache Allow/Deny Nom d'h‰te All Autorise/Refuse les h‰tes sp€cifi€. etc. </Files> CacheNegotiatedDocs #CacheNegotiatedDocs Autorise ou pas les proxies • mettre en cache les documents (pour autoriser. Autorise/Refuse tout le monde 24 A vous de placer vos r†gles suivant le contenu de vos r€pertoire accessibles par le Web. car si l'URL du client n'est pas la m‡me que celle du CGI..php index. Apache cherchera un des fichiers mentionn€s (index. r€€crit l'URL par rapport aux valeurs Server et Port sp€cifi€es plus haut dans le fichier httpd. enlevez le commentaire # en d€but de ligne) UseCanonicalName UseCanonicalName On Plac€ sur on . AccessFileName AccessFileName . S'il n'en trouve pas.ht qui contiennent les r‚gles de Deny from all #s€curit€. com/ repertoire/ ..htaccess Nom du fichier des r†gles d'acc†s pour les r†gles AllowOverride.. les adresses IP. Un conseil: placez comme vu pr€c€demment une r†gle file du style: <Files .deny #fichiers .html. DirectoryIndex DirectoryIndex index. Dans cet exemple.conf.html index. l'URL reste celle donn€e par le client. .ht*> #pour interdire aux visiteurs de voir le contenu des Order allow. Voir un exemple pour les fichiers (file) plus bas. mettez sur on si vous utilisez des CGI avec des variables SERVER_NAME. Sur off . il affichera la liste des fichiers ou interdira l'acc†s (suivant la pr€sence ou non de l'option Indexes sur le r€pertoire).) et s'il en trouve un il l'affichera. le nom de domaine. votre script CGI ne marchera pas. Attention..

€v€nement normal mais m€ritant d'‡tre remarqu€ informations utiles (comme "serveur tr†s charg€") Enregistre TOUT ce qui peut se passer sur le serveur Le niveau crit est le minimum recommand€. scripts les erreurs non bloquantes (pages mal cod€es. LogLevel LogLevel warn Niveau d'enregistrement des erreurs avec comme valeurs possibles. par ordre d€croissant d'importance. ServerSignature ServerSignature on on ajoute la signature (version. ErrorLog ErrorLog /var/log/error_log Chemin complet du fichier o„ les erreurs seront enregistr€es. et on monte g€n€ralement • warn. etc. erreur de script. Convient dans la plupart des cas. ajoute un lien vers l'email d€finit par ServerAdmin off email . HostNameLookups HostNameLookups off Sur on . le serveur le nom du client grˆce • une requ‡te DNS inverse.) ne montre que l'erreur. donc croissant en bavardage: emerg alert crit error warn notice info debug urgence : le serveur devient inutilisable une intervention est n€cessaire erreurs critiques (acc†s r€seau impossible par exemple) les erreurs dans les pages.. Sinon. il se contente de l'adresse IP. scripts comportant des erreurs non blocantes. ce qui g€n†re beaucoup moins de trafic r€seau.Administration r€seau sous Linux/ Apache 25 DefaultType DefaultType text/plain Type mime par d€faut que le serveur renvoie au clients.. OS€) du serveur lorsqu'il g€n†re des pages lui-m‡me (index manquant.

apache. apache. org/ docs/ 2. apache. org/ docs/ 2. 2/ vhosts/ [6] http:/ / httpd. html#include [4] http:/ / httpd. org/ docs/ 2. html#documentroot [7] http:/ / httpd. 2/ mod/ core. 2/ configuring. html#options [10] http:/ / httpd. 3/ mod/ core. org/ docs/ 2. apache. html#options [14] http:/ / httpd. 2/ mod/ core. org/ docs/ 2. Pour ajouter le support PHP. org/ docs/ 2. 2/ mod/ core.conf) Sp€cifie que des fichiers utilisant de telles extensions sont du type pr€cis€. apache. apache. apache. Cela permet de d€cider quoi en faire. org/ docs/ 2. html [2] http:/ / httpd. au lieu de apache2. html#userdir [8] http:/ / httpd. 2/ mod/ core. apache. 2/ mod/ core. html#serveralias . 2/ dso. 2/ mod/ mpm_common. html#accessfilename [11] http:/ / httpd. 2/ mod/ core.php .Administration r€seau sous Linux/ Apache 26 Alias Alias faux_nom nom_r€el permet de faire des alias de r€pertoires (des liens en quelque sorte) (similaire • ScriptAlias /cgi-bin chemin_complet_des_cgi AddType AddType type extensions (sous Apache2. org/ docs/ 2. apache. apache. org/ docs/ 2. apache. apache. org/ docs/ 2. org/ docs/ 2. cette directive devrait ‡tre dans un fichier mods-availabe/nom_module.conf. 2/ mod/ mod_userdir.conf contient par exemple : AddType application/x-httpd-php .cgi Pour utiliser les scripts CGI. 2/ mod/ mod_dir.phtml . org/ docs/ 2.phps AddHandler AddHandler cgi-script . 2/ mod/ core. html#listen [12] http:/ / httpd. html#servername [13] http:/ / httpd. apache.php3 AddType application/x-httpd-php-source . apache. html#allowoverride [15] http:/ / httpd. org/ docs/ 1. org/ docs/ 2. html [3] http:/ / httpd. apache. html#directoryindex [9] http:/ / httpd. R€f€rences [1] http:/ / httpd. html [5] http:/ / httpd. 2/ invoking. org/ docs/ 2. le fichier mods-enabled/php5.

/configure --with-modules=mod_ratio:mod_sql make make installproftpd Il se lance automatiquement • l'installation et au d€marrage du syst†me. ServerName "ProFTPd Linux Service" ServerType standalone DefaultServer on .d/proftpd restart Exemple de fichier proftpd.conf<font name="DejaVuSans">„ </font>for # actual use. Installation et lancement Sous Debian. On se connecte • ce serveur avec un client FTP. tar zxvf proftpd-1.x . Fichier de configuration Le principal fichier de configuration est /etc/proftpd/proftpd. et g†re une authentification par mot de passe. ProFTPD est disponible dans un package et peut s'installer avec la commande apt-get install proftpd Il est aussi possible de le configurer poour ses propres besoins • partir des sources. Les commandes Pour que le serveur prenne en compte le nouveau fichier de configuration.Administration r€seau sous Linux/ FTP 27 Administration r€seau sous Linux/ FTP FTP est un protocole d'€change de fichiers.d/proftpd.conf. Le script qui permet de le lancer. Ceci permet de sp€cifier les modules • utiliser.x.x. l'arr‡ter ou le relancer est /etc/init.gz cd proftpd-1. It establishes a single server # It assumes that you have a user/group # "nobody" for normal operation. Ce document pr€sente la configuration d'un serveur ProFTPd [1] sous Debian. L'ensemble des directives sont d€crites sur le site web de ProFTPD principales sont les suivantes : [2] .conf: # This is a basic ProFTPD configuration file (rename it to # <font name="DejaVuSans">„</font>proftpd.x. il faut recharger le d€mon avec: /etc/init. Sa gestion des droits d'acc†s et sa configuration sont tr†s proches de celles d'Apache. Un serveur FTP met • disposition certains r€pertoires du disque.tar.

AllowStoreRestart on # Port 21 is the standard FTP port. <Limit MKD RNFR RNTO DELE RMD STOR CHMOD SITE CHMOD SITE XCUP WRITE XRMD PWD XPWD> DenyAll </Limit> <Global> .Administration r€seau sous Linux/ FTP 28 # Pour autoriser les clients • r‚sumer les t‚l‚chargements.. tr€s utile. set the maximum number of child pro cesses # to 30. Note that this ONLY works # in standalone mode. If you need to allow more than 30 concurrent connexions # at once. User nobody Group nogroup # Nombre maximum de clients # MaxClients 3 # Number of Max Clients per host # MaxClientsPerHost 1 # Nombre maximums de tentatives de login MaxLoginAttempts 3 # Message d<font name="DejaVuSans">ƒ</font>accueil apr€s une connexion r‚ussie AccessGrantMsg "Bienvenue %u chez moi!" #Pour ne pas donner d<font name="DejaVuSans">ƒ</font>info sur le serveur DeferWelcome off #R€gles pour limiter les commandes . in inetd mode you should use an inetd server # that allows you to limit maximum number of pro cesses per service # (such as xinetd) MaxInstances 30 # Set the user and group that the server normally runs at. simply increase this value. # Remember to set to off if you have an incoming ftp for upload. Umask 022 # Limitation de la bande passante en lecture: RateReadBPS 14000 # To prevent DoS attacks. Port 45000 # Umask 022 is a good standard umask to prevent new dirs and files # from being group and world writable..

il faut utiliser une adresse particuli†re. get.duf. ftp Le client le plus simple et le plus r€pandu est la commande ftp. Elle existe €galement sous Windows en ligne de commande. Certains sont en mode graphique. Pour se connecter avec un ftp://utilisateur:mot_de_passe@serveur/. d'autres en mode texte. proftpd. ls. mot de passe.Administration r€seau sous Linux/ FTP DefaultRoot /var/ftp AllowOverwrite yes MaxClients 3 MaxClientsPerHost 1 UseFtpUsers on AllowForeignAddress on ServerIdent on "ProFTP DuF<font name="DejaVuSans">„</font>s Server Ready" AccessGrantMsg "Bienvenue sur le serveur. org/ docs/ ... Les principales sont : help. Les navigateurs internet permettent €galement de se connecter • un serveur FTP. on utilisera R€f€rences [1] http:/ / www.com> ServerName "Mon serveur FTP virtuel numero 1" Port 46000 Maxclients 3 MaxClientsPerHost 1 DefaultRoot /var/ftp AccessGrantMsg "Bienvenue" </VirtualHost> 29 Client FTP Il existe de tr†s nombreux clients FTP. put. Pour une connexion anonyme. %u" </Global> # Serveur Virtuel pour ‚criture <VirtualHost ftp. open. proftpd. on pourra utiliser ftp://serveur/ ou ftp://serveur/chemin. Navigateur Pour acc€der • un serveur FTP • partir d'un navigateur Internet. org [2] http:/ / www. Les commandes disponibles sont d€crites dans la page de man.

0 netmask 255.conf. plus aucune station n'acc†de au r€seau.168.168.168.conf. Configuration Le fichier de configuration principal est /etc/dhcpd. Interfaces Par d€faut. et attribuer des adresses variables aux autres postes.conf.1. Il poss†de des options globales. Sa syntaxe est d€crite dans man dhcpd.168. Pour choisir les interfaces sur lesquels /etc/default/dhcp en indiquant par exemple INTERFACES="eth1 eth2" le serveur est lanc€.1. il faut modifier Adresse dynamique Pour configurer une plage d'adresses • attribuer dynamiquement aux adresses MAC inconnues. Le principal danger de DHCP est qu'en cas de panne du serveur DHCP.conf. on utilise une section subnet dans dhcpd. On peut par exemple donner une adresse IP fixe • certains serveurs. } . notamment en lui assignant automatiquement une adresse IP et un masque de sous-r€seau.1. La section suivante attribuera par exemple des adresses comprises entre 192. Dans ce cas il est imp€ratif de configurer un r€seau par interface dans dhcpd. Le protocole est pr€vu pour qu'un poste qui revient sur le r€seau r€cup†re la m‡me adresse qu'il avait la premi†re fois.168. Elle lui est r€serv€e un certain temps (le lease time).255. Le protocole DHCP est tr†s souvent mis en Œuvre par les administrateurs de parc de stations car il offre l'€norme avantage de centraliser la configuration des stations sur une unique machine : le serveur DHCP.199.255. et des sections pour chaque h‰te ou r€seau • configurer. le serveur DHCP est lanc€ sur toutes les interfaces. Il y a deux utilisations principales d'un serveur DHCP : ‚ attribuer une configuration fixe • certains postes (on les reconna…t grˆce • leur adresse MAC) ‚ et attribuer une configuration dynamique aux postes inconnus.101 et 192.1.1. g€n€ralement plac€es au d€but.199 : subnet 192.101 192.Administration r€seau sous Linux/ DHCP 30 Administration r€seau sous Linux/ DHCP Le protocole DHCP (pour Dynamic Host Configuration Protocol) est un protocole r€seau dont le r‰le est d'assurer la configuration automatique des param†tres r€seau d'une station.0 { range 192.

47 au poste cobalt dont l'adresse MAC est 00:13:d4:bd:b7:9a : host cobalt { hardware ethernet 00:13:d4:bd:b7:9a. conf. On peut €galement consulter cette documentation sur internet[1]. R€f€rences [1] http:/ / www. masquer des machines du r€seau local.). .Administration r€seau sous Linux/ DHCP 31 Adresse fixe Pour donne une adresse fixe • un poste. 5. } Options Le serveur DHCP peut fournir d'autres informations que l'adresse IP. Les paquets intercept€s passent • travers des cha€nes qui vont d€terminer ce que le syst†me doit faire avec le paquet. Fonctionnement Netfilter intercepte les paquets r€seau • diff€rents endroits du syst†me (• la r€ception. Il fournit • Linux : ‚ des fonctions de pare-feu et notamment le contr‰le des machines qui peuvent se connecter. Toutes les options sont d€crites dans la page de man. L'option routers indique la passerelle. En modifiant ces chaines on va pouvoir bloquer certains paquets et en laisser passer d'autres. ‚ et d'historisation du trafic r€seau. ou rediriger des connexions . Ces options peuvent ‡tre d€finies de mani†re globale en les pla‹ant en dehors de toute section.0. php Administration r€seau sous Linux/ Netfilter Netfilter est un module qui permet de filtrer et de manipuler les paquets r€seau qui passent dans le syst†me.0. de l•ext€rieur vers l•int€rieur. Si elles sont plac€es dans une section particuli†re.168. L'option domain-name-servers permet par exemple d'indiquer au poste les adresses des serveurs DNS. Par exemple la section suivante attribue l'adresse 192. il faut conna…tre son adresse MAC et €crire une section host. sur quels ports. com/ man5/ dhcpd. elles ne s'appliquent qu'• celle-ci. avant des les envoyer • la carte r€seau. fixed-address 192.168.47. avant de les transmettre aux processus. iptables est la commande qui permet de configurer Netfilter. Elles s'appliqueront alors • toutes les sections qui ne les red€finissent pas. ‚ de traduction d'adresse (NAT) pour partager une connexion internet (masquerading). ou de l•int€rieur vers l•ext€rieur du r€seau . linuxmanpages. etc.

Netfilter prend la r†gle suivante et la compare de nouveau au paquet. Pour chaque param†tre il existe g€n€ralement une forme longue avec deux tirets (par exemple --append) et une forme courte avec un seul tiret (par exemple -A). Lorsque tous les crit†res correspondent au paquet. R‚gles Une r†gles est une combinaison de crit†res et une cible. le laisser passer. En ajoutant des r†gles dans ces cha…nes on pourra laisser passer ou jeter les paquets suivant certains crit†res. elles sont €quivalentes. Il fournit pour cela cha…nes principales : trois ‚ une cha…ne INPUT pour filtrer les paquets • destination du syst†me. ‚ et une cha…ne FORWARD pour filtrer les paquets que le syst†me doit transmettre. Lorsqu'un paquet arrive dans une cha…ne : ‚ Netfilter regarde la 1†re r†gle de la cha…ne. Les param†tres indiqu€s entre crochets (par exemple [-t <table>]) sont facultatifs. Et ainsi de suite jusqu'• la derni†re r†gle. Netfilter permet de jeter ou de laisser passer les paquets qui entrent et qui sortent. ‚ Sinon. ‚ une cha…ne OUTPUT pour filtrer les paquets €mis par les processus du syst†me. ‚ Si aucune r†gle n'a interrompu le parcours de la cha…ne. .Administration r€seau sous Linux/ Netfilter 32 Filtrage Dans son fonctionnement le plus simple. etc. Principal cheminement des paquets • travers Netfilter Cha„nes Une cha…ne est un ensemble de r†gles qui indiquent ce qu'il faut faire des paquets qui la traversent. Les crit†res disponibles et les actions possibles d€pendent de la cha…ne manipul€e. la politique par d€faut est appliqu€e. la cible est ex€cut€e (jeter le paquet. Syntaxe La syntaxe d'iptables et toutes les options sont d€crites dans la page de man. le paquet est envoy€ vers la cible. Utiliser l'une ou l'autre n'a pas d'importance. ‚ puis regarde si les crit†res de la r†gle correspondent au paquet. Les deux possibilit€s sont souvent repr€sent€es dans la documentation sous la forme --append|-A. ‚ Si le paquet correspond.).

udp.5. all ou une valeur num€rique. En voici quelques uns : --protocol|-p [!] <protocole> Le protocole est <protocole>. Si un point d'exclamation se trouve avant le protocole. --append|-A <cha…ne> <crit‚res> -j <cible> Ajoute une r†gle • la fin de la cha…ne <chaine>. Si aucune cha…ne n'est indiqu€e.255.0/255. Crit‚res Les crit†res possibles sont nombreux.255. Si le param†tre -v est plac€ avant cette commande. 33 Commandes Les commandes principales sont les suivantes : --list|-L [<cha…ne>] Affiche les r†gles contenues dans les cha…nes ou seulement dans la cha…ne s€lectionn€e. il est envoy€ • la cible. icmp.Administration r€seau sous Linux/ Netfilter Ce qui se trouve entre inf€rieur et sup€rieur (par exemple <table>) doit ‡tre remplac€ par une valeur. --policy|-P <cha…ne> <cible> D€termine la cible lorsque qu'aucune r†gle n'a interrompu le parcours et que le paquet arrive en fin de cha…ne. Si tous les crit†res correspondent au paquet. Les valeurs de /etc/protocols sont aussi utilisables. toutes les cha…nes de la table seront vid€es.0. --insert|-I <cha…ne> <crit‚res> -j <cible> Comme --append mais ajoute la r†gle au d€but de la cha…ne. Par exemple lorsqu'on €crit -s 192. Voir plus bas pour une description des crit†res et des cibles possibles. --source|-s [!] <adresse>[/<masque>] L'adresse source est <adresse>. Si un masque est pr€cis€.168. seules les parties actives du masque seront compar€es. le crit†re correspondra au paquet seulement s'il n'est pas du protocole sp€cifi€. . --delete|-D <cha…ne> <crit‚res> -j <cible> Supprime la r†gle correspondante de la cha…ne. --flush|-F [<cha…ne>] Efface toutes les r†gles de la cha…ne. La forme g€n€rale pour utiliser iptables est la suivante : iptables [-t <table>] <commande> <options> La table par d€faut est la table filter. le nombre de paquets ayant travers€ chaque r†gle sera €galement affich€. Les protocoles possibles sont tcp.

0.255.168. --dport [!] <port> Le port destination est <port>. N'est utilisable que dans la cha…ne INPUT. La r€ponse envoy€e • l'€metteur est €galement un paquet qui devra satisfaire les r†gles de sortie pour pouvoir passer. -j LOG [--log-level <level>] [--log-prefix <prefix>] Enregistre le paquet dans les logs syst†mes. --sport [!] <port> Comme --dport mais pour le port source.) Le masque par d€faut est /32 (/255.0. -o <interface> L'interface r€seau de laquelle va partir le paquet.255. car dans les autres protocoles il n'y a pas de notion de port. . Cette cible est utile pour voir certains paquets qui passent (pour d€bugger ou pour alerter). -j DROP Jette le paquet sans pr€venir l'€metteur.255 correspondront.255. 34 Cibles Les cibles principales sont les suivantes : -j ACCEPT Autorise le paquet • passer et interrompt son parcours de la cha…ne.0.0. Il est obligatoire de pr€ciser le protocole (-p tcp ou -p udp).168.Administration r€seau sous Linux/ Netfilter toutes les adresses entre 192. Un point d'exclamation ne fera correspondre le paquet que s'il n'a pas cette adresse source. -i <interface> L'interface r€seau d'o„ provient le paquet.255). soit l'int€gralit€ de l'adresse. Le parcours de la cha…ne est interrompu. le paquet est affich€ sur la console principale du syst†me.0 et 192.5. N'est utilisable que dans les cha…nes OUTPUT et FORWARD. etc. -j REJECT Comme DROP mais pr€vient l'€metteur que le paquet est rejet€. --destination|-d [!] <adresse>[/<masque>] Comme --source mais pour l'adresse destination.5.255. /24 • 255. On peut aussi €crire le masque sous la forme d'un nombre de bits (/8 correspond • 255. Au <level> par d€faut.

port destination. les r†gles de la cha…ne sont test€es une par une.Administration r€seau sous Linux/ Netfilter 35 Utilisation simple Le principe est assez simple • comprendre. protocole . que son paquet a €t€ refus€ (avec REJECT on pr€vient. . La diff€rence entre les deux derniers modes. DROP ou REJECT. il est refus€ avec acquittement. IP destination. OUTPUT. ‚ quand un paquet passe par le firewall. afin de partir d<font name="DejaVuSans">ƒ< base # propre et de savoir exactement ce que vous faites iptables -F # D‚finir une politique par d‚faut : le plus normal est de tout interdire par # d‚faut et de n<font name="DejaVuSans">ƒ</font>autoriser que certains paquets. il est aiguill€ vers la cha…ne correspondante ‚ ensuite. Les r†gles suivantes ne sont pas test€es. Elle peut ‡tre positionn€e • ACCEPT. FORWARD. Si elle stipule DROP. Il est plus pratique de les inscrire dans un fichier script et de rendre ce script ex€cutable (chmod +x). mais pas avec DROP). entrant (INPUT) ou • passant Ž. Trois types de paquets peuvent passer par le firewall. Ne donnez que les droits minimum • ce fichier pour qu•il ne puisse pas ‡tre lu et modifi€ par tout le monde. il est ignor€.. D†s que le paquet correspond • une r†gle. Cr€er et appliquer des r‚gles Toutes les commandes iptables sont tap€es directement sur la ligne de commande du terminal. la politique par d€faut est appliqu€e. .autre_port]] -s adresse_source -d adresse_dest -j politique Il y a bien sŠr de nombreuses autres options. on s•arr‡te. Un paquet IP arrive sur votre machine. le paquet est accept€. "REJECT" les refuse avec acquittement pour l<font name="DejaVuSans">„</font>envoyeur . Exemple de fichier : #!/bin/sh # Effacer toutes les r€gles avant toute chose. c•est-•-dire qui ne font que rebondir sur le routeur qui doit les rediriger FORWARD).autre_port. est de pr€venir ou non l•envoyeur.]] --dport [port_d€but[:port_fin][. sur le paquet. # "DROP" ignore les paquets. Pour organiser les r†gles d•acceptation/rejet. La syntaxe d•iptables est la suivante : iptables -A|I cha…ne -i (ou -o) interface -p protocole --sport [port_d€but[:port_fin][. le rejeter (REJECT) ou le denier (DROP). Si elle stipule REJECT. vous devez alors choisir ce que vous en faites. ‚ si aucune r†gle ne correspond au paquet. on proc†de de la fa‹on suivante : ‚ INPUT. Si la r†gle stipule ACCEPT. sont appel€s des cha…nes ‚ une r†gle est un ensemble d•attributs auxquels correspond (ou non) un paquet : IP source. Il est plus s€curisant (mais plus long • mettre en place) d•utiliser une politique par d€faut DROP et de cr€er des r†gles ACCEPT. Vous pouvez l•accepter (ACCEPT). port source. Les paquets sortants (OUTPUT). dans l•ordre..

0/24 --jump ACCEPT Pour ignorer les autres paquets entrants sur le Port (logiciel)|port telnet (forme courte) : iptables -A INPUT -p tcp --dport telnet -j DROP Pour rejeter les paquets entrants sur le port 3128.168.Administration r€seau sous Linux/ Netfilter 36 # on met souvent "DROP" pour l<font name="DejaVuSans">ƒ</font>OUTPUT (on ne donne pas d<f un # ‚ventuel pirate) et "REJECT" pour l<font name="DejaVuSans">ƒ</font>INPUT et le FORWARD ainsi # r‚cup‚rer des infos pour soi) mais iptables n<font name="DejaVuSans">ƒ</font>autorise p # comme politique par d‚faut iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP # Autoriser le trafic sur l<font name="DejaVuSans">ƒ</font>interface loopback : iptables -A INPUT -i lo -j ACCEPT iptables -A OUTPUT -o lo -j ACCEPT # Ensuite. Quelques exemples Pour vider la chaine INPUT de la table filter (la table par d€faut) : iptables --flush INPUT La politique par d€faut est d'accepter tous les paquets.13. Le -l permet de loguer les paquets entrants. Si par contre vous avez utilis€ ACCEPT. Pour changer cette r†gle sur la chaine FORWARD de la table filter : iptables -P FORWARD DROP Pour laisser passer les paquets sur le port telnet qui viennent d'un r€seau local (forme longue) : iptables --append INPUT --protocol tcp --destination-port telnet --source 192. vous pouvez pr€ciser les machines que vous souhaitez autoriser. ce qui est g€n€ralement un mauvais choix pour la s€curit€. c<font name="DejaVuSans">ƒ</font>est • vous d<font name="DejaVuSans">ƒ</font>a fonctionner # les services que vous souhaitez utilisez sur votre machine. souvent utilis€ par les proxies : iptables -A INPUT -p tcp --dport 3128 -j REJECT Pour Autoriser telnet vers votre machine (serveur telnet) en utilisant le script pr€c€dent : $IPTABLES -A INPUT -p tcp --sport ${ports_non_privilegies} --dport telnet -s $Any -d ${ip_exterieure} -i ${interface_internet} -j ACCEPT -l $IPTABLES -A OUTPUT -p ${ports_non_privilegies} -s ${interface_internet} -j ACCEPT tcp --sport ${ip_exterieure} telnet --dport -d $Any -i Cette derni†re ligne n•est n€cessaire que si vous avez mis DROP pour la cha…ne OUTPUT. elle n•est pas n€cessaire. Pour autoriser telnet depuis votre machine (client telnet) en utilisant le script pr€c€dent: . Any ouvre la porte telnet • tout le monde.

sinon vous serez rejet€. Vous pouvez activer ou d€sactiver ici des services. L'installation Par d€faut il est install€ avec la plupart des distributions..conf. Il est possible d'ajouter d'autres services dans ce fichier. Dans tous les cas de figure et cela est l'autre fonction de TCP_wrappers tcpd transmettra • syslogd (d€mon de log) votre demande (cette demande se retrouvera logger dans le fichier /var/log/securite).conf Ce fichier se trouve dans le r€pertoire /etc. Lorsque vous souhaitez vous connecter sur une machine distante avec la commande telnet par exemple.. en pla‹ant un # devant la ligne ou en l'enlevant.allow et hosts. le paquet • installer est : tcp_wrappers-x. mais au cas. Il utilise le d€mon tcpd qui intercepte les demandes de connexion • un service et v€rifie dans les fichiers hosts.deny si vous avez le droit de vous connecter en telnet. inetd. En voici un comment€: # Version: \@(#)/etc/inetd.deny si le client est autoris€ • utiliser ce service.. le d€mon inetd intercepte votre demande de connexion et v€rifie dans le fichier inetd.Administration r€seau sous Linux/ Netfilter $IPTABLES -A OUTPUT -o ${interface_internet} -p tcp --sport ${ports_non_privilegies} --dport telnet -s ${ip_exterieure} -d $Any -j ACCEPT $IPTABLES -A INPUT -i ${interface_internet} -p tcp --sport telnet --dport ${ports_non_privilegies} -s $Any -d ${ip_exterieure} -j ACCEPT 37 Administration r€seau sous Linux/ TCP Wrapper Le service TCP wrappers permettent de contr‰ler et de restreindre l'acc†s • certains services r€seau.. hosts. Sur les versions de linux actuelles. il ne peut toutefois pas remplacer compl†tement un vrai FireWall. Si la r€ponse est positive. hosts. puis en obligeant la relecture du fichier avec la commande killall -HUP inetd. tcpdchk. si cela est le cas votre demande de connexion sera autoris€e.deny. Le principe.allow. inetd. TCP Wrappers est un €l€ment • mettre en oeuvre pour s€curiser une machine sous linux. tcpdmatch. TCP_wrappers utilise les fichiers suivants : tcpd. votre demande est pass€e • tcpd qui v€rifie dans les fichiers hosts. Par contre il n'est pas actif dans sa partie contr‰le d'acc†s.rpm.allow et hosts.conf # Les premi‚res lignes sont utilis€es par inetd # #echo stream tcp nowait root internal #echo dgram udp wait root internal . Configuration : le fichier inetd.conf si le service telnet est utilisable. il est install€ par d€faut.

de charger le syst‚me. #Ils pr€sentent des failles au niveau de la s€curit€.Administration r€seau sous Linux/ TCP Wrapper #discard stream tcp nowait root internal #discard dgram udp wait root internal #daytime stream tcp nowait root internal #daytime dgram udp wait root internal #chargen stream tcp nowait root internal #chargen dgram udp wait root internal #time stream tcp nowait root internal #time dgram udp wait root internal # #ftp et telnet sont deux services tr‚s utilis€s. de recevoir une adresse IP.dtalkd # # pop3 et imap sont les serveurs de messagerie.ntalkd #dtalk stream tcp wait nobody.rlogind #exec stream tcp nowait root /usr/sbin/tcpd in. #Essayez de ne pas les utiliser. #uucp stream tcp nowait uucp /usr/sbin/tcpd /usr/lib/uucp/uucico -l #ftp et bootp sont utilis€s pour permettre aux machines clientes qui ne disposent pas # de disque de booter.rexecd #comsat dgram udp wait root /usr/sbin/tcpd in. login. # A n'activer que si vous les utilisez. #Evitez de l'utiliser.tty /usr/sbin/tcpd in. 38 .tty /usr/sbin/tcpd in. # shell stream tcp nowait root /usr/sbin/tcpd in.telnetd # #Shell. #Ils ne sont pas sp€cialement s€curis€s. # # ftp stream tcp nowait root /usr/sbin/tcpd in.talkd ntalk dgram udp wait nobody.ftpd telnet stream tcp nowait root /usr/sbin/tcpd in. comsat et talk sont des protocoles BSD. # Oubliez pop2 #pop-2 stream tcp nowait root /usr/sbin/tcpd ipop2d #pop-3 stream tcp nowait root /usr/sbin/tcpd ipop3d #imap stream tcp nowait root /usr/sbin/tcpd imapd # #Le service UUCP est un moyen d'envoyer des fichiers entre machines. #Ce service n'est pratiquement plus utilis€. telnet peut ƒtre remplac€ par ssh qui est beaucoup plus s€curis€.tty /usr/sbin/tcpd in.rshd login stream tcp nowait root /usr/sbin/tcpd in.comsat talk gram udp wait nobody. exec.

puis hosts. Si une requ‡te est autoris€e dans le fichier hosts.deny.identd -e -o # end of inetd. que ce soit dans hosts. quelque soit le contenu du fichier hosts.allow . En un mot si vous ne mettez rien dans hosts.deny alors elle est autoris€e. # Vous devez absolument €viter de l'utiliser # tftp dgram udp wait root /usr/sbin/tcpd in. systat and netstat ne sont pas # dangereux en eux mƒme. Le premier fichier lu est hosts.tftpd # bootps dgram udp wait root /usr/sbin/tcpd bootpd #Finger. raw pour IP) ‚ tcp: nom du protocole tel qu'il existe dans /etc/protocols ‚ wait: €tat d'attente. Si vous ne devez pas utiliser un service. rendez le inactif. mais ils # fournissent des informations sur les comptes #utilisateurs et votre syst‚me. ‚ root: Nom de l'utilisateur sous lequel le daemon tourne ‚ /usr/sbin/tcpd in.deny Vous trouverez ces deux fichiers dans le r€pertoire /etc. # finger stream tcp nowait nobody /usr/sbin/tcpd in. dgram pour udp. On utilise wait plut‰t avec les types dgram et raw.conf linuxconf stream tcp wait root /bin/linuxconf linuxconf --http Le # devant une ligne rend la ligne inactive. Consid€rons la ligne suivante: ftp stream tcp nowait root /usr/sbin/tcpd in. Si une requ‡te ne satisfait aucune r†gle. #Il ne faut donc pas les utiliser.ftpd ‚ ftp: nom du service.Administration r€seau sous Linux/ TCP Wrapper #TFTP ne disposant pas de syst‚me d'authentification il #est un €norme trou de s€curit€.deny. donc le service non disponible.allow alors elle est accept€e. Voici un petit exemple qui dans des cas simples est suffisant : .allow et Hosts. l'autre possibilit€ est nowait qui permet d'allouer dynamiquement des sockets • utiliser avec le type stream.cfingerd #systat stream tcp nowait guest /usr/sbin/tcpd /bin/ps -auwwx #netstat stream tcp nowait guest /usr/sbin/tcpd /bin/netstat -f inet # Service d'authentification auth fournit des information sur l'utilisateur auth stream tcp wait root /usr/sbin/in. 39 Hosts.fingerd #cfinger stream tcp nowait root /usr/sbin/tcpd in.allow ou hosts. Voici un descriptif de quelques options. tel qu'il est d€clar€ dans /etc/services ‚ stream: type de service de transport de donn€es (il existe stream pour tcp.deny.identd in. si l'€tat est wait inetd doit attendre que le serveur ait restitu€ la socket avant de se remettre • l'€coute. alors vous n'avez rien fait.ftpd Chemin d'acc†s au programme in.ftpd lanc€ par inetd (il est possible ici d'ajouter les options de d€marrage du programme. cfinger.

ftpd : 192.0.allow # hosts.allow ALL : LOCAL in.deny est simple • comprendre.deny.1.deny #hosts.ftpd localhost pour simuler une connexion sur in.168.fr On autorise tout les ports depuis un acc†s local.deny ALL:ALL Le fichier hosts.] [ : option : option .conf).allow indique les services que je veux autoriser (Le nom du service doit ‡tre identique au nom qui se trouve dans inetd.iut. il interdit tout par d€faut. hosts.0.0/255.Administration r€seau sous Linux/ TCP Wrapper fichier hosts. 192.194.168.168...255. .168.client..allow et hosts.ftpd voir aussi xinetd un €quivalent de tcp_wrappers... Le fichier hosts.u-clermont1. et on autorise ftp pour les machines venant du r€seau 192.telnetd : .1.. 40 Les utilitaires de tcp wrappers ‚ tcpdchk -av : permet de voir la configuration de tcp wrappers ‚ tcpdmatch in..deamon.0 avec une autre notation et enfin la seule machine qui a pour adresse 192.0.255.] : client[..1 in. mais avec plus d'options.1 fichier hosts. ainsi que les machines du r€seau 10.194.168.168. la syntaxe est la suivante : deamon[.10.] Cette syntaxe est identique dans les deux fichiers.0..

Les primitives les plus courantes sont les suivantes : src <adresse> l'adresse source est <adresse> dst <adresse> l'adresse destination est <adresse> host <adresse> l'adresse source ou destination est <adresse> port <port> le port source ou destination est <port> src port <port> le port source est <port> dst port <port> le port destination est <port> portrange <port1>-<port2> . les cartes r€seau ne r€ceptionnent que les paquets qui leur sont destin€s. De la m‡me mani†re. Une primitive est un identifiant pr€c€d€ de mots cl€s qui indiquent le type de l'identifiant. Ils sont g€n€ralement remplac€s par des commutateurs (ou switch) qui savent d€terminer (en fonction de l'adresses MAC) sur quel cˆble il faut envoyer un paquet. Les machines ne re‹oivent donc g€n€ralement que les paquets qui leur sont destin€s. Une expression est compos€e de primitives et d'op€rateurs logiques. L'utilitaire tcpdump permet d'inspecter les paquets qui sont re‹us et transmis par une carte r€seau. Par exemple la primitive src port 21 contient les €l€ments suivants : ‚ le mot cl€ src qui indique que l'identifiant ne porte que sur la source du paquet ‚ le mot cl€ port qui indique que l'identifiant est le port du paquet ‚ l'identifiant 21 La primitive correspond donc au port source 21. Ainsi. Filtrage Il est possible de s€lectionner les paquets • "€couter" en fonction d'expressions. ne seront affich€es / trait€es que les informations pour lesquelles le r€sultat de l'expression est v€rifi€. la primitive ether src 00:11:22:33:44:55 indique l'adresse ethernet (ou MAC) source 00:11:22:33:44:55. En fonctionnement normal. mais on peut faire en sorte qu'elles transmettent tous les paquets au syst†me.Administration r€seau sous Linux/ Tcpdump 41 Administration r€seau sous Linux/ Tcpdump Dans un r€seau ethernet reli€ par un concentrateur (ou hub). Les hub sont de moins en moins utilis€s. chaque machines re‹oit tous les paquets qui circulent sur le r€seau.

. Par d€faut il prend la premi†re active (sauf lo)...225. -x affiche €galement les donn€es contenues dans les paquets trouv€s.'!=.. les seuls paquets affich€s sont ceux en provenance de 192.. Par exemple l'expression suivante va trouver tous les paquets en provenance de tiny mais dont le port n'est pas le port ssh : src tiny and not port ssh 42 Options Plusieurs options permettent de modifier le comportement de tcpdump : -i <interface> s€lectionne l'interface r€seau sur laquelle tcpdump €coute..@.1.1 and port 53 and udp Nous avons demand€ l'affichage du contenu des paquets au format hexad€cimal et ascii (-x -X) et ce.. seuls les 68 premiers octets de donn€es sont affich€s.. or et not..0.208.0... Voici une ligne compl†te qui ne laisse vraiment passer que les paquets en provenance de 192.168.0.. On peut pr€ciser l'origine avec les mots cl€s src ou dst et le protocole avec les mots cl€s tcp ou udp..1 and port 80 L•.1 vers 212. Ce param†tre permet de modifier ce nombre. Exemples tcpdump src 192.www.208.Administration r€seau sous Linux/ Tcpdump le port est compris entre <port1> et <port2>.168...168..0.0. ..168.1 Ici...1 and dst 212... ..@.... le seul port qui nous int€resse est 80 (http). Nous obtenons les informations d€sir€es : 0x0000: 0x0010: 0x0020: 0x0030: 4500 c1fc 0001 7578 003b 1303 0000 036f 0000 80a1 0000 7267 4000 0035 0000 0000 4011 0027 0377 0100 ca00 c1fd d9b4 213d 14c2 0100 7777 056c 696e 01 E. Les primitives peuvent ‡tre reli€es avec les op€rateurs logiques and..168.org. quelle que soit leur taille (-s 0).1. .5. tcpdump -x -X -s 0 src 192...lin ux. Nous pouvons €galement pr€ciser nos pr€f€rences en ajoutant un crit†re : tcpdump src 192.225. sur le port 53 en udp. sous forme hexad€cimale -X affiche les donn€es des paquets sous forme ASCII -s <nombre> par d€faut....

C'est un protocole qui permet de faire des connexions s€curis€es (i. A et B doivent d'abord poss€der une m‡me cl€ secr†te. qui est le port normal de SSH. crypt€es) entre un serveur et un client SSH. Cryptographie sym€trique SSH utilise €galement la cryptographie sym€trique. La cl€ publique peut ‡tre librement publi€e tandis que chacun doit garder sa cl€ priv€e secr†te. on peut noter : ‚ Port 22: Signifie que le serveur SSH €coute sur le port 22. On peut l'utiliser pour se connecter • une machine distante comme avec telnet.. Il est possible le faire €couter sur un autre port en changeant cette ligne. on utilise la commande /etc/init. chaque personne dispose d'un couple de cl€ : une cl€ publique et une cl€ priv€e. B d€crypte le message grˆce • la cl€ secr†te. Parmi les multiples options. l'arr‡ter. pour transf€rer des fichiers de mani†re s€curis€e ou pour cr€er des tunnels. Si la personne A veut envoyer un message confidentiel • la personne B. puis la suite la communication est s€curis€e grˆce • la cryptographie sym€trique en utilisant la cl€ secr†te €chang€e. A crypte le message avec la cl€ s€cr†te et l'envoie • B sur un canal qui n'est pas forc€ment s€curis€. . • ne pas confondre avec /etc/ssh/ssh_config qui est le fichier de configuration du client SSH. Seul B pourra d€crypter le message en utilisant sa cl€ priv€e.). Le syst‚me de cl€s de SSH Cryptographie asym€trique SSH utilise la cryptographie asym€trique RSA ou DSA. recharger la configuration. La cryptographie sym€trique est beaucoup moins gourmande en ressources processeur que la cryptographie asym€trique. En cryptographique asym€trique. Configuration du serveur SSH Pour manipuler le daemon (le lancer. Les tunnels permettent s€curiser des protocoles qui ne le sont pas en faisant passer les donn€es par une connexion SSH. mais le gros probl†me est l'€change de la cl€ secr†te entre A et B.. qui est utilis€ par les navigateurs Web et par SSH. Dans le protocole SSL. Toute autre personne en possession de la cl€ secr†te peut d€crypter le message. Son principe est simple : si A veut envoyer un message confidentiel • B.d/ssh Le fichier de configuration du serveur SSH est /etc/ssh/sshd_config.Administration r€seau sous Linux/ SSH 43 Administration r€seau sous Linux/ SSH SSH signifie Secure SHell. la cryptographique asym€trique est utilis€e au d€but de la communication pour que A et B puissent s'€changer un cl€ s€cr†te de mani†re s€curis€e. A crypte le message avec la cl€ publique de B et l'envoie • B sur un canal qui n'est pas forc€ment s€curis€.e. La connaissance de la cl€ publique ne permet pas d'en d€duire la cl€ priv€e.

C'est une version plus s€curis€e que la version 1 du protocole. un cl€ publique (par d€faut ~/. Par d€faut. Lors de la connexion.ssh/id_dsa. avec les permissions 644. les utilisateurs peuvent s'authentifier grˆce • la cryptographie asym€trique et son couple de cl€s priv€e/publique. comme le fait le serveur SSH aupr†s du client SSH. Les cl€s g€n€r€es ont par d€faut une longueur de 1024 bits. La cl€ priv€e est enregistr€e avec les permissions 600. ‚ X11Forwarding yes: Autorise le transfert par SSH de l'affichage graphique. La cl€ publique est plac€e sur le serveur dans le home du compte sur lequel on souhaite se connecter. il faut indiquer au d€mon sshd de relire son fichier de configuration. on utilise la commande : ssh-keygen -t dsa Deux cl€s vont ‡tre g€n€r€es.Administration r€seau sous Linux/ SSH ‚ Protocol 2: Signifie que le serveur SSH accepte uniquement la version 2 du protocole SSH. ssh crypte le mot de passe ce qui €vite de le voir circuler en clair sur le r€seau. C'est la cl€ publique qu'il faudra copier sur le serveur.ssh/id_dsa). Pour accepter les deux protocoles.ssh/authorized_keys fichier utilis€ pour 'l'autologin' ‚ PermitEmptyPasswords no: permet ou non les mots de passe vide Si le fichier de configuration du serveur a €t€ modifi€. le client ssh demande le mot de passe du compte. ‚ AuthorizedKeysFile . La commande demande un nom de fichier pour sauvegarder la cl€ priv€e et un nom de fichier pour sauvegarder la cl€ publique. La cl€ publique porte le m‡me nom de fichier suivi de ". ce qui est aujourd'hui consid€r€ comme suffisant pour une bonne protection. la cl€ priv€e est stock€e dans le fichier $HOME/. Authentification par cl€ Au lieu de s'authentifier par mot de passe. 44 Se logguer par SSH Deux types d'authentification sont possibles : par mot de passe et par cl€. Dans ce cas.d/ssh restart. il suffit de se logger en utilisateur normal et d'utiliser la commande su. . Pour logger en root.ssh/id_dsa. Dans ce cas. avec la commande /etc/init. change la ligne en : Protocol 2. La cl€ priv€e reste sur le poste client. G€n€rer une cl€ Pour g€n€rer un couple de cl€s.pub".1 ‚ PermitRootLogin no: Signifie que l'on ne peux pas se logger en root par SSH. Dans les deux cas on utilise une des commandes suivantes : ssh -l <login> <adresse du serveur SSH> ssh <login>@<adresse du serveur SSH> Authentification par mot de passe C'est la m€thode la plus simple. aucun mot de passe ne circule sur le r€seau.pub) et une cl€ priv€e (par d€faut ~/. ‚ LoginGraceTime 600: Temps de connexion maximum ‚ RSAAuthentication yes: M€thode d'authentification.

.ssh' ne doit pas •tre lisible par tous. sinon ‹a ne fonctionne pas. il suffit de proc€der comme pr€c€demment. le fichier authorized_keys ne doit pas ‡tre lisible par tous (600 par exemple). elles sont d€crypt€es avec la passphrase avant d'‡tre ajout€es) ‚ • chaque connexion ssh. Si la cl€ priv€e a €t€ enregistr€ dans un autre fichier que $HOME/. on peut utiliser ftp. sinon SSH refusera d'en lire le contenu. Pour lancer un agent on utilise g€n€ralement une commande qui ressemble • : ssh-agent /bin/bash L'agent SSH lance un nouveau shell ("/bin/bash") dans lequel il sera actif. scp (copie de fichier par ssh). Cette pass phrase sert • crypter la cl€ priv€e. Il pourra par exemple avoir les permissions 700. ‚ et que l'agent est capable de faire suivre la cl€ sur plusieurs connexions. De la m‡me mani†re. Il ne sera utilisable qu'• partir de ce shell et dans les programmes qui y seront lanc€s. Pour transf€rer la cl€ publique. il faut le pr€ciser au client ssh : ssh -i <nom du fichier contenant la cl€ priv€e> <login>@<serveur> 45 Agent SSH Un agent SSH est un programme qui garde en m€moire des cl€s priv€es.ssh/authorized_keys. pour se logger.ssh/id_dsa. Chaque ligne du fichier authorized_keys correspond • une cl€ publique autoris€e • se connecter. Le r€pertoire $HOME/. Autoriser sa cl€ publique Pour autoriser une cl€ • se connecter • un compte.Administration r€seau sous Linux/ SSH Lors de la cr€ation de la cl€. sur le serveur SSH. il faut placer sa partie publique dans le fichier $HOME/. le fichier est /home/sasa/. Le principe est le suivant : ‚ on lance un agent ‚ on lui ajoute des cl€s (si les cl€s sont crypt€es. Il faut v€rifier que chaque cl€ est bien sur une seule ligne. Un m€canisme appel€ ssh-agent permet de ne pas rentrer le mot de passe • chaque fois (voir les docs). Ensuite. La pass phrase sera alors demand€e • chaque utilisation de la cl€ priv€e.ssh/authorized_keys du compte en question. les cl€ de l'agent sont utilis€es en priorit€ Les avantages principaux sont : ‚ que la passphrase n'est demand€e qu'une seule fois au moment o„ elle est ajout€e • l'agent. ou un simple copier/coller entre deux terminaux (c'est simplement une longue ligne de caract†res ASCII). Si vous souhaitez vous connecter au serveur sur le compte sasa. c'est • dire • chaque fois que vous vous connecterez en utilisant cette m€thode d'authentification. l'utilitaire demande une pass phrase qui est un mot de passe pour prot€ger la cl€ priv€e (2eme protection). Il est possible de changer la pass phrase qui prot†ge la cl€ priv€e avec la commande ssh-keygen -p.

il utilisera la cl€ par d€faut ("~/. scp.Administration r€seau sous Linux/ SSH Pour ajouter une cl€ on utilise ssh-add [<fichier>] Si on ne pr€cise aucun fichier.) lanc€es • partir de ce shell utiliseront l'agent et ne demanderont donc plus la passphrase. Sur HOST1. (options -L et -R de la commande ssh). 46 Cr€er un "tunnel" crypt€ entre deux stations SSH est €galement capable de fournir un encryptage • d'autres services (ftp par exemple) par le biais du port forwarding.. Si la cl€ est crypt€. la passphrase sera demand€e et la cl€ d€crypt€e sera ajout€e • l'agent.. de la mani†re suivante: Consid€rons deux stations HOST1 et HOST2. lesquelles seront automatiquement crypt€es. Toutes les connexions SSH (avec ssh. que lorsqu'on se connecte au port p1.ssh/id_dsa" pour SSH 2). vous utilisiez la commande : ssh -L p1:HOST2:p2 HOST2 ou sur HOST2: ssh -R p1:HOST2:p2 HOST1 alors vous obtenez un tunnel s€curis€ dans lequel vous pouvez passer toute connexion. . ssh -L p1:HOST2:p2 HOST2 signifie. les paquets sont retransmis vers le port p2 de la machine HOST2 via HOST2. Supposons que sur la machine HOST1.

S'il parle d'un probl†me avec le nom de domaine.conf. faites en sorte qu'Apache se lance sans message d'erreur (commande "/etc/init. v€rifiez dans access.log qu'Apache re‹oit bien la requ‡te.d/apache2 restart"). il faudra probablement utiliser la directive ServerName dans apache2. C'est la ligne RedirectMatch dans la configuration du site par d€faut qui provoque ‹a (dans /etc/apache2/sites-available/default). Si ce n'est pas le cas. Supprimez cette ligne et relancez Apache pour d€sactiver cette fonctionnalit€ qui ne nous servira pas. en utilisant l'adresse http://localhost:PORT/. vous constaterez que l'adresse dans votre navigateur a €t€ modifi€e en /apache2-default. Acc€der … la page d'accueil du serveur Il y a plusieurs moyens pour acc€der au serveur HTTP de bigboss : ‚ soit • partir de tiny en mode texte avec la commande lynx http://bigboss/ ‚ soit • partir de tiny en mode graphique avec la commande dillo http://bigboss/ ‚ soit • partir du syst†me h‰te avec un navigateur.html contenant : <h1>†a marche !</h1> ‚ Modifiez le site par d€faut pour qu'il utilise ce r€pertoire comme racine ‚ V€rifiez que ‹a fonctionne et que vous pouvez acc€der • votre fichier . Modification du site par d€faut ‚ Cr€ez un r€pertoire qui h€bergera votre site web (par exemple /home/http/racine) ‚ Cr€ez dans ce r€pertoire un fichier avec le contenu de votre choix.47 Les TP associ€s Administration r€seau sous Linux/TP Apache Lancement d'Apache Sur bigboss. V€rifiez ensuite que vous acc€dez bien • la racine du site lorsque vous demandez l'adresse http://bigboss/ (ou http://localhost:PORT/). Par exemple test. o„ le PORT • utiliser est indiqu€ • cot€ du port 80 dans la page "Informations" du menu qui permet de lancer bigboss Si ‹a ne fonctionne pas. Lorsque ‹a marche. vous n'utilisez probablement pas la bonne adresse.

Cr€ez un fichier portant un de ces noms et v€rifiez que le listing n'apparait plus. La directive DirectoryIndex permet de faire afficher un fichier au lieu de ce listing. Recherchez dans la configuration d'Apache quels fichiers sont affich€s • la place du listing lorsqu'on acc†de • un r€pertoire. La page devrait afficher la date du jour.php contenant : Nous sommes le <? echo date('d/m/Y'). Cr€ation d'un script CGI ‚ Cr€ez un r€pertoire qui h€bergera vos CGI (par exemple /home/http/cgi) ‚ Modifiez le site par d€faut pour qu'il utilise ce r€pertoire pour les CGI ‚ Cr€ez un script shell (par exemple /home/http/cgi/test) qui affichera le texte de votre choix ‚ V€rifiez que le script fonctionne en l'ex€cutant directement dans un terminal de bigboss ‚ Faites ex€cuter le script CGI par Apache en utilisant votre navigateur Cr€ation d'une page PHP ‚ Activez le module PHP (php4 ou php5 suivant les versions) ‚ Cr€ez une page PHP et v€rifiez qu'elle fonctionne. ?>. c'est la liste des fichiers qui s'affiche. Par exemple /home/http/racine/test. Pages web personnelles ‚ V€rifiez que le module userdir est activ€ ‚ Cr€ez un utilisateur sur bigboss (avec la commande adduser) et devenez cet utilisateur (avec la commande su) ‚ Cr€ez son r€pertoire http personnel et placez dedans un fichier HTML quelconque ‚ Acc€dez au r€pertoire personnel de ce compte • partir de votre navigateur Protection par mot de passe ‚ Cr€ez un r€pertoire • la racine de votre site par d€faut (par exemple /home/http/racine/priv) ‚ Prot€gez le par mot de passe ‚ Acc€dez • ce r€pertoire avec un navigateur et v€rifiez qu'il demande un mot de passe et que celui que vous avez ajout€ fonctionne .Administration r€seau sous Linux/ TP Apache 48 Fichier par d€faut Quand on demande la racine du site (http://bigboss/ ou http://localhost:PORT/).

Administration r€seau sous Linux/ TP Apache 49 Cr€ation d'un serveur virtuel ‚ Cr€ez un autre site web. car vous n'avez pas les autorisations pour associer une adresse IP • un nom de domaine sur la machine h‰te. accessible • l'adresse de votre choix (par exemple http://monsite. Administration r€seau sous Linux/TP FTP Connexion utilisateur ‚ V€rifiez que ProFTPD est lanc€ sur bigboss et lancez-le si ce n'est pas le cas ‚ Cr€ez un compte utilisateur sur bigboss et cr€ez un fichier dans son home ‚ Connectez-vous avec ce compte en utilisant la commande ftp sur tiny ‚ T€l€chargez le fichier que vous avez cr€€ ‚ Envoyez un fichier sur le serveur ‚ Modifiez ProFTPD pour qu'il interdise l'acc†s • cet utilisateur (en utilisant la commande UseFtpUsers dans proftpd.conf et le fichier /etc/ftpusers) ‚ V€rifiez que ‹a fonctionne Acc‚s anonyme ‚ Cr€ez un r€pertoire sur bigboss et cr€ez un fichier dedans ‚ Activez l'acc†s anonyme dans ProFTPD et configurez-le pour que les utilisateurs anonymes acc†dent au r€pertoire que vous avez cr€€ quand ils se connectent ‚ Connectez-vous en anonyme • partir de tiny et t€l€chargez le fichier que vous avez cr€€ ‚ Connectez-vous avec dillo. toujours • partir de tiny ‚ Faites en sorte que les utilisateurs anonymes ne puissent pas cr€er ou modifier les fichiers ou r€pertoires .com/) ‚ V€rifiez que http://bigboss/ fonctionne toujours L'acc†s • ce site ne pourra se faire qu'• partir de tiny.

10 et 192.Administration r€seau sous Linux/ TP DHCP 50 Administration r€seau sous Linux/TP DHCP Adresse dynamique ‚ Configurez le serveur DHCP de bigboss pour qu'il attribue des adresses IP dynamiques entre 192. ouvrir un terminal sur bigboss et lancer la commande tail -f /var/log/kern. ‚ Lancer un ping de tiny vers bigboss ‚ V€rifier que les paquets sont affich€s.2 • tiny ‚ V€rifiez que ‹a fonctionne Si vous gardez cette configuration.168.30. Administration r€seau sous Linux/TP Netfilter Introduction ‚ Lire ƒ le wikilivre sur Netfilter ‚ Afficher les r†gles contenues dans les cha…nes INPUT. ‚ Afficher les r†gles de cette cha…ne et v€rifier que celle ajout€e appara…t.30.168. il faudra syst†matiquement d€marrer bigboss avant tiny.log ‚ Faire un ping de bigboss vers une adresse IP inconnue (par exemple 1. Il ne devrait y en avoir aucune. Sinon tiny n'obtiendra pas son adresse IP. .2.20 ‚ Configurez tiny pour qu'il r€cup†re son adresse IP par DHCP ‚ V€rifiez qu'il obtient une adresse dans la plage fix€e Adresse fixe ‚ Configurez le serveur DHCP de bigboss pour qu'il attribue l'adresse 192.30.168. OUTPUT et FORWARD sur bigboss.3.4) et constater le r€sultat. S'ils ne le sont pas. LOG ‚ Ajouter sur bigboss une r†gle dans la cha…ne INPUT qui enverra sur la cible LOG tous les paquets du protocole icmp.

d (voir page de man) ‚ Red€marrer et v€rifier que ‹a fonctionne ‚ Retirer le script pour les TP suivants et vider les tables .d et faire en sorte qu'il se lance au d€marrage avec la commande update-rc. ‚ Supprimer cette r†gle. Bloquer HTTP ‚ V€rifier qu'on peut acc€der au serveur HTTP de bigboss • partir de tiny et du poste h‰te (voir TP sur Apache) ‚ Ajouter sur bigboss une r†gle qui jette les paquets en entr€e qui sont • destination du port HTTP (80.Administration r€seau sous Linux/ TP Netfilter 51 Bloquer tiny ‚ Ajouter une r†gle au d€but de la cha…ne INPUT pour jeter tous les paquets qui viennent de tiny. mais toujours pas • partir du poste h‰te. ‚ Ajouter une r†gle (avant la pr€c€dente) qui accepte tous les paquets qui viennent de tiny.. ‚ Constater avec iptables -v -L INPUT que des paquets ont bien travers€ la r†gle ajout€e.) ‚ Placer ce script dans /etc/init. ‚ V€rifier qu'on peut au serveur HTTP • partir de tiny. mais • rien d'autre (pas de ping. ni • partir de tiny.. Script de firewall ‚ Cr€er un script shell qui : ‚ efface toutes les r†gles de toutes les cha…nes ‚ accepte en entr€e ce qui est • destination du port HTTP ‚ jette tout ce qui vient de tiny ‚ Lancer ce script et v€rifier que tiny peut acc€der au serveur HTTP de bigboss. ‚ V€rifier qu'on ne peut plus acc€der au serveur HTTP ni • partir du poste h‰te. FTP. ‚ V€rifiez que tiny ne peut plus faire de ping sur bigboss. ou www).

votre r†gle sur telnet sera permise et tout le reste sera refus€. En connaissez vous certains? lesquels ? telnet V€rifiez si dans inetd. videz les fichiers hosts. Dans ce cas. Pour des raisons de facilit€s par rapport aux prochains TP.allow.allow et hosts...deny. indiquez et commentez les services auxquels vous avez acc†s. Que donne et fait cette commande ? . Si ‹a ne fonctionne pas.deny.conf.allow et hosts. Cr€ez une r†gle pour tout interdire dans le fichier hosts. vous avez loup€ quelquechose auparavant.conf vous avez acc†s • telnet. Puis essayez de vous connecter avec telnet bigboss.conf Ouvrir le fichier /etc/inetd. tcpdchk Utilisez la commande tcpdchk -av. Puis.deny. Contiennent-ils des r†gles ? Autorisez tiny • se connecter avec telnet sur bigboss avec une r†gle dans le fichier hosts. hosts Lisez les fichier hosts.Administration r€seau sous Linux/ TP TCP Wrapper 52 Administration r€seau sous Linux/TP TCP Wrapper inetd.

Vous trouverez une barre d'outils et 3 fen‡tres: ‚ Les diff€rents boutons permettent de cr€er une nouvelle analyse du r€seau. La liste des protocoles est plut‰t longue. destination. d'ouvrir un fichier d'analyse.). le message ‚ rep€rer les paquets contenant le login et le mot de passe Utilisation de wireshark Wireshark (anciennement Ethereal) est un outil d'analyse de traffic r€seau.wireshark. appara…t.org. un menu capture (pour d€marrer et €diter les filtres de capture) et entre autre un menu analyse (affichage des filtres d'analyse. la destination et le type de chaque paquet g€n€r€ par les pings FTP ‚ lancer tcpdump sur bigboss pour que ce dernier r€cup†re les trames du port 21 (source ou destination) et affiche le contenu des paquets sous forme ASCII. leur adresse destination. quitter tcpdump (Ctrl+C) ‚ rep€rer dans le fichier trames les paquets. La seconde d€crit le contenu d'une trame s€lectionn€e dans la premi†re fen‡tre. disponible pour de nombreux OS et poss€dant une interface graphique. affichage des protocoles pris en compte). leur adresse source. permettant d'ajouter des options. l'ent‡te.. Une nouvelle fen‡tre. les options. Rediriger la sortie de tcpdump vers un fichier nomm€ trames (avec ">") ‚ passer sur un autre terminal et initier une connexion ftp • partir de tiny. ‚ La premi†re fen‡tre r€pertorie les trames re‹ues (source.. Lancez Wireshark. elle donne le code hexad€cimal de la m‡me trame. Vous pourrez aussi trouver une liste de menus : les classiques (file. jetez y un oeil ! Pour le reste (notamment pour les filtres) la documentation de Wirewhark est disponible • www. en entrant un login et un mot de passe ‚ une fois la connexion ftp €tablie. d'en fermer un. Quant • la troisi†me fen‡tre. lancer tcpdump sur l'interface r€seau qui relie tiny et bigboss ("-i eth1") ‚ lancer un autre terminal sur bigboss ("Shell Root" dans le menu de bigboss) ‚ lancer un "ping tiny" ‚ rep€rer dans l'affichage de tcpdump la source. Vous pouvez cr€er un filtre pour n'analyser que les . Cliquez sur le premier bouton start a new live capture. etc etc. Vous devez commencer par choisir une interface. edit. de l'imprimer. Lancez wireshark en tache de fond • partir de tiny. type de trames).Administration r€seau sous Linux/ TP Tcpdump 53 Administration r€seau sous Linux/TP Tcpdump Capture de ping ‚ sur bigboss. A Commen‹ons par faire une nouvelle analyse. dans notre cas la carte Ethernet (eth1).

) Stoppez la capture apr†s la r€ception de quelques trames. . Ajoutez cette cl€ publique tiny>/. E Lancez un agent SSH. Pouvez vous lire le mot de passe? C Cr€ez une paire de cl€s publique/priv€e sur bigboss. Connectez vous sur tiny avec ssh • bigboss comme dans l'exercice pr€c€dant. Quelles sont les trames que vous avez re‹ues ? type. R€cup€rez le login et le mot de passe qu'ils ont utilis€s. dans le fichier /home/<nom du compte sur Connectez vous sur ce compte • partir de bigboss avec ssh avec une authentification par cl€. F Cr€ez un tunnel entre tiny et bigboss. Wireshark permet de filtrer sur les adresses MAC. La capture de trames commence. 54 Administration r€seau sous Linux/TP SSH A Consultez le fichier /etc/ssh/sshd_config et rep€rez les options d€crites dans les notes et leur valeur. B De m‡me que pr€c€demment. IP sur les ports. Cr€ez un compte sur bigboss (ou utilisez un pr€c€dent) et essayez de vous connecter.ssh/authorized_keys. Ne modifiez pas le nom des cl€s : appuyez simplement sur "Entr€e" quand il vous demande le nom du fichier. Pour les autres options voir l'aide ! Ne cr€er aucun filtre et cliquez sur ok. ajoutez-lui la cl€ et connectez-vous sans qu'il ne demande ni mot de passe ni passphrase. entre les ports 1234 et 21.. (voir l'aide).. Attention: une pass phrase vous est demand€e. avec la commande ssh -N -f -L 1234:<adresse IP de bigboss>:21 <adresse IP de bigboss> -l login. essayez de r€cup€rer avec tcpdump (ou wireshark) les trames provenant de tiny et faites une redirection vers le fichier trames. retenez la ! D Envoyez la cl€ publique sur tiny par ftp ou avec la commande scp. ou samba ou ssh. Connectez vous • bigboss (par http ou ftp.. source ? que contiennent t-elles ? B Effectuez une nouvelle analyse avec wireshark en cr€ant un filtre de capture : src <adresse ip de tiny> and tcp port 21 Ce filtre permet de capturer uniquement les trames provenant de tiny contenant un flux ftp..Administration r€seau sous Linux/ TP Tcpdump trames et paquets IP qui vous int€resse. Connectez vous sur votre serveur ftp.

1 : mv vdn-0.1. Recherchez le mot de passe dans le fichier trames3 ? 55 Administration r€seau sous Linux/TP Global Pr€alable Il est recommand€ de repartir avec des syst†mes vierges pour se mettre en situation (le TP not€ sera fait sur un syst†me vierge). faites ftp localhost 1234 (sur tiny). ou en renommant vdn-0. . vous aboutissez en fait sur le serveur FTP de bigboss.22 • l'interface eth1 de tiny ‚ faire en sorte qu'un "ping bigboss" de tiny fonctionne ‚ faire en sorte qu'un "ping tiny" de bigboss fonctionne CGI prot€g€ par mot de passe ‚ cr€er un utilisateur "bob" sur bigboss ‚ cr€er dans son home un r€pertoire "cgi" ‚ cr€er dans ce r€pertoire un script CGI en shell qui affiche l'espace disque (grˆce • la commande "df". puis quittez.Administration r€seau sous Linux/ TP SSH R€cup€rez les paquets IP provenant de tiny avec tcpdump et placez les dans le fichier trames3.1 vdn-0. les connexions telnet venant de tiny Lancer le script et v€rifier qu'il bloque bien ce qu'il faut. consulter le man) ‚ faire en sorte que le CGI fonctionne quand on acc†de • "http://bigboss/bobcgi/nom_du_script" • partir de tiny ‚ prot€ger ce CGI avec un mot de passe Firewall Cr€er un script de firewall qui bloque tout sur bigboss sauf : ‚ ‚ ‚ ‚ tout ce qui passe par eth3 (en entr€e et en sortie). les connexions SSH les acc†s • son serveur web. Une fois la commande tcpdump lanc€e. Entrez un login et un mot de passe.old Configuration r€seau ‚ donner de mani†re permanente l'adresse IP 192. • travers une connexion encrypt€e.168. Par le port forwarding. Par exemple en se connectant avec un autre compte.30.

Samba. Samba et FTP sont accessibles depuis un navigateur web . Utiliser un filtre qui s€lectionne le minimum de paquets. FTP et Web ‚ cr€er un r€pertoire sur bigboss ‚ le partager avec NFS et le monter sur tiny. se connecter sur le compte bob de bigboss et v€rifier qu'il demande la passphrase et pas le mot de passe ‚ revenir sous teddy et lancer un agent ssh ‚ ajouter la cl€ • l'agent ‚ se reconnecter sur le compte bob de bigboss (• cr€er si ce n'est pas d€j• fait) et v€rifier qu'il ne demande ni le mot de passe ni la passphrase ‚ revenir sous teddy et copier un fichier sur bigboss sans qu'il ne demande de mot de passe ou de passphrase Capturer un mot de passe HTTP avec tcpdump ou wireshark Trouver dans les paquets r€seau (captur€s avec tcpdump ou wireshark) le mot de passe envoy€ lors de l'acc†s au CGI cr€€ au d€but du TP. R€pertoire partag€ par NFS.Administration r€seau sous Linux/ TP Global 56 SSH avec agent ‚ cr€er un utilisateur teddy sur tiny et passer sous cet utilisateur ‚ g€n€rer une cl€ SSH ‚ autoriser cette cl€ • se connecter sur le compte bob de bigboss ‚ • partir de teddy sur tiny. de mani†re • pouvoir €crire dedans • partir de tiny ‚ le partager avec Samba de mani†re • pouvoir €crire dedans • partir d'XP ‚ faire en sorte qu'il soit la racine du site web par d€faut de bigboss ‚ v€rifier que les fichiers cr€es par NFS.

php?oldid=170835 •Contributeurs: Michael Witrant Administration r€seau sous Linux/ TP Tcpdump •Source: http://fr.wikibooks.wikibooks.wikibooks.org/w/index.org/w/index.org/w/index.php?oldid=171123 •Contributeurs: Michael Witrant Administration r€seau sous Linux/ TP FTP •Source: http://fr. 4 modifications anonymes Administration r€seau sous Linux/ TP TCP Wrapper •Source: http://fr. Tavernier Administration r€seau sous Linux/ Configuration r€seau •Source: http://fr.wikibooks.php?oldid=171613 •Contributeurs: Michael Witrant. Sasa Administration r€seau sous Linux/ DHCP •Source: http://fr.wikibooks.php?oldid=168884 •Contributeurs: Michael Witrant Administration r€seau sous Linux/ Netfilter •Source: http://fr.wikibooks.wikibooks.php?oldid=171112 •Contributeurs: Michael Witrant.org/w/index.php?oldid=233694 •Contributeurs: Michael Witrant.php?oldid=171133 •Contributeurs: Michael Witrant Administration r€seau sous Linux/ TP Global •Source: http://fr.php?oldid=170837 •Contributeurs: Michael Witrant Administration r€seau sous Linux/ SSH •Source: http://fr.wikibooks.wikibooks.php?oldid=235469 •Contributeurs: Michael Witrant.org/w/index.org/w/index.org/w/index.php?oldid=171107 •Contributeurs: Michael Witrant Administration r€seau sous Linux/ TP SSH •Source: http://fr.wikibooks.org/w/index.wikibooks. 1 modifications anonymes Administration r€seau sous Linux/ FTP •Source: http://fr. 1 modifications anonymes Administration r€seau sous Linux/ TP Apache •Source: http://fr.wikibooks.org/w/index.php?oldid=232340 •Contributeurs: Michael Witrant.wikibooks.org/w/index.org/w/index. Sasa Administration r€seau sous Linux/ TCP Wrapper •Source: http://fr.org/w/index.wikibooks.org/w/index.php?oldid=168896 •Contributeurs: Michael Witrant Administration r€seau sous Linux/ TP Netfilter •Source: http://fr. 1 modifications anonymes .Sources et contributeurs de l'article 57 Article Sources and Contributors Administration r€seau sous Linux •Source: http://fr. 1 modifications anonymes Administration r€seau sous Linux/ Samba •Source: http://fr.wikibooks.org/w/index. Tavernier. Savant-fou.wikibooks.wikibooks.wikibooks.php?oldid=224535 •Contributeurs: Michael Witrant.php?oldid=229661 •Contributeurs: Michael Witrant.org/w/index. Michael Witrant Administration r€seau sous Linux/ NFS •Source: http://fr.org/w/index.org/w/index.php?oldid=171113 •Contributeurs: Michael Witrant Administration r€seau sous Linux/ TP DHCP •Source: http://fr.org/w/index.org/w/index.php?oldid=227077 •Contributeurs: Michael Witrant.php?oldid=170833 •Contributeurs: Michael Witrant Administration r€seau sous Linux/ Tcpdump •Source: http://fr.wikibooks.php?oldid=223888 •Contributeurs: Michael Witrant Administration r€seau sous Linux/ Apache •Source: http://fr.php?oldid=233695 •Contributeurs: Geek hippie.

Filter table only.wikibooks.php?title=Fichier:Netfilter_schema_-_Filter_table_only.png •Source: http://fr.png •Licence: inconnu •Contributeurs: User:Michael Witrant .org/w/index. Licenses and Contributors Image:Netfilter schema . licences et contributeurs 58 Image Sources.Source des images.

org/ licenses/ by-sa/ 3.Licence 59 Licence Creative Commons Attribution-Share Alike 3.0 Unported http:/ / creativecommons. 0/ .

Sign up to vote on this title
UsefulNot useful