Administration Réseau Sous Linux - Version Imprimable - Wikilivres
Administration Réseau Sous Linux - Version Imprimable - Wikilivres
ion réseau
sous Linux
Vous
avez la
permissi
on de
copier,
distribue
r et/ou
modifier
ce
docume
nt selon
les
termes
de la
Licence
de
docume
ntation
libre
GNU,
version
1.2 ou
plus
récente
publiée
par la
Free
Softwar
e
Foundati
on ; sans
sections
inaltérab
les, sans
texte de
première
page de
couvertu
re et
sans
Texte de
dernière
page de
couvertu
re. Une
copie de
cette
licence
est
incluse
dans
l'annexe
nommée
« Licenc
e de
docume
ntation
libre
GNU ».
Configuration réseau
Pour obt enir la list e des int erfaces réseau qui ont ét é dét ect ées, on peut ut iliser dans l'invit e de
commandes :
ifconfig -a
Les sect ions qui commencent par et hX correspondent aux cart es Et hernet , où X est le numéro de
la cart e.
Si la cart e n'est pas dét ect ée, il faudra charger le module avec la commande
Parmi les modules courant s on peut not er : ne2k-pci pour les cart es NE2000, via-rhine, rt l8139...
ls /lib/modules/`uname -
r`/kernel/drivers/net/
Pour connaît re le nom du module en fonct ion du nom commercial d'une cart e, une recherche sur
l'int ernet est souvent la meilleure solut ion.
Le noyau donne parfois des informat ions ut iles sur les cart es réseau. On peut rechercher les
messages cont enant "et h0" pour avoir plus d'informat ions sur la première cart e réseau dét ect ée :
La commande suivant e permet d'afficher les cart es réseaux reliées au bus PCI :
Configuration de l'interface
réseau
Une fois vot re cart e reconnue par le noyau, vous devez au moins préciser son adresse IP et son
masque de sous-réseau. Dans le cas d'un réseau local connect é à l'int ernet , vous devez aussi
ajout er l'adresse IP de la passerelle et l'adresse IP d'un ou plusieurs serveurs DNS.
Adresse IP
>Pour at t ribuer une adresse IP à une int erface réseau, on peut ut iliser la commande ifconfig :
ifconfig <interface>
<adresse ip>
>Par exemple :
Le masque de sous-réseau est dét erminé aut omat iquement en fonct ion de la classe de l'adresse
IP. S'il est différent on peut le spécifier avec l'opt ion netmask :
>Pour voir si la cart e réseau est bien configurée, on peut ut iliser la commande :
ifconfig eth0
Passerelle et routage
Pour ajout er une passerelle, on peut ut iliser la commande route :
route -n
Tester le réseau
Pour vérifier que la cart e réseau fonct ionne, on peut essayer de communiquer avec une aut re
machine avec la commande
La commande ping envoi un paquet à l'adresse IP puis at t end que la machine réponde. Elle
affiche ensuit e le t emps qu'a pris t out e l'opérat ion, en millisecondes.
netstat -a
/etc/init/hostname.sh
(ubuntu)
/etc/hostname (debian)
Le fichier est vide par défaut . Si le fichier n'exist e pas, il faut le créer.
On peut également changer le nom d'hôt e avec la commande suivant e, mais il ne sera pas
conservé au prochain démarrage :
>Configuration automatique au
démarrage
Le fichier /etc/network/interfaces permet de configurer les cart es réseau de manière
permanent e.
Par exemple :
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.1.2
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 8.8.8.8
Cet t e configurat ion init ialisera aut omat iquement les int erfaces "lo" et "et h0".
L'int erface "lo" est souvent indispensable au syst ème, il est import ant de l'init ialiser. Elle aura
syst émat iquement l'adresse IP 127.0.0.1.
L'int erface "et h0" sera configurée avec l'adresse IP 192.168.1.2, le masque de sous réseau
255.255.255.0 et la passerelle 192.168.1.1 (ce paramèt re est facult at if).
Dans le cas d'une IP fixe, il vaut mieux renseigner un serveur DNS (ci-dessus celui de Google).
Sinon, si l'int erface et h0 doit êt re configurée aut omat iquement par un serveur DHCP, il faut
indiquer :
auto eth0
iface eth0 inet dhcp
Pour que les modificat ions de ce fichier soient prises en compt e, il faut redémarrer ou ut iliser les
commandes ifup et ifdown . Par exemple :
ifup eth0
# Vérifie l'usurpation
d'adresse IP
nospoof on
Serveurs DNS
Le fichier /etc/resolv.conf cont ient 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 t rouvé, il faudra essayer en lui
ajout ant .foo .
Fichier hosts
Le fichier /etc/hosts cont ient une list e de résolut ions 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.
Problèmes connus
Vérifier que les demons NFS (nfsd) ne sont pas déjà lancés avec, par exemple, la commande
ps ax | grep nfsd
/etc/init.d/nfs-kernel-
server start
ou, si c'est le serveur NFS en espace ut ilisat eur qui est inst allé :
/etc/init.d/nfs-user-server
start
Configuration
Pour part ager (ou exporter) des répert oires, il faut renseigner le fichier /etc/expor ts . Il indique la
list e des répert oires part agés et le nom des machines qui y ont accès.
Par exemple :
/home/name station0(rw)
station1(ro)
/projet station1(rw) (ro)
/brouillon
Le serveur export e son répert oire /home/name . La machine station0 pourra le mont er en
lect ure/écrit ure ( rw read-writ e), station1 en lect ure seule ( ro read-only), et les aut res
machines ne pourront pas se connect er.
De même, station1 pourra accéder en lect ure/écrit ure au répert oire projet et t out es les
aut res st at ions en lect ure seule.
Enfin, t out le monde pourra accéder en lect ure/écrit ure au répert oire brouillon (l'opt ion rw
est celle par défaut ).
Pour connait re la list e des opt ions possibles et leur significat ion, consult ez man expor ts .
Not ez bien que les droit s via le réseau seront t oujours inhibés par les droit s sur le syst ème de
fichier : si un ut ilisat eur accède via la station1 au répert oire /projet , il ne pourra pas
accéder au fichier test sit ué dans le répert oire /projet , bien qu'il ait les droit s réseaux
rw , si le fichier test appart ient à root avec les droit s 600 (lect ure/écrit ure pour root
uniquement , aucun droit pour les aut res).
Une fois le fichier /etc/exports correct ement configuré, il suffit de relancer le service NFS
par la commande suivant e pour que les modificat ions soient prises en compt e :
/etc/init.d/nfs-kernel-
server reload
Pour mont er un syst ème de fichier dist ant , ut iliser la commande mount avec l'opt ion nfs :
mount -t nfs <machine
distante>:<répertoire
partagé> <répertoire local>
-o <options>
mount -t nfs
192.168.105.2:/home/name
/mnt/rep_local -o ro
Cet t e commande montera le répert oire /home/name , export é par la st at ion 192.168.105.2,
dans le répert oire local /mnt/rep_local , en lect ure seule.
À la place d'une adresse IP, vous pouvez aussi donner un nom de machine (nom d'hôt e ou
host name : le nom figurant à droit e du @ dans une console user@hostname ). Pour cela, il faut
que le nom de machine puisse êt re convert i en adresse IP (en modifiant /et c/host s par exemple, si
on n'a pas de serveur DNS)
Montage au démarrage
Il est possible de mont er les répert oires part agés au démarrage de la st at ion.
Le plus simple est de renseigner le fichier /etc/fstab qui cont ient une list e des syst èmes de
fichiers connus.
192.168.105.2:/home/name
/mnt/rep_local nfs
auto,rw,user,soft,(autres
options…) 0 0
Les opt ions sont décrit es dans la page de man de mount . Cert aines sont communes à d'aut res
syst èmes de fichiers (ext 2, vfat …) alors que d'aut res sont spécifiques à NFS. Si le serveur n'est pas
t oujours disponible ou suscept ible de ne plus l'êt re en cours d'ut ilisat ion il est préférable de ne pas
mont er aut omat iquement le répert oire dist ant au démarrage au risque de bloquer vot re post e
client : opt ion noaut o .
Samba
SAMBA:
Samba est un service permet t ant de part ager des répert oires et imprimant es ent re des st at ions
Linux et des st at ions Windows. Un How-To t rès complet peut êt re t rouvé là :
ht t p://www.samba.org/samba/docs/man/Samba-HOWTO-Collect ion/
Cet t e part ie présent e just e une int roduct ion à l'ut ilisat ion de samba. Nous considérons que nous
sommes en mode sécurit é user (security=user, nécessit e un compt e ut ilisat eur unix). L'ut ilisat ion
du niveau de sécurit é domain et la part ie part ie part age avec Windows (not amment les dernières
versions) n'est pas vue. Pour un accès Windows, cet t e page donne les quelques commandes
supplément aires: ht t p://www.oregont echsupport .com/samba/samba.php
Configuration du service
Samba
Pour la configurat ion de ce service le principal fichier à modifier est smb.conf qui se t rouve
généralement dans /etc ou /etc/samba selon la dist ribut ion.
La sect ion [global] cont ient les opt ions communes à t ous les répert oires part agés.
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
à côté 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 chiffré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
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.
De nombreuses aut res opt ions sont disponibles. Elles sont dét aillées dans la page de man de
smb.conf (ht t ps://us1.samba.org/samba/docs/man/manpages-3/smb.conf.5.ht ml)
Exemple
[global]
workgroup = maison
server string = Serveur
Samba sur %h
encrypt passwords = true
log file =
/var/log/samba/log.%m
max log size = 1000
socket options = TCP_NODELAY
[<nom du partage>]
<option> = <valeur>
...
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 sect ion [homes] est un part age part iculier. Elle définit le part age des répert oires ut ilisat eur
des compt es unix de la machine.
De nombreuses aut res opt ions sont disponibles. Elles sont dét aillées dans la page de man de
smb.conf (ht t ps://us1.samba.org/samba/docs/man/manpages-3/smb.conf.5.ht ml)
Par défaut (version 3.5.6) vous pouvez accéder à samba de façon anonyme (smbclient
//serveur/nom_ du_ part age -U compt e sans mot de passe). Pour effect uer un accès plus sécurisé
(avec compt e et mot de passe), vous devez également ajout er un compt e samba qui se référence
à un compt e linux exist ant :
adduser compte (si ce n'est pas fait)
smbpasswd -a compte
Les droit s des répert oires et fichiers doivent êt re correct . Exemple
chmod u+rws,g+rx,o+rx .../dossier et/ou fichier
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
[zelinux]
comment = Site web
path = /myrep/zelinux
read only = no
Pour cela, pour chaque répert oire part agé ajout ez les opt ions:
public = no
valid users = <nom des
utilisateurs autorisés à
accéder aux répertoires>
Pour chaque nom que vous avez rent ré, il faut ajout er l'ut ilisat eur samba avec
smbpasswd -a <nom de
l'utilisateur>
Un compt e unix du même nom doit exist er. 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 st opper :
/etc/init.d/samba stop
Pour le relancer :
/etc/init.d/samba restart
Les modificat ions du fichier smb.conf sont prises en compt e pour chaque nouvelle connexion.
Pour les rendre effect ives sur les connexions déjà ét ablies, il faut relancer Samba.
Pour se connect er en ligne de commande à un part age à part ir de Linux, on peut ut iliser la
commande
smbclient //<nom du
serveur>/<nom du partage> -U
<utilisateur>
smbmount //<nom du
serveur>/<nom du partage>
<répertoire local>
Différent es opt ions sont disponibles. On peut les consult er dans man smbclient et man
smbmount . Généralement , il est conseillé d'ajout er les opt ions -o
username=compte,password=??? pour se connect er.
Par exemple, pour mont er un répert oire "public" il faut préciser qu'il faut se connect er en guest :
smbmount //serveur/partage
/point_de_montage -o guest
Il faut également que vot re compt e ut ilisat eur ait des droit s sur le mont age. Le compt e root peut
ut iliser smbmount sans t rop de problème.
Un sit e web peut fournir t out t ype de cont enu (des fichiers t ext es, HTML, Flash, zip…).
Ce cont enu peut êt re st at ique (le serveur t ransmet un fichier au navigat eur) ou dynamique (le
cont enu est généré par un programme exécut é par le serveur). Les sit es web cont iennent
généralement plusieurs t ypes de document s, cert ains ét ant st at iques et d'aut res dynamiques.
Nous t rait erons ici d'Apache 2.2 sur un syst ème Debian (et ses dérivés, comme Ubunt u).
Installation
LAMP
Logiciel t out -en-un pour Linux (Apache + MySQL + PHP), comme WAMP pour Windows.
Installation manuelle
Apache sur Debian / Ubuntu
commande
$ lynx http://localhost/
Cet t e adresse est le rebouclage, elle peut aussi êt re rent rée direct ement dans t out navigat eur
web.
Si Apache ét ait déjà inst allé vérifier le fichier pour indiquer le démarrage aut omat ique d'Apache 2
/etc/default/apache2 :
# vi /etc/default/apache2
...
NO_START=0
Installer PHP
On dist ingue principalement deux versions de PHP : celle dont le binaire est appelé par le serveur
Web, et php-fpm qui possède son propre service daemon (aussi appelé par le serveur Web)
t est able ainsi :
FPM signifie FastCGI Process Manager, puisque le processus PHP-fpm écout e les requêt es
CGI [1]. Cela peut se t raduire soit par des requêt es TCP/IP, soit par un socket Unix (.sock dans le
vhost ).
PHP peut -êt re inst allé avec t out es les déclinaisons de la dist ribut ion Debian (st able, t est ing,
unst able). Il suffit pour cela d'insérer vos lignes préférées dans le fichier /etc/apt/sources.list :
deb
http://ftp.fr.debian.org/deb
ian/ stable main non-free
contrib
deb-src
http://ftp.fr.debian.org/deb
ian/ stable main non-free
contrib
Ce qui suit suppose que le serveur Web a bien ét é inst allé ; exécut er les commandes suivant es :
Une fois ces commandes exécut ées, redémarrer le serveur Web. Dans le cas d'Apache cela
s'effect ue avec la commande suivant e :
/etc/init.d/apache2 restart
Si t out s'est bien passé, vous disposez maint enant d'un serveur Web qui a la capacit é d'exécut er
des script s PHP dans vot re navigat eur.
Test ons :
commande
$ lynx
http://localhost/test.php
Pour débugger :
commande
$ tail
/var/log/apache2/error.log
Mise à jour
Pour PHP 7 ou 8 sur Ubunt u :
sudo add-apt-repository
ppa:ondrej/php
Sur Debian :
sudo wget -O
/etc/apt/trusted.gpg.d/php.g
pg
https://packages.sury.org/ph
p/apt.gpg
sudo sh -c 'echo "deb
https://packages.sury.org/ph
p/ $(lsb_release -sc) main"
>
/etc/apt/sources.list.d/php.
list'
Puis :
Une fois les serveurs Web inst allés, ils se lancent aut omat iquement à chaque
démarrage de la machine, ce qui est souhait able pour un serveur, mais pas t oujours
pour un PC. Pour évit er cela, il suffit d'y désact iver les daemons :
Bibliothèques
Voici une list e de bibliot hèques fréquemment ut ilisées dans les applicat ions :
# apt-get install -y \
php8.2-mysql \
php8.2-cli \
php8.2-gd \
php8.2-curl \
php8.2-mbstring \
php8.2-xml
Pour les act iver après inst allat ion, on peut édit er le php.ini ou lancer : phpenmod
nom_ du_ module_ php. Ex : sudo phpenmod gd .
Pour dét ect er l'emplacement du php.ini de la version de PHP par défaut : php --ini .
Désinstaller PHP
Pour évit er de désinst aller t ous les paquet s PHP un par un (par exemple après une bascule de
PHP7.0 vers PHP7.1), il exist e "ppa-purge" :
emerge apache
emerge dev-lang/php
# nano -w
/etc/conf.d/apache2
APACHE2_OPTS="-D PHP5"
MySQL seul
MySQL est disponible sur ht t p://dev.mysql.com/downloads/gui-t ools/5.0.ht ml au format :
1. .msi (Windows)
2. .dmg (Mac)
3. .rpm (Linux)
4. .tar
En l'absence de gest ionnaire de paquet s, ut iliser le .t ar ainsi :
Variante
La dénominat ion des paquet s ment ionnés peut varier légèrement selon la version. Dans un t erminal,
ent rez :
et confirmez.
cd && sudo
mysql_secure_installation
Appuyez sur Ent rée lorsqu'il vous demande le mot de passe root MySQL : pour le moment il n'y en a
pas.
Vot re serveur MySQL est prêt . Par défaut il se lance à chaque démarrage du syst ème, si vous ne le
souhait ez pas, il vous suffit de lancer :
$ sudo dpkg-reconfigure
mysql-server
Sur Gentoo
emerge mysql
Modules
De nombreux modules complément aires peuvent êt re inst allés sur Apache.
apachectl -t -D DUMP_MODULES
ou
apache2ctl -M
a2enmod Nom_du_module
a2enmod rewrite
a2dismod Nom_du_module
La configurat ion du module rest e t out efois disponible dans /et c/apache2/mods-available/.
Les extensions PHP nécessitent une autre
commande. Ex :
phpenmod mbstring
Sites
Pour list er les sit es du serveur :
apachectl -S
a2ensite Nom_du_site
a2dissite Nom_du_site
Problème d'encodage
d'Apache2
Si vous rencont rez un problème d'encodage des caract ères de vos pages, par exemple les
caract ères accent ués apparaissant sous la forme "�" (<?>), c'est probablement parce qu'Apache2
déclare dans les en-t êt es HTTP qui accompagnent les pages visionnées un encodage par défaut
en Unicode (UTF-8) :
Content-Type: text/html;
charset=UTF-8
Tandis que les pages visionnées ut ilisent un aut re encodage des caract ères, comme par exemple
Lat in1 (ISO-8859-1). Même si vos document s indiquent le jeu de caract ères ut ilisé, le paramèt re
donné par le serveur dans les en-t êt es HTTP est priorit aire !
$ sudo gedit
/etc/apache2/apache2.conf
#AddDefaultCharset ISO-
8859-1
Pour ceux qui ont la locale iso-8859-15 (sinon vous pouvez faire "sudo dpkg-reconfigure locales"
pour l'ajout er) et qui désirent l'ut iliser par défaut , ajout ez un 5 en fin de ligne :
AddDefaultCharset ISO-
8859-15
AddCharset ISO-8859-15
.iso8859-15 .latin15 .fr
Il ne vous rest e plus qu'à met t re "fr" en première posit ion dans la ligne LanguagePriorit y (just e au-
dessus), et à demander à apache de relire sa configurat ion :
$ sudo /etc/init.d/apache2
reload
AddDefaultCharset Off
$ sudo /etc/init.d/apache2
reload
Maint enant , les en-t êt es HTTP ne cont iendront plus d'indicat ion d'encodage des caract ères.
At t ent ion : il faudra alors que chaque page indique l'encodage ut ilisé, car s'en remet t re à la
dét ect ion aut omat ique par les navigat eurs peut s'avérer assez aléat oire !
Fichiers log
Par défaut sous Debian, Apache enregist re les erreurs dans le fichier
/var/log/apache2/error.log . Quand quelque chose ne fonct ionne pas, ce fichier fournit
souvent des pist es pour t rouver la solut ion.
/etc/init.d/apache2 reload
Pour l'arrêt er, le lancer ou le relancer on ut ilisera la même commande avec stop , start ou
restart .
Pour d'aut res syst èmes il faudra consult er la document at ion du syst ème ou celle d'Apache (ht t p://
ht t pd.apache.org/docs/2.2/invoking.ht ml) .
Configuration du serveur
La configurat ion (ht t p://ht t pd.apache.org/docs/2.2/configuring.ht ml) du serveur se t rouve dans
/etc/apache2/apache2.conf . Ce fichier cont ient des inst ruct ions Include (ht t p://ht t p
d.apache.org/docs/2.2/mod/core.ht ml#include) qui permet t ent de déplacer cert aines part ies de
la configurat ion dans d'aut res fichiers. Debian ut ilise cet t e fonct ionnalit é pour les modules (ht t p://h
t t pd.apache.org/docs/2.2/dso.ht ml) (comme PHP) et la gest ion des serveurs virt uels (ht t p://ht t
pd.apache.org/docs/2.2/vhost s/) :
Les sit es peuvent s'act iver ou se désact iver en manipulant les liens dans sites-enabled ou
en ut ilisant a2ensite et a2dissite .
Quelques directives
classiques
La synt axe d'Apache est assez simple. On t rouve des blocs (ou contextes ) comme par exemple :
Include /etc/apache2/sites-
enabled/
Les direct ives qui permet t ent de configurer le serveur lui-même sont généralement placées dans
apache2.conf . Celles qui ne concernent qu'un sit e web sont déport ées dans le fichier de
configurat ion du sit e ( sites-available/mon-site-web ).
List en (ht t p://ht t pd.apache.org/docs/2.2/mod/mpm_ common.ht ml#list en) indique à Apache sur
quel port TCP il doit écout er. Le port par défaut du prot ocole HTTP est 80.
Gestion du nombre
d'instances d'Apache
Le serveur Apache ut ilise plusieurs processus et prend en charge plusieurs t ypes de st at ions mult i-
processeurs en ut ilisant les modules MPM (mult i processing modules)[2].
Le premier module prefork ut ilise des processus (pour syst èmes st ables ou plus anciens), le
deuxième worker ut ilise des t hreads, et le dernier des t hreads par processus. Le dernier module
perchild est en cours de développement et n'est pas recommandé.
Exemple commenté
La part ie du fichier de configurat ion t rait ant la gest ion du nombre de processus est la suivant e :
##
## 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.
<IfModule prefork.c>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 20
MaxRequestsPerChild 0
</IfModule>
<IfModule worker.c>
StartServers 2
MaxClients 150
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 0
</IfModule>
# 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)
<IfModule perchild.c>
NumServers 5
StartThreads 5
MinSpareThreads 5
MaxSpareThreads 10
MaxThreadsPerChild 20
MaxRequestsPerChild 0
AcceptMutex fcntl
</IfModule>
a2enmod mpm_prefork
Le paramét rage d'un répert oire se met dans un "cont eneur" délimit é par <Directory
chemin_du_répertoire> et </Directory> . La configurat ion s'applique au répert oire et
à t ous ses sous répert oires. Si un sous-répert oire possède également sa propre configurat ion, elle
vient s'ajout er à celle du parent .
Voici quelques exemples de cont rôle d'accès. Plus de dét ails sont donnés dans la sect ion "Un
exemple de configurat ion".
# 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 None
</Directory>
# Le répertoire contenant
des exécutables CGI
<Directory /usr/lib/cgi-bin>
AllowOverride None
Options ExecCGI
</Directory>
Les paramèt res possibles de la direct ive Opt ions (ht t p://ht t pd.apache.org/docs/2.2/mod/core.ht
ml#opt ions) sont : "None", "All", "Indexes", "Includes", "FollowSymLinks", "ExecCGI", ou
"Mult iViews".
Le répert oire cont enant le sit e web doit êt re créé dans le home de l'ut ilisat eur et doit êt re
accessible en lect ure pour t ous. Le nom du répert oire est défini par la direct ive UserDir (ht t p://ht t p
d.apache.org/docs/2.2/mod/mod_ userdir.ht ml#userdir) . Par défaut il s'agit du répert oire
public_html .
L'adresse pour accéder à ces sit es personnels est le nom de l'ut ilisat eur précédé d'un tilde ( ~ ).
Par exemple un ut ilisat eur toto sur le serveur www.iut.clermont.fr peut créer les pages de son sit e
dans le répert oire /home/toto/public_html , et on pourra y accéder avec l'adresse :
ht t p://www.iut .clermont .fr/~t ot o/.
Il est possible de n'aut oriser que cert ains ut ilisat eurs à bénéficier du UserDir . Par exemple
pour n'aut oriser que sasa et toto à avoir un sit e personnel :
UserDir disabled
UserDir enabled sasa toto
Pour définir les opt ions de ces répert oires, on peut ut iliser une clause Directory pour le
répert oire /home/*/public_html :
<Directory
/home/*/public_html>
Order allow,deny
Allow from all
</Directory>
La clause UserDir public_html ne fonct ionne que pour des ut ilisat eurs ayant un compt e
sur le syst ème. L'URL ht t p://www.iut .clermont .fr/~t ot o ne fonct ionne que si toto est un vérit able
ut ilisat eur (auquel cas l'expression Unix ~toto a un sens), pas seulement si le répert oire
/home/toto/public_html exist e.
On peut ut iliser une aut re forme de UserDir pour aut oriser les répert oires sans forcément qu'il y ait
un compt e unix associé :
UserDir /home/*/public_html
Le CGI (Common Gat eway Int erface) est une norme permet t ant à Apache d'exécut er des
programmes écrit s en n'import e quel langage (Bash, C, Java, Perl, PHP, Pyt hon...), du moment qu'il
est exécut able et qu'il respect e cert aines cont raint es d'ent rées/sort ie.
Activer le module
a2enmod cgi
ScriptAlias
La direct ive (de ht t pd.conf) :
ScriptAlias /cgi-bin/
/chemin des scripts/
précise le nom du répert oire où Apache est aut orisé à exécut er des script s CGI [3].
Exemple Unix :
ScriptAlias /cgi-bin/
/var/www/cgi-bin/
ScriptAlias /cgi-bin/
"C:/wamp/bin/apache/apache2.
2.27/cgi-bin/"
En fait le chemin /cgi-bin/ n'exist e pas vraiment , il est dirigé vers le chemin des script s défini
par la direct ive, et cela permet d'écrire des URL comme http://serveur/cgi-
bin/mon_script .
ExecCGI
La clause suivant e act ive l'opt ion ExecCGI dans /var/www/cgi-bin , ce qui aut orise
Apache à exécut er les script s sur le serveur :
<Directory /var/www/cgi-bin>
Options ExecCGI
</Directory>
Par exemple : vous écrivez un script essai.cgi , et vous voulez que /home/httpd/cgi-
bin cont ienne les script s.
<Directory /home/httpd/cgi-
bin>
Options ExecCGI
</Directory>
AddHandler
Cet t e clause permet de choisir les ext ensions de fichiers qui seront aut orisés, ex :
ScriptAlias /cgi-bin/
"E:/www/cgi-bin/"
<Directory "E:/www/cgi-
bin/">
Options FollowSymLinks
Indexes
AllowOverride All
Order deny,allow
Allow from all
Require all granted
</Directory>
Dans E:/www/cgi-bin/.htaccess :
Bash
Voici un exemple de programme CGI écrit en bash :
#!/bin/bash
# Header
echo "Content-type:
text/html"
# Fin du header
echo ""
#!c:/perl/perl/bin/perl.exe
-w
use CGI;
my $query = new CGI;
my $Name = $query-
>param('Name');
print $query->header();
print "Hello World!"
Python
#!C:\Program Files
(x86)\Python\python.exe
# -*- coding: UTF-8 -*-
print "Content-Type:
text/plain;charset=utf-8"
print
print "Hello World!"
Pour plus de détails voir : Programmation
Python/L'interface CGI.
VBS
Pour Windows[4].
'!c:/windows/system32/cscrip
t //nologo
Wscript.Echo "Content-type:
text/html" & vbLF & vbLF
WScript.Echo "Hello World!"
Wscript.Quit 0
Références
1. https://www.tecmint.com/connect-
nginx-to-php-fpm/
2. https://httpd.apache.org/docs/2.4/fr/m
pm.html
3. http://httpd.apache.org/docs/current/fr
/howto/cgi.html
4. http://wiki.uniformserver.com/index.ph
p/CGI:_VBScript_CGI
Le module PHP
PHP a normalement ét é int égré au serveur Apache sous forme d'un module chargeable sit ué
comme t ous les aut res modules d'Apache dans /usr/lib/apache2/modules .
En marge de Apache, PHP possède lui aussi son fichier de configurat ion, souvent
/etc/php.ini . Il n'est pas part iculièrement conseillé d'y int ervenir sauf si on sait ce que l'on
fait . On peut néanmoins y observer que PHP prend bien en compt e le module d'ext ension MySQL,
cont enant les fonct ions d'accès au "mot eur" de base de données MySQL (qui a dû êt re inst allé à
part ), par la présence de extension=mysql.so .
En cas de modificat ion d'un fichier de configurat ion, comme PHP fonct ionne comme module
d'Apache, il faut redémarrer Apache pour qu'il réinit ialise PHP par la lect ure de php.ini.
/etc/init.d/apache2 restart
Principe
Pour prot éger un répert oire en part iculier (et ses sous-répert oires), il suffit de placer un fichier
nommé .htaccess dedans. Apache appliquera inst ant anément ensuit e les règles qu'il cont ient ,
uniquement dans cet t e arborescence. La synt axe pour définit ces règles (ex : redirect ions ou
prot ect ions) est la même que dans les vhost s, sauf que cela n'affect era que le répert oire du
fichier .ht access (donc pas de clause Directory ).
L'explorat eur de fichiers de Windows ne permet pas de rebapt iser des fichiers
commençant par des point s, il faut donc passer par un édit eur de t ext e.
Installation
Pour aut oriser les .ht access dans le .conf du sit e, ut iliser AllowOverride [1] :
AllowOverride All
AllowOverride None
Références
1. http://httpd.apache.org/docs/2.2/mod/
core.html#allowoverride
Serveurs virtuels (virtual
hosts)
Principe du vhost
Apache peut gérer plusieurs sit es web simult anément . Ils seront t ous accessibles à part ir de la
même adresse IP et du même port .
Pour les différencier, Apache se sert de l'adresse demandée par le navigat eur.
Par exemple si sit e1.com et sit e2.com point ent sur la même adresse IP, les URL ht t p://sit e1.com/
et ht t p://sit e2.com/ about iront sur le même serveur.
Mais au moment de la requêt e, le navigat eur précise qu'il a demandé l'adresse ht t p://sit e1.com/ ou
ht t p://sit e2.com/.
Apache se sert de cet t e informat ion pour savoir quel sit e afficher. On parle de serveur virtuel ou
virtual host (vhost ).
Configuration
Pour indiquer à Apache quel sit e correspond à un nom de domaine, on ut ilise une sect ion
<VirtualHost *> . Sous Debian, il y a généralement un fichier par sect ion VirtualHost
dans le répert oire /etc/apache2/sites-available .
La sect ion devra cont enir une direct ive ServerName [1] qui indiquera le nom associé à ce serveur
virtuel.
Elle pourra également cont enir une direct ive ServerAlias si on veut que d'aut res noms about issent
à ce sit e.
<VirtualHost _default_:80>
ServerAdmin
admin@site1.com
DocumentRoot
/home/site1/public_html
ServerName site1.com
ServerAlias
www.site1.com
</VirtualHost>
<VirtualHost MonIP2:80>
ServerAdmin
admin@site2.com
DocumentRoot
/home/site2/public_html
ServerName site2.com
ServerAlias
www.site2.com
AccessLog
/home/site2/access.log
ErrorLog
/home/site2/error.log
<Directory
/home/site2/public_html>
AllowOverride All
</Directory>
</VirtualHost>
Pour affect er t ous les sit es et port s, remplacer ceux-ci dans la première balise par *.
En cas d'erreur Apache d'ajout er une "direct ive" lors de sa relance, ajout er une ligne
NameVirtualHost MonIP:MonPort.
La document at ion d'Apache sur les serveurs virt uels[3] cont ient des informat ions dét aillées sur le
sujet .
Pour que ce serveur virt uel fonct ionne, il est impérat if que les noms sit e1.com et www.sit e1.com
soient connus par la machine qui t ent e d'y accéder (celle qui lance le navigat eur).
Include
Pour évit er de copier-coller les mêmes lignes dans plusieurs vhost , il est possible de les inclure
avec la direct ive "include"[4]. Exemple :
Include
/etc/apache2/common.conf
ProxyPassMatch
Pour ut iliser les daemons PHP-FPM (qui écout ent sur le port 9000), Apache doit rediriger les
connexions avec ProxyPassMat ch[5][6]. Ex :
ProxyPassMatch ^/(.*\.php)$
fcgi://127.0.0.1:9000/var/ww
w/mon_site/$1
Références
1. http://httpd.apache.org/docs/2.2/mod/
core.html#servername
2. https://httpd.apache.org/docs/2.4/fr/vh
osts/examples.html
3. http://httpd.apache.org/docs/2.2/vhos
ts/
4. https://httpd.apache.org/docs/2.4/mod
/core.html#include
5. https://www.vincentliefooghe.net/conte
nt/configuration-apache-24-php-fpm
Exemple sur machine hôte
6. http://www.inanzzz.com/index.php/pos
t/su76/creating-apache-mysql-and-php-
fpm-containers-for-a-web-application-
with-docker-compose Exemple avec
Docker
Exemples de configuration
Voici quelques exemples de configurat ion. L'ensemble des direct ives possibles peut êt re consult é
ici : ht t p://ht t pd.apache.org/docs/2.2/mod/direct ives.ht ml
Pensez que les direct ives doivent parfois se t rouver dans apache2.conf , parfois dans le
cont ext e VirtualHost d'un sit e donné.
ServerType
ServerType standalone
Cet t e ligne indique si le serveur Apache se lance en 'aut onome' (st andalone) ou via inetd
(TCP_ WRAPPER). Pour la plupart des configurat ion, c'est en st andalone. Cet t e direct ive a disparu
de Apache2, qui dispose d'un aut re moyen pour définir cela. Le comport ement est en fait choisi
d'après le MTM (Mult i-processing module) choisi.
ServerRoot
ServerRoot /etc/apache2
Vous indiquez ici le répert oire d'inst allat ion d'Apache. Normalement les script s d'inst allat ion ont
bien renseigné cet t e ligne. Vérifiez quand même.
LockFile
LockFile /var/run/httpd.lock
Laissez cet t e ligne comme elle est , c'est à dire en comment é pour 90% des cas (# devant ).
PidFile
PidFile /var/run/httpd.pid
ScoreBoardFile
ScoreBoardFile
/var/run/httpd.scoreboard
Ce fichier st ocke des informat ions pour le bon fonct ionnement d'Apache.
Timeout
Timeout 300
Temps en secondes avant que le serveur n'envoie ou ne reçoive un timeout . Quand le serveur
at t end une "réponse" (ex : script CGI, connexion\ldot s), si au bout de ce t emps, il ne reçoit pas de
réponse, il va s'int errompre et prévenir l'ut ilisat eur de l'erreur. Laissez cet t e valeur par défaut à
moins que vous n'effect uiez des t rait ement s dépassant cet t e limit e. Ne pas mont er t rop haut
cet t e valeur non plus car si le programme ext erne à "plant é", ou si une erreur est survenue, vous
risquez de rendre inaccessible le serveur Apache pour t rop de t emps (il est t oujours désagréable
d'at t endre pour rien).
KeepAlive
KeepAlive on
Aut orise ou non les connexions persist ant es (plusieurs requêt es par connexions). En fait cela
permet aux ut ilisat eurs de vot re serveur de lancer plusieurs requêt es à la fois, et donc d'accélérer
les réponses du serveur. Laissez cet t e valeur par défaut la plupart du t emps. Pour de pet it s
serveurs laissez cet t e opt ion sur on . Pour un serveur t rès sollicit é, dès que vous vous apercevez
que le syst ème ralent it énormément ou devient indisponible assez souvent , essayez avec la valeur
off . Mais avant , essayez de baisser la valeur de l'opt ion suivant e.
MaxKeepAliveRequests
MaxKeepAliveRequests 100
En combinaison avec l'opt ion précédent e, indique le nombre de requêt es pour une connexion.
Laissez cet t e valeur assez haut e pour de t rès bonnes performances. Si vous met t ez 0 comme
valeur, vous en aut orisez en fait un nombre illimit é (at t ent ion donc). Laissez la valeur par défaut là
aussi.
KeepAliveTimeout
KeepAliveTimeout 15
Valeur d'at t ent e en secondes avant la requêt e suivant e d'un même client , sur une même connexion,
avant de renvoyer un t imeout . Là aussi laisser la valeur par défaut .
MinSpareServers 5
MaxSpareServers 10
Ces valeurs servent à l'aut o-régulat ion de charge du serveur. En fait le serveur Apache cont rôle lui
même sa charge, suivant le nombre de client s qu'il sert et le nombre de requêt es que demandent
chaque client . Il fait en sort e que t out le monde puisse êt re servi et ajout e t out seul un cert ain
nombre d'inst ances Apaches "idle", c'est -à-dire qui ne font rien, mais sont prêt es à servir de
nouveaux client s qui se connect eraient . Si ce nombre est inférieur à MinSpareServers il en
ajout e une (ou plusieurs). Si ce nombre dépasse la valeur de MaxSpareServer il en arrêt e une
(ou plusieurs). Ces valeurs par défaut conviennent à la plupart des sit es.
Listen
Listen 3000
Listen 12.34.56.78
Listen 12.34.56.78:3000
Indique au serveur des port s ou des adresses IP (il y en a une par int erface réseau du serveur!), ou
les deux, où il doit "écout er" les demandes de connexions, EN PLUS de l'adresse et port par
défaut . Voir la direct ive VirtualHost plus loin.
BindAdress
BindAdress *
Redondant avec Listen , cela permet de spécifier des adresses IP d'int erfaces réseau, pour
écout er les requêt es. Cet t e direct ive a disparu dans Apache 2.
Port
Port 80
Redondant avec Listen , cela permet de spécifier le port d'écout e (80 par défaut ). Cet t e
direct ive a disparu dans Apache 2.
Support pour les modules DSO (Dynamic Shared Object ). LoadModule permet de charger un
module. Avant Apache 2, les direct ives ClearModuleList et AddModule permet t aient de
spécifier l'ordre d'exécut ion des modules, à cause de problèmes de dépendances. Apache 2 peut
maint enant faire cela aut omat iquement , car les APIs de modules leur permet de spécifier eux-
mêmes leur ordre. Sous Apache 1.*, il faut cependant y prêt er une grande at t ent ion, et le maint enir
à jour à l'ajout de t out nouveau module.
ExtendedStatus
ExtendedStatus on
Indique si le serveur doit renvoyer des informat ions complèt es de st at ut (on ) ou des informat ions
réduit es (off ). off par défaut . Laissez cet t e valeur par défaut sauf en cas de développement et de
debuggage.
Une fois le serveur démarré, il serait dangereux de lui laisser les droit s root pour répondre aux
requêt es. Il est donc possible de modifier l'ut ilisat eur et le groupe du processus pour lui donner un
minimum de droit s sur la machine du serveur. (En fait si quelqu'un arrive à "exploit er" vot re serveur,
par exemple s'il arrive à faire exécut er du code par le serveur Apache, il hérit e des droit s du serveur
lui même. Donc si c'est nobody il n'a aucun droit spécifique. Si c'est root ou un ut ilisat eur
réel, il aura alors des droit s lui permet t ant d'endommager vot re syst ème.)
ServerAdmin
ServerAdmin
root@localhost.domainname
Adresse e-mail de l'administ rat eur du sit e. Cet t e adresse est affichée par le serveur par exemple
en cas d'erreur, pour que les ut ilisat eurs puissent en avert ir l'administ rat eur.
ServerName
ServerName www.domainname
Adresse que le serveur va renvoyer au client web. Il est préférable de met t re une adresse résolue
par DNS au lieu du nom de la machine réelle, pour que les visit eurs ne voient pas le nom réel de
vot re machine (ut ile pour la sécurit é aussi).
DocumentRoot
DocumentRoot
/var/lib/apache/htdocs
Directory
<Directory
/var/lib/apache/htdocs>
Options Indexes
FollowSymlinks Multiviews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
Change les paramèt res du repert oire /var/lib/apache/htdocs . On peut placer à l'int érieur
les direct ives suivant es :
Options
on définit les opt ions pour ce répert oire. Les opt ions possibles sont les suivant es :
Désactive toutes
None
les options.
Active toutes les
All options SAUF
Multiviews.
Permet aux
utilisateurs d'avoir
des indexs généré
Indexes par le serveur.
C'est à dire si l'index du répert oire
( index.html le + souvent ) est
manquant , cela aut orise le serveur a list er
le cont enu du répert oire (dangereux
suivant les fichiers cont enu dans ce
répert oire).
Autorise a suivre
FollowSymLinks les liens
symboliques.
ExecCGI Autorise à
exécuter des
scripts CGI à partir
de ce répertoire.
Autorise des
Includes fichiers include
pour le serveur.
Permet mais les
includes mais
empêche la
IncludesNOEXEC commande EXEC
(qui permet
d’exécuter du
code).
Autorise les vue
multiples suivant
MultiViews un contexte.
Par exemple permet d'afficher les pages
dans un langage suivant la configurat ion du
langage 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 .ht access de ce répert oire :
Gère tout ce qui est dans
All
.htaccess
Active les directives
d'autorisations
AuthDBMGroupFile,
AuthConfig AuthDBMUserFile,
AuthGroupFile, AuthName,
AuthType, AuthUserFile,
Require, etc.
Active les directives contrôlant
le type de document
FileInfo
(ErrorDocument,
LanguagePriority, etc.)
Active la directive d'autorisation
Limit
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'applicat ion des règles Allow/Deny :
Si le client ne correspond à
aucune règle deny , mais
deny,allow correspond à une règle allow ,
alors on autorise (allow par
défaut).
Si le client ne correspond à
aucune règle allow , mais
allow,deny correspond à une règle deny ,
on interdit (deny par
defaut).\hline
Allow/Deny
Autorise/Refuse les hôtes spécifié,
Nom
les adresses IP, le nom de domaine,
d'hôte
etc...
All Autorise/Refuse tout le monde
À vous de placer vos règles suivant le cont enu de vos répert oire accessibles par le Web. Il exist e
les mêmes règles pour les fichiers (<Files> </Files>) et les locat ions (<Locat ion> </Locat ion>). Voir
un exemple pour les fichiers (file) plus bas.
DirectoryIndex
DirectoryIndex index.html
index.htm index.php
index.php5
Indique le ou les fichiers à charger lorsqu'on accède à un répert oire sans préciser de fichier. Dans
cet exemple, si on accède à ht t p://example.com/repert oire/ , Apache cherchera un des fichiers
ment ionnés (index.ht ml, index.ht m...) et s'il en t rouve un il l'affichera. S'il n'en t rouve pas, il affichera
la list e des fichiers ou int erdira l'accès (suivant la présence ou non de l'opt ion Indexes sur le
répert oire).
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 st yle:
CacheNegotiatedDocs
#CacheNegotiatedDocs
Aut orise ou pas les proxies à met t re en cache les document s (pour aut oriser, enlevez le
comment aire # 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 ht t pd.conf.
At t ent ion, met t ez sur on si vous ut ilisez des CGI avec des variables SERVER_ NAME, car si l'URL du
client n'est pas la même que celle du CGI, vot re script CGI ne marchera pas.
DefaultType
DefaultType text/plain
Type mime par défaut que le serveur renvoie au client s. Convient dans la plupart des cas.
HostNameLookups
HostNameLookups off
Sur on , le serveur le nom du client grâce à une requêt e DNS inverse. Sinon, il se cont ent e de
l'adresse IP, ce qui génère beaucoup moins de t rafic réseau.
ErrorLog
ErrorLog /var/log/error_log
LogLevel
LogLevel warn
Niveau d'enregist rement des erreurs avec comme valeurs possibles, par ordre décroissant
d'import ance, donc croissant en bavardage:
urgence : le serveur devient
emerg
inutilisable
alert une intervention est nécessaire
erreurs critiques (accès réseau
crit
impossible par exemple)
les erreurs dans les pages,
error
scripts
les erreurs non bloquantes
(pages mal codées, scripts
warn
comportant des erreurs non
blocantes...
événement normal mais
notice
méritant d'être remarqué
informations utiles (comme
info
"serveur très chargé")
Enregistre TOUT ce qui peut se
debug
passer sur le serveur
Le niveau crit est le minimum recommandé, et on mont e généralement à warn .
ServerSignature
ServerSignature on
Alias
AddType
Spécifie que des fichiers ut ilisant de t elles extensions sont du type précisé. Cela permet de
décider quoi en faire. Pour ajout er le support PHP, le fichier mods-enabled/php5.conf
cont ient par exemple :
AddType application/x-
httpd-php .php .phtml .php3
AddType application/x-
httpd-php-source .phps
AddHandler
Ce document présent e la configurat ion d'un serveur ProFTPd sous Debian[1]. Sa gest ion des droit s
d'accès et sa configurat ion sont fait s pour ressembler à celles d'Apache [2].
Installation et lancement
Sous Debian, ProFTPD est disponible dans un package et peut s'inst aller avec la commande
Il est aussi possible de le configurer pour ses propres besoins à part ir des sources. Ceci permet de
spécifier les modules à ut iliser.
Il se lance aut omat iquement à l'inst allat ion et au démarrage du syst ème.
Le script qui permet de le lancer, l'arrêt er ou le relancer est /etc/init.d/proftpd .
Fichier de configuration
Le principal fichier de configurat ion est /etc/proftpd/proftpd.conf .
Cet t e configurat ion n'affect e que le service qui écout e au port ment ionné (21 par
défaut ). Pour affect er d'aut res port s (ex : 22 pour SFTP), il est impossible de l'ajout er
sur la ligne " Port 21 " : voir plus bas.
L'ensemble des direct ives sont décrit es ProFTPD [3]. Les commandes principales sont les
suivant es :
ServerName "''nom''"
description = Indique le nom
du serveur qui s'affichera
sur les clients
AccessGrantMsg "''message''"
description = Message de
bienvenue.
commentaires = Le message
peut contenir des jokers
comme %u (ici le nom de
l'utilisateur)
<Limit …>…</Limit>
description = Autorise ou
refuse l'utilisation de
certaines commandes du
protocole FTP.
commentaires =
Par exemple la section
suivante n'autorise la
commande MKDIR qu'aux
utilisateurs foo et bar :
<Limit MKDIR>
Allow foo bar
Deny All
</Limit>
ServerType ''type''
description = Détermine la
manière dont le serveur
reçoit les connexions
réseau.
commentaires =
Si le type est
''standalone'', un processus
père sera lancé et écoutera
sur le réseau. Si le type
est ''inet'', le serveur
devra être lancé par inetd
(TCP_WRAPPER).
Dans tous les cas il y aura
un processus de lancé par
connexion FTP.
MaxInstances 30
description = Limite le
nombre de processus
simultanés autorisés
User nobody
Group nobody
description = indiquent que
le serveur doit s'exécuter
avec les identifiants de
groupe et d'utilisateur
nobody
ExtendedLog /var/log/ftp.log
description = spécifie le
nom de fichier log
Umask 022
description = précise les
droits à '''enlever''' aux
fichiers créés sur FTP. 022
signifie que les droits
d'écriture sont enlevés au
groupe et à ''others'' pour
tout nouveau fichier.
AllowOverwrite on
description = autorise un
utilisateur à écraser un
fichier qui lui appartient.
UseFtpUsers on
description = active
l'utilisation du fichier
/etc/ftpusers qui donne la
liste des utilisateur
n'ayant '''pas''' accès au
serveur ftp.
AllowUser ''liste-
d'utilisateurs''
description = à placer dans
un contexte <Limit ...>...
</Limit> définit qui est
autorisé à exécuter la
commande du bloc ''Limit''
courant.
DenyUser ''liste-
d'utilisateurs''
description = à placer dans
un contexte <Limit ...>...
</Limit> définit qui n'est
pas autorisé à exécuter la
commande du bloc Limit
courant.
AllowStoreRestart
description = autorise les
clients à reprendre les
uploads vers le serveur.
DefaultChdir /var/ftp
description = Indique le
répertoire par défaut du
serveur.
commentaires = Les
utilisateurs se trouvent
placés dans ce répertoire
lors de la connexion.
DefaultRoot /var/ftp
description = déclare ce
répertoire comme la racine
du système de fichiers.
UserRatio
description = permet la
gestion des ratios.
commentaires =
UserRatio ''nom'' 2 10 5
4096</code> indique que
l'utilisateur ''nom'' a le
droit de récupérer 2
fichiers sur le serveur à
chaque fois qu'il en
déposera un.
On lui octroie pour
commencer un crédit de 10
fichiers.
Par ailleurs, pour 1 octet
déposé, il pourra recevoir 5
octets et il détient un
crédit de 4ko. À la place
d'un nom on peut aussi
utiliser * qui définit des
ratios par défaut.
SaveRatios on
description = sert à
préciser que nous souhaitons
sauvegarder les crédits de
chaque utilisateur entre
deux sessions.
RatioFile /ratio/RatioFile
RatioTempFile
/ratio/RatioTempFile
description = indiquent les
noms de fichiers permettant
de sauvegarder des
informations sur les ratios
des utilisateurs.
<Directory ''répertoire''> …
</Directory>
description = Cette section
indique les droits sur le
répertoire et sur tout ce
qu'il contient.
commentaires =
Par exemple :
<Directory /var/ftp/ratio>
<Limit ALL>
Deny ALL
</Limit>
HideNoAccess on
</Directory>
Ici, nous interdisons toute
opération sur le répertoire
ratio grace à la section
<Limit ALL>.
HideNoAccess
description = Cache tous les
éléments inaccessibles aux
utilisateurs.
<Anonymous ''répertoire''>…
</Anonymous>
description = Configure
l'accès anonyme
commentaires =
Exemple :
<Anonymous /home/ftp>
# Après la connexion
anonyme, passe sous
l'utilisateur/groupe ftp.
User ftp
Group ftp
# Fait correspondre le
login "anonymous" au compte
unix "ftp"
UserAlias anonymous ftp
# Interdit l'écriture
partout
<Directory *>
<Limit WRITE>
DenyAll
</Limit>
</Directory>
Pour que le serveur prenne en compt e le nouveau fichier de configurat ion, il faut recharger le
démon avec: /et c/init .d/proft pd rest art
# Limitation de la bande
passante en lecture:
RateReadBPS 14000
# Nombre maximums de
tentatives de login
MaxLoginAttempts 3
# Message d’accueil après
une connexion réussie
AccessGrantMsg "Bienvenue %u
chez moi!"
<Global>
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"
</Global>
# permet à l'utilisateur
même si il ne dispose pas
d'un shell valide (ex:
/bin/false)
RequireValidShell off
# Verrouille l'utilisateur
dans son répertoire par
défaut
DefaultRoot ~
RequireValidShell
off
# We want 'welcome.msg'
displayed at login, and
'.message' displayed
# in each newly chdired
directory.
DisplayLogin
welcome.msg
DisplayChdir
.message
# Limit WRITE
everywhere in the anonymous
chroot
<Directory *>
<Limit WRITE>
DenyAll
</Limit>
</Directory>
# Uncomment this if
you're brave.
# <Directory incoming>
# # Umask 022 is a
good standard umask to
prevent new files and dirs
# # (second parm)
from being group and world
writable.
# Umask
022 022
# <Limit
READ WRITE>
# DenyAll
# </Limit>
# <Limit
STOR>
# AllowAll
# </Limit>
# </Directory>
</Anonymous>
Dans le cas d'un webmast er, l'idéal est de le faire direct ement at t errir dans le répert oire où est
sit ué le sit e web qu'il administ re. Pour faire ceci, on indique le répert oire cont enant le sit e web
comme ét ant le répert oire de t ravail de l'ut ilisat eur.
# adduser --shell
/bin/false --home
/var/www/site bob
<Directory ~>
Hidefiles Maildir
</Directory>
Clients FTP
Pour t est er le serveur FTP, il convient à présent d'ut iliser un logiciel client FTP, si possible depuis
une aut re machine pour t enir compt e du pare-feu.
Il exist e de t rès nombreux client s FTP. Cert ains sont en mode graphique comme FileZilla, d'aut res
en mode t ext e comme la commande shell ftp .
Commande ftp
Le client le plus simple et le plus répandu est la commande ftp . Elle exist e également sous
Windows en ligne de commande.
Les commandes disponibles sont décrit es dans la page de man. Les principales sont : help,
open, ls, get, put ...
Navigateurs
Les navigat eurs int ernet permet t ent également de se connect er à un serveur FTP, généralement
en lect ure seule.
SFTP
Généralement c'est le service SSH qui écout e le port 22. Par exemple sur Ubunt u, OpenSSH
configure un SFTP avec la même clé publique que SSH, dans :
vim /etc/ssh/sshd_config
Il ut ilise ainsi la commande :
/usr/lib/sftp-server
sftp localhost
FTPS
Pour act iver le prot ocole FTPS :
vim
/etc/proftpd/proftpd.conf #
Décommenter la ligne
"Include
/etc/proftpd/tls.conf"
vim /etc/proftpd/tls.conf
# Ajouter le code ci-dessous
<IfModule mod_tls.c>
TLSEngine on
TLSRSACertificateFile
/etc/proftpd/ssl/proftpd-
rsa.pem
TLSRSACertificateKeyFile
/etc/proftpd/ssl/proftpd-
key.pem
</IfModule>
/etc/init.d/proftpd restart
Pour plus d'informat ion sur les cert ificat s .pem, voir Apache/HTTPS.
Problèmes connus
Logs
Proft pd st ocke ses logs dans les fichiers suivant s :
TransferLog
/var/log/proftpd/xferlog
SystemLog
/var/log/proftpd/proftpd.log
cat
/var/log/proftpd/proftpd.log
2015-10-08 16:17:44,302
ftp.example.com
proftpd[21992]
ftp.example.com: ProFTPD
killed (signal 15)
2015-10-08 16:17:44,303
ftp.example.com
proftpd[21992]
ftp.example.com: ProFTPD
1.3.5 standalone mode
SHUTDOWN
2015-10-08 16:17:44,364
ftp.example.com
proftpd[28832]
ftp.example.com: ProFTPD
1.3.5 (stable) (built Fri
May 22 2015 00:17:07 UTC)
standalone mode STARTUP
2015-10-08 16:18:09,365
ftp.example.com
proftpd[29111]
ftp.example.com (lns-bzn-
51f-85-78-78-
5.adsl.proxad.net): FTP
session opened.
2015-10-08 16:18:09,575
ftp.example.com
proftpd[29111]
ftp.example.com (lns-bzn-
51f-85-78-78-
5.adsl.proxad.net): user1
chdir("/home/user2") failed:
Permission non accordée
2015-10-08 16:18:09,577
ftp.example.com
proftpd[29111]
ftp.example.com
(c233e21e.fsp.oleane.fr[194.
51.226.30]): FTP session
closed.
Enfin, si un copié-collé du login et du mot de passe ne fonct ionne pas, cont act er l'administ rat eur
du serveur pour recréer le compt e.
Aucune permission
Généralement ce phénomène s'accompagne du message "425 Can't open dat a connect ion for
t ransfer". Il peut êt re résolu en cochant le mode passif dans le t roisième onglet du sit e.
En SFTP, il s'agit d'un avert issement sur la clé de crypt age qui peut survenir avec ProFTPD ou
OpenSSH. Il peut plant er cert ains script s ou logiciels de t ransfert comme Webdrive, qui s'arrêt ent
sans l'afficher. Mais avec FileZilla il suffit de l'accept er une fois pour ne plus le revoir.
Sinon, si telnet ne fonct ionne pas sans aucune règle iptables , mais passe sur le port 22,
c'est peut -êt re la direct ive Port 21 de /etc/proftpd/proftpd.conf à refaire. Ou
sinon, dans le client FileZilla, préciser le chiffrement pour ce sit e en "Connexion FTP simple (non
sécurisé)".
Sinon, il s’agit peut -êt re d’une règle de pare-feu. Pour le vérifier, t aper la commande telnet IP
21 . Si c'est bloqué ou affiche "délai d’at t ent e dépassé", ou "connexion refusée" il faut ouvrir le flux
FTP du pare-feu client .
Sinon, il faut donc vérifier que le client FTP n’est pas configuré en SFTP (port 22 au lieu de 21) ou
vice-versa.
Si un message d’erreur survient après une connexion "PASV" : il faut désact iver le mode passif. Par
exemple dans Filezilla : Édit ion, Paramèt res, FTP, décocher la case.
Références
1. http://doc.ubuntu-fr.org/proftpd
2. http://www.proftpd.org/docs/howto/Co
nfigFile.html
3. http://www.proftpd.org/docs/
4. https://www.digitalocean.com/commu
nity/tutorials/how-to-configure-proftpd-
to-use-sftp-instead-of-ftp
DHCP
Le prot ocole DHCP (pour Dynamic Host Configurat ion Prot ocol) est un prot ocole réseau dont le
rôle est d'assurer la configurat ion aut omat ique des paramèt res réseau d'une st at ion, not amment en
lui assignant aut omat iquement une adresse IP et un masque de sous-réseau.
Le prot ocole DHCP est t rès souvent mis en œuvre par les administ rat eurs de parc de st at ions car
il offre l'énorme avant age de cent raliser la configurat ion des st at ions sur une unique machine : le
serveur DHCP. Le principal danger de DHCP est qu'en cas de panne du serveur DHCP, plus aucune
st at ion n'accède au réseau.
Configuration
Le fichier de configurat ion principal est /etc/dhcp/dhcpd.conf . Sa synt axe est décrit e dans man
dhcpd.conf .
Il possède des opt ions globales, généralement placées au début , et des sect ions pour chaque
hôt e ou réseau à configurer.
Après chaque modificat ion de la configurat ion, il faut relancer le serveur :
/etc/init.d/isc-dhcp-server
restart
S'il ne se relance pas, le dét ail de l'erreur se t rouve généralement dans /var/log/syslog
Interfaces
Pour choisir les int erfaces sur lesquels le serveur est lancé, il faut modifier /etc/default/isc-dhcp-
server en indiquant par exemple
INTERFACES="eth1 eth2"
Il est obligat oire d'avoir une sect ion "subnet " (voir ci-dessous) pour le réseau de chaque int erface.
Adresse dynamique
Pour configurer une plage d'adresses à at t ribuer dynamiquement aux adresses MAC inconnues, on
ut ilise une sect ion subnet dans dhcpd.conf. La sect ion suivant e at t ribuera par exemple des
adresses comprises ent re 192.168.1.101 et 192.168.1.199 :
Adresse fixe
Pour donner une adresse fixe à un post e, il faut connaît re son adresse MAC et écrire une sect ion
host. Par exemple la sect ion suivant e at t ribue l'adresse 192.168.0.47 au post e 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'aut res informat ions que l'adresse IP. Ces opt ions peuvent êt re
définies de manière globale en les plaçant en dehors de t out e sect ion. Elles s'appliqueront alors à
t out es les sect ions qui ne les redéfinissent pas. Si elles sont placées dans une sect ion part iculière,
elles ne s'appliquent qu'à celle-ci.
L'opt ion domain-name-servers permet par exemple d'indiquer au post e les adresses des serveurs
DNS. L'opt ion routers indique la passerelle.
Tout es les opt ions sont décrit es dans la page de man. On peut également consult er cet t e
document at ion sur int ernet [2] (ht t p://www.linuxmanpages.com/man5/dhcpd.conf.5.php) .
Netfilter
Net filt er est un module qui permet de filt rer et de manipuler les paquet s réseau qui passent dans
le syst ème.
Il fournit à Linux :
Fonctionnement
Net filt er int ercept e les paquet s réseau à différent s endroit s du syst ème (à la récept ion, avant de
les t ransmet t re aux processus, avant de les envoyer à la cart e réseau, et c.). Les paquet s
int ercept és passent à t ravers des chaînes qui vont dét erminer ce que le syst ème doit en faire. En
modifiant ces chaînes on va pouvoir bloquer cert ains paquet s et en laisser passer d'aut res.
Filtrage
Dans son fonct ionnement le plus simple, Net filt er permet de jet er ou de laisser passer les paquet s
qui ent rent et qui sort ent .
Chaînes
Une chaîne est un ensemble de règles qui indiquent ce qu'il faut faire des paquet s qui la t raversent .
Règles
Une règle est une combinaison de crit ères et une cible. Lorsque t ous les crit ères correspondent au
paquet , le paquet est envoyé vers la cible.
Les crit ères disponibles et les act ions possibles dépendent de la chaîne manipulée.
Syntaxe
La synt axe d' iptables et t out es les opt ions sont décrit es dans la page de man.
Pour chaque paramèt re il exist e généralement une forme longue avec deux t iret s (par exemple -
-append ) et une forme court e avec un seul t iret (par exemple -A ). Ut iliser l'une ou l'aut re n'a
pas d'import ance, elles sont équivalent es. Les deux possibilit és sont souvent représent ées dans la
document at ion sous la forme --append|-A .
Les paramèt res indiqués ent re crochet s (par exemple [-t <table>] ) sont facult at ifs.
Ce qui se t rouve ent re inférieur et supérieur (par exemple <table> ) doit êt re remplacé par une
valeur.
Commandes
Les commandes principales sont les suivant es :
--list|-L [<chaîne>]
Affiche les règles cont enues dans les chaînes ou seulement dans la chaîne sélect ionnée.
Si le paramèt re -v est placé avant cet t e commande, le nombre de paquet s ayant t raversé
chaque règle sera également affiché.
--append|-A <chaîne>
<critères> -j <cible>
Ajout e une règle à la fin de la chaîne <chaine>. Si t ous les crit ères correspondent au paquet , il est
envoyé à la cible. Voir plus bas pour une descript ion des crit ères et des cibles possibles.
--insert|-I <chaîne>
<critères> -j <cible>
--delete|-D <chaîne>
<critères> -j <cible>
Supprime la règle correspondant e de la chaîne.
--flush|-F [<chaîne>]
Efface t out es les règles de la chaîne. Si aucune chaîne n'est indiquée, t out es les chaînes de la
t able seront vidées.
Dét ermine la cible lorsqu'aucune règle n'a int errompu le parcours et que le paquet arrive en fin de
chaîne.
Critères
Les crit ères possibles sont nombreux. En voici quelques-uns :
--protocol|-p [!]
<protocole>
Le prot ocole est <prot ocole>. Les prot ocoles possibles sont t cp, udp, icmp, all ou une valeur
numérique. Les valeurs de /et c/prot ocols sont aussi ut ilisables. Si un point d'exclamat ion se t rouve
avant le prot ocole, le crit ère correspondra au paquet seulement s'il n'est pas du prot ocole spécifié.
Un point d'exclamat ion ne fera correspondre le paquet que s'il n'a pas cet t e adresse source.
--destination|-d [!]
<adresse>[/<masque>]
Le port dest inat ion est <port >. Il est obligat oire de préciser le prot ocole ( -p tcp ou -p
udp ) car dans les aut res prot ocoles il n'y a pas de not ion de port .
-i <interface>
L'int erface réseau d'où provient le paquet . N'est ut ilisable que dans les chaînes INPUT et
FORWARD.
-o <interface>
L'int erface réseau de laquelle va part ir le paquet . N'est ut ilisable que dans les chaînes OUTPUT et
FORWARD.
--icmp-type <type>
Si le prot ocole choisi est icmp, permet de spécifier un t ype précis. exemples de t ypes: echo-
request pour l'envoi d'un "ping", echo-reply pour la réponse à "ping"
Cibles
Les cibles principales sont les suivant es :
-j ACCEPT
-j DROP
Jet t e le paquet sans prévenir l'émet t eur. Le parcours de la chaîne est int errompu.
-j REJECT
Comme DROP mais prévient l'émet t eur que le paquet est rejet é. La réponse envoyée à l'émet t eur
est également un paquet qui devra sat isfaire les règles de sort ie pour pouvoir passer.
-j LOG [--log-level <level>]
[--log-prefix <prefix>]
Enregist re le paquet dans les logs syst èmes. Au <level> par défaut , le paquet est affiché sur la
console principale du syst ème.
Cet t e cible est ut ile pour voir cert ains paquet s qui passent (pour débugger ou pour alert er).
Utilisation simple
Le principe est assez simple à comprendre : un paquet IP arrive sur vot re machine, vous devez alors
choisir ce que vous en fait es. Vous pouvez l’accept er (ACCEPT), le rejet er (REJECT) ou le dénier
(DROP). La différence ent re les deux derniers modes qu'avec REJECT on prévient l’envoyeur que
son paquet a ét é refusé, mais pas avec DROP.
Trois t ypes de paquet s peuvent passer par le firewall. Les paquet s sort ant (OUTPUT), ent rant
(INPUT) ou « passant », c’est -à-dire qui ne font que rebondir sur le rout eur qui doit les rediriger
FORWARD).
Pour organiser les règles d’accept at ion/rejet , on procède de la façon suivant e : – INPUT, OUTPUT,
FORWARD, sont appelés des chaînes – une règle est un ensemble d’at t ribut s auxquels correspond
(ou non) un paquet : IP source, IP dest inat ion, port source, port dest inat ion, prot ocole . . . – quand
un paquet passe par le firewall, il est aiguillé vers la chaîne correspondant e – ensuit e, les règles de
la chaîne sont t est ées une par une, dans l’ordre, sur le paquet . Dès que le paquet correspond à une
règle, on s’arrêt e. Si la règle st ipule ACCEPT, le paquet est accept é. Si elle st ipule DROP, il est
ignoré. Si elle st ipule REJECT, il est refusé avec acquit t ement . Les règles suivant es ne sont pas
t est ées. – si aucune règle ne correspond au paquet , la polit ique par défaut est appliquée. Elle peut
êt re posit ionnée à ACCEPT, DROP ou REJECT.
Il est plus sécurisant (mais plus long à met t re en place) d’ut iliser une polit ique par défaut DROP et
de créer des règles ACCEPT.
#!/bin/sh
# Effacer toutes les règles
avant toute chose, afin de
partir d’une base
# propre et de savoir
exactement ce que vous
faites
iptables -F
Quelques exemples
Pour vider la chaine INPUT de la t able filter (la t able par défaut ) :
iptables --flush INPUT
La polit ique par défaut est d'accept er t ous les paquet s, ce qui est généralement un mauvais choix
pour la sécurit é. Pour changer cet t e règle sur la chaine FORWARD de la t able filter :
iptables -t nat -A
PREROUTING -p tcp --dport 80
-j DNAT --to 192.168.0.1
Le cas FTP
Le prot ocole FTP est difficile à gérer avec un firewall car il ut ilise plusieurs connexions. Lorsqu'on
se connect e par FTP sur un serveur, on créé une connexion dit e de contrôle qui permet d'envoyer
les commandes au serveur. Ensuit e pour chaque t ransfert de fichier et chaque list age de
répert oire, une nouvelle connexion de données sera créée.
Le firewall peut t rès bien gérer la connexion de cont rôle, mais pas celles de t ransfert car elles
sont fait es sur des port s indét erminés. Sur cert ains serveurs FTP il est possible de fixer une plage
de port s à ut iliser, et dans ce cas on peut faire du NAT simple.
Il est également possible d'ut iliser le "connt rack ft p". C'est un module pour Net filt er qui inspect e
les connexions FTP de cont rôle pour dét ect er les connexions de données. Il indique alors au noyau
que ces connexions sont liées à une aut re connexion (RELATED). Pour aut oriser ces connexions
avec ipt ables on ut ilise le module state.
modprobe ip_conntrack_ftp
Inet d ut ilise le démon t cpd qui int ercept e les demandes de connexion à un service et vérifie par le
biais des fichiers host s.allow et host s.deny si le client est aut orisé à ut iliser ce service. Sur les
versions de linux act uelles, il est inst allé par défaut . Par cont re il n'est pas act if dans sa part ie
cont rôle d'accès.
Inet d est un élément à met t re en œuvre pour sécuriser une machine sous linux, il ne peut t out efois
pas remplacer complét ement un vrai firewall.
Le principe
Lorsque vous souhait ez vous connect er sur une machine dist ant e avec la commande t elnet par
exemple, le démon inetd int ercept e vot re demande de connexion et vérifie dans le fichier
inetd.conf si le service t elnet est ut ilisable. Si la réponse est posit ive, vot re demande est passée à
tcpd qui vérifie dans les fichiers hosts.allow et hosts.deny si vous avez le droit de vous connect er
en t elnet , si cela est le cas vot re demande de connexion sera aut orisée, sinon vous serez rejet é.
Dans t ous les cas de figure et cela est l'aut re fonct ion de TCP_ wrappers, tcpd t ransmet t ra à
syslogd (démon de log) vot re demande (cet t e demande se ret rouvera dans les logs, fichier
/var/log/securit e).
L'installation
Par défaut il est inst allé avec la plupart des dist ribut ions, mais au cas où, le paquet à inst aller est :
t cp_ wrappers-x.....rpm. TCP_ wrappers ut ilise les fichiers suivant s : t cpd, inet d, inet d.conf,
host s.allow, host s.deny, t cpdchk, t cpdmat ch.
Configuration : le fichier
inetd.conf
Ce fichier se t rouve dans le répert oire /etc . Vous pouvez act iver ou désact iver ici des services, en
plaçant un # devant la ligne ou en l'enlevant , puis en obligeant la relect ure du fichier avec la
commande killall -HUP inetd. Il est possible d'ajout er d'aut res services dans ce fichier.
En voici un comment é:
# Version:
\@(#)/etc/inetd.conf
# Les premières lignes sont
utilisées par inetd
#
#echo stream tcp nowait root
internal
#echo dgram udp
wait root internal
#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.
#Ils ne sont pas
spécialement sécurisés.
telnet peut être remplacé
par ssh qui est beaucoup
plus sécurisé.
#
# ftp stream tcp
nowait root
/usr/sbin/tcpd
in.ftpd telnet stream tcp
nowait root
/usr/sbin/tcpd
in.telnetd
#
#Shell, login, exec, comsat
et talk sont des protocoles
BSD.
#Essayez de ne pas les
utiliser.
#Ils présentent des failles
au niveau de la sécurité.
# shell stream tcp
nowait root
/usr/sbin/tcpd
in.rshd login stream tcp
nowait root /usr/sbin/tcpd
in.rlogind
#exec stream tcp nowait
root /usr/sbin/tcpd
in.rexecd
#comsat dgram udp wait
root /usr/sbin/tcpd
in.comsat
talk gram udp wait
nobody.tty /usr/sbin/tcpd
in.talkd
ntalk dgram udp wait
nobody.tty /usr/sbin/tcpd
in.ntalkd
#dtalk stream tcp wait
nobody.tty /usr/sbin/tcpd
in.dtalkd
#
# pop3 et imap sont les
serveurs de messagerie.
# À n'activer que si vous
les utilisez.
# 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é.
#Évitez de l'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, de
recevoir une adresse IP, de
charger le système.
#TFTP ne disposant pas de
système d'authentification
il
#est un énorme trou de
sécurité. # Vous devez
absolument éviter de
l'utiliser
# tftp dgram udp
wait root
/usr/sbin/tcpd in.tftpd
# bootps dgram udp
wait root /usr/sbin/tcpd
bootpd
#Finger, cfinger, systat and
netstat ne sont pas
# dangereux en eux même,
mais ils
# fournissent des
informations sur les comptes
#utilisateurs et votre
système.
#Il ne faut donc pas les
utiliser.
# finger stream tcp nowait
nobody /usr/sbin/tcpd
in.fingerd
#cfinger stream tcp nowait
root /usr/sbin/tcpd
in.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.identd
in.identd -e -o
# end of inetd.conf
linuxconf stream tcp wait
root /bin/linuxconf
linuxconf --http
Le # devant une ligne rend la ligne inact ive, donc le service non disponible. Si vous ne devez pas
ut iliser un service, rendez le inact if.
Hosts.allow et Hosts.deny
Vous t rouverez ces deux fichiers dans le répert oire /et c.
Le premier fichier lu est hosts.allow , puis hosts.deny. Si une requêt e est aut orisée dans le fichier
host s.allow alors elle est accept ée, quel que soit le cont enu du fichier host s.deny. Si une requêt e
ne sat isfait aucune règle, que ce soit dans host s.allow ou host s.deny alors elle est aut orisée. En un
mot si vous ne met t ez rien dans host s.deny, alors vous n'avez rien fait .
Voici un pet it exemple qui dans des cas simples est suffisant :
fichier hosts.allow
# hosts.allow
ALL : LOCAL
in.ftpd :
192.168.0.,10.194.168.0/255.
255.255.0, 192.168.1.1
in.telnetd : .iut.u-
clermont1.fr
On aut orise t out les port s depuis un accès local, et on aut orise ft p pour les machines venant du
réseau 192.168.0.0, ainsi que les machines du réseau 10.194.168.0 avec une aut re not at ion et enfin
la seule machine qui a pour adresse 192.168.1.1
fichier hosts.deny
#hosts.deny
ALL:ALL
Le fichier host s.deny est simple à comprendre, il int erdit t out par défaut . Le fichier host s.allow
indique les services que je veux aut oriser (Le nom du service doit êt re ident ique au nom qui se
t rouve dans inet d.conf). la synt axe est la suivant e :
deamon[,deamon,...] :
client[,client,...] [ :
option : option ...]
Cet t e synt axe est ident ique dans les deux fichiers, host s.allow et host s.deny.
Les utilitaires de tcp
wrappers
Les hub sont de moins en moins ut ilisés. Ils sont généralement remplacés par des commut at eurs
(ou switch) qui savent dét erminer (en fonct ion de l'adresse MAC) sur quel câble il faut envoyer un
paquet . Les machines ne reçoivent donc généralement que les paquet s qui leur sont dest inés.
L'ut ilit aire t cpdump permet d'inspect er les paquet s qui sont reçus et t ransmis par une cart e
réseau.
Filtrage
Il est possible de sélect ionner les paquet s à "écout er" en fonct ion d'expressions. Ainsi, ne seront
affichées / t rait ées que les informat ions pour lesquelles le résult at de l'expression est vérifié. Une
expression est composée de primit ives et d'opérat eurs logiques.
Une primit ive est un ident ifiant précédé de mot s clés qui indiquent le t ype de l'ident ifiant . Par
exemple la primit ive src port 21 cont ient les élément s suivant s :
De la même manière, la primit ive ether src 00:11:22:33:44:55 indique l'adresse ethernet (ou MAC)
source 00:11:22:33:44:55.
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>
le port est compris entre <port1> et
<port2>. 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.
Les primit ives peuvent êt re reliées avec les opérat eurs logiques and, or et not. Par exemple
l'expression suivant e va t rouver t ous les paquet s en provenance de t iny mais dont le port n'est pas
le port ssh :
Options
Plusieurs opt ions permet t ent de modifier le comport ement de t cpdump :
-i <interface>
sélectionne l'interface réseau sur laquelle
tcpdump écoute. Par défaut il prend la
première active (sauf lo).
-x
affiche également les données
contenues dans les paquets trouvés,
sous forme hexadécimale
-X
affiche les données des paquets sous
forme ASCII
-s <nombre>
par défaut, seuls les 68 premiers octets
de données sont affichés. Ce paramètre
permet de modifier ce nombre.
-w
pour spécifier le chemin d'un fichier où
sauvegarder le dump.
Exemples
Là, le seul port qui nous int éresse est 80 (ht t p).
Voici une ligne complèt e qui ne laisse vraiment passer que les paquet s en provenance de
192.168.0.1 vers 212.208.225.1, sur le port 53 en udp.
tcpdump -x -X -s 0 src
192.168.0.1 and dst
212.208.225.1 and port 53
and udp
Nous avons demandé l'affichage du cont enu des paquet s au format hexadécimal et ascii (-x -X) et
ce, quelle que soit leur t aille (-s 0). Nous obt enons les informat ions désirées :
On peut l'ut iliser pour se connect er à une machine dist ant e comme avec t elnet , pour t ransférer
des fichiers de manière sécurisée ou pour créer des t unnels. Les t unnels permet t ent de sécuriser
des prot ocoles qui ne le sont pas en faisant passer les données par une connexion SSH.
Cryptographie asymétrique
SSH ut ilise la crypt ographie asymét rique RSA ou DSA. En crypt ographie asymét rique, chaque
personne dispose d'un couple de clé : une clé publique et une clé privée. La clé publique peut êt re
librement publiée t andis que chacun doit garder sa clé privée secrèt e. La connaissance de la clé
publique ne permet pas d'en déduire la clé privée.
Si la personne A veut envoyer un message confident iel à la personne B, A crypt e le message avec
la clé publique de B et l'envoie à B sur un canal qui n'est pas forcément sécurisé. Seul B pourra
décrypt er le message en ut ilisant sa clé privée.
Cryptographie symétrique
SSH ut ilise également la crypt ographie symét rique. Son principe est simple : si A veut envoyer un
message confident iel à B, A et B doivent d'abord posséder une même clé secrèt e. A crypt e le
message avec la clé sécrèt e et l'envoie à B sur un canal qui n'est pas forcément sécurisé. B
décrypt e le message grâce à la clé secrèt e.
/etc/init.d/ssh
Le fichier de configurat ion du serveur SSH est /et c/ssh/sshd_ config. À ne pas confondre avec
/et c/ssh/ssh_ config qui est le fichier de configurat ion du client SSH.
ssh-keygen -t rsa
Deux clés vont êt re générées, une clé publique (par défaut ~/.ssh/id_dsa.pub ) et une clé
privée (par défaut ~/.ssh/id_dsa ). C'est la clé publique qu'il faudra copier sur le serveur.
Les clés générées ont par défaut une longueur de 1024 bit s, ce qui est aujourd'hui considéré
comme suffisant pour une bonne prot ect ion.
La commande demande un nom de fichier pour sauvegarder la clé privée et un nom de fichier pour
sauvegarder la clé publique. Par défaut , la clé privée est st ockée dans le fichier
$HOME/.ssh/id_ dsa.
La clé privée est enregist rée avec les permissions 600. La clé publique port e le même nom de
fichier suivi de ".pub", avec les permissions 644.
Lors de la créat ion de la clé, l'ut ilit aire demande une pass phrase qui est un mot de passe pour
prot éger la clé privée (2eme prot ect ion). Cet t e pass phrase sert à crypt er la clé privée. La pass
phrase sera alors demandée à chaque ut ilisat ion de la clé privée, c'est à dire à chaque fois que vous
vous connect erez en ut ilisant cet t e mét hode d'aut hent ificat ion. Un mécanisme appelé ssh-agent
permet de ne pas rent rer le mot de passe à chaque fois (voir les docs).
Il est possible de changer la pass phrase qui prot ège la clé privée avec la commande ssh-keygen -
p.
Chaque ligne du fichier aut horized_ keys correspond à une clé publique aut orisée à se connect er. Il
faut vérifier que chaque clé est bien sur une seule ligne, sinon ça ne fonct ionne pas.
Le répert oire $HOME/.ssh' devrait être protégé en écriture, avec les permissions 755 (ou 705). De
la même manière, le fichier aut horized_ keys ne doit pas êt re lisible par t ous (600 par exemple).
Si la clé privée a ét é enregist ré dans un aut re fichier que $HOME/.ssh/id_ dsa, il faut le préciser au
client ssh :
Agent SSH
Un agent SSH est un programme qui garde en mémoire des clés privées. Le principe est le suivant :
on lance un agent
on lui ajoute des clés (si les clés sont
cryptées, elles sont décryptées avec la
passphrase avant d'être ajoutées)
à chaque connexion ssh, les clé de
l'agent sont utilisées en priorité
Les avant ages principaux sont :
ssh-agent /bin/bash
L'agent SSH lance un nouveau shell ("/bin/bash") dans lequel il sera act if. Il ne sera ut ilisable qu'à
part ir de ce shell et dans les programmes qui y seront lancés.
ssh-add [<fichier>]
Si on ne précise aucun fichier, il ut ilisera la clé par défaut ("~/.ssh/id_ dsa" pour SSH 2).
Si la clé est crypt é, la passphrase sera demandée et la clé décrypt ée sera ajout ée à l'agent .
Tout es les connexions SSH (avec ssh, scp...) lancées à part ir de ce shell ut iliseront l'agent et ne
demanderont donc plus la passphrase.
Depuis Windows
Pour se connect er en SSH à un serveur Linux sous Windows, il exist e le logiciel grat uit
Put t yT élécharger (https://www.putty.org/) .
Une fois lancé, dans le champ Host Name (or IP address), rent rer l'adresse IP ou le nom d'hôt e du
serveur dist ant . Le port est par défaut (et par norme) égal à 22 en prot ocole SSH.
Lors de la première connexion, un security warning peut êt re affiché, il faut just e cliquer sur oui.
Les opt ions de connexion du menu de gauche permet t ent évent uellement d'enregist rer un mot de
passe ou une clé SSH de connexion, afin de se connect er en quelque clics.
Sinon, des émulat eurs Unix comme Cygwin ou Git Bash peuvent exécut er la commande ssh .
Considérons deux st at ions HOST1 et HOST2. Supposons que sur la machine HOST1, vous ut ilisiez
la commande :
ou sur HOST2:
alors vous obt enez un t unnel sécurisé dans lequel vous pouvez passer t out e connexion, lesquelles
seront aut omat iquement crypt ées.
Sur HOST1, ssh -L p1:HOST2:p2 HOST2 signifie, que lorsqu'on se connect e au port p1, les paquet s
sont ret ransmis vers le port p2 de la machine HOST2 via HOST2.
Routage
Adresses IP et MAC
Chaque int erface de chaque ordinat eur sera ident ifiée par
On voit l’adresse MAC 00:B2:3A:24:F3:C4 et l’adresse IP 192.168.0.2. Cela signifie que le premier
oct et de l’adresse IP est égal à 192, le deuxième 168, le t roisième oct et est nul, et le quat rième
vaut 2.
Sous-réseaux
Classes de sous-réseaux
Jusqu'aux années 1990, les adresses IPv4 ét aient organisées en sous-réseaux. Chaque sous-
réseau possède une adresse, qui est une part ie de l’adresse IP des machines de ce sous-réseau.
Par exemple, l’adresse IP 192.168.4.35 appart ient au sous-réseau 192.168.4, parfois aussi not é
192.168.4.0.
Les sous-réseaux sont organisés en classes. Chaque classe de sous-réseaux correspond à des
réseaux pouvant cont enir un cert ain nombre de machines.
Masque de sous-réseau
Un masque de sous-réseau est une donnée sur 4 oct et s qui, avec l’adresse du sous-réseau,
caract érise les IP du sous-réseau.
Un bit du masque de sous-réseau est à 1 si pour t out es les adresses IP du sous-réseau, ce même
bit est le même pour l’adresse IP et le sous-réseau.
Par exemple, pour le réseau de classe A 37.0.0.0 avec le masque de sous-réseau 255.0.0.0, les 8
premiers bit s de t out es les adresses IP du sous-réseau valent 37.
On peut désigner un sous-réseau par son adresse et son masque, mais on peut aussi désigner le
sous-réseau en donnant seulement le nombre de bit s du masque. On parle alors, pour reprendre les
deux exemples précédent s, du sous-réseau 37.0.0.0/8 ou du sous-réseau 193.56.49.0/24.
Routage
Le rout age permet de faire communiquer plusieurs sous-réseaux. Une passerelle (en anglais
gateway) est en communicat ion avec différent s sous-réseaux sur différent es int erfaces, et assure
la communicat ion ent re les différent s sous-réseaux.
Routes
Une rout e définie sur une st at ion est un chemin que doivent prendre les paquet s à dest inat ion d’un
cert ain sous-réseau. Prenons l’exemple d’une st at ion, appelée st at ion 1, d’adresse IP 112.65.77.8
sur un réseau 112.0.0.0/8.
Elle est connect ée à une passerelle qui a pour IP dans ce réseau 112.65.123.3 sur son int erface
et h0. La passerelle est aussi connect ée au réseau 192.168.0.0/24 via son int erface et h1 qui a pour
IP 192.168.0.1. Si la st at ion 1 veut communiquer direct ement avec la st at ion, appelée st at ion 6,
d’adresse IP 192.168.0.2 sur le réseau 192.168.0.0/24, t rois condit ion doivent êt re réunies ;
Une route doit être définie sur la station 1
indiquant que les paquets à destination
du réseau 192.168.0.0/24 doivent passer
par la passerelle 112.65.123.3. Pour cela,
on peut utiliser la commande route :
echo 1
>/proc/sys/net/ipv4/ip_forwa
rd
sysctl -w
net.ipv4.ip_forward=1
Remarque : Il faut refaire ces commandes après un redémarrage. Pour évit er de relancer ces
commandes manuellement , on peut les met t re dans des script s d’init ialisat ion au démarrage avec
la commande updat e-rc.d (sous debian)). Pour ajout er un script my_ script à l’init ialisat ion :
mv my_script /etc/init.d
update-rc.d my_script
defaults
Si l'IP-forwarding est act ivé via uns sysct l, le fichier st andard de configurat ion de ce paramèt re est
/etc/sysctl.conf , où la ligne est déjà en comment aire.
On peut voir l’ét at des rout es avec la commande rout e -n. Par exemple, sur la st at ion 1 :
route -n
Destination
Gateway
Genmask Flags
Metric Ref Use Iface
192.168.0.0
112.65.123.3
255.255.255.0 U
0 0 0 eth2
etc...
Sur la st at ion 6
route -n
Destination
Gateway
Genmask Flags
Metric Ref Use Iface
112.0.0.0
192.168.0.1
255.0.0.0 U
0 0 0 wlan0
etc...
Pour supprimer une rout e, par exemple vers le réseau 193.86.46.0/24 via une passerelle
196.24.52.1, on fait :
NAT et masquerading
Lorsqu'un hôt e ayant une adresse IP sur un réseau local cherche à se connect er sur un réseau plus
vast e, par exemple sur int ernet , via une passerelle, cet hôt e a besoin d’une adresse IP sur le réseau
vast e. Pour cela, soit on demande à ce que les adresses du réseau local soient rout ées sur le
réseau global, mais il faut alors demander à réserver une plage d’adresses sur le réseau global, soit
l’administ rat eur de la passerelle a la possibilit é de prêt er l’IP de la passerelle aux machines du
réseau local. Pour cela, on ut ilise ipt ables avec NAT. Par exemple, si la passerelle se connect e à
int ernet via son int erface et h0, il suffit d’exécut er la commande suivant e sur la passerelle :
iptables -t nat -A
POSTROUTING -o eth0 -j
MASQUERADE
Tout e machine du réseau local (par exemple 192.168.0.0/24) qui se connect e à int ernet via cet t e
passerelle aura alors l’adresse IP de la passerelle sur int ernet . On peut aussi donner aux machines
du réseau local une aut re adresse IP que l’on spécifie avec –t o :
iptables -t nat -A
POSTROUTING -o eth0 -j SNAT
--to 193.56.17.9
Nous aurons un aperçu plus complet des possibilit és d’ipt ables dans la document at ion sur
Net filt er.
Redirection
Il est également possible de modifier la dest inat ion d'un paquet . C'est ut ile lorsqu'on veut cacher
une machine derrière une aut re : le client se connect e à un serveur, qui va t ransmet t re t ous les
paquet s à un aut re. Pour le client c'est t ransparent , c'est comme si c'ét ait le premier serveur qui
répondait . On appelle cela du Destination NAT (DNAT).
Exemple pour rediriger t out es les connexions du port 22 vers le serveur 192.168.1.12 :
iptables -t nat -A
PREROUTING -p tcp --dport 22
-j DNAT --to 192.168.1.12
TP VDN
VDN (ht t ps://opale.iut -clermont .uca.fr/info/wiki/doku.php?id=public:vdn:st art ) est un logiciel qui
permet de lancer des machines virt uelles Debian. Une machine virt uelle est un syst ème
informat ique complet qui fonct ionne à l'int érieur d'un aut re. VDN permet ainsi de faire fonct ionner
sur la même machine plusieurs serveurs Linux qui vont communiquer ent re eux sur un réseau virt uel.
Le schéma suivant représent e les machines virt uelles que nous allons ut iliser dans les TP, et les
réseaux qui les relient :
~vdn/vdn/bin/vdn
Il configurera vot re environnement pour que la prochaine fois que vous ouvrirez un t erminal, vous
n'aurez qu'à t aper cet t e commande pour le lancer :
vdn
Le schéma présent é plus haut devrait apparait re. Vous pouvez manipuler les machines virt uelles
avec un clic droit sur leur icône. Les opt ions sont les suivant es :
Start
Démarrer la machine virtuelle.
Halt
Arrêter la machine virtuelle. Vous pouvez
également l'arrêter à partir de la machine
virtuelle en tapant "halt".
Save
Sauvegarder les modifications faites sur
la machine virtuelle. Vous pouvez
également sauvegarder vos
modifications en tapant "vdn-save" à
partir de la machine virtuelle.
Ssh
Ouvre un terminal connecté à la machine
virtuelle. Vous pouvez également vous
connecter à partir d'un terminal en tapant
"vdn-ssh root@<nom de la machine
virtuelle>"
Config...
Ouvre un terminal pour modifier la
configuration de la machine virtuelle
(vous n'en aurez pas besoin).
Infos
Ouvre un terminal contenant les
informations sur la machine virtuelle, et
notamment les redirections de port (qui
seront utiles dans certains TP).
Clean
Efface toutes les modifications faites sur
la machine virtuelle. Ça ne sera effectif
qu'au prochain démarrage de la machine.
Kill
Arrête brutalement la machine virtuelle.
Les modification effectuées depuis son
lancement ne seront pas sauvegardées !
À n'utiliser que si la machine ne répond
plus du tout.
Vous pouvez également sélect ionner plusieurs machines virt uelles et effect uer une act ion sur
t out es ces machines en même t emps.
TP
lancez vdn
démarrez les machines virtuelles "tiny" et
"bigboss"
allez sur un "espace de travail" vierge
(avec ctrl + alt + flèche bas ou en
cliquant sur l'espace de travail). Vous
pouvez aussi utiliser l'onglet Ssh pour
ouvrir des sessions SSH sur les stations.
ouvrez 2 terminaux
sur chacun d'eux, connectez-vous sur une
machine virtuelle en utilisant la
commande "vdn-ssh
root@nomDeLaMachineVirtuelle"
TP Configuration
réseau
Dans ce TP nous allons configurer t iny pour qu'il puisse communiquer par le réseau avec bigboss.
Tout es les informat ions nécessaires à la réalisat ion de ce TP devraient se t rouver dans la
document at ion associée : Configurat ion réseau.
Préalable
Nous allons donc ut iliser un aut re procédé qui permet cet t e t raduct ion : le fichier hosts .
Préalable
TP
1. créez le répertoire
/mnt/aufs/rw/partage sur bigboss et
ajoutez un fichier à l'intérieur avec un
contenu quelconque
2. exportez ce répertoire par NFS, en
lecture-écriture et uniquement pour
tiny. La spécificité des machines
virtuelles que nous utilisons impose
d'utiliser l'option fsid=<n'importe quel
nombre positif non nul> pour indiquer
l'intervalle virtuel de blocs du système
de fichier. (séparez les options par une
virgule, mais ne mettez pas d'espace !)
3. montez ce répertoire sur tiny (avec
l'utilisateur root).
4. vérifiez que vous pouvez accéder au
fichier créé précédemment et qu'il
contient bien ce que vous avez mis
dedans
5. modifiez ce fichier. Si ça ne fonctionne
pas, c'est probablement à cause de
l'option root_squash qui est activée
par défaut. Consultez le man
exports pour connaître sa
signification et savoir comment la
désactiver.
6. vérifiez que le changement a été pris
en compte sur bigboss
TP Samba
Dans ce TP nous allons part ager un répert oire de bigboss avec Samba. Les répert oires part agés
avec Samba sont accessibles à des machines Windows. Nous ne disposons pas act uellement de
machine virt uelle sous Windows donc nous y accéderons uniquement à part ir de Linux.
Préalable
Préalable
Lancement d'Apache
Essayez de lancer le démon Apache avec
/etc/init.d/apache2 start sur
bigboss
Si Apache est lancé tant mieux ! Dans le
cas contraire:
Vérifiez que le nom de votre machine
est fixé dans /etc/hostname ,
Ajoutez dans /etc/hosts le
couple adresse_ip
nom_de_votre_machine
Pour enlever le warning d'Apache
concernant le nom de domaine,
ajoutez dans
/etc/apache2/apache2.conf
la ligne ServerName
nom_de_votre_machine .
Relancez le démon Apache
Accéder à la page d'accueil du
serveur
Il y a plusieurs moyens pour accéder au serveur HTTP de bigboss :
Modification de la racine du
serveur Web
Configuration de PHP
La direct ive: AccessFileName .htaccess doit êt re act ivée (à vot re avis, dans quel fichier
de configurat ion ?). Les direct ives cont enues dans ce fichier sont syst émat iquement int erprét ées
avant d'aut oriser l'accès au répert oire qui le cont ient . Voici les direct ives usuelles et leurs
significat ions:
AuthType Basic
AuthUserFile
/etc/apache2/users
AuthName "Accès privé"
Require user sasa
Vous pourriez en réalit é créer le fichier users n'import e où, du moment que vous spécifiez un
chemin correct dans la direct ive AuthUserFile .
<Files ~ "^\.ht">
Order allow,deny
Deny from all
</Files>
Préalable
Configuration de base
Accès anonyme
Préalable
inetd.conf
Ouvrir le fichier /et c/inet d.conf. Puis, indiquez et comment ez les services auxquels vous avez
accès. En connaissez vous cert ains? lesquels ?
telnet
Vérifiez si dans inet d.conf vous avez accès à t elnet . Puis essayez de vous connect er avec t elnet
bigboss. Si ça ne fonct ionne pas, vous avez loupé quelque chose auparavant ...
hosts
Lisez les fichiers host s.allow et host s.deny. Cont iennent -ils des règles ? Aut orisez t iny à se
connect er avec t elnet sur bigboss avec une règle dans le fichier host s.allow. Créez une règle pour
t out int erdire dans le fichier host s.deny.
Dans ce cas, vot re règle sur t elnet sera permise et t out le rest e sera refusé. N'oubliez pas de
redemarrer le service (/et c/init .d/inet d reload, ou si /et c/init .d/inet d, la façon brut e : killall inet d,
inet d).
Remarque : sous Debian Lenny le script de gest ion d'inet d est /et c/init .d/openbsd-inet d.
Pour des raisons de facilit és par rapport aux prochains TP, videz les fichiers host s.allow et
host s.deny.
tcpdchk
Ut ilisez la commande t cpdchk -av. Que donne et fait cet t e commande ?
TP Tcpdump
Préalable
FTP
Utilisation de wireshark
Wireshark est un out il d'analyse de t rafic réseau, disponible pour de nombreux OS et possédant une
int erface graphique. Lancez Wireshark.
Vous t rouverez une barre d'out ils et 3 fenêt res:
Pour le rest e (not amment pour les filt res) la document at ion de Wireshark est disponible à
www.wireshark.org.
A
Commençons par faire une nouvelle
analyse.
Lancez wireshark-gtk en tache de fond à
partir de tiny.
Cliquez sur le premier bouton start a new
live capture. Une nouvelle fenêtre,
permettant d'ajouter des options,
apparaît. Vous devez commencer par
choisir une interface, dans notre cas la
carte Ethernet (eth1). Vous pouvez créer
un filtre pour n'analyser que les trames et
paquets IP qui vous intéresse. Pour les
autres options voir l'aide !
Ne créer aucun filtre et cliquez sur ok. La
capture de trames commence.
Connectez vous à bigboss (par http ou
ftp, ou samba ou ssh...) Stoppez la
capture après la réception de quelques
trames.
Quelles sont les trames que vous avez
reçues ? type, source ? que contiennent t-
elles ?
B
ip.src == <adresse ip de
tiny> && tcp.port == 21
Préalable
1. Consultez le fichier
/etc/ssh/sshd_config (sur bigboss) et
repérez les options décrites dans les
notes et leur valeur.
2. Créez un compte sur bigboss (ou
utilisez un précédent) et essayez de
vous connecter à partir de tiny.
Création de clé
publique/privée
Agents
Tunnels SSH
Préalable
Le prot ocole DHCP est t rès souvent mis en œuvre par les administ rat eurs de parc de st at ions car
il offre l'énorme avant age de cent raliser la configurat ion des st at ions sur une unique machine : le
serveur DHCP. Le principal danger de DHCP est qu'en cas de panne du serveur DHCP, plus aucune
st at ion n'accède au réseau !
Dans un exercice précédent vous aviez configuré t iny manuellement (adresse IP, masque de sous
réseau, nom d'hôt e). Nous vous proposons d'aut omat iser la configurat ion de t iny via DHCP. Pour
cela nous avons inst allé pour vous sur t iny le paquet debian dhcp-client et sur bigboss le paquet
dhcp-server.
Interfaces
Pour choisir les int erfaces sur lesquels le serveur est lancé, il faut modifier /etc/default/isc-dhcp-
server en indiquant par exemple
INTERFACES="ethx" (x étant
le numéro de l'interface
utilisée par le DHCP)
Il est obligat oire d'avoir une sect ion "subnet " (voir ci-dessous) pour le réseau de chaque int erface.
Récupération de l'adresse
MAC
Récupérez l'adresse MAC de l'int erface et h1 de t iny en effect uant un ifconfig -a (ou ip a ) et not ez
la valeur (6 oct et s en hexadécimal) indiquée par le champ Et her (ou link/et her).
C'est grâce à cet t e adresse MAC que s'effect uera l'ident ificat ion de t iny par le serveur. On rappelle
que l'adresse MAC est unique pour t out e cart e Et hernet . On rappelle également qu'une adresse
MAC peut êt re changée (reprogrammat ion de la cart e) et donc qu'une aut hent ificat ion par adresse
MAC dans un réseau n'est valable que pour les réseaux de confiance.
Configuration du serveur
DHCP
hardware ethernet
XX:XX:XX:XX:XX:XX;
fixed-address tiny;
}
}
La première ligne (subnet ) précise le réseau géré. La seconde ligne (host ) indique une nouvelle
st at ion. La t roisième ligne (hardware et hernet ) permet d'ident ifier le client via son adresse MAC. La
quat rième ligne (opt ion host -name) indique le nom d'hôt e (le client fixera son nom d'hôt e avec la
valeur précisée). Enfin la cinquième ligne (fixed-address) précise que l'adresse IP de l'hôt e est fixe
et est celle de l'hôt e t iny (précisée dans /et c/host s).
Relancez le service dhcp (/etc/init.d/isc-
dhcp-server restart)
auto eth1
iface eth1 inet dhcp
Renommez /etc/hostname en
/etc/hostname.bak.
En déconfigurant eth1 (ifdown eth1) et en
reconfigurant eth1 (ifup eth1) vous devez
constater que l'adresse IP est bien
récupérée via le serveur DHCP.
Pour un t est complet redémarrez t iny. Son int erface et h1 ainsi que son nom d'hôt e doivent êt re
correct ement configurés.
Préalable
Il est recommandé de repart ir avec des syst èmes vierges pour se met t re en sit uat ion (le TP not é
sera fait sur un syst ème vierge).
Configuration réseau
Firewall
Créer un script de firewall qui bloque t out sur bigboss sauf :
Préalable
Introduction
LOG
Nous allons inst aller des sit es web derrière un firewall. C'est une prat ique courant e lorsqu'on
souhait e héberger des sit es web. Les principes mis en prat ique ici sont valables pour un
hébergement en int erne (sur vos propres machines) mais également avec des serveurs dédiés (le
plus courant pour héberger des sit es web, en dehors des hébergement s mut ualisés).
Sur int ernet , les noms de domaine sont gérés par des serveurs DNS. Nous ut iliserons à la place le
fichier /et c/host s pour indiquer l'adresse IP des noms que nous ut iliserons.
Pour accéder aux sit es web dans les t erminaux des machines virt uelles, nous ut iliserons lynx, un
navigat eur en mode t ext e.
Préparation de
l'environnement
Faire en sort e que bigboss et surfer puissent communiquer en passant par FAI.
Vérifier qu'on peut accéder aux deux sit es web à part ir de surfer.
Toujours à part ir de surfer, accéder aux sit es web d'un aut re groupe.
Firewall
Int erdire sur bigboss t ous les paquet s qui ne sont pas ut iles à l'accès au serveur web de t iny ou aux
t ransfert s sur et h3.
At t ent ion, il est impérat if de laisser passer t ous les paquet s qui t ransit ent par et h3 car c'est le
seul lien ent re vot re t erminal et bigboss. Si vous bloquez ces paquet s, bigboss ne répondra plus et
vous perdrez les modificat ions que vous avez fait es.
Le prot ocole FTP ét ant difficile à rediriger, on fera t ourner le serveur direct ement sur bigboss. Tiny
export era la racine des sit es web par NFS et bigboss les mont era dans le home des ut ilisat eurs.
Configuration définitive
Faire en sort e que t out ceci soit paramét ré au démarrage des machines.
Document s ut iles :
man boot (sections boot scripts et
sequencing directories)
man update-rc.d
TP Licence - Serveur
intranet
Objectif
Configurer un serveur int ranet pour les besoins d'une pet it e ent reprise.
Rôles
Réseau
bigboss,
tiny et
XP sont
reliés au
réseau
interne
de
l'entrepri
se.
bigboss et FAI sont reliés à internet
surfer est relié à FAI
Dans not re environnement , int ernet est le réseau qui relie t ous les bigboss et FAI.
Résultat demandé
Les configurat ions doivent êt re permanent es (càd effect ives au démarrage des machines).
Notes
Pour configurer une adresse réseau dynamique sous Windows il faut :