0% ont trouvé ce document utile (0 vote)
222 vues260 pages

Administration Réseau Sous Linux - Version Imprimable - Wikilivres

Ce document décrit la configuration de base des réseaux sous Linux, notamment l'installation des cartes réseau, la configuration des interfaces réseau, la résolution de noms ainsi que le partage de fichiers via NFS.

Transféré par

RigobertCameroun
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
222 vues260 pages

Administration Réseau Sous Linux - Version Imprimable - Wikilivres

Ce document décrit la configuration de base des réseaux sous Linux, notamment l'installation des cartes réseau, la configuration des interfaces réseau, la résolution de noms ainsi que le partage de fichiers via NFS.

Transféré par

RigobertCameroun
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Administrat

ion réseau
sous Linux

Une version à jour et édit able de ce livre est disponible sur


Wikilivres,
une bibliot hèque de livres pédagogiques, à l'URL :
ht t ps://fr.wikibooks.org/wiki/Administ rat ion_ r%C3%A9sea
u_ 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

Installation de la carte réseau


Les cart es réseau sont souvent dét ect ées au démarrage. Si ce n'est pas le cas il faudra charger
les modules correspondant s.

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

modprobe <nom du module>

Parmi les modules courant s on peut not er : ne2k-pci pour les cart es NE2000, via-rhine, rt l8139...

Les modules disponibles pour vot re noyau se t rouvent dans /lib/modules/<nom du


noyau>/kernel/drivers/net/ . La commande suivant e affiche les modules réseau
disponibles pour le noyau en cours d'ut ilisat ion :

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 :

dmesg | grep eth0

La commande suivant e permet d'afficher les cart es réseaux reliées au bus PCI :

lspci | grep Ethernet

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 :

ifconfig eth0 192.168.1.12

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 :

ifconfig eth0 192.168.1.12


netmask 255.255.255.128

>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 add default gw


<adresse ip>

Pour afficher les rout es vers les différent s réseaux :

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

ping <adresse ip>

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.

Informations sur les interfaces


Pour vérifier les port s ouvert s, on peut ut iliser la commande

netstat -a

>Nom d'hôte (hostname)


Le fichier /etc/hostname cont ient le nom de la machine. Il suffit de l'édit er pour changer le nom
d'hôt e de la machine. Cet t e modificat ion n'est pas prise en compt e immédiat ement par le
syst ème, elle le sera au prochain démarrage de la machine ou après avoir lancé :

/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 :

hostname <nom d'hôte>

>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

ATTENTION : Avant de redémarrer la configurat ion réseau ( systemctl restart


networking, ou ifup/ifdown, ... ) déconfigurez manuellement les int erfaces réseaux
via la commande ip addr flush ethX (X valant 0 puis 1 puis 2 pour r2).

Résolution de noms d'hôte


Le fichier /etc/host.conf indique comment les noms doivent êt re résolus (c'est à dire
comment passer d'une adresse IP à un nom, et inversement ). Par exemple :
# D'abord traduire avec les
serveurs DNS et ensuite avec
/etc/hosts.
order bind,hosts

# Il existe des machines


avec plusieurs adresses
multi on

# Vérifie l'usurpation
d'adresse IP
nospoof on

Serveurs DNS
Le fichier /etc/resolv.conf 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

ping: unknown host

Vérifier en renseignant le DNS mentionné


ci-dessus.
La commande ping permet de tester la
joingnabilité d'une adresse ip disponible
dans un même réseau. Essayons de voir
les options de la commande ping :
ping Adaptive -A. intervalle Interpacket
adapte à temps aller-retour, de sorte que
effectivement pas plus d'un (ou plus, si la
précharge est set) sonde sans réponse
est présent dans le réseau. inter- Minimal
val est 200msec pour ne pas super-
utilisateur. Sur les réseaux à faible rtt ce
mode est essentiellement équivalent au
mode d'inondation. -b Autoriser pinger
une adresse de diffusion. -B Ne pas
laisser ping pour changer l'adresse
source de sondes. le l'adresse est liée à
celle sélectionnée lorsque ping
commence. -c count Arrêt après l'envoi
de paquets de comptage
ECHO_REQUEST. Avec délai option ping
attend les paquets de comptage
ECHO_REPLY, jusqu'à ce que le Time-
expire out.
Cette section est vide, pas assez
détaillée ou incomplète.
Pour évit er que ceci se produise en passant du DHCP en IP st at ique, il faut t est er aupavavant la
résolut ion DNS :

Tester le pare-feu : telnet 8.8.8.8


53 .
Si dig google.fr fonctionne mais
pas dig @8.8.8.8 google.fr ,
vérifier que le sous-réseau de la machine
a bien accès au DNS.
NFS
Le prot ocole NFS (Net work file syst em) permet de part ager des fichiers ent re des machines Unix,
et donc Linux. C'est un modèle client -serveur : une machine met à disposit ion (exporte) des
répert oires de son syst ème de fichier local sur le réseau à des client s. Suivant les droit s d'accès
donnés, des st at ions du réseau peuvent mont er ces répert oires, qui seront alors vus comme des
répert oires locaux. Un ordinat eur peut êt re à la fois client et serveur NFS.

Installation côté serveur


Inst allat ion sur Debian :

# apt install nfs-kernel-


server

Vérifier que les demons NFS (nfsd) ne sont pas déjà lancés avec, par exemple, la commande

ps ax | grep nfsd

Pour lancer les démons manuellement sous Debian :

/etc/init.d/nfs-kernel-
server start

ou, si c'est le serveur NFS en espace ut ilisat eur qui est inst allé :
/etc/init.d/nfs-user-server
start

On peut remplacer start par restart pour redémarrer le serveur.

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.

Chaque ligne correspond à un répert oire et a la forme :

<répertoire local> <nom ou


IP des machines autorisées à
se connecter>(<options>)
<autres machines>
(<options>)...

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

Installation côté client


inst allat ion sur Debian (Le "syst ème de fichier réseau" NFS est int égré au noyau compilé avec sa
prise en charge dans t out es les dist ribut ions récent es.)

# apt install nfs-common

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>

Par exemple si le serveur précédent à pour ip 192.168.105.2 :

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.

La synt axe est la suivant e :


<ordinateur distant>:
<répertoire distant>
<répertoire local> nfs
<options> 0 0

Pour reprendre l'exemple précédent , cela donnerait :

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.

Il exist e également des int erfaces graphiques pour configurer Samba.

La sect ion [global] cont ient les opt ions communes à t ous les répert oires part agés.

Voici quelques opt ions ut ilisables :

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

Configuration du partage des


répertoires
Les part ages Samba sont décrit s dans des sect ions ayant la forme suivant e :

[<nom du partage>]
<option> = <valeur>
...

Les paramèt res principaux sont les suivant es :

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

Protéger les répertoires


partagés
Il est possible de rendre privé un répert oire et d'aut oriser ou non des ut ilisat eurs à y accéder.

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.

Accès aux répertoires


Pour accéder aux part age sous Windows, il suffit d'ouvrir le voisinage réseaux d'une st at ion
Windows et de vérifier si la machine y est .

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>

Il est également possible de mont er un part age Samba avec

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.

Aut rement , plusieurs possibilit és exist ent :

1. compléter le fichier /etc/fstab avec


votre montage //<IP-
ADRESS>/<folder_on share>
<your_local_mountpoint cifs
defaults,iocharset=utf8,code
page=cp850,uid=1000,gid=1000
,noauto,user,credentials=~/.
smbcredentials 0 0)
2. ajouter des droits dans sudoers. (par
défaut sous ubuntu 10.10, sudo
smbclient //<nom du
serveur>/<nom du partage>
<répertoire local>-o
username=compte,password=??
? fonctionne bien)
Apache
Apache est un serveur HTTP libre. Un serveur HTTP permet d'héberger des sit es web qui seront
accessibles avec un navigat eur t el que Mozilla Firefox, Int ernet Explorer ou encore Chrome.

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.

commande nécessitant les privilèges


root
# apt-get install tasksel
# tasksel install lamp-server

Installation manuelle
Apache sur Debian / Ubuntu

commande nécessitant les privilèges


root
# apt-get install apache2
Le service peut ne pas êt re lancé par défaut , mais même s'il l'est on peut quand-même essayer de
l'act iver avec :

commande nécessitant les privilèges


root
# /etc/init.d/apache2 start
On peut ensuit e t est er le serveur, pour voir si une page s'affiche ou s'il refuse la connexion :

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 :

telnet localhost 9000


CTRL + ALT + ]
quit

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 :

sudo apt-get update && apt-


get install php8.2 && apt-
get install libapache2-mod-
php8.2

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 :

sudo apt update


sudo apt install php8.2
php8.2-common php8.2-cli
php8.2-fpm

sudo a2enmod php8.2

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 :

sudo update-rc.d apache2


disable
sudo update-rc.d mysql
disable

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

D'aut res s'inst allent avec pecl au lieu de apt .

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 les désact iver : phpdismod nom_ du_ module_ php

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" :

sudo apt-get install ppa-


purge
sudo ppa-purge
ppa:ondrej/php-7.0

Apache sur Gentoo


Premièrement il faut inst aller Apache :

emerge apache

Ensuit e, il faut inst aller PHP :

emerge dev-lang/php

Puis il faut qu'apache ut ilise PHP dans sa configurat ion.

Code : Configuration de apache

# 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 :

shell> groupadd mysql


shell> useradd -r -g mysql
mysql
shell> cd /usr/local
shell> tar zxvf
/path/to/mysql-VERSION-
OS.tar.gz
shell> ln -s full-path-to-
mysql-VERSION-OS mysql
shell> cd mysql
shell> chown -R mysql .
shell> chgrp -R mysql .
shell>
scripts/mysql_install_db --
user=mysql
shell> chown -R root .
shell> chown -R mysql data
shell> bin/mysqld_safe --
user=mysql &
APT

