Administration réseau sous Linux
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 Apache
• ? TP FTP
• ? TP DHCP
• ? TP Netfilter
• ? TP TCP Wrapper
• ? TP Tcpdump
• ? TP SSH
• ? TP 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
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/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
Administration réseau sous Linux/Configuration réseau
3
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
Passerelle et routage
Pour ajouter une passerelle, on peut utiliser la commande route :
route add default gw
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
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 :
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
4
Et si l'interface eth0 doit être configurée automatique grâce à un serveur DHCP :
iface eth0 inet dhcp
Résolution de noms
Le fichier 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 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 :
connecter>() machines>()
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
Administration réseau sous Linux/NFS
6
le répertoire projet et avec les droits 600 (lecture/écriture pour root uniquement, aucun
droit pour les autres). Si l'utilisateur toto accède via la station station1 au répertoire
/projet, il ne pourra pas accéder au fichier test, bien qu'il ait les "droits réseaux
read-write".
Un fois le fichier /etc/exports correctement configuré, il suffit de relancer le service NFS
par la commande suivante pour que les modifications soient prises en compte :
/etc/init.d/nfs-kernel-server reload
Installation coté client
C'est relativement simple puisque le "système de fichier réseau" NFS est directement
intégré au noyau. Il suffit de vérifier que ce dernier a été compilé avec la prise en charge de
NFS. C'est le cas de toutes les distributions récentes.
Pour monter un système de fichier distant, utiliser la commande mount avec l'option nfs :
mount -t nfs :
-o
Par exemple :
mount -t nfs 192.168.105.2:/armor/plages /mnt/cotes -o ro
Cette commande montera le répertoire /armor/plages, exporté par la station
192.168.105.2, dans le répertoire local /mnt/cotes, en lecture seule.
A la place d'une adresse IP, vous pouvez aussi donner un nom de machine, comme par
exemple sasa. Pour cela, il faut que le nom sasa puisse être converti en adresse IP (en
modifiant /etc/hosts par exemple, 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.
Le plus simple est de renseigner le fichier /etc/fstab qui contient une liste des systèmes
de fichiers connus.
La syntaxe est la suivante :
: local> nfs 0 0
Pour reprendre l'exemple précédent, cela donnerait :
sasa:/armor/plages /mnt/cotes nfs auto,rw,user,soft 0 0
Les options sont décrites dans la page de man de mount. Certaines sont communes à
d'autres systèmes de fichiers (ext2, vfat ) alors que d'autres sont spécifiques à NFS.
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.
Configuration du service Samba
Pour la configuration de ce service le principal fichier à modifier est qui se
trouve généralement dans /etc ou /etc/samba selon la distribution.
Il existe également des interfaces graphiques pour configurer Samba.
La section [global] contient les options communes à tous les répertoires partagés.
Voici quelques options utilisables :
workgroup
Le nom du groupe de travail. Les ordinateurs du même groupe de travail se retrouvent
côte à côte dans le voisinnage réseau de Windows.
server string
La description du serveur, qui apparaitra à coté de son nom dans l'explorateur
Windows. Si la description contient le terme %h, il sera remplacé par le nom d'hôte de
la machine.
encrypt passwords
Détermine si les mots de passe doivent être cryptés avant d'être transmis. C'est
fortement recommandé et tous les systèmes Windows à partir de 98 et NT4 SP3
utilisent cette fonctionnalité par défaut.
log file
Le nom du fichier qui contiendra le journal des activités du serveur. On peut avoir un
journal par machine client en utilisant %m dans le nom du fichier. Le %m sera
remplacé par le nom de la machine client.
max log size
Taille maximale du fichier journal, en Kio.
socket options
comme par exemple TCP_NODELAY pour
que le système envoi immédiatement les petits paquets sans attendre d'en avoir
plusieurs.
De nombreuses autres options sont disponibles. Elles sont détaillées dans la page de man
de [1]
Exemple
[global]
workgroup = maison
server string = Serveur Samba sur %h
encrypt passwords = true
log file = /var/log/samba/log.%m
Administration réseau sous Linux/Samba
8
max log size = 1000
socket options = TCP_NODELAY
Configuration du partage des répertoires
Les partages Samba sont décrits dans des sections ayant la forme suivante :
[]
=
Les paramètres principaux sont les suivantes :
comment
La description du répertoire partagé.
path
Le chemin du répertoire partagé. C'est le contenu du répertoire indiqué qui sera
partagé.
read only
Détermine si les clients pourront écrire ou non dans le répertoire partagé.
public
Autoriser ou non les connexions sans mot de passe.
valid users
Liste des seuls utilisateurs autorisés à se connecter séparés par des espaces. 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.
La section [homes] est un partage particulier. Elle définit le partage des répertoires
utilisateur des comptes unix de la machine.
De nombreuses autres options sont disponibles. Elles sont détaillées dans la page de man
de [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
Administration réseau sous Linux/Samba
9
[zelinux]
comment = Site web
path = /myrep/zelinux
read only = no
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 cela, pour chaque répertoire partagé ajoutez les options:
public = no
valid users = répertoires>
Pour chaque nom que vous avez rentré, il faut ajouter l'utilisateur samba avec
smbpasswd -a
Un compte unix du même nom doit exister. Si ce n'est pas le cas, il faut le créer avec la
commande adduser.
Lancement du service
Lancement :
/etc/init.d/samba start
Pour le stopper :
/etc/init.d/samba stop
Pour le relancer :
/etc/init.d/samba restart
Les modifications du fichier sont prises en compte pour chaque nouvelle
connexion. Pour les rendre effectives sur les connexions déjà établies, il faut relancer
Samba.
Accès aux répertoires
Pour accéder aux partage sous Windows, il suffit d'ouvrir le voisinage réseaux d'une station
Windows et de vérifier si la machine y est.
Pour se connecter en ligne de commande à un partage à partir de Linux, on peut utiliser la
commande
smbclient /// -U
Il est également possible de monter un partage Samba avec
smbmount /// local>
Administration réseau sous Linux/Samba
10
Références
[1]
Administration réseau sous Linux/
Apache
Apache est un serveur HTTP libre. 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, HTML, Flash, zip…). 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). Les sites web contiennent
généralement plusieurs types de documents, certains étant statiques et d'autres
dynamiques.
Nous traiterons ici d'Apache 2.2 sur un système Debian (et ses dérivés, comme Ubuntu).
Fichiers log
Par défaut sous Debian, Apache enregistre les erreurs dans le fichier
. Quand quelque chose ne fonctionne pas, ce fichier fournit
souvent des pistes pour trouver la solution.
Il enregistre également toutes les requêtes dans .
Configuration de base
Sous Debian, Apache se lance automatiquement lorsqu'on l'installe et à chaque démarrage
du système. Lorsqu'on modifie sa configuration, il faut lui faire prendre connaissance des
changements avec la commande
/etc/init.d/apache2 reload
Pour l'arrêter, le lancer ou le relancer on utilisera la même commande avec stop, start ou
restart.
Pour d'autres systèmes il faudra consulter la documentation du système ou celle d'Apache
[1].
Configuration du serveur
La configuration [2] du serveur se trouve dans . Ce fichier
contient des instructions Include [3] qui permettent de déplacer certaines parties de la
configuration dans d'autres fichiers. 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. Le répertoire
/etc/apache2/mods-enabled contient les modules activés. Les modules activés sont des
liens symboliques vers les modules installés.
Administration réseau sous Linux/Apache
11
Pour activer ou désactiver un module, on peut manipuler directement les liens ou utiliser
les commandes a2enmodet a2dismod (voir les pages de man).
Configuration des sites
De la même manière, le répertoire /etc/apache2/sites-available contient les sites web
disponibles et /etc/apache2/sites-enabled les sites activés. Il en existe un préinstallé :
le site default.
Les sites peuvent s'activer ou se désactiver en manipulant les liens dans sites-enabled ou
en utilisant a2ensite et a2dissite.
Quelques directives classiques
La syntaxe d'Apache est assez simple. On trouve des blocs (ou contextes) comme par
exemple :
# 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 . Celles qui ne concernent qu'un site web sont déportées dans le fichier
de configuration du site (sites-available/mon-site-web).
La directive DocumentRoot [6] fixe la racine du serveur Web, c'est-à-dire le répertoire de
base où se trouvent les documents. Par exemple avec la directive DocumentRoot
/var/www/html, si le navigateur demande la page
, le serveur cherchera le fichier
.
UserDir [7] permet d'indiquer le répertoire personnel des utilisateurs du système. 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. Pour
l'utilisateur toto, c'est généralement /home/toto/public_html. Sa page d'accueil sera alors
accessible par l'URL spéciale http://serveur/~toto.
DirectoryIndex [8] indique la liste des fichiers qu'Apache cherchera à afficher si l'URL n'en
précise pas. Par exemple si la configuration contient DirectoryIndex
et qu'on demande l'URL http://serveur/repertoire/, Apache va chercher
dans le répertoire un fichier ou . Si un de ces fichiers existe, il sera
affiché. Sinon, Apache affichera soit la liste des fichiers, soit une erreur (suivant la
présence de Indexes dans la directive Options [9]).
AccessFileName [10] définit le nom du fichier qu'on peut placer dans un répertoire pour en
modifier sa configuration. Cela permet, par exemple, d'interdire localement l'affichage de la
Administration réseau sous Linux/Apache
12
liste des fichiers, ou de protéger par mot de passe un répertoire et ses sous répertoires.
Listen [11] indique à Apache sur quel port TCP il doit écouter. Le port par défaut du
protocole HTTP est 80.
ServerName [12] indique à Apache son nom de domaine et éventuellement son port. Il s'en
sert lorsqu'il doit communiquer son adresse au client (le navigateur). C'est le cas par
exemple lorsqu'on demande l'adresse http://serveur/repertoire sans slash (/) à la fin.
Comme ce n'est pas une URL valide (l'URL d'un répertoire doit se terminer par un slash),
Apache utilise la directive ServerName pour reconstruire une adresse avec un slash et la
renvoi au client.
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).
Le premier module prefork utilise des processus (pour systèmes stables ou plus anciens),
le deuxième worker utilise des threads, et le dernier des threads par processus. Le dernier
module perchild est en cours de développement et n'est pas recommandé.
Celui utilisé par défaut sous Linux est prefork.
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 nb de processus serveur au demarrage
# MinSpareServers nb minimum de processus serveurs '''libres'''
instanciés
# MaxSpareServers nb maximum de processus serveurs '''libres'''
instanciés. S'il y en a MaxSpareServers+1 on les tues
# MaxClients .. nb maximum de processus serveurs qui peuvent
demarrer
# MaxRequestsPerChild .. nb maximum de requètes gérées par processus
serveur.
# Apres MaxRequestsPerChild requètes, le
processus meurt.
# Si MaxRequestsPerChild=0, alors le processus
n'expire jamais.
prefork.c>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 20
MaxRequestsPerChild 0
Administration réseau sous Linux/Apache
13
# pthread MPM # StartServers initial number of server
processes to start
# MaxClients .. maximum number of server processes allowed to
start
# MinSpareThreads minimum number of worker threads which are
kept spare
# MaxSpareThreads maximum number of worker threads which are
kept spare
# ThreadsPerChild constant number of worker threads in each
server process
# MaxRequestsPerChild .. maximum number of requests a server process
serves
StartServers 2
MaxClients 150
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 0
# perchild MPM # NumServers .. constant number of server
processes
# StartThreads initial number of worker threads in each
server process
# MinSpareThreads minimum number of worker threads which are
kept spare
# MaxSpareThreads maximum number of worker threads which are
kept spare
# MaxThreadsPerChild maximum number of worker threads in each
server process
# MaxRequestsPerChild .. maximum number of connections per server
process (then it dies)
perchild.c>
NumServers 5
StartThreads 5
MinSpareThreads 5
MaxSpareThreads 10
MaxThreadsPerChild 20
MaxRequestsPerChild 0
AcceptMutex fcntl
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).
Le paramétrage d'un répertoire se met dans un "conteneur" délimité par chemin_du_répertoire> et . La configuration s'applique au répertoire et à
tous ses sous répertoires. Si un sous-répertoire possède également sa propre configuration,
elle vient s'ajouter à celle du parent.
Voici quelques exemples de contrôle d'accès. Plus de détails sont donnés dans la section
"Un exemple de configuration".
# Configuration du répertoire racine du système
# On n'autorise aucune option particulière
Options None
# Aucune modification n'est autorisé dans les fichiers .htaccess
AllowOverride None
# Pour la racine du serveur:
# Quelques options
Options Indexes Includes FollowSymLinks
# Les options peuvent être changées dans un .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,deny
# Le répertoire contenant des exécutables CGI
AllowOverride None
Options ExecCGI
Les paramètres possibles de la directive Options [13] sont : "None", "All", "Indexes",
"Includes", "FollowSymLinks", "ExecCGI", ou "MultiViews".
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. Il faut pour cela utiliser le module userdir.
Le répertoire contenant le site web doit être créé dans le home de l'utilisateur et doit être
accessible en lecture pour tous. Le nom du répertoire est défini par la directive UserDir [7].
Par défaut il s'agit du répertoire public_html.
L'adresse pour accéder à ces sites personnels est le nom de l'utilisateur précédé d'un tilde
(~).
Par exemple un utilisateur toto sur le serveur peut créer les pages de
son site dans le répertoire /home/toto/public_html, et on pourra y accéder avec l'adresse
:
Il est possible de n'autoriser que certains utilisateurs à bénéficier du UserDir. 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, on peut utiliser une clause Directory pour le
répertoire /home/*/public_html :
Order allow,deny
Allow from all
La clause UserDir public_html ne fonctionne que pour des utilisateurs ayant un compte
sur le système. L'URL ;ne fonctionne que si toto est un
véritable utilisateur (auquel cas l'expression Unix ~toto a un sens), pas seulement si le
répertoire /home/toto/public_html existe.
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, c'est une norme. Un
programme CGI peut être écrit en n'importe quel langage (C, Java, PHP, bash ), du
moment qu'il est exécutable et qu'il respecte certaines contraintes d'entrées/sortie.
La contrainte principale concerne la sortie du programme. Si un programme CGI génère
des données sur sa sortie standard, il doit les précéder d'un header http permettant de les
identifier. Voici un exemple de programme CGI écrit en bash:
#!/bin/bash
# Header
echo "Content-type: text/html"
Administration réseau sous Linux/Apache
16
# Fin de l'header
echo ""
# Contenu à afficher dans le navigateur
echo "Bonjour"
Ce script génère une page HTML.
Configurer l'accès aux scripts CGI
Pour qu'Apache prenne en charge les scripts, il est nécessaire d'effectuer un minimum de
paramétrage dans la configuration du site.
La déclaration ScriptAlias /cgi-bin chemin précise le nom du répertoire autorisé à
contenir des scripts CGI. Exemple :
ScriptAlias /cgi-bin /var/www/cgi-bin
Le chemin /cgi-bin n'existe pas vraiment, il est dirigé vers /var/www/cgi-bin, 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, ce qui autorise Apache
à exécuter les scripts sur le serveur :
Options ExecCGI
Exemple : vous écrivez un script , et vous voulez que /home/httpd/cgi-bin
contienne les scripts. Il faut donc au moins écrire:
ScriptAlias /cgi-bin /home/httpd/cgi-bin
Options ExecCGI
L'appel à un script sera effectué par l'URL:
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.
Les fichiers et
contiennent les directives LoadModule et
AddType qui permettent à Apache d'exécuter du PHP quand on demande un fichier se
terminant par .php. Ils doivent être liés dans /etc/apache2/mods-enabled pour activer
PHP. On peut utiliser pour cela la commande a2enmod.
En marge de Apache, PHP possède lui aussi son fichier de configuration, souvent
. Il n'est pas particulièrement conseillé d'y intervenir sauf si on sait ce que
l'on fait. On peut néanmoins y observer que PHP prend bien en compte le module
d'extension MySQL, contenant les fonctions d'accès au "moteur" de base de données
MySQL (qui a dû être installé à part), par la présence de .
Administration réseau sous Linux/Apache
17
En cas de modification d'un fichier de configuration, comme PHP fonctionne comme module
d'Apache, il faut redémarrer Apache pour qu'il réinitialise PHP par la lecture de .
/etc/init.d/apache2 restart
Protection par mot de passe
Il existe une beaucoup de solutions pour protéger un site par mot de passe. Apache fournit
une solution simple pour protéger un répertoire et ses sous-répertoires. Il faut pour cela
utiliser le fichier .htaccess et maintenir un fichier de mots de passe.
.htaccess
Le fichier .htaccess doit se trouver dans le répertoire à protéger. On placera dans ce fichier
la définition des restrictions.
Il est impératif que la modification des paramètres d'authentification soit autorisée dans la
configuration d'Apache. Il faut que la directive AllowOverride [14] d'un répertoire parent
contienne l'option AuthConfig.
Les directives à placer dans le .htaccess sont les suivantes :
• AuthType basic, type d'authentification communément adopté
• AuthName "Mon message", affichera le texte comme invite dans la boîte de dialogue
• AuthUserFile /etc/apache2/my_passwd, indique où vont se trouver les mots de passe
• Require valid-user, 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.
Le type d'authentification basic fait circuler les mots de passe en clair. Il existe d'autres
types plus sécurisés.
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). Si le mot de
passe saisi est invalide, la boite de dialogue s'affichera de nouveau. S'il est valide, le
navigateur l'enregistre et ne le demandera plus. Il faudra relancer le navigateur pour qu'il
le demande de nouveau.
Fichier de mots de passe
Pour maintenir le fichier de mots de passe on utilisera la commande htpasswd (voir page
de man).
Par exemple pour créer le fichier de mots de passe /etc/apache2/default-passwd avec
comme 1er utilisateur toto, 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
Administration réseau sous Linux/Apache
18
Serveurs virtuels (virtual hosts)
Apache peut gérer plusieurs sites web simultanément. Ils seront tous accessibles à partir
de la même adresse IP et du même port. Pour les différencer, Apache se sert de l'adresse
demandée par le navigateur.
Par exemple si et pointent sur la même adresse IP, les URL
et aboutiront sur le même serveur. Mais au moment de la
requète, le navigateur précise qu'il a demandé l'adresse ou
Apache se sert de cette information pour savoir quel site afficher. On
parle de serveur virtuel ou virtual host.
Pour indiquer à Apache quel site correspond à un nom de domaine, on utilise une section
. Sous Debian, il y a généralement un fichier par section VirtualHost
dans le répertoire /etc/apache2/sites-availiable.
La section devra contenir une directive ServerName [12] qui indiquera le nom associé à ce
serveur virtuel. Elle pourra également contenir une directive ServerAlias [15] si on veut que
d'autres noms aboutissent à ce site.
Par exemple :
ServerAdmin
DocumentRoot /home/site1/racine
ServerName
ServerAlias
AccessLog
ErrorLog
AllowOverride All
sur le sujet.
Pour que ce serveur virtuel fonctionne, il est impératif que les noms et
soient connus par la machine qui tente d'y accéder (celle qui lance le
navigateur). 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)
Administration réseau sous Linux/Apache
19
Exemples de configuration
Voici quelques exemples de configuration. L'ensemble des directives possibles peut être
consulté ici :
Pensez que les directives doivent parfois se trouver dans , parfois dans le
contexte VirtualHost d'un site donné.
ServerType
ServerType standalone
Cette ligne indique si le serveur Apache se lance en 'autonome' (standalone) ou via inetd
(TCP_WRAPPER). Pour la plupart des configuration, c'est en standalone. Cette directive a
disparu de Apache2, qui dispose d'un autre moyen pour définir cela. Le comportement est
en fait choisi d'après le MTM (Multi-processing module) choisi.
ServerRoot
ServerRoot /etc/apache2
(config serveur uniquement, pas dans un VirtualHost)
Vous indiquez ici le répertoire d'installation d'Apache. Normalement les scripts
d'installation ont bien renseigné cette ligne. Vérifiez quand même.
LockFile
LockFile
(config serveur uniquement, pas dans un VirtualHost)
Laissez cette ligne comme elle est, c'est à dire en commenté pour 90% des cas (# devant).
PidFile
PidFile
(config serveur uniquement, pas dans un VirtualHost)
Vérifiez bien que cette ligne est décommentée. 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.
ScoreBoardFile
ScoreBoardFile /var/run/httpd.scoreboard
(config serveur uniquement, pas dans un VirtualHost)
Ce fichier stocke des informations pour le bon fonctionnement d'Apache.
Timeout
Timeout 300
(config serveur uniquement, pas dans un VirtualHost)
Administration réseau sous Linux/Apache
20
Temps en secondes avant que le serveur n'envoie ou ne reçoive un timeout . Quand le
serveur attend une "réponse" (ex : script CGI, connexion\ldots), si au bout de ce temps, il ne
reçoit pas de réponse, il va s'interrompre et prévenir l'utilisateur de l'erreur. Laissez cette
valeur par défaut à moins que vous n'effectuiez des traitements dépassant cette limite. Ne
pas monter trop haut cette valeur non plus car si le programme externe à "planté", ou si
une erreur est survenue, vous risquez de rendre inaccessible le serveur Apache pour trop
de temps (il est toujours désagréable d'attendre pour rien).
KeepAlive
KeepAlive on
Autorise ou non les connexions persistantes (plusieurs requêtes par connexions). En fait
cela permet aux utilisateurs de votre serveur de lancer plusieurs requêtes à la fois, et donc
d'accélérer les réponses du serveur. Laissez cette valeur par défaut la plupart du temps.
Pour de petits serveurs laissez cette option sur on . Pour un serveur très sollicité, dès que
vous vous apercevez que le système ralentit énormément ou devient indisponible assez
souvent, essayez avec la valeur off . Mais avant, essayez de baisser la valeur de l'option
suivante.
MaxKeepAliveRequests
MaxKeepAliveRequests 100
En combinaison avec l'option précédente, indique le nombre de requêtes pour une
connexion. Laissez cette valeur assez haute pour de très bonnes performances. Si vous
mettez 0 comme valeur, vous en autorisez en fait un nombre illimité (attention donc).
Laissez la valeur par défaut là aussi.
KeepAliveTimeout
KeepAliveTimeout 15
Valeur d'attente en secondes avant la requête suivante d'un même client, sur une même
connexion, avant de renvoyer un timeout. Là aussi laisser la valeur par défaut.
MinSpareServers & MaxSpareServer
MinSpareServers 5
MaxSpareServer 10
(config serveur uniquement, pas dans un VirtualHost)
Ces valeurs servent à l'auto-régulation de charge du serveur. En fait le serveur Apache
contrôle lui même sa charge, suivant le nombre de clients qu'il sert et le nombre de
requêtes que demandent chaque client. Il fait en sorte que tout le monde puisse être servi
et ajoute tout seul un certain nombre d'instances Apaches "idle", c'est-à-dire qui ne font
rien, mais sont prêtes à servir de nouveaux clients qui se connecteraient. Si ce nombre est
inférieur à MinSpareServers il en ajoute une (ou plusieurs). Si ce nombre dépasse la valeur
de MaxSpareServer il en arrête une (ou plusieurs). Ces valeurs par défaut conviennent à la
plupart des sites.
Administration réseau sous Linux/Apache
21
Listen
Listen 3000
Listen 12.34.56.78
Listen 12.34.56.78:3000
Indique au serveur des ports ou des adresses IP (il y en a une par interface réseau du
serveur!), ou les deux, où il doit "écouter" les demandes de connexions, EN PLUS de
l'adresse et port par défaut. Voir la directive VirtualHost plus loin.
BindAdress
BindAdress *
Redondant avec Listen, cela permet de spécifier des adresses IP d'interfaces réseau, pour
écouter les requêtes. Cette directive a disparu dans Apache 2.
Port
Port 80
Redondant avec Listen, cela permet de spécifier le port d'écoute (80 par défaut). Cette
directive a disparu dans Apache 2.
LoadModule, ClearModuleList & AddModule
LoadModule
ClearModuleList
AddModule zzzz.c
(config serveur uniquement, pas dans un VirtualHost)
Support pour les modules DSO (Dynamic Shared Object). LoadModule permet de charger
un module. Avant Apache 2, les directives ClearModuleList et AddModule permettaient de
spécifier l'ordre d'exécution des modules, à cause de problèmes de dépendances. Apache 2
peut maintenant faire cela automatiquement, car les APIs de modules leur permet de
spécifier eux-mêmes leur ordre. Sous Apache 1.*, il faut cependant y prêter une grande
attention, et le maintenir à jour à l'ajout de tout nouveau module.
ExtendedStatus
ExtendedStatus on
(config serveur uniquement, pas dans un VirtualHost)
Indique si le serveur doit renvoyer des informations complètes de status (on ) ou des
informations réduites (off ). off par défaut. Laissez cette valeur par défaut sauf en cas de
développement et de debuggage.
Administration réseau sous Linux/Apache
22
User & Group
User nobody
Group nobody
Une fois le serveur démarré, il serait dangereux de lui laisser les droits root pour répondre
aux requêtes. 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. (En fait si quelqu'un arrive à
"exploiter" votre serveur, par exemple s'il arrive a faire exécuter du code par le serveur
Apache, il hérite des droits du serveur lui même. Donc si c'est nobody il n'a aucun droit
spécifique. Si c'est root ou un utilisateur réel, il aura alors des droits lui permettant
d'endommager votre système.)
ServerAdmin
ServerAdmin [email protected]
Adresse e-mail de l'administrateur du site. Cette adresse est affichée par le serveur par
exemple en cas d'erreur, pour que les utilisateurs puissent en avertir l'administrateur.
ServerName
ServerName www.domainname
Adresse que le serveur va renvoyer au client web. Il est préférable de mettre une adresse
résolue par DNS au lieu du nom de la machine réelle, pour que les visiteurs ne voient pas le
nom réel de votre machine (utile pour la sécurité aussi).
DocumentRoot
DocumentRoot /var/lib/apache/htdocs
Répertoire racine ou se trouve vos pages Web.
Directory
Options Indexes FollowSymlinks Multiviews
AllowOverride None
Order allow,deny
Allow from all
Change les paramètres du repertoire /var/lib/apache/htdocs. On peut placer à l'intérieur
les directives suivantes :
Administration réseau sous Linux/Apache
23
Options
on définit les options pour ce répertoire. Les options possibles sont les suivantes :
None
Désactive toutes les options.
All
Active toutes les options SAUF Multiviews.
Indexes
Permet aux utilisateurs d'avoir des indexs généré par le serveur. C'est à dire si
l'index du répertoire ( le + souvent) est manquant, cela autorise le
serveur a lister le contenu du répertoire (dangereux suivant les fichiers contenu dans
ce répertoire).
FollowSymLinks
Autorise a suivre les liens symboliques.
ExecCGI
Autorise à exécuter des scripts CGI à partir de ce répertoire.
Includes
Autorise des fichiers include pour le serveur.
IncludesNOEXEC
Permet mais les includes mais empêche la commande EXEC (qui permet d'executer
du code).
MultiViews
Autorise les vue multiples suivant un contexte. Par exemple permet d'afficher les
pages dans un language suivant la configuration du language du client.
SymLinksIfOwnerMatch
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.
AllowOverride
définit comment sont gérés les fichiers .htaccess de ce répertoire :
All
Gère tout ce qui est dans .htaccess
AuthConfig
Active les directives d'autorisations AuthDBMGroupFile, AuthDBMUserFile, AuthGroupFile,
AuthName, AuthType, AuthUserFile, Require, etc.
FileInfo
Active les directives contrôlant le type de document (ErrorDocument, LanguagePriority, etc.)
Limit
Active la directive d'autorisation Limit
None
Ne lit pas le fichier .htaccess et laisse les droits "Linux" de ce répertoire.
Options
Active la directive Option
Order
Donne l'ordre d'application des règles Allow/Deny :
deny,allow
Si le client ne correspond à aucune règle deny , mais correspond à une règle allow , alors on
autorise (allow par défaut).
allow,deny
Si le client ne correspond à aucune règle allow , mais correspond à une règle deny , on interdit
(deny par defaut).\hline
Administration réseau sous Linux/Apache
24
Allow/Deny
Nom d'hôte
Autorise/Refuse les hôtes spécifié, les adresses IP, le nom de domaine, etc
All
Autorise/Refuse tout le monde
A vous de placer vos règles suivant le contenu de vos répertoire accessibles par le Web. Il
existe les mêmes règles pour les fichiers ( ) et les locations (
). Voir un exemple pour les fichiers (file) plus bas.
DirectoryIndex
DirectoryIndex index.php5
Indique le ou les fichiers à charger lorsqu'on accède à un répertoire sans préciser de
fichier. Dans cet exemple, si on accède à http:/ / example. com/ repertoire/ , Apache
cherchera un des fichiers mentionnés (, ) et s'il en trouve un il
l'affichera. S'il n'en trouve pas, 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).
AccessFileName
AccessFileName .htaccess
Nom du fichier des règles d'accès pour les règles AllowOverride. Un conseil: placez comme
vu précédemment une règle file du style:
#pour interdire aux visiteurs de voir le contenu
des Order allow,deny
#fichiers .ht qui contiennent les règles de
Deny from all #sécurité.
CacheNegotiatedDocs
#CacheNegotiatedDocs
Autorise ou pas les proxies à mettre en cache les documents (pour autoriser, enlevez le
commentaire # en début de ligne)
UseCanonicalName
UseCanonicalName On
Placé sur on , réécrit l'URL par rapport aux valeurs Server et Port spécifiées plus haut
dans le fichier .
Sur off , l'URL reste celle donnée par le client.
Attention, mettez sur on si vous utilisez des CGI avec des variables SERVER_NAME, car si
l'URL du client n'est pas la même que celle du CGI, votre script CGI ne marchera pas.
Administration réseau sous Linux/Apache
25
DefaultType
DefaultType text/plain
Type mime par défaut que le serveur renvoie au clients. Convient dans la plupart des cas.
HostNameLookups
HostNameLookups off
Sur on , le serveur le nom du client grâce à une requête DNS inverse. Sinon, il se contente
de l'adresse IP, ce qui génère beaucoup moins de trafic réseau.
ErrorLog
ErrorLog /var/log/error_log
Chemin complet du fichier où les erreurs seront enregistrées.
LogLevel
LogLevel warn
Niveau d'enregistrement des erreurs avec comme valeurs possibles, par ordre décroissant
d'importance, donc croissant en bavardage:
emerg
urgence : le serveur devient inutilisable
alert
une intervention est nécessaire
crit
erreurs critiques (accès réseau impossible par exemple)
error
les erreurs dans les pages, scripts
warn
les erreurs non bloquantes (pages mal codées, scripts comportant des erreurs non blocantes
notice
événement normal mais méritant d'être remarqué
info
informations utiles (comme "serveur très chargé")
debug
Enregistre TOUT ce qui peut se passer sur le serveur
Le niveau crit est le minimum recommandé, et on monte généralement à warn.
ServerSignature
ServerSignature on
on
ajoute la signature (version, OS…) du serveur lorsqu'il génère des pages lui-même (index manquant,
erreur de script, etc.)
off
ne montre que l'erreur.
ajoute un lien vers l'email définit par ServerAdmin
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, cette directive devrait être dans un fichier
, au lieu de ) Spécifie que des
fichiers utilisant de telles extensions sont du type précisé. Cela permet de
décider quoi en faire. Pour ajouter le support PHP, le fichier
contient par exemple : AddType application/x-httpd-php
.php .phtml .php3 AddType application/x-httpd-php-source .phps
AddHandler
AddHandler cgi-script .cgi
Pour utiliser les scripts CGI.
Références
[1]
[2]
[3] #include
[4]
[5]
[6] #documentroot
[7] #userdir
[8] #directoryindex
[9] #options
[10] #accessfilename
[11] #listen
[12] #servername
[13] #options
[14] #allowoverride
[15] #serveralias
Administration réseau sous Linux/FTP
27
Administration réseau sous Linux/
FTP
FTP est un protocole d'échange de fichiers.
Un serveur FTP met à disposition certains répertoires du disque, et gère une
authentification par mot de passe. On se connecte à ce serveur avec un client FTP.
Ce document présente la configuration d'un serveur ProFTPd [1] sous Debian. Sa gestion
des droits d'accès et sa configuration sont très proches de celles d'Apache.
Installation et lancement
Sous Debian, 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. Ceci
permet de spécifier les modules à utiliser.
tar zxvf
cd proftpd-1.x.x
./configure --with-modules=mod_ratio:mod_sql
make
make installproftpd
Il se lance automatiquement à l'installation et au démarrage du système.
Le script qui permet de le lancer, l'arrêter ou le relancer est /etc/init.d/proftpd.
Fichier de configuration
Le principal fichier de configuration est .
L'ensemble des directives sont décrites sur le site web de ProFTPD [2]. Les commandes
principales sont les suivantes :
Pour que le serveur prenne en compte le nouveau fichier de configuration, il faut recharger
le démon avec:
/etc/init.d/proftpd restart
Exemple de fichier :
# This is a basic ProFTPD configuration file (rename it to #
name="DejaVuSans">’ name="DejaVuSans">’ for
# actual use. It establishes a single server
# It assumes that you have a user/group
# "nobody" for normal operation.
ServerName "ProFTPd Linux Service"
ServerType standalone
DefaultServer on
Administration réseau sous Linux/FTP
28
# Pour autoriser les clients à résumer les téléchargements, très utile.
# Remember to set to off if you have an incoming ftp for upload.
AllowStoreRestart on
# Port 21 is the standard FTP port.
Port 45000
# Umask 022 is a good standard umask to prevent new dirs and files
# from being group and world writable.
Umask 022
# Limitation de la bande passante en lecture:
RateReadBPS 14000
# To prevent DoS attacks, set the maximum number of child pro cesses
# to 30. If you need to allow more than 30 concurrent connexions
# at once, simply increase this value. Note that this ONLY works
# in standalone mode, 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. 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’accueil après une connexion réussie
AccessGrantMsg "Bienvenue %u chez moi!"
#Pour ne pas donner d’info sur le serveur
DeferWelcome off
#Règles pour limiter les commandes
MKD RNFR RNTO DELE RMD STOR CHMOD SITE CHMOD SITE XCUP WRITE XRMD PWD XPWD>
DenyAll
Administration réseau sous Linux/FTP
29
DefaultRoot /var/ftp
AllowOverwrite yes
MaxClients 3
MaxClientsPerHost 1
UseFtpUsers on
AllowForeignAddress on
ServerIdent on "ProFTP DuF’s Server Ready"
AccessGrantMsg "Bienvenue sur le serveur, %u"
# Serveur Virtuel pour écriture
>
ServerName "Mon serveur FTP virtuel numero 1"
Port 46000
Maxclients 3
MaxClientsPerHost 1
DefaultRoot /var/ftp
AccessGrantMsg "Bienvenue"
Client FTP
Il existe de très nombreux clients FTP. Certains sont en mode graphique, d'autres en mode
texte. Les navigateurs internet permettent également de se connecter à un serveur FTP.
ftp
Le client le plus simple et le plus répandu est la commande ftp. Elle existe également sous
Windows en ligne de commande.
Les commandes disponibles sont décrites dans la page de man. Les principales sont : help,
open, ls, get, put
Navigateur
Pour accéder à un serveur FTP à partir d'un navigateur Internet, il faut utiliser une adresse
particulière. Pour une connexion anonyme, on pourra utiliser ftp://serveur/ ou
ftp://serveur/chemin.
Pour se connecter avec un mot de passe, on utilisera
ftp://utilisateur:mot_de_passe@serveur/.
Références
[1]
[2]
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,
notamment en lui assignant automatiquement une adresse IP et un masque de sous-réseau.
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. Le principal danger de DHCP est qu'en cas de panne du
serveur DHCP, plus aucune station n'accède au réseau.
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.
On peut par exemple donner une adresse IP fixe à certains serveurs, et attribuer des
adresses variables aux autres postes. 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. Elle lui est réservée un
certain temps (le lease time).
Configuration
Le fichier de configuration principal est . Sa syntaxe est décrite dans man
.
Il possède des options globales, généralement placées au début, et des sections pour
chaque hôte ou réseau à configurer.
Interfaces
Par défaut, le serveur DHCP est lancé sur toutes les interfaces. Dans ce cas il est impératif
de configurer un réseau par interface dans .
Pour choisir les interfaces sur lesquels le serveur est lancé, il faut modifier
/etc/default/dhcp en indiquant par exemple
INTERFACES="eth1 eth2"
Adresse dynamique
Pour configurer une plage d'adresses à attribuer dynamiquement aux adresses MAC
inconnues, on utilise une section subnet dans . La section suivante attribuera par
exemple des adresses comprises entre 192.168.1.101 et 192.168.1.199 :
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.101 192.168.1.199;
}
Administration réseau sous Linux/DHCP
31
Adresse fixe
Pour donne une adresse fixe à un poste, il faut connaître son adresse MAC et écrire une
section host. Par exemple la section suivante attribue l'adresse 192.168.0.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;
fixed-address 192.168.0.47;
}
Options
Le serveur DHCP peut fournir d'autres informations que l'adresse IP. Ces options peuvent
être définies de manière globale en les plaçant en dehors de toute section. Elles
s'appliqueront alors à toutes les sections qui ne les redéfinissent pas. Si elles sont placées
dans une section particulière, elles ne s'appliquent qu'à celle-ci.
L'option domain-name-servers permet par exemple d'indiquer au poste les adresses des
serveurs DNS. L'option routers indique la passerelle.
Toutes les options sont décrites dans la page de man. On peut également consulter cette
documentation sur internet[1].
Références
[1]
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.
Il fournit à Linux :
• des fonctions de pare-feu et notamment le contrôle des machines qui peuvent se
connecter, sur quels ports, de l’extérieur vers l’intérieur, ou de l’intérieur vers l’extérieur
du réseau ;
• de traduction d'adresse (NAT) pour partager une connexion internet (masquerading),
masquer des machines du réseau local, ou rediriger des connexions ;
• et d'historisation du trafic réseau.
iptables est la commande qui permet de configurer Netfilter.
Fonctionnement
Netfilter intercepte les paquets réseau à différents endroits du système (à la réception,
avant de les transmettre aux processus, avant des les envoyer à la carte réseau, etc.). Les
paquets interceptés passent à travers des chaînes qui vont déterminer ce que le système
doit faire avec le paquet. En modifiant ces chaines on va pouvoir bloquer certains paquets
et en laisser passer d'autres.
Administration réseau sous Linux/Netfilter
32
Filtrage
Dans son fonctionnement le
plus simple, Netfilter permet
de jeter ou de laisser passer
les paquets qui entrent et qui
sortent.
Il fournit pour cela trois
chaînes principales :
• une chaîne INPUT pour
filtrer les paquets à
destination du système,
• une chaîne OUTPUT pour
filtrer les paquets émis par
les processus du système,
Principal cheminement des paquets à travers Netfilter
• et une chaîne FORWARD
pour filtrer les paquets que le système doit transmettre.
En ajoutant des règles dans ces chaînes on pourra laisser passer ou jeter les paquets
suivant certains critères.
Chaînes
Une chaîne est un ensemble de règles qui indiquent ce qu'il faut faire des paquets qui la
traversent.
Lorsqu'un paquet arrive dans une chaîne :
• Netfilter regarde la 1ère règle de la chaîne,
• puis regarde si les critères de la règle correspondent au paquet.
• Si le paquet correspond, la cible est exécutée (jeter le paquet, le laisser passer, etc.).
• Sinon, Netfilter prend la règle suivante et la compare de nouveau au paquet. Et ainsi de
suite jusqu'à la dernière règle.
• Si aucune règle n'a interrompu le parcours de la chaîne, la politique par défaut est
appliquée.
Règles
Une règles est une combinaison de critères et une cible. Lorsque tous les critères
correspondent au paquet, le paquet est envoyé vers la cible.
Les critères disponibles et les actions possibles dépendent de la chaîne manipulée.
Syntaxe
La syntaxe d'iptables et toutes les options sont décrites dans la page de man.
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). Utiliser l'une
ou l'autre n'a pas d'importance, elles sont équivalentes. Les deux possibilités sont souvent
représentées dans la documentation sous la forme --append|-A.
Les paramètres indiqués entre crochets (par exemple [-t