$ sudo apt-get install


mysql-server
mysql_secure_installation

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 :

$ sudo apt-get install


mysql-server

et confirmez.

(Remarque : il semblerait qu'en installant le paquet "mysql-server-5.0", au lieu du paquet mentionné


plus haut, certaines personnes rencontrent des problèmes. Il est donc préférable d'installer ce
paquet, ou d'installer la dernière version 4 stable avec : $ sudo apt-get install mysql-server-4.1.
Consultez le forum pour plus d'informations : [1] (http://forum.ubuntu-fr.org/viewtopic.php?id=15
352) )

Lancez ensuit e la commande :

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.

MySQL a ses propres utilisateurs, avec


leurs propres privilèges. Le root MySQL
n'est donc pas le root système. Il est
conseillé de ne pas mettre les mêmes mots
de passes pour les utilisateurs MySQL et
les utilisateur du système.
Le script vous demande alors si vous voulez met t re un mot de passe pour l'ut ilisat eur root .
Répondez Y, et ent rez (2 fois le nouveau mot de passe du root MySQL). Il vous pose ensuit e une
série de quest ions. Si vous ne savez pas quoi répondre, accept ez les choix par défaut en appuyant
simplement sur Ent er.

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

et de répondre "Non" à la quest ion du démarrage syst émat ique de MySQL.

Sur Gentoo

emerge mysql
Modules
De nombreux modules complément aires peuvent êt re inst allés sur Apache.

Pour les list er, on ut ilise apachectl (parfois apache2ctl ) :

apachectl -t -D DUMP_MODULES

ou

apache2ctl -M

Pour act iver un module :

a2enmod Nom_du_module

Un fichier est alors créé dans /et c/apache2/mods-enabled/.

Exemple pour la réécrit ure d'URL :

a2enmod rewrite

Pour le désact iver :

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

Pour act iver un sit e :

a2ensite Nom_du_site

Le fichier du sit e est alors visible dans /et c/apache2/sit es-enabled/.

Pour le désact iver :

a2dissite Nom_du_site

Le sit e est dans /et c/apache2/sit es-available/.

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 !

Pour corriger ce problème, il faudra édit er /et c/apache2/apache2.conf :

$ sudo gedit
/etc/apache2/apache2.conf

Encodage par défaut en Latin1 (ISO-8859-


1)
Cherchez la ligne suivant e :

#AddDefaultCharset ISO-
8859-1

Décomment ez-la en enlevant le # :


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

ainsi que la ligne suivant e dans le paragraphe en-dessous :

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

Aucun encodage par défaut


Il est également possible de s'affranchir de t out encodage par défaut , de la manière suivant e :

Cherchez la direct ive AddDefaultCharset :


AddDefaultCharset ISO-
8859-1

Remplacez l'at t ribut par la valeur Off :

AddDefaultCharset Off

Là encore, on demandera à Apache de relire sa configurat ion :

$ 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.

Il enregist re également t out es les requêt es dans /var/log/apache2/access.log .


Configuration de base
Sous Debian, Apache se lance aut omat iquement lorsqu'on l'inst alle et à chaque démarrage du
syst ème. Lorsqu'on modifie sa configurat ion, il faut lui faire prendre connaissance des
changement s avec la commande

/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/) :

Configuration des modules


Le répert oire /etc/apache2/mods-available cont ient les modules inst allés. Le répert oire
/etc/apache2/mods-enabled cont ient les modules act ivés. Les modules act ivés sont des
liens symboliques vers les modules inst allés.
Pour act iver ou désact iver un module, on peut manipuler direct ement les liens ou ut iliser les
commandes a2enmod et a2dismod (voir les pages de man).

Configuration des sites


De la même manière, le répert oire /etc/apache2/sites-available cont ient les sit es
web disponibles et /etc/apache2/sites-enabled les sit es act ivés. Il en exist e un
préinst allé : le sit e default .

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 :

<VirtualHost ...> # début de


bloc VirtualHost
...
<Directory ...> # début de
bloc Directory
...
</Directory> # fin de
bloc Directory
...
</VirtualHost> # fin de
bloc VirtualHost

et des directives 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 ).

La direct ive Document Root (ht t p://ht t pd.apache.org/docs/2.2/mod/core.ht ml#document root )


fixe la racine du serveur Web, c'est -à-dire le répert oire de base où se t rouvent les document s. Par
exemple avec la direct ive DocumentRoot /var/www/html , si le navigat eur demande la page
http://serveur/repertoire/fichier.txt , le serveur cherchera le fichier
/var/www/html/repertoire/fichier.txt .

UserDir (ht t p://ht t pd.apache.org/docs/2.2/mod/mod_ userdir.ht ml#userdir) permet d'indiquer le


répert oire personnel des ut ilisat eurs du syst ème. La direct ive UserDir public_html signifie
qu'un ut ilisat eur peut publier ses pages web personnelles dans un sous-répert oire
public_html de son répert oire personnel. Pour l'ut ilisat eur toto, c'est généralement
/home/toto/public_html . Sa page d'accueil sera alors accessible par l'URL spéciale
http://serveur/~toto .

Direct oryIndex (ht t p://ht t pd.apache.org/docs/2.2/mod/mod_ dir.ht ml#direct oryindex) indique la


list e des fichiers qu'Apache cherchera à afficher si l'URL n'en précise pas. Par exemple si la
configurat ion cont ient DirectoryIndex index.html index.php et qu'on demande l'URL
http://serveur/repertoire/ , Apache va chercher dans le répert oire un fichier
index.html ou index.php . Si un de ces fichiers exist e, il sera affiché. Sinon, Apache
affichera soit la list e des fichiers, soit une erreur (suivant la présence de Indexes dans la
direct ive Opt ions (ht t p://ht t pd.apache.org/docs/1.3/mod/core.ht ml#opt ions) ).

AccessFileName (ht t p://ht t pd.apache.org/docs/2.2/mod/core.ht ml#accessfilename) définit le


nom du fichier qu'on peut placer dans un répert oire pour en modifier sa configurat ion. Cela permet ,
par exemple, d'int erdire localement l'affichage de la list e des fichiers, ou de prot éger par mot de
passe un répert oire et ses sous répert oires.

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.

ServerName (ht t p://ht t pd.apache.org/docs/2.2/mod/core.ht ml#servername) indique à Apache


son nom de domaine et évent uellement son port . Il s'en sert lorsqu'il doit communiquer son
adresse au client (le navigat eur). C'est le cas par exemple lorsqu'on demande l'adresse
http://serveur/repertoire sans slash ( / ) à la fin. Comme ce n'est pas une URL valide
(l'URL d'un répert oire doit se t erminer par un slash), Apache ut ilise la direct ive ServerName
pour reconst ruire une adresse avec un slash et la renvoi au client .

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é.

Celui ut ilisé par défaut sous Linux est prefork.

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>

# pthread MPM # StartServers


......... initial number of
server processes to start
# MaxClients ...........
maximum number of server
processes allowed to start
# MinSpareThreads ......
minimum number of worker
threads which are kept spare
# MaxSpareThreads ......
maximum number of worker
threads which are kept spare
# ThreadsPerChild ......
constant number of worker
threads in each server
process
# MaxRequestsPerChild ..
maximum number of requests a
server process serves

<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>

Pour act iver le module :

a2enmod mpm_prefork

On voit ensuit e les processus d'avance :

$ ps -ef |grep apache


root 32026 1 0
15:16 ? 00:00:00
/usr/sbin/apache2 -k start
www-data 32029 32026 2
15:16 ? 00:00:00
/usr/sbin/apache2 -k start
www-data 32030 32026 0
15:16 ? 00:00:00
/usr/sbin/apache2 -k start
www-data 32031 32026 0
15:16 ? 00:00:00
/usr/sbin/apache2 -k start
www-data 32032 32026 0
15:16 ? 00:00:00
/usr/sbin/apache2 -k start
www-data 32033 32026 0
15:16 ? 00:00:00
/usr/sbin/apache2 -k start

Paramétrage des répertoires


Chaque répert oire auquel Apache accède peut êt re configuré indépendamment (et ses sous-
répert oires en hérit ent ).

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>

# Pour la racine du serveur:


<Directory /var/www/html>
# Quelques options
Options Indexes Includes
FollowSymLinks

# Les options peuvent être


changées dans un .htaccess
AllowOverride All

# Permet à tout le monde


d'accéder aux documents
Allow from All
# Spécifie comment
appliquer la règle
précédente
Order allow,deny
</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".

Gérer les pages Web


personnelles
Il est possible de permet t re aux ut ilisat eurs du syst ème de diffuser des pages personnelles sans
avoir à créer un sit e par ut ilisat eur. Il faut pour cela ut iliser le module userdir .

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.

Configurer l'accès aux scripts


CGI
Pour qu'Apache prenne en charge les script s, il est nécessaire d'effect uer un minimum de
paramét rage dans la configurat ion du sit e.

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/

Exemple Windows, ut iliser le format URL (pas d'ant islash) :

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.

Il faut donc au moins écrire :

<Directory /home/httpd/cgi-
bin>
Options ExecCGI
</Directory>

L'appel à un script essai.cgi sera effect ué par l'URL : http://serveur/cgi-


bin/essai.cgi

AddHandler
Cet t e clause permet de choisir les ext ensions de fichiers qui seront aut orisés, ex :

AddHandler cgi-script .cgi


.exe .pl .py .vbs
Récapitulatif
Exemple complet sur Windows, dans la configurat ion Apache :

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 :

AddHandler cgi-script .cgi


.exe .pl .py .vbs

Écrire un programme CGI


La cont raint e principale concerne la sort ie du programme. Si un programme CGI génère des
données sur sa sort ie st andard, il doit les précéder d'un en-t êt e HTTP permet t ant de les ident ifier.

Bash
Voici un exemple de programme CGI écrit en bash :

#!/bin/bash

# Header
echo "Content-type:
text/html"

# Fin du header
echo ""

# Contenu à afficher dans le


navigateur
echo "<html><body>Hello
World!</body></html>"

Ce script génère une page HTML.


Perl

#!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 .

Les fichiers /etc/apache2/mods-availiable/php5.load et /etc/apache2/mods-


availiable/php5.conf cont iennent les direct ives LoadModule et AddType qui
permet t ent à Apache d'exécut er du PHP quand on demande un fichier se t erminant par .php . Ils
doivent êt re liés dans /etc/apache2/mods-enabled pour act iver PHP. On peut ut iliser pour
cela la commande a2enmod .

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

Pour les int erdire :

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.

Par exemple [2] :


En Windows éditer C:\Program
Files
(x86)\EasyPHP\binaries\conf_fi
les\httpd.conf
En Unix-like :
/etc/apache2/httpd.conf ou
/etc/apache2/apache2.conf

<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).

Pour cela il y a plusieurs mét hodes :


acheter le nom de domaine en question
et le configurer pour qu'il pointe sur la
bonne adresse IP
utiliser un serveur DNS qui renverra la
bonne IP pour ce domaine
modifier le fichier hosts sur la
machine cliente pour faire correspondre
ce domaine à la bonne adresse IP (voir le
livre Installation et configuration d'une
carte réseau)

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

(config serveur uniquement , pas dans un Virt ualHost )

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

(config serveur uniquement , pas dans un Virt ualHost )

Laissez cet t e ligne comme elle est , c'est à dire en comment é pour 90% des cas (# devant ).

PidFile

PidFile /var/run/httpd.pid

(config serveur uniquement , pas dans un Virt ualHost )


Vérifiez bien que cet t e ligne est décomment ée. Elle indique au script de démarrage d'enregist rer le
numéro de processus d'Apache pour que lors de l'arrêt du syst ème le processus Apache soit
st oppé correct ement .

ScoreBoardFile

ScoreBoardFile
/var/run/httpd.scoreboard

(config serveur uniquement , pas dans un Virt ualHost )

Ce fichier st ocke des informat ions pour le bon fonct ionnement d'Apache.

Timeout

Timeout 300

(config serveur uniquement , pas dans un Virt ualHost )

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 & MaxSpareServer

MinSpareServers 5
MaxSpareServers 10

(config serveur uniquement , pas dans un Virt ualHost )

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.

LoadModule, ClearModuleList &


AddModule
LoadModule xxxxxx.mod
libexec/yyyyyy.so
ClearModuleList
AddModule zzzz.c

(config serveur uniquement , pas dans un Virt ualHost )

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

(config serveur uniquement , pas dans un Virt ualHost )

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.

User & Group


User nobody
Group nobody

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

Répert oire racine ou se t rouve vos pages Web.

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:

<Files .ht*> #pour


interdire aux visiteurs de
voir le contenu des Order
allow,deny
#fichiers
.ht qui contiennent les
règles de
Deny from all #sécurité.
</Files>

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.

Sur off , l'URL rest e celle donnée par le client .

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

Chemin complet du fichier où les erreurs seront enregist rées.

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

ajoute la signature (version, OS…)


du serveur lorsqu'il génère des
on
pages lui-même (index
manquant, erreur de script, etc.)
off ne montre que l'erreur.
ajoute un lien vers l'email définit
email
par ServerAdmin

Alias

Alias faux_nom nom_réel


permet de faire des alias de répert oires (des liens en quelque sort e) (similaire à ScriptAlias
/cgi-bin chemin_complet_des_cgi

AddType

AddType type extensions

(sous Apache2, cet t e direct ive devrait êt re dans un fichier mods-


availabe/nom_module.conf , au lieu de apache2.conf )

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

AddHandler cgi-script .cgi

Pour ut iliser les script s CGI.


ProFTPD
FTP est un prot ocole d'échange de fichiers. Un serveur FTP met à disposit ion cert ains répert oires
du disque, et gère une aut hent ificat ion par mot de passe. On se connect e à ce serveur avec un
client FTP.

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

apt-get install proftpd

Il est aussi possible de le configurer pour ses propres besoins à part ir des sources. Ceci permet de
spécifier les modules à ut iliser.

tar zxvf proftpd-


1.x.x.tar.gz
cd proftpd-1.x.x
./configure --with-
modules=mod_ratio:mod_sql
make
make installproftpd

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.

FileRatioErrMsg "Vous n'avez


pas suffisamment
télédéchargé de fichiers"
ByteRatioErrMsg "Vous n'avez
pas assez télédéchargé
d'octets"
description = indiquent
qu'un utilisateur a dépassé
son quota par des messages.

<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

# Autorise les comptes


sans "shell", c'est souvent
le cas du compte "ftp"
RequireValidShell off

# Interdit l'écriture
partout
<Directory *>
<Limit WRITE>
DenyAll
</Limit>
</Directory>

# Autorise l'écriture dans


"incoming" mais pas la
lecture
<Directory incoming>
<Limit READ >
DenyAll
</Limit>
<Limit STOR>
AllowAll
</Limit>
</Directory>
</Anonymous>

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

Exemple de fichier proft pd.conf:

# This is a basic ProFTPD


configuration file (rename
it to # ’proftpd.conf’ for
# actual use. It establishes
a single server
# It assumes that you have a
user/group
# "nobody" for normal
operation.
ServerName "ProFTPd Linux
Service"
ServerType standalone
DefaultServer on

# Pour autoriser les clients


à résumer les
téléchargements, très utile.
# Remember to set to off if
you have an incoming ftp for
upload.
AllowStoreRestart on

# Port 21 is the standard


FTP port.
Port 45000
# Umask 022 is a good
standard umask to prevent
new dirs and files
# from being group and world
writable.
Umask 022

# Limitation de la bande
passante en lecture:
RateReadBPS 14000

# To prevent DoS attacks,


set the maximum number of
child pro cesses
# to 30. If you need to
allow more than 30
concurrent connexions
# at once, simply increase
this value. Note that this
ONLY works
# in standalone mode, in
inetd mode you should use an
inetd server
# that allows you to limit
maximum number of pro cesses
per service
# (such as xinetd)
MaxInstances 30

# Set the user and group


that the server normally
runs at. User nobody
Group nogroup

# Nombre maximum de clients


# MaxClients 3

# Number of Max Clients per


host
# MaxClientsPerHost 1

# Nombre maximums de
tentatives de login
MaxLoginAttempts 3
# Message d’accueil après
une connexion réussie
AccessGrantMsg "Bienvenue %u
chez moi!"

#Pour ne pas donner d’info


sur le serveur
DeferWelcome off

#Règles pour limiter les


commandes ...
<Limit MKD RNFR RNTO DELE
RMD STOR CHMOD SITE CHMOD
SITE XCUP WRITE XRMD PWD
XPWD>
DenyAll
</Limit>

<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>

# Serveur Virtuel pour


écriture
<VirtualHost ftp.duf.com>
ServerName "Mon serveur
FTP virtuel numero 1"
Port 46000
Maxclients 3
MaxClientsPerHost 1
DefaultRoot /var/ftp
AccessGrantMsg "Bienvenue"
</VirtualHost>

Dans ce fichier on peut rajout er les lignes suivant es :

# 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 ~

# Pour ne pas afficher le


nom du serveur FTP et son
numéro de version
ServerIdent off
# on peut également
afficher une autre chaîne de
caractères :
#ServerIdent on
"Serveur FTP du Creufop"

Accès FTP anonyme


Pour faire un serveur FTP anonyme, il suffit de rajout er les lignes suivant es dans
/etc/proftpd/proftpd.conf :
<Anonymous ~ftp>
User
ftp
Group
nogroup
# We want clients to be
able to login with
"anonymous" as well as "ftp"
UserAlias
anonymous ftp

RequireValidShell
off

# Limit the maximum


number of anonymous logins
MaxClients
10

# 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>

Création d'un utilisateur FTP


Pour créer un ut ilisat eur qui aura uniquement le droit de faire du FTP, on crée l'ut ilisat eur en
indiquant comme shell '/bin/false'.

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

Cacher un dossier / fichier


Pour rendre un dossier invisible un fichier / dossier(ex Maildir), il faut ajout er au proft pd.conf :

<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.

Pour une connexion anonyme, on pourra


utiliser ftp://serveur/ ou
ftp://serveur/chemin .
Pour se connecter avec un mot de passe,
on utilisera
ftp://utilisateur:mot_de_pass
e@serveur/ .

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

Pour t est er s'il fonct ionne depuis le serveur, il exist e la commande :

sftp localhost

Tout efois, ProFTPD peut également fournir ce service [4].

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

En voici un ext rait :


cat /var/log/proftpd/xferlog
Wed Feb 6 12:16:12 2008 1
lns-bzn-51f-85-78-78-
5.adsl.proxad.net 1129
/home/user1/fichier1.txt a _
i r user1 ftp 0 * c
Thu Feb 6 15:23:49 2008 1
84-74-216-
148.dclient.hispeed.ch 11743
/var/www/index.html a _ i r
user2 ftp 0 * c
Fri Feb 6 23:46:02 2008 1
69.183.30.97.adsl.snet.net
4572542 /home/user2/toto.pdf
a _ i r user2 ftp 0 * c
...

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.

FileZilla ne voit pas la clé privée


Il faut la renommer en .ppk.

530 Authentification incorrecte


Si les logs renvoient SECURITY VIOLATION: root login attempted (en FTP avec un
compt e qui peut marcher en SFTP par ailleurs), c'est qu'il faut modifier
/etc/proftpd/proftpd.conf avec RootLogin on .
Sinon, s'ils donnent Invalid shell il faut en définir un valide dans /etc/passwd .

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.

clé de l'hôte inconnue ou key


fingerprint is xxx. Are you sure you
want to continue connecting (yes/no)?

Avertissement sur FileZilla

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.

EAI_NODATA - Aucune adresse


associée à ce nom de nœud
Problème de DNS, ou bien /etc/hosts .
ECONNREFUSED - Connexion refusée
par le serveur
Si telnet fonct ionne, c'est sûrement le cert ificat SSL qui a expiré ou le pare-feu.

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é)".

Handshake failed (40)


Se produit depuis 2016 sur FileZilla quand une connexion FTP (par TLS ou pas) t ombe sur un
cert ificat invalide. Mais avec CoreFTP cela fonct ionne.

Impossible d'établir une connexion au


serveur
Voir ci-dessous : #Serveur introuvable.

Refused user root for service proftpd


Cela peut se produire après l'inst allat ion ou une mise à jour. Si un tail
/var/log/proftpd/proftpd.log renvoie USER root (Login failed): User in
/etc/ftpusers , comment er l'ut ilisat eur dans ce fichier de blacklist .
Serveur introuvable
Il s’agit probablement d’une panne de DNS, il faut alors remplacer l'URL par l'IP.

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.

Sinon, il faut regarder les logs du serveur (ex : ipt ables).

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.

Il y a deux ut ilisat ions principales d'un serveur DHCP :

attribuer une configuration fixe à certains


postes (on les reconnaît grâce à leur
adresse MAC)
et attribuer une configuration dynamique
aux postes inconnus.
On peut par exemple donner une adresse IP fixe à cert ains serveurs, et at t ribuer des adresses
variables aux aut res post es. Le prot ocole est prévu pour qu'un post e qui revient sur le réseau
récupère la même adresse qu'il avait la première fois. Elle lui est réservée un cert ain t emps (le
lease time).

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 :

subnet 192.168.1.0 netmask


255.255.255.0 {
range 192.168.1.101
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 :

des fonctions de pare-feu et notamment


le contrôle des machines qui peuvent se
connecter, sur quels ports, de l’extérieur
vers l’intérieur, ou de l’intérieur vers
l’extérieur du réseau ;
de traduction d'adresse (NAT) pour
partager une connexion internet
(masquerading), masquer des machines
du réseau local ou rediriger des
connexions ;
et d'historisation du trafic réseau.
iptables est la commande qui permet de configurer Net filt er. Dans les dernières versions de
Linux il exist e aussi une nouvelle commande qui s'appelle nft (pour nftables ).

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

Principal cheminement des paquets à travers Netfilter

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 .

Il fournit pour cela t rois chaînes principales :

une chaîne INPUT pour filtrer les paquets


à destination du système,
une chaîne OUTPUT pour filtrer les
paquets émis par les processus du
système,
et une chaîne FORWARD pour filtrer les
paquets que le système doit transmettre.
En ajout ant des règles dans ces chaînes on pourra laisser passer ou jet er les paquet s suivant
cert ains crit ères.

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 .

Lorsqu'un paquet arrive dans une chaîne :

Netfilter regarde la 1ère règle de la


chaîne,
puis regarde si les critères de la règle
correspondent au paquet.
Si le paquet correspond, la cible est
exécutée (jeter le paquet, le laisser
passer, etc.).
Sinon, Netfilter prend la règle suivante et
la compare de nouveau au paquet. Et
ainsi de suite jusqu'à la dernière règle.
Si aucune règle n'a interrompu le
parcours de la chaîne, la politique par
défaut est appliquée.

Règles
Une rè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.

La forme générale pour ut iliser iptables est la suivant e :

iptables [-t <table>]


<commande> <options>
La t able par défaut est la t able filter.

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>

Comme --append mais ajout e la règle au début de la chaîne.

--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.

--policy|-P <chaîne> <cible>

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é.

--source|-s [!] <adresse>


[/<masque>]
L'adresse source est <adresse>. Si un masque est précisé, seules les part ies act ives du masque
seront comparées. Par exemple, lorsqu'on écrit -s 192.168.5.0/255.255.255.0 , t out es
les adresses ent re 192.168.5.0 et 192.168.5.255 correspondront . On peut aussi écrire le masque
sous la forme d'un nombre de bit s (/8 correspond à 255.0.0.0, /24 à 255.255.255.0, et c.) Le masque
par défaut est /32 (/255.255.255.255), soit l'int égralit é de l'adresse.

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>]

Comme --source mais pour l'adresse dest inat ion.

--dport [!] <port>

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 .

--sport [!] <port>

Comme --dport mais pour le port source.

-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

Aut orise le paquet à passer et int errompt son parcours de la chaîne.

-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.

La synt axe d’ipt ables est la suivant e :


iptables -A|I chaîne -i (ou
-o) interface -p protocole
--sport
[port_début[:port_fin]
[,autre_port...]]
--dport
[port_début[:port_fin]
[,autre_port]]
-s adresse_source -d
adresse_dest -j politique

Il y a bien sûr de nombreuses aut res opt ions.

Créer et appliquer des règles


Tout es les commandes ipt ables sont t apées direct ement sur la ligne de commande du t erminal. Il
est plus prat ique de les inscrire dans un fichier script et de rendre ce script exécut able (chmod
+x). Ne donnez que les droit s minimums à ce fichier pour qu’il ne puisse pas êt re lu et modifié par
t out le monde. Exemple de fichier :

#!/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

# Définir une politique par


défaut : le plus normal est
de tout interdire par
# défaut et de n’autoriser
que certains paquets.
# "DROP" ignore les paquets,
"REJECT" les refuse avec
acquittement pour l’envoyeur
# on met souvent "DROP" pour
l’INPUT (on ne donne pas
d’informations à un
# éventuel pirate) et
"REJECT" pour l’OUTPUT et le
FORWARD (on peut ainsi
# récupérer des infos pour
soi) mais iptables
n’autorise pas REJECT
# comme politique par défaut
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

# Autoriser le trafic sur


l’interface loopback :
iptables -A INPUT -i lo -j
ACCEPT
iptables -A OUTPUT -o lo -j
ACCEPT

# Ensuite, c’est à vous


d’ajouter les règles
permettant de faire
fonctionner
# les services que vous
souhaitez utiliser sur votre
machine.

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 -P FORWARD DROP


Pour laisser passer les paquet s sur le port telnet qui viennent d'un réseau local (forme longue) :

iptables --append INPUT --


protocol tcp --destination-
port telnet --source
192.168.13.0/24 --jump ACCEPT
Pour ignorer les aut res paquet s ent rant s sur le Port (logiciel)|port telnet (forme court e) :

iptables -A INPUT -p tcp --


dport telnet -j DROP
Pour rejet er les paquet s ent rant s sur le port 3128, souvent ut ilisé par les proxies :

iptables -A INPUT -p tcp --


dport 3128 -j REJECT
Pour aut oriser t elnet vers vot re machine (serveur t elnet ) :

iptables -A INPUT -p tcp --


dport telnet -j ACCEPT
iptables -A OUTPUT -p tcp --
sport telnet -j ACCEPT
Pour aut oriser t elnet depuis vot re machine (client t elnet ) :

iptables -A OUTPUT -p tcp --


dport telnet -j ACCEPT
iptables -A INPUT -p tcp --
sport telnet -j ACCEPT
Dest inat ion NAT :

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.

Pour cela il faut charger le module ip_ connt rack_ ft p :

modprobe ip_conntrack_ftp

Et aut oriser les connexions RELATED en ent rée et en sort ie :

iptables -A INPUT -m state -


-state RELATED -j ACCEPT
iptables -A OUTPUT -m state
--state RELATED -j ACCEPT
TCP Wrapper
Le super service inet d permet de cont rôler et de rest reindre l'accès à cert ains services réseau.
Ceux-ci sont gérés par inet d et ne sont plus en mode dit "st andalone".

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.

Voici un descript if de quelques opt ions. Considérons la ligne suivant e:


ftp stream tcp nowait root
/usr/sbin/tcpd in.ftpd

ftp: nom du service, tel qu'il est déclaré


dans /etc/services
stream: type de service de transport de
données (il existe stream pour tcp, dgram
pour udp, raw pour IP)
tcp: nom du protocole tel qu'il existe
dans /etc/protocols
wait: état d'attente, si l'état est wait inetd
doit attendre que le serveur ait restitué la
socket avant de se remettre à l'écoute.
On utilise wait plutôt avec les types
dgram et raw. l'autre possibilité est
nowait qui permet d'allouer
dynamiquement des sockets à utiliser
avec le type stream.
root: Nom de l'utilisateur sous lequel le
daemon tourne
/usr/sbin/tcpd in.ftpd Chemin d'accès au
programme in.ftpd lancé par inetd (il est
possible ici d'ajouter les options de
démarrage du programme.

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

tcpdchk -av : permet de voir la


configuration de tcp wrappers
tcpdmatch in.ftpd localhost pour simuler
une connexion sur in.ftpd
voir aussi xinet d un équivalent de t cp_ wrappers, mais avec plus d'opt ions.
Tcpdump
Dans un réseau et hernet relié par un concent rat eur (ou hub), chaque machines reçoit t ous les
paquet s qui circulent sur le réseau. En fonct ionnement normal, les cart es réseau ne récept ionnent
que les paquet s qui leur sont dest inés, mais on peut faire en sort e qu'elles t ransmet t ent t ous les
paquet s au syst ème.

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 :

le mot clé src qui indique que l'identifiant


ne porte que sur la source du paquet
le mot clé port qui indique que l'identifiant
est le port du paquet
l'identifiant 21
La primit ive correspond donc au port source 21.

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.

Les primit ives les plus courant es sont les suivant es :

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 :

src tiny and not port ssh

Il est également possible de spécifier un prot ocole: udp, t cp, icmp.

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

tcpdump src 192.168.0.1


Ici, les seuls paquet s affichés sont ceux en provenance de 192.168.0.1. Nous pouvons également
préciser nos préférences en ajout ant un crit ère :

tcpdump src 192.168.0.1 and


port 80

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 :

0x0000: 4500 003b 0000 4000


4011 ca00 c1fd d9b4
E..;..@.@.......
0x0010: c1fc 1303 80a1 0035
0027 213d 14c2 0100
.......5.'!=....
0x0020: 0001 0000 0000 0000
0377 7777 056c 696e
.........www.lin
0x0030: 7578 036f 7267 0000
0100 01
ux.org.....
SSH
SSH signifie Secure SHell. C'est un prot ocole qui permet de faire des connexions sécurisées (i.e.
crypt ées) ent re un serveur et un client SSH.

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.

Le système de clés de 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.

Tout e aut re personne en possession de la clé secrèt e peut décrypt er le message.


La crypt ographie symét rique est beaucoup moins gourmande en ressources processeur que la
crypt ographie asymét rique, mais le gros problème est l'échange de la clé secrèt e ent re A et B.
Dans le prot ocole SSL, qui est ut ilisé par les navigat eurs Web et par SSH, la crypt ographique
asymét rique est ut ilisée au début de la communicat ion pour que A et B puissent s'échanger une clé
secrèt e de manière sécurisée, puis la suit e la communicat ion est sécurisée grâce à la
crypt ographie symét rique en ut ilisant la clé secrèt e échangée.

Configuration du serveur SSH


Pour manipuler le daemon (le lancer, l'arrêt er, recharger la configurat ion...), on ut ilise la commande

/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.

Parmi les mult iples opt ions, on peut not er :

Port 22: Signifie que le serveur SSH


écoute sur le port 22, qui est le port
normal de SSH. Il est possible de le faire
écouter sur un autre port en changeant
cette ligne.
Protocol 2: Signifie que le serveur SSH
accepte uniquement la version 2 du
protocole SSH. C'est une version plus
sécurisée que la version 1 du protocole.
Pour accepter les deux protocoles,
change la ligne en : Protocol 2,1
PermitRootLogin no: Signifie que l'on ne
peut pas se logger en root par SSH. Pour
se logger en root, il suffit de se logger en
utilisateur normal et d'utiliser la
commande su.
X11Forwarding yes: Autorise le transfert
par SSH de l'affichage graphique.
LoginGraceTime 600: Temps de
connexion maximum
RSAAuthentication yes: Méthode
d'authentification.
AuthorizedKeysFile .ssh/authorized_keys
fichier utilisé pour 'l'autologin'
PermitEmptyPasswords no: permet ou
non les mots de passe vide
Si le fichier de configurat ion du serveur a ét é modifié, il faut indiquer au démon sshd de relire son
fichier de configurat ion, avec la commande /etc/init.d/ssh restart.

Se logguer par SSH


Deux t ypes d'aut hent ificat ion sont possibles : par mot de passe et par clé. Dans les deux cas on
ut ilise une des commandes suivant es :

ssh -l <login> <adresse du


serveur SSH>
ssh <login>@<adresse du
serveur SSH>

Authentification par mot de passe


C'est la mét hode la plus simple. Lors de la connexion, le client ssh demande le mot de passe du
compt e. Dans ce cas, ssh chiffre le mot de passe ce qui évit e de le voir circuler en clair sur le
réseau.

Authentification par clé


Au lieu de s'aut hent ifier par mot de passe, les ut ilisat eurs peuvent s'aut hent ifier grâce à la
crypt ographie asymét rique et son couple de clés privée/publique, comme le fait le serveur SSH
auprès du client SSH. La clé publique est placée sur le serveur dans le home du compt e sur lequel
on souhait e se connect er. La clé privée rest e sur le post e client . Dans ce cas, aucun mot de passe
ne circule sur le réseau.

Générer une clé


Pour générer un couple de clés, on ut ilise la commande :

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.

Autoriser sa clé publique


Pour aut oriser une clé à se connect er à un compt e, il faut placer sa part ie publique dans le fichier
$HOME/.ssh/authorized_keys du compt e en quest ion, sur le serveur SSH. Si vous souhait ez vous
connect er au serveur sur le compt e sasa, le fichier est /home/sasa/.ssh/aut horized_ keys.
Pour t ransférer la clé publique, on peut ut iliser ft p, scp (copie de fichier par ssh), ou un simple
copier/coller ent re deux t erminaux (c'est simplement une longue ligne de caract ères ASCII).

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).

Ensuit e, pour se logger, il suffit de procéder comme précédemment .

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 :

ssh -i <nom du fichier


contenant la clé privée>
<login>@<serveur>

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 :

que la passphrase n'est demandée


qu'une seule fois au moment où elle est
ajoutée à l'agent,
et que l'agent est capable de faire suivre
la clé sur plusieurs connexions.
Pour lancer un agent on ut ilise généralement une commande qui ressemble à :

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.

Pour ajout er une clé on ut ilise

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 .

Créer un "tunnel" crypté


entre deux stations
SSH est également capable de fournir un encrypt age à d'aut res services (ft p par exemple) par le
biais du port forwarding.

(opt ions -L et -R de la commande ssh), de la manière suivant e:

Considérons deux st at ions HOST1 et HOST2. Supposons que sur la machine HOST1, vous ut ilisiez
la commande :

ssh -L p1:HOST2:p2 HOST2

ou sur HOST2:

ssh -R p1:HOST2:p2 HOST1

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

Son adresse IP : une adresse IP (version


4, protocole IP V 4) permet d’identifier un
hôte et un sous-réseau. L’adresse IP est
codée sur 4 octets - 32 bits. (les
adresses IP V 6, ou IP next generation
seront codées sur 16 octets - 128 bits).
L’adresse mac de sa carte réseau (carte
Ethernet ou carte wifi) sur 6 octets - 48
bits;
Une adresse IP permet d’ident ifier un hôt e. Une passerelle est un ordinat eur qui possède plusieurs
int erfaces et qui t ransmet les paquet s d’une int erface à l’aut re. La passerelle peut ainsi faire
communiquer différent s réseaux. Chaque cart e réseau possède une adresse MAC unique garant ie
par le const ruct eur. Lorsqu’un ordinat eur a plusieurs int erfaces, chacune possède sa propre
adresse MAC et son adresse IP. On peut voir sa configurat ion réseau par ifconfig :
$ ifconfig eth0
eth0 Link
encap:Ethernet HWaddr
00:B2:3A:24:F3:C4
inet
addr:192.168.0.2
Bcast:192.168.0.255
Mask:255.255.255.0
inet6 addr:
fe80::2c0:9fff:fef9:95b0/64
Scope:Link
UP BROADCAST
RUNNING MULTICAST MTU:1500
Metric:1
RX packets:6
errors:0 dropped:0
overruns:0 frame:0
TX packets:16
errors:0 dropped:0
overruns:0 carrier:5
collisions:0
txqueuelen:1000
RX bytes:1520
(1.4 KiB) TX bytes:2024 (1.9
KiB)
Interrupt:10

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.

Classe A : les adresses de 1.0.0.0 à


127.0.0.0. L’identifiant du réseau est sur 8
bits et les identifiants de machine sont
sur 24 bits (plusieurs millions de
machines par sous-réseau ;
Classe B : les adresses de 128.0.0.0 à
191.255.0.0. L’identifiant du réseau est
sur 16 bits et les identifiants de machine
sont sur 16 bits (plus de 65 000
machines par sous-réseau) ;
Classe C : les adresses de 192.0.0.0 à
223.255.255.0. L’identifiant du réseau est
sur 24 bits et les identifiants de machine
sont sur 8 bits (au plus 254 machines par
sous-réseau, numérotées de 1 à 254) ;

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.

Aut re exemple : pour le sous-réseau de classe C 193.56.49.0 et le masque de sous-réseau


255.255.255.0, les 24 premiers bit s de t out es les IP du sous-réseau sont 193.56.49.

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

Sous-réseaux reliés par des passerelles.

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 :

route add -net


192.168.0.0/24 gw
112.65.123.3

Une route doit être définie sur la station 6


indiquant que les paquets à destination
du réseau 112.0.0.0/8 doivent passer par
la passerelle 192.168.0.1 ; Pour cela, on
peut utiliser la commande route :

route add -net 112.0.0.0/8


gw 192.168.0.1
La passerelle doit être configurée pour
transmettre (ou forwarder) les paquets IP
d’un réseau à l’autre, ce qui se fait par
l'une des commandes suivantes (les
deux font la même chose, inutile donc de
se répéter) :

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 :

route del -net


193.86.46.0/24 gw
196.24.52.1

Route par défaut (gateway)


Quand on a défini un cert ain nombre de rout es sur une st at ion, on peut définir une rout e spéciale
pour les paquet s IP à dest inat ion des réseaux non prévus dans les aut res rout es. On appelle une
t elle rout e une rout e par défaut . En général, c’est la rout e qu’il faut employer pour aller sur int ernet .
On emploie le réseau 0.0.0.0 (masque 255.255.255.255). Pour définir une rout e par défaut on peut
employer la commande rout e. Par exemple, pour définir la rout e par défaut via la passerelle
194.56.87.1 :

route add default gw


194.56.87.1

Pour supprimer cet t e même rout e :

route del default gw


194.56.87.1

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 :

Dans un premier t emps, nous allons principalement ut iliser bigboss et t iny.

Pour lancer VDN, ouvrez un t erminal et t apez la commande :

~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

tiny et bigboss doivent être lancés (voir


TP VDN)
le réseau de bigboss doit être configuré
(dans vdn faire Scripts →
baseConfigBigboss si ce n'est pas déjà
fait)

Changer le nom d'hôte


Le nom d'hôt e de t iny n'est pas configuré. Nous allons donner un nom à t iny.
1. mettez le nom d'hôte "tiny" de manière
permanente
2. utilisez la commande "hostname" pour
vérifier qu'il est pris en compte
3. ouvrez un nouveau terminal et
connectez le à tiny avec vdn-ssh.
Vérifiez que le nom apparaît dans
l'invite de commande ("root@tiny:~#")
4. redémarrez tiny pour vérifier que le
nom est initialisé au démarrage de la
machine

Configurer l'interface réseau


L'int erface réseau de t iny n'est pas configurée, il n'a donc pas d'adresse IP et ne peut pas
communiquer avec bigboss. Le schéma de l'int erface VDN suggère une adresse IP à donner à t iny
et indique à quelle int erface réseau il faut l'associer.

1. utilisez la commande ifconfig pour


configurer l'interface réseau de tiny.
Attention : ne modifiez pas l'interface
réseau eth2 : elle sert au
fonctionnement des machines
virtuelles.
2. tapez "ifconfig" pour vérifier que
l'interface est bien initialisée avec la
bonne adresse IP
3. vérifiez que tiny peut communiquer
avec bigboss en utilisant la
commande "ping" (observez le
schéma pour connaitre l'adresse IP de
bigboss)
4. vérifiez que bigboss peut
communiquer avec tiny

Configurer l'interface réseau


de manière permanente
Ut iliser ifconfig pour configurer une int erface réseau est prat ique et rapide, mais la configurat ion
n'est pas conservée au prochain démarrage.

1. désactivez l'interface réseau que vous


venez de configurer avec la
commande "ifconfig <nom de
l'interface> down"
2. configurez l'interface réseau de tiny de
manière permanente
3. utilisez ifup pour configurer l'interface
réseau
4. vérifiez que la communication
fonctionne entre tiny et bigboss
5. redémarrez tiny
6. vérifiez que le réseau fonctionne
toujours après le redémarrage

Résolution des noms d'hôtes


Il est souvent plus prat ique d'ut iliser des noms d'hôt e à la place des adresses IP. Pour cela il faut
indiquer au syst ème comment t raduire un nom en adresse IP. En général cet t e opérat ion est
réalisée par un serveur DNS, mais nous n'en n'avons pas sur not re réseau.

Nous allons donc ut iliser un aut re procédé qui permet cet t e t raduct ion : le fichier hosts .

modifiez le fichier hosts de tiny pour


indiquer l'adresse IP de bigboss
vérifiez que ça fonctionne avec un "ping
bigboss"
TP NFS
Dans ce TP nous allons part ager avec NFS un répert oire de bigboss et y accéder à part ir de t iny.

Document at ion associée : NFS.

Préalable

tiny et bigboss doivent être lancés (voir


TP VDN)
le réseau de bigboss doit être configuré
(lancez vdn-scripts
baseConfigBigboss si ce n'est pas
déjà fait)
le réseau de tiny doit être configuré (voir
TP Configuration réseau)

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.

Document at ion associée : Samba.

Préalable

tiny et bigboss doivent être lancés (voir


TP VDN)
le réseau de bigboss doit être configuré
(lancez ~reseaux/vdn-
0.6/scripts/bigbossBaseConfig
si ce n'est pas déjà fait)
le réseau de tiny doit être configuré (voir
TP Configuration réseau)

Partage d'un répertoire


1. créez un compte utilisateur sur
bigboss (commande adduser) ou
reprenez en un existant
2. créez un mot de passe samba pour ce
compte utilisateur avec la commande
smbpasswd

3. créez un répertoire sur bigboss ainsi


qu'un fichier avec le contenu que vous
voulez
4. partagez ce répertoire avec samba,
avec les options lecture seule et public
5. connectez-vous à ce partage avec la
commande smbclient à partir de tiny
et vérifiez que vous pouvez lister le
fichier créé précédemment
6. montez ce partage sur tiny et vérifiez
que le fichier créé précédemment a le
bon contenu (avec le compte root). Si
cela fonctionne démontez avec la
commande umount.
7. modifiez votre partage avec les option
public = no et valid users , puis testez.
Faites une faute de frappe sur le nom
du compte dans la ligne valid users.
Là vous deviez avoir une erreur en
testant.

Partage des comptes


utilisateur

1. créez un compte utilisateur sur


bigboss (commande adduser) ou
reprenez en un existant
2. créez un mot de passe samba pour ce
compte utilisateur avec la commande
smbpasswd

3. passez sous cet utilisateur avec la


commande "su <nom de l'utilisateur>"
4. créez un fichier dans son home
5. sur tiny, connectez-vous avec
smbclient au partage homes avec le
login et le mot de passe du compte
6. vérifiez que vous pouvez accéder au
fichier créé précédemment (en le
téléchargeant par exemple)
TP Apache
Dans ce TP nous allons configurer le serveur web le plus ut ilisé sur Int ernet : Apache. Il permet
d'héberger des sit es webs et dispose d'une mult it ude de configurat ions et de modules
complément aires. Nous allons voir comment créer un sit e web, le rendre dynamique et le prot éger
par mot de passe.

Document at ion associée : Apache.

Préalable

tiny et bigboss doivent être lancés (voir


TP VDN)
le réseau de bigboss doit être configuré
(lancez ~reseaux/vdn-
0.6/scripts/bigbossBaseConfig
si ce n'est pas déjà fait)
le réseau de tiny doit être configuré (voir
TP Configuration réseau)

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 :

soit à partir de tiny en mode texte avec la


commande lynx http://bigboss/

soit à partir de tiny en mode graphique


avec la commande firefox
http://bigboss/ ou iceweasel
http://bigboss/
soit à partir du système hôte avec un
navigateur, en utilisant l'adresse
http://localhost:PORT/ , où le
PORT à utiliser est indiqué à côté du port
80 dans la page "Informations" du menu
qui permet de lancer bigboss

Modification de la racine du
serveur Web

1. Créez un répertoire qui hébergera votre


application Web (par exemple
/home/http/html )
2. Créez dans ce répertoire le fichier
HTML index.html . Attention, ce
fichier doit être un fichier HTML et doit
au moins contenir <html><body> ...
</body></html>.
3. Modifiez dans le fichier de
configuration (lequel ?) la racine du
site.
4. Définissez pour le répertoire précédent
des droits d'accès dans le fichier de
configuration avec:
<Directory /home/http/html>
Options Indexes
FollowSymlinks Multiviews
AllowOverride None
Require all granted
</Directory>

1. Que signifient ces lignes (voir la


documentation associée) ?
2. Relancez le serveur Apache (au cas où
ce n'est pas fait) et vérifiez le
fonctionnement.

Fichier par défaut


Apache permet de spécifier des fichiers par défaut appelés lorsqu'un répert oire est demandé (URL
non t erminée par un nom de fichier)

Recherchez dans le fichier de


configuration du module "dir" les fichiers
par défaut.
Configuration des ressources
Supposons que le serveur soit hébergé par une machine aux ressources limit ées, et que le nombre
de requêt es qui lui sont adressées n'est jamais considérable.

1. Il y a 5 serveurs WEB en exécution lors


du démarrage d'Apache, et 10 au
maximum simultanément. Comment le
vérifiez vous ?
2. Votre capacité mémoire est limitée;
modifiez ces nombres en 3 et 15.
3. Redémarrez Apache
4. Utilisez la commande ps pour voir
le nombre de démons Apache et
expliquez ce que vous remarquez (il
faut passer des options à ps pour
voir les démons). Expliquez
notamment pourquoi vous en
observez plus de 3, et même plus de
4.

Création d'un script CGI

1. Vérifiez que votre serveur Apache


possède un répertoire permettant
d'accéder aux scripts cgi.
2. Créez le répertoire
/home/http/cgi-bin .

3. Modifiez le fichier de configuration


pour que votre serveur Apache utilise
par défaut le répertoire
/home/http/cgi-bin comme
répertoire où placer des scripts cgi.
4. Créez un script shell CGI en bash (qui
affiche "toto", par exemple), et essayez
de le faire fonctionner. Vous pouvez
vérifier que votre script fonctionne en
l'exécutant directement en ligne de
commande.

Configuration de PHP

1. Activez le module PHP.


2. Créez une page PHP et vérifiez qu'elle
fonctionne. Par exemple
/home/http/html/index.php
contenant :

Nous sommes le <?php echo


date('d/m/Y'); ?>, il est <?
php echo date('G:i:s'); ?>.

N'oubliez pas les balises HTML aut our de ce code.

Pages web personnelles


Vérifiez si le module userdir est
activé
1. Par défaut, comment s'appelle le
répertoire où un utilisateur, ayant un
compte Linux, peut placer des pages
html personnelles ?
2. Créez un utilisateur sasa, puis dans
son répertoire personnel, ajoutez le
nécessaire (1 répertoire et une page
Web personnelle) pour avoir un accès
aux pages personnelles.
3. Vérifiez que cette page est accessible
via un navigateur.

Protection par mot de passe


Le principe :

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 , type


d'authentification communément adopté,
fait hélas circuler les mots de passe en
clair
AuthName texte , affichera le texte
comme invite dans la boîte de dialogue
AuthUserFile
/etc/apache2/users , indique où
vont se trouver les mots de passe
AuthUserFile chemin/fichier ,
précise le fichier qui contient les comptes
et mots de passe des utilisateurs ayant
des droit d'accès
Require valid-user|liste-
noms tous, ou seulement les comptes
énumérés dans la liste, auront accès
On demande ici de prot éger l'accès à un nouveau sit e pour qu'il devienne privé. Pour créer ce sit e,
créez le répert oire /home/http/html/prive puis copiez y le fichier HTML que vous avez
précédemment fait . Il ne devra êt re accessible qu'à un ensemble limit é de compt es Apache (et
non Linux) à créer. La première requêt e adressée à ce répert oire prot égé provoquera l'affichage
d'une boît e de dialogue par laquelle l'ut ilisat eur devra s'aut hent ifier (nom et mot de passe).

Créez dans le répertoire "prive" le fichier


.htaccess suivant:

AuthType Basic
AuthUserFile
/etc/apache2/users
AuthName "Accès privé"
Require user sasa

Créez le compte sasa dans le fichier


users situé dans /etc/apache2 (le
fichier n'existe pas, il va être créé). Pour
cela, entrez dans le répertoire
/etc/apache2 et tapez les
commandes suivantes:

htpasswd -c users sasa


htpasswd users prof
Sur cert ains syst èmes, la commande s'appelle htpasswd2 .

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 .

Examinez le fichier users ainsi créé.


Qu'obtenez vous ? Qu'avez vous fait ?
Ajoutez dans le fichier de configuration
d'Apache 2, si elle n'existe pas, la règle
suivante de fichier. Que permet cette
règle ?

<Files ~ "^\.ht">
Order allow,deny
Deny from all
</Files>

Testez l'accès à la page


prive/index.html avec un
navigateur. La protection ne devrait pas
fonctionner !
Recherchez dans le fichier de
configuration d'Apache le bloc
<Directory /home/http/html>
concernant les droits d'accès du
répertoire par défaut qui fixe des
directives par défaut. La valeur de
l'option AllowOverride ne doit pas
être None (dans ce cas la prise en
compte de .htaccess est désactivée).
Changez cette valeur en All .
Retestez avec succès ! N'oubliez pas de
relancer le navigateur quand on change
de compte.
TP FTP

Préalable

tiny et bigboss doivent être lancés (voir


TP VDN)
le réseau de bigboss doit être configuré
(lancez ~reseaux/vdn-
0.6/scripts/bigbossBaseConfig
si ce n'est pas déjà fait)
le réseau de tiny doit être configuré (voir
TP Configuration réseau)

Configuration de base

1. Vérifiez si le démon /etc/init.d/proftpd


est lancé sur bigboss et lancez le si ce
n'est pas le cas.
2. Créez un répertoire /home/ftp si ce
n'est déjà fait. Créez ou modifiez le
fichier proftpd.conf permettant l'accès
au répertoire précédent.
3. Déclarez le répertoire comme la racine
du serveur ftp.
4. Ajoutez à votre configuration un
message de bienvenue.
5. Relancer le démon ftp
6. Vérifiez que vous pouvez vous
connecter au serveur ftp de bigboss
en utilisant la commande ftp sur tiny.
Les login et mdp correspondent à un
compte unix sur bigboss.

Blocage des accès


1. Refusez l'accès à votre serveur ftp à
l'utilisateur "toto" avec l'utilisation de la
commande UseftpUsers (dans le
fichier proftpd.conf) et du fichier
/etc/ftpusers. Relancez le service et
vérifiez que l'utilisateur "toto" ne peut
pas se connecter à votre serveur. Si ce
compte n'existe pas, créez le !
2. Ajoutez une commande dans le fichier
de configuration pour refuser
l'utilisation de la commande "cd" par
les utilisateurs.
Dans ce cas, vous devez créer un cont ext e Limit avec la commande CWD (et non cd).

Accès anonyme

1. Créez le répertoire /home/ftpanonyme


sur bigboss et créez un fichier dans ce
répertoire.
2. Activez l'accès anonyme dans
ProFTPD et configurez-le pour que les
utilisateurs anonymes accèdent au
répertoire que vous avez créé quand
ils se connectent.
3. Connectez-vous en anonyme (login
anonymous) à partir de tiny et
téléchargez le fichier que vous avez
créé.
4. Faites en sorte que les utilisateurs
anonymes ne puissent pas créer ou
modifier les fichiers ou répertoires
TP TCP Wrapper

Préalable

Lire le wikilivre sur TCP Wrapper


tiny et bigboss doivent être lancés (voir
TP VDN)
le réseau de bigboss doit être configuré
(lancez ~reseaux/vdn-
0.6/scripts/bigbossBaseConfig si ce
n'est pas déjà fait)
le réseau de tiny doit être configuré (voir
TP Configuration réseau)
Apache doit être configuré

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

tiny et bigboss doivent être lancés (voir


TP VDN)
le réseau de bigboss doit être configuré
(lancez ~reseaux/vdn-
0.6/scripts/bigbossBaseConfig si ce
n'est pas déjà fait)
le réseau de tiny doit être configuré (voir
TP Configuration réseau)
Un serveur FTP doit être configuré

Capture de trames ICMP via la


commande ping
1. sur bigboss, lancer tcpdump sur
l'interface réseau qui relie tiny et
bigboss ("-i eth0")
2. lancer un autre terminal sur bigboss
("Shell" dans le menu de bigboss)
3. lancer la commande ping tiny
4. repérer dans l'affichage obtenu par
tcpdump la source, la destination et le
type de chaque paquet généré par les
pings

FTP

1. lancez tcpdump dans une console de


bigboss pour que ce dernier récupère
les trames du port 21 (source ou
destination) et affiche le contenu des
paquets sous forme ASCII. Redirigez
la sortie de tcpdump vers un fichier
nommé trames (avec ">")
2. passez sur un autre terminal et initier
une connexion ftp à partir de tiny, en
entrant un login et un mot de passe
3. une fois la connexion ftp établie,
quitter tcpdump (Ctrl+C)
4. repérez dans le fichier trames les
paquets, leur adresse source, leur
adresse destination, les options,
l'entête, le message
5. repérez les paquets contenant le login
et le mot de passe

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:

Les différents boutons permettent de


créer une nouvelle analyse du réseau,
d'ouvrir un fichier d'analyse, d'en fermer
un, de l'imprimer, etc etc.
La première fenêtre répertorie les trames
reçues (source, destination, type de
trames). La seconde décrit le contenu
d'une trame sélectionnée dans la
première fenêtre. Quant à la troisième
fenêtre, elle donne le code hexadécimal
de la même trame.
Vous pourrez aussi t rouver une list e de menus : les classiques (file, edit ...), un menu capt ure (pour
démarrer et édit er les filt res de capt ure) et ent re aut re un menu analyse (affichage des filt res
d'analyse, affichage des prot ocoles pris en compt e). La list e des prot ocoles est plut ôt longue,
jet ez y un œil !

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

Effectuez une nouvelle analyse avec


wireshark en créant un filtre de capture :

src <adresse ip de tiny> and


tcp port 21

... ou en ut ilisant un filt re dans la fenêt re principale de wireshark:

ip.src == <adresse ip de
tiny> && tcp.port == 21

Ce filtre permet de capturer uniquement


les trames provenant de tiny contenant
un flux ftp. Wireshark permet de filtrer sur
les adresses MAC, IP sur les ports... (voir
l'aide). Connectez vous sur votre serveur
ftp. Récupérez le login et le mot de passe
qu'ils ont utilisés.
TP SSH

Préalable

tiny et bigboss doivent être lancés (voir


TP VDN)
le réseau de bigboss doit être configuré
(lancez ~reseaux/vdn-
0.6/scripts/bigbossBaseConfig si ce
n'est pas déjà fait)
le réseau de tiny doit être configuré (voir
TP Configuration réseau)
Un serveur FTP doit être configuré

Utilisation basique d'SSH

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.

Capture de paquets SSH

1. Essayez de récupérer avec la


commande tcpdump (ou wireshark)
les trames provenant de tiny et faites
une redirection vers le fichier trames.
2. Connectez vous sur tiny avec SSH à
bigboss comme dans l'exercice
précédent.
3. Pouvez vous lire le mot de passe?

Création de clé
publique/privée

Créez une paire de clés publique/privée


sur tiny. Ne modifiez pas le nom des
clés : appuyez simplement sur "Entrée"
quand il vous demande le nom du fichier.
Attention: une pass phrase vous est
demandée, retenez la !

Connexion par passphrase et


non par mot de passe

1. Envoyez la clé publique sur bigboss


par ftp ou avec la commande SCP.
2. Ajoutez cette clé publique dans le
fichier /home/compte-
bigboss/.ssh/authorized_keys. (J'ai
bien écrit le fichier !)
3. Connectez vous sur bigboss avec SSH
avec une authentification par clé (si
cela fonctionne, on vous demande une
passphrase pas un password).

Agents

Lancez un agent SSH, ajoutez-lui la clé et


connectez-vous sans qu'il ne demande ni
mot de passe ni passphrase.

Tunnels SSH

1. Créez un tunnel entre tiny et bigboss,


entre les ports 1234 et 21, avec la
commande ssh -N -f -L 1234:<adresse
IP de bigboss>:21 <adresse IP de
bigboss> -l login.
2. Récupérez les paquets IP provenant
de tiny avec tcpdump et placez les
dans le fichier trames3.
3. Une fois la commande tcpdump
lancée, faites ftp localhost 1234 (sur
tiny). Par le port forwarding, vous
aboutissez en fait sur le serveur FTP
de bigboss, à travers une connexion
encryptée.
4. Entrez un login et un mot de passe,
puis quittez. Recherchez le mot de
passe dans le fichier trames3 ?
TP DHCP

Préalable

tiny et bigboss doivent être lancés (voir


TP VDN)
le réseau de bigboss doit être configuré
(lancez le script de vdn-scripts
baseConfigBigboss si ce n'est pas déjà
fait)
le réseau de tiny doit être configuré (voir
TP Configuration réseau)
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 TCP/IP d'une st at ion, not amment
en lui assignant aut omat iquement une adresse IP et un masque de sous-réseau (cf. Wikipedia par
exemple pour les généralit és).

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

Éditez le fichier /etc/dhcp/dhcpd.conf et


ajoutez les lignes suivantes

subnet 192.168.30.0 netmask


255.255.255.0 {
host tiny {

hardware ethernet
XX:XX:XX:XX:XX:XX;

option host-name tiny;

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)

Modifications sur tiny


Pour t est er la configurat ion aut omat ique de l'adresse IP ainsi que du nom d'hôt e,

Commentez la définition actuelle de


l'interface eth1 dans
/etc/network/interfaces et ajoutez la
nouvelle définition suivante :

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.

Pour éviter que l'interface eth1 et que le


nom d'hôte de tiny ne se configure pas si
bigboss n'est pas démarré, repassez à la
configuration "statique" antérieure.
TP Global

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

donner de manière permanente l'adresse


IP 192.168.30.22 à tiny
faire en sorte qu'un "ping bigboss" de tiny
fonctionne
faire en sorte qu'un "ping tiny" de bigboss
fonctionne

CGI protégé par mot de passe

créer un utilisateur "bob" sur bigboss


créer dans son home un répertoire "cgi"
créer dans ce répertoire un script CGI en
shell qui affiche l'espace disque (grâce à
la commande "df", consulter le man)
faire en sorte que le CGI fonctionne
quand on accède à
"http://bigboss/bobcgi/nom_du_script" à
partir de tiny
protéger ce CGI avec un mot de passe

Firewall
Créer un script de firewall qui bloque t out sur bigboss sauf :

toute communication avec le système


hôte,
les connexions SSH
les accès à son serveur web,
les connexions telnet venant de tiny
Lancer le script et vérifier qu'il bloque bien ce qu'il faut .

SSH avec agent

créer un utilisateur teddy sur tiny et


passer sous cet utilisateur
générer une clé SSH
autoriser cette clé à se connecter sur le
compte bob de bigboss
à partir de teddy sur tiny, se connecter
sur le compte bob de bigboss et vérifier
qu'il demande la passphrase et pas le
mot de passe
revenir sous teddy et lancer un agent ssh
ajouter la clé à l'agent
se reconnecter sur le compte bob de
bigboss (à créer si ce n'est pas déjà fait)
et vérifier qu'il ne demande ni le mot de
passe ni la passphrase
revenir sous teddy et copier un fichier sur
bigboss sans qu'il ne demande de mot
de passe ou de passphrase

Capturer un mot de passe


HTTP avec tcpdump ou
wireshark
Trouver dans les paquet s réseau (capt urés avec t cpdump ou wireshark) le mot de passe envoyé
lors de l'accès au CGI créé au début du TP. Ut iliser un filt re qui sélect ionne le minimum de paquet s.

Répertoire partagé par NFS,


Samba, FTP et Web

créer un répertoire sur bigboss


le partager avec NFS et le monter sur
tiny, de manière à pouvoir écrire dedans à
partir de tiny
le partager avec Samba de manière à
pouvoir écrire dedans à partir d'XP
faire en sorte qu'il soit la racine du site
web par défaut de bigboss
vérifier que les fichiers créés par NFS,
Samba et FTP sont accessibles depuis
un navigateur web
TP Netfilter

Préalable

tiny et bigboss doivent être lancés (voir


TP VDN)
le réseau de bigboss doit être configuré
(lancez ~reseaux/vdn-
0.6/scripts/bigbossBaseConfig si ce
n'est pas déjà fait)
le réseau de tiny doit être configuré (voir
TP Configuration réseau)
Apache doit être configuré

Introduction

Lire le wikilivre sur Netfilter


Afficher les règles contenues dans les
chaînes INPUT, OUTPUT et FORWARD sur
bigboss. Il ne devrait y en avoir aucune.
créez des scripts pour écrire vos règles
voir ici.
Attention l'interface eth1, utilisée par les
systèmes virtuels ne doit pas être
bloquée !

LOG

Ajoutez sur bigboss (de préférence grâce


à un script) une règle dans la chaîne
INPUT qui enverra sur la cible LOG toutes
les trames ICMP reçues.
Affichez les règles de cette chaîne et
vérifier que celle ajoutée apparaît.
Lancer un ping de tiny vers bigboss
Vérifiez que les paquets sont affichés.
S'ils ne le sont pas, ouvrir un terminal sur
bigboss et lancer la commande tail -
f /var/log/kern.log
Faites un ping de bigboss vers une
adresse IP inconnue (par exemple
1.2.3.4) et constatez le résultat.

Politique de blocage par


défaut

Lancez le serveur Web et vérifiez qu'il


fonctionne.
Créez un script, pour tout interdire.
ATTENTION: L’INTERFACE ETH1 NE DOIT PAS ÊTRE BLOQUÉE : si vous ut ilisez une police par
défaut il faut ensuit e re-aut oriser et h1. Le plus simple est peut êt re d'int erdire l'accès pour et h0 (2
règles). À vous de voir.

Lancez votre script et vérifiez que le


serveur Web n'est plus joignable.
Autorisation d'accès

Ajouter les règles autorisant l'accès au


serveur telnet sur bigboss et testez à
partir de tiny (commande telnet).
Ajoutez les règles permettant l'accès au
serveur Web de bigboss à partir de tiny.
Quels sont les adresses IP et les ports
autorisés en source ? en destination ?
Vérifier que le serveur Web est de
nouveau joignable.
Faites de même avec l'autorisation
d'accès à la commande ping. Et
seulement ping pas pour tout ICMP. (il
faut utiliser l'option --icmp-type avec
echo-request ou echo-reply).
TP Licence -
Configuration réseau
Document s ut iles : Configurat ion réseau, DHCP, Rout age, Net filt er

mettre un nom d'hôte à tiny de manière à


ce qu'il reste actif au prochain démarrage
mettre une adresse réseau à tiny de
manière à ce qu'il puisse communiquer
avec bigboss
faire en sorte que cette adresse soit
définie au démarrage de tiny (si ce n'est
pas déjà le cas) et vérifier que ça
fonctionne
faire en sorte que tiny puisse
communiquer avec bigboss en utilisant
son nom d'hôte, et inversement
faire en sorte que ce soit bigboss qui
attribue l'adresse IP à tiny
vérifier que bigboss peut communiquer
avec le bigboss d'un autre groupe
faire en sorte que tiny puisse
communiquer avec le bigboss d'un autre
groupe
TP Licence - Deux sites
web derrière un
firewall
Document s ut iles : Administ rat ion réseau sous Linux

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).

Nous ut iliserons les machines virt uelles suivant es :

bigboss qui sera notre firewall


tiny qui hébergera les sites web derrière
bigboss
surfer qui représentera un internaute
voulant accéder à nos sites web
FAI qui aura le rôle d'un fournisseur
d'accès à internet : il fera le lien entre
bigboss et surfer
Le schéma du réseau est le suivant :

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.

Préparation du serveur web


Configurer deux sit es web sur t iny. Ils auront chacun un nom de domaine et un répert oire racine
différent s.
Routage
Configurer bigboss pour qu'il redirige les requêt es web sur t iny.

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.

Modification des sites par FTP


Faire en sort e qu'on puisse modifier les 2 sit es web par FTP à part ir de surfer. On doit avoir un nom
d'ut ilisat eur différent pour chaque sit e web.

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

bigboss est le serveur intranet


tiny est un poste utilisateur sous Linux
XP est un poste utilisateur sous Windows
surfer est un poste utilisateur distant
sous Linux
FAI est le fournisseur d'accès à internet
de surfer

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).

La configuration réseau des machines


reliées au réseau interne doit être
automatique.
Toutes les machines du réseau interne
doivent pouvoir accéder à internet.
Les machines du réseau interne (et
uniquement elles) doivent pouvoir écrire
et lire dans un répertoire partagé.
Le contenu du répertoire partagé doit
être accessible à l'adresse http de
l'entreprise (que ce soit à partir du réseau
interne ou d'internet). Cet accès doit être
protégé par mot de passe.
tiny doit pouvoir accéder à bigboss par
SSH avec un mot de passe
surfer doit pouvoir accéder à internet.
surfer doit pouvoir accéder à bigboss en
SSH avec une clé SSH.
bigboss doit bloquer tout les paquets qui
viennent d'internet et qui ne sont pas
utiles aux services décrits ci-dessus.

Notes
Pour configurer une adresse réseau dynamique sous Windows il faut :

aller dans le Panneau de configuration,


puis dans Connexions réseau,
puis de nouveau dans Connexions
réseau,
cliquer avec le bouton de droite sur la
carte réseau,
sélectionner Propriétés
afficher les propriétés du protocole
TCP/IP
activer l'attribution automatique de
l'adresse IP
Pour demander à windows de redemander une adresse IP au serveur DHCP, il faut

ouvrir un terminal (exécuter "cmd")


taper "ipconfig /renew"
Pour voir l'adresse IP at t ribuée, t aper "ipconfig" dans un t erminal.

Vous avez la permission de


copier, distribuer et/ou modifier
ce document selon les termes
de la licence de documentation
libre GNU, version 1.2 ou plus
récente publiée par la Free
GFDL
Software Foundation ; sans
sections inaltérables, sans texte
de première page de couverture
et sans texte de dernière page
de couverture.
Récupérée de
« https://fr.wikibooks.org/w/index.php?
title=Administration_réseau_sous_Linux/Version_i
mprimable&oldid=488825 »

La dernière modification de cette page a été faite


le 11 octobre 2015 à 00:04. •
Le contenu est disponible sous licence CC BY-SA
4.0 sauf mention contraire.

Vous aimerez peut-être aussi