Installation configuration et sécurisation d`un

Transcription

Installation configuration et sécurisation d`un
Rapport de stage
IUT de La Rochelle
Département GTR
Promotion 2003/2005
Installation
configuration
et
sécurisation
d’un serveur web et ftp
LYCEE BEL-AIR,
FONTENAY LE COMTE
Par RABOUIN Geoffroy
Sous la tutelle de Monsieur Octavien Yves
Maître de stage : Octavien Yves
Enseignant-tuteur : Augeraud Michel
Stage d’une durée de 10 semaines
sur la période du 4 avril 2005 au 10 juin 2005
LEGTA Bel-Air
Bd Hoche – C.P. 287
80205 Fontenay Le Comte Cedex
Geoffroy Rabouin
Lycée Bel Air
Page 2
le 09/06/2005
Remerciements :
Je voudrais en premier lieu remercier M. A-Chick Vui (Assistant
d’éducation en informatique) pour m’avoir permis de prendre confiance en moi
lors de mon arrivé, et à M. Octavien Yves pour m’avoir accordé sa confiance en
me laissant libre de mes choix.
Je voudrais remercier toutes les personnes du Lycée Bel-Air pour leur
convivialité durant tout le stage et pour l'accueil qu'il m'ont fait au sein de leur
établissement.
Geoffroy Rabouin
Lycée Bel Air
Page 3
le 09/06/2005
I- Le contexte
1- Sujet du stage
page 5
page 5
2- État de l’existant
page 5
3- Le lycée
page 5
4- Les nouveaux outils
page 6
II- Déroulement
1- Préliminaire
page 6
page 6
2- Free-EOS, solution clé en main
page 6
3- Serveur Debian, le changement
a- L’aspect matériel, sécurisation
b- OpenSSH, la sécurisation logiciel
c- Apache, le serveur web
d- Vsftpd, le serveur FTP
e- Samba, le partage pour Windows
f- MySQL, le serveur de base de données
g- Test de stabilité et de failles
h- Passage de woody vers sarge
page 7
page 8
page 9
page 10
page 11
page 12
page 13
page 13
page 16
4- Symantec Ghost et l’open source
a- Unatended
b- ANI
c- PartImage
d- g4u
e- Conclusion
page 17
page 17
page 17
page 18
page 18
page 18
5- Le forum des anciens BTS
a- La base
b- Les modifications
page 19
page 19
page 19
page 20
page 20
page 20
1- Arcade
2- Attach’mod
3- Thèmes
6- Audit du réseau
Geoffroy Rabouin
Lycée Bel Air
page 21
Page 4
le 09/06/2005
7- IpCOP, un firewall très efficace
a- Généralités sur les firewalls
b- Fonctionnement
c- Ajouts
III- Avis personnel
page 22
page 22
page 23
page 23
page 23
page 23
page 23
1- L’Humain
2- La Machine
IV- Annexes
page 27
1- Création d’un serveur Web et FTP pour le lycée Bel-Air, Fontenay
Le Comte
page 28
Ce document a été remis au responsable informatique du lycée pour lui
permettre de choisir quelle était la solution qui conviendrait le mieux.
2- Introduction à FileZilla
page 36
Ce document sera remis aux professeurs de l’établissement pour leur permettre
de configurer le logiciel FileZilla.
3- Fichiers de configuration
a- OpenSSH
page 44
page 45
/etc/ssh/sshd_config
b- Apache
page46
/etc/apache-ssl/Httpd.conf
c- VsFTPd
page54
/etc/vsftpd.conf
d- Samba
page55
/etc/samba/smb.conf
e- MySQL
page56
/etc/mysql/my.cnf
f- Divers
1- /etc/hosts
2- /etc/resolv.conf
3- /etc/shutdown.allow
g- Apt
1- /etc/apt/apt-conf
2- /etc/apt/preferences
3- /etc/apt/sources.list.old
4- /etc/apt/sources.list
Geoffroy Rabouin
Lycée Bel Air
Page 5
page57
page57
page57
page57
page58
page58
page58
page58
page59
le 09/06/2005
4- Scripts
page 60
creer2.sh qui nous permettra de créer les utilisateurs et leurs mots de passes
système et samba d’après une liste.
user.txt qui est la liste de tous les identifiants et mots de passe des utilisateurs
5- Règles du forum
page 63
Ce sont les règles à observer sur le forum des anciens BTS, tout utilisateur ne
s’y conformant pas sera susceptible de se voir supprimer son compte sans
préavis.
6- Les risques, les attaques
a.
Le DoS, Denial of Service (déni de service)
1- Déni de service par consommation
de Bande Passante
2- Déni de service par la consommation
d’une autre ressource
b.
L'IP Spoofing
1- L’ICMP Spoofing
2- L’UDP Spoofing
3- Le TCP Spoofing
c.
Geoffroy Rabouin
Lycée Bel Air
Le cheval de troie
Page 6
page 66
page 67
page 67
page 67
page 67
page 67
page 68
page 68
page 69
le 09/06/2005
I- Le contexte
1- Sujet du stage
Le lycée Bel-Air m’a demandé de créer un serveur web accessible de l’extérieur ainsi qu’un
système permettant aux professeurs de déposer leurs fichiers personnels sur ce même serveur.
Il faut de plus que ces fichiers soient accessibles depuis les postes clients à l’intérieur du
lycée. Il m’a également été demandé d’installer un firewall (IpCop) sur la connexion de
l’exploitation dépendant du lycée (Boisse), dans un futur proche un VPN est prévu, il faut
donc que ce firewall permette sa réalisation sans trop de configuration et de manipulation sur
site, en effet l’exploitation est située à plusieurs kilomètres du lycée. Il m’a également été
demandé dans un autre temps de regarder les solutions de remplacement de l’utilitaire de
sauvegarde des disques durs Norton Ghost par une solution gratuite et/ou open source. On m’a
également confié la tâche de mettre en place un système de vérification et de contrôle des
impressions, en effet les élèves et le personnel ont tendance à abuser de l’impression couleur,
Il a donc fallu instaurer un système de quota d’impression.
2- État de l’existant
Le lycée dispose d’une salle serveur comprenant 6 serveurs sous Windows et un sous linux
Mandrake 10.0. Ces serveurs servent pour la gestion des utilisateurs et de leur mot de passe
pour le domaine, de stockage pour les fichiers du profil, de serveur pour fournir une interface
web pour rentrer les notes des élèves, ainsi que pour fournir les images de postes sauvegardés.
Le lycée dispose d’une connection internet fournie par Oléane (France Télécom) de type
ADSL 512/128, cette connection passe par un routeur fourni par Oléane situé sur le site du
lycée, nous n’avons pas connaissance du mot de passe pour administrer ce routeur. Le lycée
compte environ 250 postes dont une quinzaine en libre service. L’accès à internet sur les
postes libres service est interdit par le serveur squid situé sur le firewall tant qu’aucun
enseignant n’en a fait la demande.
Geoffroy Rabouin
Lycée Bel Air
Page 7
le 09/06/2005
3- Le lycée
Le lycée Bel-Air est un lycée d’éducation général et technologique agricole (LEGTA), il est
situé à Fontenay Le Comte en Vendée. Il accueille 300 élèves durant toute l’année scolaire
dans différentes sections, Service Aux Personnes, Vente, ... L’équipe enseignante est
relativement dynamique et l’ambiance au sein de ce site est particulièrement agréable tant au
niveau de l’administration que des élèves ou de l’équipe enseignante. Ce lycée forme
principalement aux différents métiers liés à la vente ou à la fabrication de produits agricoles,
pour cela il est directement lié à une exploitation agricole qui assure la production et la
transformation de canards et de pigeonneaux. Le lycée possède également une section
sportive très dynamique, elle propose même des formations BAFA, surveillant de baignade,…
Ce lycée dispose de trois pôles, commerce, services et sciences.
4- Les nouveaux outils
Durant ce stage j’ai pu développer mes connaissances sur le monde Linux, en particulier la
distribution Debian réputée pour sa stabilité et sa sécurisation extrême. J’ai perfectionné ma
connaissance du shell ainsi que des diverses commandes d’administration, que ce soit pour la
maintenance à distance ou pour la gestion des firewall iptables. J’ai également découvert
l’existence de logiciels développés spécialement pour l’éducation nationale (Magret,
EducHorus, …). Ces logiciels sont pour la plupart libres de droits, donc gratuits. Ils ont été
conçus par des universités, Poitiers en a d’ailleurs crée une multitude. J’ai également
beaucoup utilisé des scripts PHP qui ont de multiples utilités :
- recensement automatique des ordinateurs du parc
- inventaire des licences et demande de mise à jour si elles vont expirer
- gestion des notes par internet et impression des bulletins automatique
- gestion d’une base de données MySQL via interface web
-…
J’ai pareillement utilisé des logiciels d’audit de sécurité, ces logiciels analysent les
ordinateurs du réseau pour y trouver de potentiels failles, ce type de logiciel nous a permis
aussi de détecter les PC rarement allumés ou restant allumés à la fin des cours.
II- Déroulement
1- Préliminaire
Lors de la première rencontre avec le lycée, le responsable informatique du lycée m’a
demandé de créer un cahier des charges pour la mise en place d’un serveur web ainsi qu’un
serveur FTP, le rapport que j’ai rendu est fourni en annexe 1. Les solutions retenues sont une
Geoffroy Rabouin
Lycée Bel Air
Page 8
le 09/06/2005
solution clé en main, Free-EOS et une solution personnalisée basée sur un système Linux sur
lequel on greffe les modules souhaités.
2- Free-EOS, solution clé en main
Le responsable du service informatique a pris parti pour la solution basée sur une distribution
Free-EOS (Espace Ouvert de Services). Ce choix est motivé par la facilité extrême de sa
configuration, en effet toutes les modifications se font par interface graphique via un site
internet.
Le serveur dispose d’une carte réseau intégrée à la carte mère et nous voulons l’utiliser pour
éviter de devoir rajouter une carte en plus (raison financière principalement), pour ce faire il
est nécessaire d’incorporer au système d’exploitation le pilote de cette carte. Dans l’univers
Linux lors de l’ajout d’un nouveau périphérique il est nécessaire de compiler (transformer du
langage de programmation en langage machine) le programme qui pilotera ce périphérique.
Pour ce faire, il est nécessaire d’avoir certains logiciels pour programmer (gcc par exemple),
n’étant pas fourni directement par cette distribution il va être nécessaire de les incorporer.
Devant la masse de travail que cela représente, je me suis penché sur le bien fondé de ce
choix.
Le protocole FTP qui sert à transférer des fichiers entre deux machines est connu pour faire
circuler en clair (sans cryptage) les mots de passe et les identifiants de connexion, il est donc
impossible compte tenu de la volonté de sécuriser le système d’utiliser un serveur FTP
classique. De plus le serveur apache (serveur web) ne fournit pas la sécurisation par SSL (via
SSH 2), cela veut dire qu’il sera nécessaire d’incorporer une couche de plus pour l’effectuer.
Après une capture de trames par le sniffer de réseau « ethereal », le maître de stage est
convaincu de la faiblesse de ce système, il est efficace pour des gens qui n’ont pas un besoin
extrême en sécurité. La situation présente nous interdit d’utiliser ce système, en effet les
données qui circuleront sur le réseau seront les notes des élèves, les comptes de
l’administration et les résultats financiers pour l’exploitation qui dépend du lycée.
Je décide donc de remplacer la solution dite « facile » par la solution que l’on peut
surnommée « mains dans le cambouis », le maître de stage m’accorde sa confiance et me
laisse libre de mes choix futurs, je suis donc dorénavant le responsable de l’avancement, cela
me motive et j’ai à cœur de fournir un travail impeccable.
Geoffroy Rabouin
Lycée Bel Air
Page 9
le 09/06/2005
3- Serveur Debian, le changement
La solution que je retiens est une distribution Linux réputée pour sa stabilité et sa sécurisation
extrême, c’est la distribution Debian. Sa prise en main est réputée difficile, c’est pourquoi je
me dois de faire une installation simple et complète, je dois prévoir toutes les possibilités pour
ne pas laisser les responsables informatiques dans le flou en cas de changement de version ou
de mise à jour de logiciels. Pour cela il faudra que je commente énormément tous les
paramètres des fichiers de configuration en expliquant le pourquoi des choix que j’ai
effectuer.
Il fallait axer le serveur sur la sécurité, en aucun cas il ne faut qu’un utilisateur puisse avoir
accès à des données ne lui étant pas destinées, et de plus il doit être impossible d’usurper
l’identité du serveur web. Pour cela j’ai décidé d’utiliser le protocole SSH dans sa version 2,
cela permet d’utiliser un certificat qui prouve que le serveur est bien celui du lycée Bel-Air et
permet aussi de crypter les transferts entre les deux postes (identifiants, mot de passe et
données sont cryptés). Pour assurer cette sécurité, j’ai décidé de me baser sur des logiciels
connus et open source, cela dans le but de pouvoir m’assurer que le code source est sûr et que
les bugs de sécurités sont bien supprimés. J’ai décidé de prendre Apache en tant que serveur
web, vsftpd pour le serveur FTP, ces deux logiciels se verront dotés d’une couche SSL
fournie par openSSH, le serveur SQL sera un MySQL, le partage des fichiers entre le serveur
Linux et les clients Windows sera effectué par le serveur samba.
a- L’aspect matériel, sécurisation
Il ne faut pas négliger le matériel dans le choix d’un serveur, ainsi, comme je l’avais suggéré
dans le cahier des charges, le serveur dispose d’un système de Raid en version 5 avec trois
disque durs de 160Go, cela veut dire que les disques seront mis en commun pour ne former
qu’un seul gros disque de taille 320Go (soit (3 – 1) x 160Go), les informations seront
réparties sur les 3 disques, ainsi le temps de recherche en sera grandement diminué (divisé par
3). De plus, ce système assure une tolérance aux pannes grande, en effet si un disque dur
venait à tomber, il est tout a fait possible de le remplacer par un disque vierge de même taille,
les données manquantes seront automatiquement reconstruites à partir des deux autres
disques.
Le Linux Debian fonctionnant sur l’ordinateur serveur sera énormément sécurisé, mais il est
utile de s’inquiéter également de la possibilité d’exploiter une faille potentiel du bios sur les
différents périphériques du serveur (gestion de l’USB, de la carte son et réseau intégrée, …)
ainsi que sur la possibilité de démarrer sur un autre système (à partir d’une clé USB, d’un
Cdrom, voire même à partir d’un autre disque dur).
Geoffroy Rabouin
Lycée Bel Air
Page 10
le 09/06/2005
J’ai donc pris soin de désactiver le support de l’USB, du support du son ainsi que la carte
réseau intégrée, en effet au vu des prix des cartes réseaux il est ridicule de se priver d’une
carte réseau de marque connue et réputée (surtout dans une utilisation serveur).
J’ai également changé la séquence de démarrage de manière à ce que ce soit uniquement le
disque dur Raid qui puisse démarrer, les autres périphériques étant incapables de démarrer
(cela veut bien dire que les périphériques tels que CD et disquette ne pourront pas démarrer
même si le disque dur raid n’est pas présent). J’ai de plus empêché la modification des
disques en interdisant à un utilisateur de modifier la configuration des ports IDE (support des
disques durs et des lecteurs de Cdrom), tous les ports étant mis en arrêt sauf le port du lecteur
de Cdrom qui est le seul activé, il est lui-même bloqué en lecteur Cdrom et ne détectera pas
de disque dur s’il est remplacé par celui-ci.
Toutes ces modifications auraient été rendu inutiles si tout un chacun pouvait modifier à son
gré le BIOS (Basic Input Output System, tous ce qui gère le cœur matériel du PC), ainsi, j’ai
ajouté un mot de passe sur ce BIOS afin que seul l’administrateur du système est le pouvoir
de changer un paramètre.
Lors de l’installation du système d’exploitation Debian, il est également installé un logiciel
capable de gérer le démarrage depuis plusieurs partitions, il m’a également été nécessaire de
le verrouiller pour ne démarrer que depuis le noyau du système désiré (le mien) et non sur un
noyau personnalisé d’une personne tierce. J’ai également bloqué le shell (logiciel servant à
interpréter les commandes de l’utilisateur) sur un shell éprouvé « bash », en effet il est tout à
fait possible sur un ordinateur Linux classique de démarrer sur un shell autre et de se mettre
administrateur du post.
Il m’a semblé également souhaitable qu’aucun utilisateur (hormis l’administrateur du
système) ne puisse éteindre ou redémarrer le serveur. Cela peut sembler contraignant, mais il
faut savoir qu’un serveur éteint ne sert plus à rien. Il faut savoir que par défaut tout un chacun
peut éteindre le serveur, il suffit de taper la commande standard pour éteindre un ordinateur
Linux (shutdown –h now). Pour remédier à ce gros problème j’ai donc créé un fichier qui
indique les utilisateurs ayant le droit de redémarrer et d’éteindre le serveur, voir annexe 3-f-3.
La seule manière pour éteindre l’ordinateur est d’être administrateur (root) ou d’avoir un
accès physique à l’ordinateur et de le débrancher.
Pour pouvoir changer le système que démarre le serveur la seule solution est de remplacer les
trois disques durs du Raid pour les remplacer par trois autres disques personnels, cela limite
énormément les éventualités.
Geoffroy Rabouin
Lycée Bel Air
Page 11
le 09/06/2005
b- OpenSSH, la sécurisation logiciel
N’étant pas continuellement devant la machine serveur, j’ai du penser à une solution
permettant d’effectuer la mise à jour et la maintenance du système à distance, la meilleure
solution pour ceci a été l’utilisation de SSH. Il existe d’autres outils pour effectuer cette tâche,
Telnet ou rlogin mais ces deux utilitaires ne sécurisent aucunement la connexion et les mots
de passe circulent en clair sur le réseau. Ainsi un utilisateur malveillant peut très bien écouter
le réseau pour voir les mots de passe et ensuite se faire passer pour un autre utilisateur dans le
but de changer les notes ou bien encore de détruire des données. Pour ces raisons le choix de
OpenSSH m’a paru judicieux. De plus il permet d’ajouter une couche sur le serveur web
apache et sur le serveur ftp vsftpd pour sécuriser les transferts de données, ainsi tout ce qui
circule sur le réseau sera crypté (mots de passe, identifiants et données). OpenSSH fournit un
serveur nommé sshd qui sert à remplacer telnet pour les connections à distance, le fichier de
configuration utilisé se trouve en annexe 3-a, ce fichier permet de configurer ssh pour
fonctionner sur un port différent du défaut (un attaquant scannant le port par défaut ne
trouvera rien, il pensera donc que ssh n’est pas lancé, il ne pourra donc pas effectuer de brute
force) en interdisant l’utilisateur administrateur, cela dans le but d’empêcher les mêmes
attaques que précédemment, si une personne connaît le mot de passe administrateur, elle ne
pourra pas se connecter, il faut absolument s’identifier sur un autre compte (ici « belair »)
puis effectuer un changement d’utilisateur (via la commande « su »), cela oblige les
attaquants à connaître les deux mots de passe, la sécurité en est doublée.
Afin de vérifier toute cette théorie, j’ai mis en place un ordinateur qui écoute toutes les trames
circulant sur le réseau, il capture bien évidemment les trames de données envoyées, mais elles
sont inexploitables car complètement cryptées, de plus on ne sait pas quelle application utilise
ces données, il est donc totalement impossible d’en déduire quoi que ce soit.
Geoffroy Rabouin
Lycée Bel Air
Page 12
le 09/06/2005
c- Apache, le serveur web
Le but premier du serveur est de permettre d’héberger de multiples sites internet, ce serveur
doit pouvoir accepter le langage HTML, et PHP. Pour cela, il m’a semblé normal de prendre
le serveur Apache, sa fiabilité est désormais universellement reconnue et il est tout à fait
possible de lui ajouter des modules pour permettre d’augmenter ses capacités. Ce serveur
possède également un système intégré permettant d’empêcher les attaques par dénis de
services (DoS, Denial of Service en anglais), cela est mis en place par la limitation du nombre
de connections simultanées par adresse IP et sur la globalité. Il est également possible
d’enregistrer tous les accès pour, en cas d’attaque, avoir les adresses des assaillants de
manière à pouvoir porter plainte contre ces personnes, les fichiers journaux tenant compte de
preuves devant un tribunal. Ce serveur dispose de la possibilité de se voir apposer différents
modules, ici je lui ai ajouté un module pour gérer le PHP (langage puissant de programmation
pour les sites internet), et un module pour gérer la sécurisation par SSL qui est fourni par
OpenSSH, il n’est pas utile de lui adjoindre un module pour le HTML car Apache le gère en
natif.
J’ai également défini des hôtes virtuels, ce sont des sites différents hébergés sur la même
machine et accessibles par des adresses différentes, par exemple le lien www.lyceebelair.fr
peut rediriger le navigateur sur le dossier /lycee et le lien www.ressource.lyceebelair.fr
rediriger vers le dossier /ressource sur le même ordinateur. Cela est très utile car multiplie les
sites sur le même serveur (moins de coût de matériel), cela ralentit légèrement le traitement
des requêtes pour accéder au serveur, mais il n’est pas prévu une masse de connections
simultanées importantes, donc cela n’est pas gênant. Dans le cas du lycée il y a besoin de
quatre hôtes virtuels (pour la gestion des salles et de la base de données, du site principal du
lycée, et un dernier pour la gestion des stages).
J’ai ensuite paramétré ce serveur pour qu’il crypte par défaut toutes les connections, ceci dans
le but d’empêcher un utilisateur malintentionné de comprendre ce qui se passe sur le réseau.
Ainsi si le créateur d’un site web futur oublie de sécuriser son code source, il sera protégé par
le serveur en lui-même, si l’utilisateur ne le souhaite pas il lui est bien sûr tout à fait possible
de désactiver cette protection.
Pour empêcher une personne de se faire passer pour le serveur web du lycée, j’ai décidé de
créer un certificat de sécurité, ce certificat va prouver que l’on est bien le serveur et non
quelqu'un qui veut se faire passer pour lui. Ce certificat sera affiché à chaque connection sur
la partie sécurisée du site et un cadenas ou une clé (symbole de sécurité) seront affichés en bas
du navigateur pour certifier à l’usager que la connection est bel et bien sécurisée et qu’il peut
avoir confiance dans le site qu’il visite. Cette technique est largement utilisée dans les sites de
ventes ou par les banques, preuve de sa fiabilité.
Le certificat possède un champ pour indiquer à l’utilisateur si le site qu’il visite est vérifié par
un organisme indépendant (Verisign pas exemple), dans le cas présent, cela ne m’a pas
Geoffroy Rabouin
Lycée Bel Air
Page 13
le 09/06/2005
semblé utile, en effet l’utilisateur disposera sur le certificat des informations sur le lycée qui
lui suffiront pour juger par lui-même si le site est de confiance ou non, de plus les utilisateurs
amenés à se connecter sont pour la plupart des professeurs et élèves qui ne prendront pas la
peine de lire ce certificat, donc il me semble justifié de ne pas le faire certifier par un autre
organisme, le certificat sera donc auto signé.
Le fichier comprenant toutes ces informations pour le serveur se trouve en annexe 3-b, on
peut y voir les différentes options décrites plus haut ainsi que les différentes options moins
importantes.
d- Vsftpd, le serveur FTP
Il est souhaitable, devant la démocratisation de l’internet haut débit, que les professeurs
puissent accéder depuis chez eux à un répertoire situé sur le site du lycée, pour cela la solution
la plus évidente est d’installer un serveur FTP. J’ai, en premier lieu, installé un serveur
classique (ProFTPd), celui-ci est réputé pour sa stabilité, certes il a réussi avec brio les tests
que je lui ai fait subir, mais il lui est impossible d’assurer un transport sécurisé de
l’information entre deux points. Les données appelées à se déplacer sont les sujets de devoirs,
les corrigés et les différents outils personnels que les professeurs utilisent pour faire leurs
cours, il est hors de question qu’un élève puisse trouver ces données en écoutant le réseau
d’une manière ou d’une autre.
Pour cela il m’a été nécessaire de trouver un serveur ftp qui puisse assurer un transfert des
données fiable et sécurisé, et il me fallait de plus un serveur qui ne puisse pas être attaqué
facilement, si le serveur succombait aux attaques répétées d’un pirate, il ne servirait plus à
rien. Ainsi, après moult recherches et tests, le serveur répondant le mieux à toutes ses
demandes était Vsftpd (Very Secure File Transfert Protocol deamon), en effet il propose de
crypter les données en rajoutant une couche SSL (fourni par OpenSSH) et aucune faille de
sécurité n’a été découverte sur ce logiciel depuis plus de quatre ans.
Ce serveur propose également de chrooter les utilisateurs dans un répertoire, c'est-à-dire de les
empêcher de pouvoir naviguer dans les répertoires du système, cela dans le but de les
empêcher de pouvoir lire les fichiers de configuration du système. Le serveur OpenSSH
fournit une solution similaire nommée sftp, mais il est difficile de bloquer les utilisateurs dans
un répertoire, et de plus les utilisateurs auront un accès (très limité mais un accès quand
même) aux fichiers librairies. Le choix du serveur vsftpd a donc été la meilleure solution, de
plus certains grands fournisseurs et associations lui accordent leur confiance (RedHat,
Debian, Kde, Gnome, kernel.org, …).
J’ai configuré (annexe 3-c) le serveur vsftpd de manière à ce qu’il donne accès en lecture et
écriture aux répertoire maison (/homes/nom_utilisateur) de chaque utilisateur à son
propriétaire, j’ai laissé un accès en lecture et exécution aux autres personnes mais cet accès
est rendu impossible car l’accès en anonyme est interdit et le parcours des répertoires
impossible, il est donc impossible pour un utilisateurs de voir les fichiers des autres. L’accès
anonyme est donc interdit pour empêcher quelqu'un d’extérieur au lycée de se connecter, cela
oblige un attaquant potentiel à connaître l’identifiant d’un professeur pour tenter une attaque
par brute force sur le serveur ftp.
Geoffroy Rabouin
Lycée Bel Air
Page 14
le 09/06/2005
Le serveur FTP va enregistrer toutes les opérations sur le serveur, l’entrée de quelqu'un, ce
qu’il y fait (envoie de fichier, suppression, …), le temps de connexion et l’heure de départ,
tout ceci dans le but de prouver que tel utilisateur a effectué telle manipulation à telle heure
pour les cas de litige sur un fichier qui aurait disparu ou aurait été modifié.
Le deuxième avantage de ce serveur est qu’il crypte la connexion via SSL, ainsi les mots de
passe seront cryptés et les données également, tout ceci rendant impossible l’écoute du réseau
pour y trouver des mot de passe, ce système s’appelle FTPs (FTP secure ou bien encore
FTPoS, FTP over SSL). De même que sur le serveur Apache, un système de certificat vient
prouver l’authenticité du serveur. Si un attaquant arrive à se faire passer pour le serveur web
en arrivant à reproduire le certificat, l’utilisateur en sera averti par un message d’alerte car le
certificat ne peut pas être le même, un champ de celui-ci est basé sur le matériel qui compose
l’ordinateur (de plus le certificat est basé sur une clé aléatoire de 1024 bits rendant sa copie
très ardue)
Pour accéder à ce type de serveur qui utilise une connexion avec une couche SSL, il est
nécessaire d’utiliser un client FTP qui gère la sécurisation par SSL (FileZilla par exemple), il
est nécessaire d’indiquer au client FTP que le connexion qu’il va établir est sécurisée et que la
sélection pour le port FTP-data doit se faire en passif, cela veut dire que c’est le serveur qui
sélectionnera le port. Le serveur FTP étant situé derrière un firewall, il est obligatoire que ce
soit le serveur qui décide du port à ouvrir, le firewall (iptables) bloque les demandes venant
de l’extérieur mais autorise les ouvertures dynamiques de ports depuis la zone sécurisée. J’ai
réalisé une documentation à l’intention de l’équipe enseignante afin qu’elle puisse configurer
FileZilla (client FTP libre et gratuit) pour se connecter sur le serveur du lycée, cette
documentation se trouve en annexe 2.
L’accès de l’intérieur du lycée est également possible par la même méthode mais il m’a
semblé plus judicieux d’ajouter un partage pour les utilisateurs, ainsi ils pourront accéder à
leur dossier sur le ftp via le partage classique des fichiers de windows.
e- Samba, le partage pour Windows
Il m’a semblé souhaitable, voir nécessaire que les professeurs puisse accéder à leur dossier sur
le ftp depuis une station Windows, pour ce faire, la solution la plus efficace est le serveur
Samba. Il permet d’effectuer la copie de fichier par simple glisser-déposer entre le PC
Windows et le serveur Linux, ainsi il suffit de rentrer le serveur samba sur le groupe de travail
du lycée pour que celui-ci apparaisse pour tous.
Geoffroy Rabouin
Lycée Bel Air
Page 15
le 09/06/2005
J’ai configuré le serveur samba de manière à accéder au même répertoire que les dossiers du
serveur FTP, c'est-à-dire le répertoire ‘home’ des utilisateurs. Les droits d’accès sont complets
pour le propriétaire et limités à la lecture seule pour les autres utilisateurs, ceux-ci ne peuvent
d’ailleurs pas voir le partage car il est caché dans le voisinage réseau de Windows.
J’ai défini la journalisation des évènements par ordinateur, ainsi, on saura quel ordinateur a
accédé à quelle ressource et à quelle heure. Cela permettra de dénouer les conflits entre les
personnes qui accuseront une autre d’avoir modifié ou supprimé un fichier. Le dossier partagé
sera monté à chaque démarrage par le script qui monte les autres répertoires partagés liés aux
diverses ressources fournies aux enseignants. Le fichier de configuration qui a pour tâche de
réaliser cela se situe en annexe 3-d.
Samba va refuser l’accès à tous les utilisateurs ne disposant pas d’un compte sur le serveur,
cela empêchera les accès anonyme et également les accès aux élèves pour qui se service n’est
pas nécessaire, pour cela il a suffit de créer les utilisateurs nécessaires (l’intégralité de
l’équipe enseignante) et de leurs attribuer un même groupe afin de faciliter la gestion des
quotas de place disque occupée.Il aurait été possible de les créer un par un, mais cela aurait
été fastidieux, ainsi, j’ai créé un script qui va les créer à l’aide d’un fichier texte passé en
paramètre, ce script va créer les utilisateurs, attribuer le même mot de passe que sur les autres
applications, et donner accès à Samba en validant leur compte. Ce script est fourni en annexe
4 avec le fichier servant de modèle pour créer les utilisateurs.
f- MySQL, le serveur de base de données
Une base de données est une entité dans laquelle il est possible de stocker des données de
façon structurée et avec le moins de redondance possible. Ces données doivent pouvoir être
utilisées par des programmes (tel PHP) et par des utilisateurs différents. Le serveur web
devant héberger du contenu en PHP qui nécessite un accès à une base de données, il m’a
semblé logique de choisir le serveur de base de données MySQL, il est réputé pour sa stabilité
et son interaction avec PHP. En effet il est très simple de créer une page PHP qui modifie ou
accède à une base de données. J’ai pris partie de bien séparer les pouvoirs et les droits des
utilisateurs, ainsi j’ai créer un utilisateur et une base par site, un utilisateur n’a pas accès à
deux bases et aucune base n’est géré par deux utilisateurs. Seul l’utilisateur root
(l’administrateur du système) peut avoir un accès illimité et donner des droits sur la base.
Le fichier de configuration de MySQL est fourni en annexe 3-e, on peut y voir que j’ai du
modifier la configuration pour permettre un accès depuis le réseau (local ou internet) à la
base, j’y est également définit le mot de passe pour accéder en root au serveur (il est ici
Geoffroy Rabouin
Lycée Bel Air
Page 16
le 09/06/2005
remplacer par un autre pour des raisons de sécurités évidentes) ainsi que le port sur lequel le
serveur MySQL écoutera, ici le port par défaut.
Pour faciliter l’accès à la base de données, j’ai également mis en place un système pour
accéder graphiquement aux bases de données, cela évite de devoir permettre aux utilisateurs
d’accéder en ligne de commande au serveur (raison de sécurité également car pour autoriser la
ligne de commande, il aurait fallu autoriser les utilisateurs à accéder au serveur par SSH, avec
le risque de les voir accéder aux fichiers systèmes). Cet utilitaire s’appelle PhpMyAdmin, il
est largement utilisé dans le milieu des hébergeurs professionnels. Il offre lors de la
connexion de rentrer son mot de passe, et suivant les droit qui nous sont accordés nous affiche
la ou les bases sur lesquelles nous avons des droits. De plus, étant un utilitaire entièrement
graphique, n’importe quel utilisateur ignorant les commandes SQL peut tout de même
modifier sa base de données sans aide extérieure.
g- Test de stabilité et de failles
Une fois le serveur mis en place, il est nécessaire de le tester pour savoir s’il est apte à prendre
la place qui lui est due dans le lycée. Afin de vérifier ce point là, je décide donc de tenter
d’attaquer ce serveur par moi-même, ou plutôt en utilisant la multitude de scripts présents sur
internet.
Je décide d’essayer trois rootkits (logiciels servant à se mettre les privilèges administrateurs
sur un poste, les liens ainsi que les noms de ces logiciels ne seront pas fournis pour des
raisons évidentes de sécurité), deux de ceux-ci sont tenus automatiquement en échec, mais le
troisième (sorti la veille du test) passe sans aucun problème, je décide donc de modifier la
politique de sécurité. Après quelques recherche je découvre le moyen de me prémunir contre
ce type d’attaque, il faut pour cela installer un logiciel qui s’occupera de scanner
régulièrement le système à la recherche de ces scripts (il utilise une méthode heuristique, cela
veut dire qu’il détecte la manière d’agir et la compare avec sa base de connaissance, si le
processus utilise les mêmes instructions, il sera supprimé). Ce logiciel se nomme chkrootkit
(cela signifie check rootkits, recherche de rootkits), je décide de le lancer par une tâche
« cron ». Cron est un service sous Linux équivalent du planificateur de tâche sous Windows,
cela permet de lancer un processus ou un script à un instant donné, il se paramètre par
« crontab –e » (pour avoir de la documentation, taper « man crontab » dans une console).
Chkrootkit va analyser le système et écrire dans le fichier /chk_result les fichiers suspects
trouvés (pour cela il faut utiliser « chkrootkit > /chk_result »), je programme ce test tous les
jours dans la nuit pour ne pas gêner les utilisations. Après un autre test, le rootkit est détecté et
mis hors d’état de nuire.
Dans un deuxième temps je décide d’analyser les ports ouverts sur l’extérieur, ainsi, je me
procure le logiciel Nmap, utilitaire très efficace pour détecter les ports ouvert sur un
ordinateur. Ce logiciel est capable de scanner un PC sans que ce dernier ne sache quel
ordinateur est en train de l’analyser, il effectue une détection de telle manière que même les
connexions refusées soit listées (les connexions refusées le sont la plupart du temps car elles
nécessitent un mot de passe). Une fois ce test lancé, j’obtiens comme résultat que les ports
correspondant aux services « echo », « discard » et « daytime »sont ouvert, pour les
Geoffroy Rabouin
Lycée Bel Air
Page 17
le 09/06/2005
supprimer, il suffit de désactiver les services qui les exploitent, les services étant gérés par
/etc/inetd.conf, il suffit de commenter les lignes concernant ces services (ce sont des services
vieux et inutilisés avec les applications récentes). Je relance une analyse des ports ouverts et
ne trouve que les ports normaux :
PORT STATE SERVICE
21/tcp open ftp
#serveur FTP
80/tcp open http
#serveur web
139/tcp open netbios-ssn
#serveur samba
443/tcp open https
#serveur web sécurisé
3306/tcp open mysql
# serveur MySQL
Ainsi, je peux assurer que les attaques potentielles ne viendront pas de services inutilisés,
mais seulement des services lancés volontairement, cela limite énormément le risque de faille
compte tenu que les service retenus pour fonctionner sur ce serveur sont les plus sécurisés
actuellement.
Je me suis ensuite attelé au serveur web en lui-même, pour cela j’ai utilisé un logiciel qui
analyse le serveur pour trouver les failles potentielles, après plusieurs heures de test intensif,
le résultat est sans appel aucune faille connue n’est exploitable. Pour continuer à assurer une
maintenance aussi efficace, il est nécessaire de surveiller les rapports de bug et les alertes de
sécurité (par exemple grâce au site http://www.frsirt.com), dès la sortie d’une faille ou d’un
danger potentiel il sera nécessaire de porter une attention toute particulière aux fichiers
journaux afin de s’assurer qu’aucun trafic suspect n’est présent.
Il est sécurisant et rassurant de savoir que l’équipe Debian est à l’affût de ces problèmes et est
prompte à réagir, ainsi, lors de la découverte d’une faille, il faudra en moyenne 12 à 24 heures
pour qu’un correctif soit publié, pour appliquer ce correctif, il suffit juste d’effectuer deux
commandes :
# cela va mettre à jour la base des paquets
apt-get update
apt-get upgrade
#cela va mettre à jour les paquets installés avec les dernières versions disponibles
J’ai également ajouté dans mon cron une tâche qui va effectuer cette mise à jour toutes les 24
heures (dans la nuit également), ainsi, il sera inutile aux responsables du service informatique
de lancer cette mise à jour manuellement, ils devront cependant (cela ne peut pas et ne sera
jamais possible) vérifier manuellement régulièrement que les mises à jour se sont bien
installées, et ceci environ une fois tous les deux mois.
Afin de vérifier l’utilité de tous les systèmes de cryptage mis en place, je décide d’analyser
tous les flux circulant sur le réseau. Je branche le PC espion directement sur la même zone
que le serveur web grâce à un hub (il va donc répéter sur tous les ports ce qu’il reçoit, ainsi, je
suis sûr de voir les mêmes informations que le serveur web), sur ce PC je lance ethereal pour
analyser le flux. Je lance à partir d’un PC client diverses commandes (accès FTPs, HTTP,
HTTPs, samba, et MySQL), je retourne sur l’ordinateur espion et analyse les informations
reçues. Les requêtes http, MySQL et Samba apparaissent en clair, mais cela n’est pas
important car les mots de passe sont cryptés et ne sont utilisé qu’une seule fois (il faut donc
écouter au bon moment et il est pratiquement impossible de décrypter un mot de passe si on
Geoffroy Rabouin
Lycée Bel Air
Page 18
le 09/06/2005
ne dispose que d’un seul terme crypté). Les requêtes et toutes les transactions FTPs et HTTPs
sont cryptées et il est impossible actuellement pour un utilisateur normal de décrypter le
protocole SSH2 (pour exemple il faut 3 semaine pour décrypter une clé SSH2 de 128bits, en
trois semaines, les informations ne sont plus confidentielles).
Le dernier test, mais également le plus difficile à mettre en œuvre a été la résistance à une
attaque de type buffer overflow par consommation de bande passante suivi d’une attaque elle
aussi par buffer overflow mais celle-ci par consommation de ressources système. Afin
d’effectuer ces test, j’ai du envoyer des paquets erronés (IP spoofing) à tous les postes du
réseau pour qu’ils renvoient au serveur web une requête que j’ai défini moi-même par avance,
cette attaque a pour but de faire tomber le serveur, j’ai donc dû attendre la fin des cours et le
départ de toute l’administration pour me lancer dans cette aventure. L’idée pour effectuer
cette attaque n’est pas spécialement dure, il suffit d’envoyer une requête à tous les PC du parc
en leurs demandant de répondre à cette requête en même temps sur un seul post, ceci dans le
but de rendre le serveur web inopérationnel, soit car le réseau est saturé, soit car le serveur
web n’arrive plus à fournir les informations à toutes ces demandes.
Le test pour faire une consommation de toute la bande passante s’est résumé à envoyer
un paquet forgé par mes soins à tous les postes du même réseau. Ce paquet contenait une
requête ping (c’est un paquet qui une fois reçu ‘oblige’ le receveur à renvoyer un paquet à
l’émetteur pour accuser réception) avec pour adresse source (l’émetteur du paquet à qui il faut
répondre) l’adresse du serveur web. Ainsi le serveur web sera saturé de réponse de tous les
utilisateurs en même temps. Après avoir lancé cette requête le serveur a reçu une multitude de
paquets simultanément, le réseau étant en 100Mbps, le réseau a vite été saturé, mais le noyau
du linux ayant été compilé (par mes soins) de manière à supporter les attaques de ce genre
(IP: TCP syncookie support = disabled, Network packet filtering (replaces ipchains)=true,
IPsec user configuration interface=true, Socket and Networking Security Hooks=true) il est
resté fonctionnel une fois l’attaque passée.
Le test servant à consommer la plupart des ressources systèmes est effectué grâce à
l’envoi de paquets http sur le serveur, les paquets envoyés contiennent des informations GET,
cela va obliger le serveur à répondre à ces requêtes, le but de cette attaque est de saturer le
serveur afin que sa puissance de calcul ne soit plus assez suffisante pour assurer les réponses
aux différents clients. Le serveur Apache est configuré de manière à refuser les accès en cas
de demandes trop importantes, ainsi ce serveur est protégé contre les attaques de type déni de
service par consommation de ressources. Les autres serveurs nécessitant une identification, il
est impossible de les saturer, sauf bien entendu en cas d’attaque sur un niveau nettement plus
grand (par exemple une attaque simultanée de centaines de postes). De plus ce serveur est
situé derrière un firewall, donc les attaques extérieures sont rendues caducs grâce aux filtrages
que celui-ci opère.
On s’aperçoit donc ici que l’attaque la plus virulente a été l’attaque par déni de service par
consommation de bande passante, cette attaque devant être mené depuis l’intérieur du réseau,
elle est très improbable, donc, je peux affirmer que la sécurité est maximale (dans le cadre de
mes possibilités et des moyens qui m’ont été offert).
Geoffroy Rabouin
Lycée Bel Air
Page 19
le 09/06/2005
h- Passage de woody vers sarge
Pour assimiler ce qui va suivre il faut comprendre la manière de fonctionner de Debian, cette
distribution se base sur trois distributions :
- la stable surnommée ‘woody’ qui est spécialement éditée pour les serveurs.
Elle est longuement testée afin de garantir un fonctionnement irréprochable.
- la testing que l’on appelle également woody est la version appelée à devenir
stable, c’est elle qui sera testée afin de garantir un fonctionnement parfait.
Cette distribution est conseillée pour une utilisation familiale sur un ordinateur
de bureau.
- La dernière version est la plus dangereuse à utiliser, elle dispose des paquets
les plus récents, mais rien ne garantit son bon fonctionnement, les bugs ne sont
pas encore découverts et les failles de sécurité y sont légion. Cette version est
conseillée pour les développeurs voulant aider au développement. Son nom
devrait laisser réfléchir, elle se nome ‘sid’, ce qui signifie ‘Still In
Development’, ce nom a aussi été choisi car dans ToyStory le jeune garçon qui
casse tous les jouets se prénomme également Sid.
Le lundi 6 juin à 00h15, la version woody de Debian a disparu pour être remplacée par la
version sarge, ainsi la nouvelle version stable s’appelle sarge. Une nouvelle version testing est
apparue, elle se prénomme ‘echlt’, elle remplace donc la sarge. La distribution unstable, elle,
reste unstable, et cela pour toujours.
Ainsi le fichier qui indique où prendre les mises à jour du serveur a dû être refait, ainsi vous
pourrez voir les différences en allant voir les annexes 3-g-3 et 3-g-4.
4- Symantec Ghost et l’open source
Symantec Console Ghost permet de restaurer le contenu d’un disque dur dans son intégralité
via le réseau, on peut remettre le système d’exploitation, les paramètres IP, adresses de DNS,
nom de PC, route par défaut…
Les licences de Symantec Console Ghost revenant à 20€ par postes et par an, il est envisagé
de remplacer ce logiciel par un logiciel issu du monde de l’open source et donc, du gratuit.
Pour cela, quatre solutions m’ont semblé envisageables, Unatended, ANI, PartImage et g4u.
Ces logiciels sont tous gratuits et offre des avantages et des inconvénient propres. La
meilleure solution pour savoir lequel convient le mieux au besoin actuel du lycée est de les
tester tous dans des conditions réelles, en effet ce type de logiciels n’est absolument pas
documenté et il faut effectuer tous les tests par soi-même.
Geoffroy Rabouin
Lycée Bel Air
Page 20
le 09/06/2005
a- Unatended
Ce logiciel nécessite un serveur devant héberger les fichiers images de disque des PC. Cela
est réalisé par un serveur Samba accessible par le réseau, les PC sont démarrés via un disque
de démarrage, cela oblige à se déplacer physiquement sur les ordinateurs clients, mais ce
problème est encore tolérable. Le mode d’installation automatique de Windows via le fichier
unatend.txt est court-circuité par ce logiciel, après plusieurs recherches, nous nous apercevons
qu’on ne peut pas obliger à effectuer une installation automatique, il sera nécessaire de rentrer
tous les paramètres manuellement, cela n’est pas acceptable compte tenu de la taille du parc
informatique.
Ce logiciel est donc très utile pour les utilisateurs désirant effectuer des installations
différentes par le réseau, cela est pour nous inutile, en effet nous voulons une installation
automatisée.
b- ANI
Ce second logiciel crée une véritable installation automatisée de Windows, pour cela il utilise
des scripts écrits en perl (un langage de programmation) pour installer à la fin de l’installation
de Windows les logiciels et les patchs nécessaires. Il est possible de choisir ce que l’on veut
installer avant de lancer l’installation, on peut donc ainsi multiplier les restaurations de postes
multiples avec la même configuration. Ce logiciel serait parfait s’il n’installait pas perl dans
Windows, en effet perl n’a pas de raison d’exister dans une installation classique de
Windows, de plus ce langage est très régulièrement mis à jour pour corriger certaines failles
de sécurité. Il est donc impossible de gérer tout un parc de PC avec un logiciel inutile à mettre
à jour régulièrement. Il est tout à fait possible de le désinstaller, mais un problème inhérent à
Windows refait son apparition, lors d’une désinstallation certains fichiers ou clés de registres
ne se suppriment pas. La volonté première étant de créer un parc d’ordinateur fiable il nous
est impossible de se reposer sur un Windows bancale dès le premier démarrage.
Ce logiciel peut très bien servir aux personnes non pointilleuses n’ayant pas besoin d’un
ordinateur irréprochable.
c- PartImage
PartImage est le plus connu de ce comparatif, en effet, c’est le seul à disposer d’une interface
graphique permettant le réglage de tous les paramètres. Cela est beaucoup plus simple
d’utilisation pour un novice dans le monde Linux. Les différents menus nous permettent de
sélectionner les partitions (et non les disques complets) et permettent aussi de sélectionner le
serveur samba sur lequel on veut sauvegarder le fichier image. Il est possible de crypter les
transferts d’informations si les données contenues sur l’image sont confidentielles. Mais ce
système est vieillissant et certains problèmes peuvent survenir avec du matériel trop récent.
Geoffroy Rabouin
Lycée Bel Air
Page 21
le 09/06/2005
La solution est d’utiliser un « live-cd » de type Knoppix, cela permet de bénéficier de pilote
pour les cartes réseaux récentes mais, en contrepartie le temps de démarrage du logiciel est
considérable, et de plus, il est nécessaire de passer physiquement derrière tous les PC du parc
informatique. Ainsi ce logiciel est parfait pour tous ceux qui n’ont pas un ordinateur trop
récent ou avec un matériel plutôt classique.
Pour l’utilisation souhaitée (PC Dell dernière génération) il aurait été nécessaire d’utiliser un
cd de démarrage pour chaque PC ainsi qu’un serveur samba pour stocker les fichiers images à
distance. Cette solution a donc été également rejetée.
d- g4u
Ghost-For-You ou bien encore appelé g4u est un utilitaire lancé au démarrage du PC via un
disque compact, il permet d’effectuer lui aussi une sauvegarde du système sur le réseau, mais
lui ne nécessite pas de serveur samba, un simple serveur FTP lui suffit. Ce système a la
particularité de pouvoir copier n’importe quel système de fichier (NTFS, Fat16/32, ext2/3,
…), pour ceci il effectue une copie au niveau des clusters du disque, c'est-à-dire qu’il copie
les bits tels quels, sans chercher une signification quelconque. Cela est très utile dans un
environnement hétéroclite, mais plutôt lourd à l’utilisation dans un univers uniquement
Windows. De plus, cette manière de procéder oblige à copier les secteurs ne contenant aucune
information du disque, ceux-ci sont de taille de 40Go et sont occupés par environ 2 Go de
données utiles, nous voyons donc que 38Go seront copiés sur l’image pour rien…
La place occupée par les données ayant un coût non négligeable, il est impossible de
conserver cette solution.
e- Conclusion
Bien que l’open source fasse d’énormes progrès il est encore impossible d’effectuer une
sauvegarde d’un système d’une façon aussi performante que Ghost. Ce logiciel est fourni avec
une console qui permet de remplacer à distance les paramètres de configuration de tous les
postes du réseau et de les appliquer automatiquement lors de la restauration du système. Nous
allons donc continuer à utiliser cette solution tout en gardant un œil sur les solutions gratuites
qui ne cessent d’évoluer.
Geoffroy Rabouin
Lycée Bel Air
Page 22
le 09/06/2005
5- Le forum des anciens BTS
a- La base
Les anciens étudiants de BTS souhaitant pouvoir garder contact, on m’a demandé de créer un
forum pour leurs permettre de se retrouver et de continuer à pouvoir organiser des soirées
entre eux.
J’ai choisi la base phpBB pour effectuer ce forum, en effet ce forum est très répandu et assez
simple d’utilisation et de configuration, ne me chargeant uniquement que de l’installation et
de la configuration de base je me devais de mettre en place un système relativement simple à
l’utilisation. De plus, je connaissais ce forum depuis plusieurs mois, j’ai sur mon temps
personnel déjà monté un forum de ce site (un pour le département GTR de l’IUT de La
Rochelle et un second pour l’université de La Rochelle ayant pour adresse respective :
www.iut-gtr.tk et www.forum-univ-lr.tk). Ce forum est relativement facile à administrer pour
un utilisateur lambda, toute la configuration se fait par interface graphique. Il suffit de
sélectionner dans le panneau d’administration le nom d’une personne inscrite sur le forum
pour y régler ces droits par des options à cocher. Par exemple pour donner les droits de
modérateur (celui qui calmera les ardeurs et sanctionnera ceux qui n’ont pas respecté les
règles) il suffit de changer le statut de la personne choisie pour le faire passer de ‘utilisateur’ à
‘modérateur’.
Le gros problème de ce système est le nombre important de failles qui sont découvertes assez
régulièrement, il faudra donc que l’administrateur du forum soit quelqu'un de sérieux et
prenne à cœur son travail. Par acquis de conscience j’ai sauvegardé tous les fichiers de ce
forum sur une partie du serveur inaccessible par apache, ceci dans le but de pouvoir restaurer
le forum en cas de problème.
J’ai également écris des règles pour le bon fonctionnement du forum, il y est décrit toutes les
règles à observer pour une entente cordiale entre tous les utilisateurs.
b- Les Modifications
J’ai décidé d’effectuer sur le forum plusieurs ajouts, ces modifications servent à améliorer le
forum et à lui ajouter de multiples changement, les trois plus grosses modifications
concernent l’ajout de la modification ‘arcade’, l’ajout d’une possibilité de joindre un fichier à
un message sur le forum (musique, image, …) et l’ajout de deux nouvelles ‘peau’ pour le
forum, ces peaux permettent de changer l’apparence et la couleur du forum de manière à
plaire à l’utilisateur.
Geoffroy Rabouin
Lycée Bel Air
Page 23
le 09/06/2005
1- Arcade
Cette modification permet d’ajouter sur le forum des jeux programmés en flash, le but de ceci
est d’organiser des concours entre tous les participants. Le meilleur score de chaque joueur
étant sauvegardé, il est amusant et très prenant d’essayer de battre une autre personne sur son
jeu favori. J’ai ajouté plus de mille jeux sur ce forum, ces jeux sont classé suivant des
catégories (puzzle, courses, réflexion, sport de ballon, …) de manière à ce que les utilisateurs
puissent immédiatement trouver leur bonheur. Il sera tout à fait possible dans un deuxième
temps d’organiser un petit tournoi avec pourquoi pas un lot à la clé pour le gagnant. Il est
possible également de remettre à zéro les scores, mon expérience personnelle m’a appris que
l’intérêt disparaissait si les scores étaient trop dur à battre, pour cela, il suffira d’aller dans le
panneau d’administration puis dans le menu jeux pour sélectionner tous les jeux et cliquer sur
l’option remettre à zéro les scores.
2- Attach’mod
Cette modification permet aux utilisateurs de joindre un fichier à chacun de leur message sur
le forum, ainsi il est nettement plus facile de joindre une photographie d’une soirée ou même
une vidéo. Il est bien entendu interdit de joindre un fichier potentiellement dangereux pour les
utilisateurs ou pour le serveur, ainsi les fichiers php (pouvant être dangereux pour le serveur)
et les fichiers exécutables (.exe, .com, .bat, .vbs, …) sont interdits de séjour sur le forum, tout
utilisateur voulant envoyer ces fichiers se verra refuser l’envoi de son message. Si son fichier
ne contient pas de virus, il est tout à fait possible de le compresser avec un logiciel de type
Winzip pour l’envoyer sur le serveur. Cet outil devant être un plus et non un poids pour le
serveur, il m’a été nécessaire d’instaurer des quotas sur le nombre de fichiers envoyés, ainsi,
chaque fichier à une taille limitée à 1,44Mo (la taille d’une disquette), et chaque utilisateur est
limité à 10Mo de fichiers sur le serveur. Il est tout à fait possible pour chaque utilisateur de
supprimer les fichiers joints quand ils ne sont plus utiles, ceci dans le but de rendre le serveur
aussi rapide que possible.
3- Thèmes
Le thème standard de tous les forums phpBB est le même, c’est un thème bleu et relativement
clair, il m’a semblé important de différencier le forum des anciens BTS de Bel-Air des autres
forums en proposant plusieurs thèmes différents, j’ai donc choisi après concertation avec
plusieurs personnes deux autres thèmes, l’un se situe dans les tons rouges et l’autre allie le
blanc et le rouge dans un subtil mélange. J’ai du modifier les logos des trois thèmes pour
mettre le nom du forum à la place du nom du thème (tout en laissant le nom du créateur et en
conformité avec la licence d’exploitation du thème).
Geoffroy Rabouin
Lycée Bel Air
Page 24
le 09/06/2005
6- Audit du réseau
J’ai effectué un audit (à petite échelle bien entendu, un véritable audit prend plusieurs mois)
afin de voir quels services fonctionnaient sur les machines serveurs et clientes. Ceci dans le
but de supprimer l’inutile et d’alléger le réseau en répartissant mieux les postes sur les switchs
de l’établissement afin de diminuer les domaines de broadcast et de collisions.
Geoffroy Rabouin
Lycée Bel Air
Page 25
le 09/06/2005
Afin d’effectuer cet audit, j’ai tout d’abord regardé les trames circulant sur le réseau, de
manière à savoir s’il y avait beaucoup de trames perdues sur le réseau, le logiciel Ethereal m’a
encore une fois été très utile. Je me suis rendu compte que plus du quart des données
transmises n’arrivaient pas à leurs destinataires, après une enquête rapide, je me suis rendu
compte que c’étaient les câbles Ethernet qui étaient en cause, en effet ils ont été mal (trop vite
sûrement) fabriqués, la prise ne serrant pas sur la gaine protectrice mais sur les paires de
cuivres. Il serait donc intéressant de refaire les câbles, le débit en serait augmenté, en effet
moins de trames circuleraient en même temps. Les responsables du service informatique ont
été mis au courant de ce point ci.
Une fois cette écoute banale effectuée, j’ai décidé de m’attaquer à la partie la plus
intéressante, l’écoute des serveurs. Cela veut dire que j’ai du scanner les postes serveur de
manière à savoir les ports ouverts sur chaque machine (un port ouvert signifiant que au moins
une application l’utilise) et ensuite les comparer à la liste logique des ports ‘normaux’ qui
devrait être ouvert sur ce type de machine compte tenu des services y fonctionnant.
La plupart des serveurs n’avait aucun soucis, les ports étaient bien tous fermés et les services
inutiles stoppés. Mais un serveur sous Windows 2000 Advanced Server avait un port suspect,
le 5555, je me suis rendu compte que ce port correspondait à un trojan (virus qui donne accès
au poste à un utilisateur distant). Norton, l’anti-virus utilisé dans le lycée, ne le détecte pas.
Après en avoir parlé avec M A-Chick (assistant d’éducation en informatique) qui m’assure
que tous les services tourne sur le port par défaut, j’en déduit que Norton est inefficace sur ce
point là. Après quelque recherche sur internet, je trouve le remède à ce virus et l’éradique.
Une deuxième analyse après un redémarrage me rassure en me montrant bien que ce
port est dorénavant fermé.
L’analyse des postes clients ne révèle rien de suspects, cela est du en grande partie au
remarquable travail du firewall IpCop (voir II-7) qui empêche toute entrée sur le réseau du
lycée.
Je n’ai malheureusement pas le temps de me préoccuper de la qualité de service (QoS, quality
of service) sur le réseau, cela m’aurait permis de mieux segmenter le réseau et de voir quels
switchs sont saturés de demandes et à l’inverse quels autres sont très peu utilisés. Cette étude
sera très importante à faire lors du passage (s’il a lieu) au Gigabits, en effet il est vital que les
switchs les plus accédés soit des switchs Gigabits, ceci afin de permettre une décongestion du
réseau.
Geoffroy Rabouin
Lycée Bel Air
Page 26
le 09/06/2005
7- IpCOP, un firewall très efficace
a- Généralités sur les firewalls
Le but lors de l’utilisation d’un firewall est de fermer tous les ports puis de contrôler
l'ouverture de certains d'entre eux ainsi que de contrôler les tâches et protocoles qui s'en
servent. On sait que les différentes applications utilisent pour « sortir » vers l’extérieur des
ports, ils sont 65 536, les principaux (ceux utilisés le plus souvent) ont un numéro inférieur à
1024. Généralement, les ports inférieurs à 1024 sont utilisés pour les fonctions serveurs et les
autres pour les fonctions clients.
Tous ces autres ports devraient être fermés. Windows les laisse tous ouverts. Si un
programme, couramment appelé un cheval de Troie (troyen), s'installe et se met à l'écoute sur
un de ces ports, son commanditaire, le pirate, peut prendre le contrôle de l'ordinateur et y
effectuer ce qu'il veut. On installe donc un firewall en entrée du réseau pour empêcher les
données venant de l’extérieure de rentrer.
b- Fonctionnement
IpCop est une distribution Linux complète dont le seul but est de protéger le réseau sur lequel
il est installé, c’est la Distribution Linux destinée à ceux qui veulent maintenir leur réseau en
sécurité. C’est une solution firewall basée sur un serveur, ainsi, un ordinateur est dédié à la
fonction de vérifier les différents transferts de données. IpCop est open source et est
distribuée sous les termes de la licence GNU GPL. Le fait que les sources soient disponibles
permet à des experts en sécurité du monde entier de contrôler et de corriger des trous de
sécurité, chose relativement utile dans un milieu où la sécurité est nécessaire.
Les caractéristiques de ce firewall sont :
- Un firewall basée sur une plate-forme Linux sécurisée, stable et hautement configurable
(Iptables).
- Un serveur web permettant une administration aisée du firewall.
- Un serveur DHCP qui aide à la configuration de son réseau interne.
- Un serveur proxy pour le DNS qui permettra une accélération des requêtes DNS.
- Un serveur cache pour le web qui autorisera un accès plus rapide au web.
- Un système de détection des intrusions (IDS) pour identifier les attaques externes vers le
réseau.
- La possibilité de partager la connexion en un réseau GREEN (le réseau élève), sécurisé et
protégé de l’internet, en une zone démilitarisée (DMZ où se situe le serveur web) qui
contiendra les serveurs accessibles au public et partiellement protégé de l’internet, et en un
réseau BLUE (le réseau administration) du même type que le réseau GREEN dans notre
exemple.
- Un VPN qui permet de connecter votre réseau interne sur un autre réseau privé en utilisant
l’internet pour ne former qu’un seul réseau logique, ce VPN sera utilisé dès que la deuxième
ligne internet sera ouverte.
Geoffroy Rabouin
Lycée Bel Air
Page 27
le 09/06/2005
c- Ajouts
La connexion internet devant être utilisée par des élèves, il est inutile et dangereux qu’ils
accèdent à des sites potentiellement dangereux (warez, crack, …) ainsi qu’à des sites pour
adultes, de publicité, … Il est donc utile d’effectuer un filtrage sur le contenu, pour effectuer
cela, j’ai décider d’utiliser un programme tiers se greffant sur le firewall, urlfilter. Ce logiciel
ajoute des possibilités de filtrage relativement importantes et précises, par exemple on peut
définir une liste de sites interdits, des mots interdits, interdire les téléchargements, le contenu
vidéo ou audio, … Toute page bloquée sera remplacée par une page expliquant le pourquoi du
blocage, l’utilisateur pourra s’il le juge nécessaire contacter l’administrateur pour obtenir le
déblocage du site (passage en WhiteListe du site demandé). La liste des sites interdits est
tenue à jour par l’université de Toulouse, elle est mise à jour toutes les semaines, cela prouve
sa fiabilité et sa réactivité. Il est de plus possible (bien que non mis en place dans un premier
temps) de bloquer l’accès suivant le navigateur utilisé et l’heure de connexion, ainsi on peut
très bien penser à ouvrir tous les sites après les cours par exemple.
Certaines salles de l’établissement sont en accès libre service, le souhait a été formulé de
bloquer l’accès à ces salles si aucune personne responsable n’était présente. Ainsi un module
permet de réaliser cette tâche, il s’appelle advanced proxy. Il gère l’autorisation et
l’interdiction suivant l’adresse IP et suivant l’adresse MAC, ainsi on peut autoriser
l’ordinateur portable du lycée à se connecter de partout en connaissant son adresse MAC, et
interdire les ordinateurs de la salle libre service d’un simple clic.
Geoffroy Rabouin
Lycée Bel Air
Page 28
le 09/06/2005
Toute la configuration s’effectue par interface graphique, ce qui permet à une personne qui ne
connaît pas les règles de filtrage iptables de réussir à bien paramétrer son réseau.
Geoffroy Rabouin
Lycée Bel Air
Page 29
le 09/06/2005
III- Avis personnel
1- L’Humain
Le fait de travailler dans un lycée m’a permis de rencontrer énormément de gens, du
professeur à l’équipe administrative en passant par les élèves. J’ai pu me rendre compte de la
vie du professeur de l’autre coté, et non plus du coté élève ou étudiant. J’ai pu multiplier les
contacts avec des personnes d’horizons totalement différents, cela m’a permis d’apprendre à
adapter mon discours suivant la qualification de la personne. L’ambiance du lycée étant
relativement bonne, j’ai pu aisément m’insérer et être accepté par tous, y compris les élèves.
J’ai occupé une place moins gratifiante que les deux autres stagiaires effectuant leur stage en
même temps que moi, ils fabriquent un site pour faciliter la recherche de stage des élèves,
mais cette place légèrement en retrait me convient parfaitement. Je ne ressens pas le besoin de
faire savoir à tout le monde que c’est moi qui est rendu possible les futures applications sur le
serveur. Je sais que mon travail est apprécié à sa juste valeur par les personnes travaillant avec
moi, cela est largement suffisant, et savoir que j’ai pu rendre possible ce projet d’aide à la
recherche de stage me satisfait pleinement. J’ai également eu des retours sur la mise en place
du forum pour les BTS, les étudiants étaient enchantés de savoir qu’ils pouvaient dorénavant
garder contact via ce site.
Le plus agréable lors d’un conflit avec un humain est la possibilité de partager et de mettre en
commun son point de vue afin de trouver une solution satisafaisant tout le monde. En cela il
n’est pas concevable de remplacer le contact humain par une machine, jamais une machine
n’arrivera à remplacer le bonjour et le contact physique, et cela est heureux.
2- La Machine
Durant ce stage j’ai appris à travailler sur un réseau de grande taille, et non plus uniquement
sur des ‘bricolages’ servant à imiter ceux-ci. A ma plus grande surprise, le plus difficile n’est
pas de gérer un grand parc, mais de se déplacer sur la totalité du lycée.
J’ai pu découvrir plusieurs technologie en condition d’utilisation réelle et non plus sur les
comparatif de matériels, voir fonctionner une carte Raid5 et tester son efficacité m’était bien
entendu impossible avant ce stage (cette carte coûte 300€). J’ai pu tester en condition réelle
un serveur de ma fabrication, cela peut paraître égocentrique mais le plaisir ressenti à voir les
autres utiliser son matériel est important. L’aspect sécurité ayant été prédominant dans ce
stage, j’ai pu développer mes connaissances sur les différentes techniques utilisées pour se
protéger contre les attaques potentielles. Souhaitant faire de cette spécialité mon travail futur,
j’en retire une grande expérience personnelle.
Le plus grand problème quand une machine ne veut pas faire ce qu’on lui demande est son
manque de coopération, en effet on a beau lui demander le plus gentiment du monde la cause
de son mécontentement, elle restera muette. Et quoi qu’en disent les plus férus
d’informatique, jamais un fichier log n’aura le même poids dans une conversation qu’un
sourire.
Geoffroy Rabouin
Lycée Bel Air
Page 30
le 09/06/2005
IV
ANNEXES
Geoffroy Rabouin
Lycée Bel Air
Page 31
le 09/06/2005
ANNEXE 1
Création d’un
serveur Web et FTP
pour le lycée Bel-Air,
Fontenay Le Comte
Geoffroy Rabouin
Lycée Bel Air
Page 32
le 09/06/2005
Création d’un serveur Web et FTP
pour le lycée Bel-Air, Fontenay Le Comte
http://www.eplea-belair.educagri.fr
Geoffroy Rabouin
Lycée Bel Air
Page 33
le 09/06/2005
1. Introduction
2. La méthode pré installée
3. La méthode manuelle
a. Apache
b. MySQL
c. PHP
d. Options
e. FTP
4. Investissement initial et coût annuel
a. 1ère solution
b. 2ème solution
5. Conclusion
6. Annexe, les services de dynDNS
7. Annexe, les logiciels et leurs sites officiels
Geoffroy Rabouin
Lycée Bel Air
Page 34
le 09/06/2005
1. Introduction
Cette étude portera sur les différentes manières de réaliser un serveur web ainsi qu’un serveur FTP,
ces deux projets devront allier la sécurité du matériel et des données ainsi qu’une grande facilité
d’utilisation.
Nous nous efforcerons de n’utiliser que des logiciels gratuits et de type « open source », cela dans le
but de diminuer fortement le coût et d’augmenter significativement la sécurité de ces serveurs.
Pour concrétiser ce projet, il nous faut choisir entre deux architectures différentes :
• Une distribution Linux pré configurée pour faire office de serveur web et ftp, l’inconvénient de
cette méthode est que cette distribution comportera énormément de logiciels inutiles, cela va
diminuer significativement la sécurité de ce système, de plus cela nécessitera une machine
plus puissante. L’avantage de cette solution est la facilité apparente de configuration de ces
serveurs, étant un système clé en main, il suffira de l’installer pour que les serveurs
fonctionnent. Il est possible également de profiter des autres services de cette distribution, le
plus souvent gestion des utilisateurs et des permissions. Cette technique à pour plus grand
défaut d’être pratiquement impossible à tenir à jour sans modification du cœur du système par
les créateurs du logiciel d’exploitation.
La meilleure distribution de ce type à ce jour est sans conteste la « Free-EOS », signifiant
Espace Ouvert de Services.
• Une station linux basique (juste une installation minimale de Mandrake ou d’une Debian par
exemple) avec une installation manuelle des paquetages des applications nécessaires à la
mise en place de ces deux serveurs, et uniquement de ceux-ci. Ce système à l’avantage de
pouvoir laisser à l’administrateur le choix des logiciels à utiliser (choix des meilleurs possibles)
et de présenter clairement les versions des logiciels installés, ainsi il sera nettement plus
facile pour l’administrateur système de pouvoir suivre l’évolution de ces derniers (failles
découvertes, nouvelles versions ou patchs) et de mettre à jour son système de manière à
garder une sécurité et une stabilité accrue. Avec ce système, il est inutile de posséder un
espace de stockage important, en effet, seul le strict nécessaire est installé, cela évite de plus
des attaques sur des serveurs ou des fichiers inutilisés. Cette façon de procéder à pour plus
gros inconvénient d’être longue à mettre en place, en effet, il faut configurer chaque
application de manière à la faire marcher conjointement avec les autres. Il est toutefois
possible de créer une sauvegarde des fichiers de configuration une fois la première
installation terminée en vue d’une réinstallation ultérieure, ce qui réduit considérablement le
temps de réinstallation en cas de panne ou de mise à jour du système.
Pour simplifier la situation, il y a deux possibilités :
• Facilité d’utilisation (4-5 heures d’installation), risque d’attaques, mises à jours très difficiles,
coût d’entretien faible.
• Complexité d’installation (15-20 heures), sécurité accrue, mises à jours réalisables
relativement rapidement (1-2 heures par mise à jour), coût d’entretien plus élevé.
Il peut paraître plus judicieux de choisir la solution à base d’une distribution pré configurée, mais il faut
réfléchir au coût engendré par la perte de données et le plantage d’un serveur. Il faut analyser
attentivement les risques et le coût du temps passé sur le serveur par mois pour les deux méthodes.
Personnellement, je suis partisan de la solution d’installation manuelle si le but recherché est juste de
mettre en place un serveur web efficace et non un système de gestion des élèves, certes cela
engendre un coût légèrement supérieur en temps de travail, mais le temps perdu ici sera compensé
par le temps gagné si on avait du réparer un système attaqué (perte de tout le contenu du serveur :
sites web du lycée, fichiers de configurations, blocage de toutes les application de gestions installées).
Les liens vers les distributions, logiciels et sites officiels sont fournis en annexe.
Geoffroy Rabouin
Lycée Bel Air
Page 35
le 09/06/2005
2. La méthode pré installée
Le serveur Free-EOS est une solution de serveurs (serveur Web, FTP, mail, …) et passerelle (sert à
partager une connection internet entre plusieurs poste), il est réputé pour sa stabilité et sa facilité
d’utilisation. Il permet de partager une connexion internet ainsi que une imprimante, protéger le réseau
avec un firewall, d’héberger des sites web (PHP et MySQL sont inclus), de créer un serveur de mail.
Ce système a pour énorme avantage de fournir directement tous les paquetages nécessaires à
l’installation, ils sont déjà pré configurés et il ne reste qu’à les exécuter, de plus il est fourni une
importante quantité de logiciels, ce qui évite de devoir installer chaque application séparément. Ce
système dispose d’une gestion par interface graphique via internet, on peut également modifier les
paramètres du serveur depuis un poste différent via SSH. Il est possible de créer directement des
utilisateurs et de leurs attribuer des droits pour accéder à divers répertoires par cette interface, il est
aussi possible de créer des scripts pour restreindre telle ou telle ressource à un certain groupe
d’utilisateurs (registre, modification du système, …). On dispose également d’un serveur DHCP (pour
allouer dynamiquement des adresses ip aux PCs clients), d’un proxy, ainsi que d’un serveur NAT
(pour faire de la translation d’adresses).De plus cette distribution est entièrement francisé, elle est
donc parfaite pour administrer rapidement un réseau complet car elle comprend tous les logiciels
nécessaires. Seul (gros) point noir, elle n’est pas mise à jour régulièrement (ce qui est normal au vu
du nombre de logiciels à surveiller) et cela peut permettre à un utilisateur mal intentionné de
corrompre la sécurité du système.
3. La méthode manuelle
Pour installer un serveur web, il est nécessaire d’avoir plusieurs logiciels d’installés. Le strict minimum
correspond au serveur en lui-même (apache), il est ensuite possible et même conseillé de rajouter
des modules à ce serveur. Ces modules serviront à pouvoir créer des pages web dynamiques (PHP)
ainsi qu’à gérer une base de données (liste des élèves, les classes, les notes, …), il existe aussi des
modules optionnels qui permettront de faciliter la tâche du webmaster, ils serviront à faciliter le travail
sur les images (photographies des élèves, de l’équipe administrative, …) et à compresser certaines
données peu souvent accédées (gain de place sur les disques durs). Il y a aussi un module très
important (PhpMyAdmin) qui sert à avoir une interface graphique pour la gestion des bases de
données, cela simplifie de façon incroyable le travail de la personne gérant cette base, en lieu et place
de ligne de code, elle verra le graphique correspondant.
a. Apache
Apache est un serveur web, c’est donc un logiciel permettant à des clients installés sur leur ordinateur
distant d'accéder à des pages web, c'est-à-dire en réalité des fichiers au format HTML à partir d'un
navigateur (Internet Explorer, Firefox, Mozilla, …). Il peut fonctionner aussi bien en local que sur
l’internet, tout dépend de la manière dont il est configuré. Ce serveur est entièrement modulable, c'està-dire qu’on peut rajouter des modules pour améliorer le fonctionnement en l’adaptant au mieux au
besoin ainsi que pour ajouter des fonctions inexistantes comme la création de pages web en PHP,
l’incorporation de multiples options augmentant la sécurité. Ce serveur est utilisé par plus de 62% des
serveurs web au monde, cela est principalement dû à sa fiabilité et ses mises à jour fréquentes en cas
de découvertes de failles, de plus son utilisation n’impose aucunement une machine surpuissante, un
simple PC de bureau peut assurer ce rôle. Il est également possible d’avoir plusieurs sites sur un seul
serveur, on peut ainsi facilement imaginer que chaque élève puisse disposer d’un espace pour faire
un petit site, cela permet d’ouvrir le monde de l’internet à des personnes qui n’en aurait jamais eu la
possibilité autrement.
b. MySQL
MySQL est un système de gestion de base de données. Une base de données permet de mettre des
données à la disposition d'utilisateurs pour une consultation, une saisie ou bien une mise à jour, tout
en s'assurant des droits accordés à ces derniers, tous les utilisateurs ne pouvant pas accéder à toutes
les données. Ainsi si la base de données comprend les notes des élèves, la comptabilité, ainsi que les
Geoffroy Rabouin
Lycée Bel Air
Page 36
le 09/06/2005
emplois du temps, les élèves ne pourront accéder qu’à leurs emploi du temps et à leurs notes tandis
que l’équipe administrative pourra accéder à la partie comptabilité. MySQL est directement lié à
l’utilisation de PHP (voir la section suivante), il permet de s’intégrer très facilement dans la gestion de
pages web, ainsi, il est très aisé de modifier la base de données (ajouter des notes, des élèves,
modifier l’adresse d’une personne, …) via une interface web, de plus cela est possible de n’importe
quel PC, qu’il soit à l’intérieur du bâtiment ou au domicile personnel. MySQL est réputé pour être très
sécurisé, il est presque impossible de pénétrer dans la base pour prendre des informations
confidentielles (le ministère de la défense français, Toyota France, France Télécom lui font confiance).
Ce système est de plus entièrement gratuit pour une utilisation non commerciale, ainsi il est
souhaitable de l’utiliser pour ce serveur.
c. PHP
PHP est un langage exécuté du côté serveur à l’inverse du langage HTML (langage classique des
pages web) et non sur votre PC personnel. Ce système permet de cacher la vraie page aux
utilisateurs, ainsi un plagiat est impossible, de plus ce la permet d’accélérer le chargement des pages
web et de réaliser des pages au design plus agréable que le classique HTML. Le PHP est un langage
gratuit et « open source », cela signifie que le code ayant servi à le créer est disponible gratuitement
sur le net, cela permet à de multiples développeurs d’améliorer et de sécuriser le code original. De
plus PHP a été créé pour assurer une parfaite interaction avec le système MySQL. Ce système est de
plus en plus utilisé dans le monde de la programmation web et celui de la création de site. Ce serveur
n’est pas indispensable mais est grandement conseillé pour ne pas limiter les possibilités de création
des sites, il est très facile de trouver des scripts fonctionnels sur la toile (ces scripts sont réalisés par
des développeurs passionnés), il suffit ensuite de copier ce code et de l’incorporer dans son site
personnel pour avoir la fonction désirée.
d. Options
Apache possède la caractéristique de pouvoir se voir greffer des modules, il en existe une multitude
mais seules quelques uns sont réellement utiles. Il est vivement conseillé d’installer sur le serveur web
une interface graphique pour la gestion de la base de données (PhpMyAdmin est la meilleure), cela
va permettre de gérer la base de données nettement plus facilement que par des lignes de
commandes. Il est aussi envisageable d’installer des extensions aidant la gestion des images dans les
pages PHP (Gd, Jpeg 6B, LibPNG), et un système de compression des pages de manière à accélérer
le chargement et à diminuer la taille occupée sur le disque (Zlib).
e. FTP
Le serveur FTP va permettre de transférer des fichiers sur le serveur web à partir d’un PC quelconque
du parc informatique, voir même de l’extérieur. Ce serveur peut aussi permettre d’effectuer une
maintenance du PC serveur à distance. Le logiciel retenu pour faire office de serveur FTP est
« vsFTPd », il est réputé pour être le plus sécurisé (impossibilité d’accéder aux fichiers pour un
utilisateur ne disposant pas des privilèges requis) tout en restant souple d’utilisation. Ce serveur est le
seul logiciel alliant sécurité et faible consommation de ressources, les personnes en charge du projet
sont des expertes dans le domaine de la sécurité et ont à coeur de maintenir un logiciel exempt de
toutes failles.
4. Investissement initial et coût annuel
Pour ces deux solutions, il est vivement conseillé d’utiliser un système SCSI pour les disques durs en
remplacement du traditionnel IDE, certes cette solution est plus onéreuse mais elle permet des temps
d’accès nettement inférieurs et donc une disponibilité et une rapidité d’exécution accrues. Il est de
plus très utile d’installer un système RAID v1, ce système permet de créer un miroir des disques dur
utilisés, on obtient ainsi une plus grande sécurité des données, car si l'un des disques tombe en
panne, les données étant sauvegardées sur l'autre il est tout a fait possible de les récupérer. D'autre
part, la lecture est beaucoup plus rapide lorsque les deux disques sont en fonctionnement. Enfin,
étant donné que chaque disque possède son propre contrôleur, le serveur peut continuer à
Geoffroy Rabouin
Lycée Bel Air
Page 37
le 09/06/2005
fonctionner même lorsque l'un des disques tombe en panne. En contrepartie la technologie RAID v1
est assez onéreuse étant donné que seule la moitié de la capacité de stockage est effectivement
utilisée.
Geoffroy Rabouin
Lycée Bel Air
Page 38
le 09/06/2005
ère
a. 1 solution
L’investissement initial correspond à l’acquisition d’un ordinateur, le choix de ce PC et donc du
montant dépend des prévisions sur le nombre de personnes allant visiter les sites hébergés
simultanément. Les valeurs fournies dans le tableau suivants sont les valeurs minimales.
Nombre d’utilisateurs
Utilisation
Vitesse du processeur (Mhz)
Mémoire vive minimale (Mo)
Taille disque dur (Go)
500
intensive
800
384
20
300
intensive
700
256
15
40
intensive
600
256
10
40
modérée
400
128
6
10
modérée
100
64
1
Le lycée comportant moins de 300 élèves et compte tenu du personnel administratif nous pouvons
tabler sur un serveur devant gérer 300 comptes différents. Un ordinateur avec ces caractéristiques
(disque dur SCSI compris) à un prix de revient d’environ 200€ en occasion (il est difficile de trouver
des ordinateurs avec ces caractéristiques dans un état neuf, le prix étant souvent exorbitant). Si on
désire uniquement mettre en place le serveur web et FTP, il est inutile de prendre une machine aussi
puissante, en effet, un simple 350MHz avec autant de mémoire vive est suffisant, son prix de reviens
chute à 130€ environ. Le prix est considérablement augmenté par les disques durs SCSI, mais ces
derniers permettent un réel gain de performances. Si on ne prend en compte que la partie serveur
web et FTP, il suffit de 5 heures pour faire fonctionner le tout parfaitement (il faut compter plus de
temps si il est nécessaire d’assurer la gestion des élèves, le temps de rentrer chaque personne et
d’assigner les groupes).
Le coût d’entretien d’un tel système est très faible, l’évolution étant inexistante ou tout du moins rendu
difficile par l’installation d’une solution clés en main. Ainsi, il suffit de rajouter ou de modifier les
paramètres des élèves, il est inutile de modifier les serveurs et il est dangereux de les mettre à jour,
étant des versions modifiés il y a un risque de plantage total du système. Il est à prévoir environ une
heure de maintenance par mois pour la suppression du journal d’activité, et la mise à jour complète du
système si une nouvelle version vient à sortir.
En cas d’attaque du serveur par un utilisateur malintentionné, il faudra refaire toute la configuration si
celle-ci n’a pas été sauvegardée, si un problème matériel survient (disque dur le plus souvent) le
système RAID va permettre de continuer à faire tourner le serveur, il suffira de racheter un autre
disque pour remplacer le défectueux, il n’y aura aucune perte de données.
ème
solution
b. 2
Un serveur devant uniquement servir pour le web et le FTP n’a aucunement besoin d’être surpuissant,
en effet un simple processeur cadencé à 250Mhz et disposant de 256Mo de mémoire vive (RAM)
pourra aisément supporter la masse de travail à fournir (environ 30 requêtes maximum à la fois), ce
type d’ordinateur peut aisément s’acheter à moins de 100€ (le clavier, la souris et l’écran ne servant
que pour la maintenance).
La maintenance doit être régulière pour assurer une sécurité optimale, il est judicieux de compter
environ deux à trois heures par mois de travail afin de mettre à jour les logiciels installés, supprimer et
analyser le fichier journal et mettre à jour les fichiers du site web principal.
Il n’y a aucune dépense (ni de temps ni d’argent) à prévoir pour la perte des données, en effet la
sécurité étant la plus parfaite possible (le risque zéro n’existant pas quand même) les utilisateurs
malveillants ne pourront pas profiter de failles non corrigées dans l’architecture du serveur. De plus le
système RAID v1 pour les disques durs permet d’assurer une conservation des données même en
cas de crash d’un disque dur. Ainsi, quel que soit le type d’attaque ou de défaillance du système, il
sera toujours possible de continuer le fonctionnement si la maintenance est correctement faite.
Geoffroy Rabouin
Lycée Bel Air
Page 39
le 09/06/2005
5. Conclusion
Il est nécessaire de savoir l’utilisation qui sera faite du serveur avant de se décider pour l’une ou
l’autre des solutions. Ainsi il est totalement inutile de choisir la distribution « Free-EOS » pour un
simple serveur web, cela ne servira qu’à permettre aux personnes sans droits de modifier les fichiers
du serveur et de l’attaquer. Dans ce cas, il est préférable d’adopter la solution du serveur avec une
installation manuelle qui permet une parfaite maîtrise des logiciels installés. Si les besoins pour ce
serveur incluent la possibilité de gérer les élèves et de personnaliser l’accès aux PC suivant le
groupe, alors il faut adopter sans hésitation la solution pré installée, la gestion du parc informatique en
sera énormément facilitée.
Pour bénéficier des serveurs web et FTP ultra sécurisés, il faut opter pour une installation personnelle.
Pour avoir un ensemble d’outils variés pour gérer des groupes de personnes et un serveur web, il faut
choisir une distribution « Free-EOS ».
6. Annexe, les services de dynDNS
Le principal problème lors de la création d’un site devant pouvoir être accédé de l’extérieur est son
adressage, en effet pour pouvoir être joint, il faut indiquer au navigateur web l’adresse IP de la
machine, elle est de type XXX.XXX.XXX.XXX où X est un nombre, or il est préférable (voir même
indispensable) d’avoir une adresse de la forme www.ton_site.com. Pour pouvoir faire le lien entre ces
deux adresses, il faut soit posséder son propre serveur DNS soit faire appel au service d’un
fournisseur de DNS gratuit (https://www.dyndns.org par exemple), une fois l’inscription effectuée nous
avons une adresse de forme habituelle qui sera plus facile à retenir qu’une adresse IP. De plus la
plupart des fournisseurs d’accès à internet ne garantissent pas l’attribution d’une IP fixe, toutes les 24
heures ainsi qu’à chaque démarrage de l’ordinateur elle change, un logiciel existe donc pour faire le
lien régulièrement entre l’adresse de la machine et le nom de domaine courant que les utilisateurs
connaissent, ce logiciel s’appelle ez-ipupdate. Suivant le type de connection internet il faut soit lancer
le script toutes les heures pour vérifier l’IP si l’adresse est dynamique ou bien exécuter le script toutes
les 12 heures si l’adresse est fixe. Ainsi, avec ce système le serveur web disposera toujours de la
même « adresse » quoi qu’il se passe.
7. Annexe, les logiciels et leurs sites officiels
Logiciels nécessaires pour une installation manuelle :
MySQL (http://www.mysql.com)
http://dev.mysql.com/get/Downloads/MySQL-4.1/mysql-max-4.1.8-pc-linuxi686.tar.gz/from/http://ftp.club-internet.fr/mirrors/ftp.mysql.com/
MD5: 07eac9f744018f692542b665ab62501a
Apache (http://www.apache.org)
http://apache.fastorama.com/dist/httpd/httpd-2.0.52.tar.gz
MD5: eba528fa8613dc5bfb0615a69c11f053
PHP (http://www.php.net)
http://fr2.php.net/get/php-5.0.3.tar.gz/from/this/mirror
MD5: bf89557056ce34d502e20e24071616c7
vsFTPd (http://vsftpd.beasts.org)
ftp://vsftpd.beasts.org/users/cevans/vsftpd-2.0.1.tar.gz
MD5: 63838791ec8b1375ed154fb2603e52e9
ez-ipupdate (http://ez-ipupdate.com)
http://ez-ipupdate.com/dist/ez-ipupdate-3.0.11b7.tar.gz
MD5: 525be4550b4461fdf105aed8e753b020
Les logiciels suivants sont optionnels mais ils sont fortement recommandés.
Geoffroy Rabouin
Lycée Bel Air
Page 40
le 09/06/2005
GD (http://www.boutell.com/gd)
http://www.boutell.com/gd/http/gd-2.0.33.tar.gz
MD5: be0a6d326cd8567e736fbc75df0a5c45
Geoffroy Rabouin
Lycée Bel Air
Page 41
le 09/06/2005
ANNEXE 2
Introduction à
FileZilla
Geoffroy Rabouin
Lycée Bel Air
Page 42
le 09/06/2005
INTRODUCTION À FILEZILLA
FileZilla va vous permettre d’envoyer et de récupérer des fichiers situés au lycée Bel-Air à
partir de chez vous. Pour ceci, il va falloir effectuer quelques modifications de la
configuration, mais avant tout, il vous faut télécharger une version de ce client FTP, pour cela
naviguez à l’adresse suivante :
http://jaist.dl.sourceforge.net/sourceforge/filezilla/FileZilla_2_2_14a.zip (Ce lien pointe vers la dernière
version au jour de ce tutorial 2.2.14a, il est possible que vous trouviez une version plus récente, la méthode ne devrait pas changer)
Décompresser le fichier obtenu avec un logiciel de type Winzip©, il est disponible à l’adresse
www.winzip.com, ensuite, exécuter le fichier FileZilla (celui qui a pour icône
fenêtre suivante s’ouvre :
Geoffroy Rabouin
Lycée Bel Air
Page 43
). La
le 09/06/2005
Nous allons tout d’abord mettre le logiciel en français, aller dans le menu « Edit » et
sélectionner « Settings …» :
La fenêtre suivante s’affiche, cliquer sur « Language » et prendre naturellement le
« Français ».
Valider ensuite via le bouton « OK », cela ramène à la fenêtre principale du logiciel. Cliquer
sur l’icône représentant l’ordinateur (elle se trouve vers la gauche tout en haut)
Geoffroy Rabouin
Lycée Bel Air
Page 44
le 09/06/2005
La fenêtre de sélection des sites favoris s’ouvre, il faut pour commencer y créer un nouveau
site par le biais du bouton du même nom.
Geoffroy Rabouin
Lycée Bel Air
Page 45
le 09/06/2005
Le logiciel propose de changer le nom du site, profiter en pour y mettre « Bel-Air » (cela
permettra de se retrouver dans la liste des sites si vous en ajouter plusieurs par la suite).
Renseigner ensuite le champ « Hôte » par le nom du serveur se situant dans le lycée :
« www.lyceebelair.fr », modifier le « Type de serveur » par « FTP sur SSL (Chiffrement
explicite) ». Passer du type d’authentification Anonyme à Normal, cela permet de rentrer le
nom d’utilisateur et le mot de passe, ces deux renseignement sont en votre possession, en effet
se sont les mêmes que ceux que vous utilisez pour vous connecter quand vous êtes dans le
lycée. Cliquer maintenant sur « Avancé… », une fenêtre s’ouvre.
Geoffroy Rabouin
Lycée Bel Air
Page 46
le 09/06/2005
Sur cette fenêtre, choisir un paramètre de mode de transfert de type « passif », valider par OK,
nous revenir à la fenêtre précédente.
Valider ensuite par le bouton « Enregistrer et Quitter ».
Nous allons ensuite nous connecter au site enregistré précédemment, pour cela cliquer sur la
petite flèche qui se trouve à coté de l’icône de l’ordinateur, cela ouvre un onglet et choisisser
le nom du site désiré, ici Bel-Air.
Geoffroy Rabouin
Lycée Bel Air
Page 47
le 09/06/2005
Le logiciel va donc tenter de se connecter sur le serveur (et y réussir normalement) pour vous
permettre de voir et de modifier vos fichiers depuis n’importe où. Avant cela il va vous
demander d’accepter le certificat qui indique que c’est bien au lycée que vous accéder et non
à un serveur qui veut se faire passer pour lui. Vous devriez obtenir quelque chose comme ce
qui suit, accepter le si c’est bien celui du lycée.
Geoffroy Rabouin
Lycée Bel Air
Page 48
le 09/06/2005
Vous aller donc obtenir une fenêtre avec une partie pour déposer les fichiers venant de votre
PC, vous pourrez également prendre les fichiers situés sur le serveur pour venir les déposer
sur votre ordinateur.
Geoffroy Rabouin
Lycée Bel Air
Page 49
le 09/06/2005
ANNEXE 3
Fichiers de
configuration
Geoffroy Rabouin
Lycée Bel Air
Page 50
le 09/06/2005
a- OpenSSH
/etc/ssh/sshd_config
# sshd_config
# Port d'écoute du serveur ssh, par défaut 22, il est utile de le changer pour éviter les attaque par brute force sur
# ce port
Port 2916
# On n’autorise SSh que sur une seule carte réseau
ListenAddress 192.168.3.1
# Uniquement SSH2 sera autorisé, il es nettement plus sécurisé que le SSH1
Protocol 2
# Fichiers clé du serveur
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
# Pour des raisons de sécurité, on doit laisser yes à ce paramètre
UsePrivilegeSeparation yes
# Temps de vie d'une sessions et taille des clé de SSH1 (obsolète mais nécessaire pour compatibilité)
KeyRegenerationInterval 3600
ServerKeyBits 768
# Fichier journaux
SyslogFacility AUTH
LogLevel INFO
# Droit d'authentification, 600s d'inactivité déconnecte le client, root ne peut pas se connecter
LoginGraceTime 600
PermitRootLogin no
StrictModes yes
RSAAuthentication yes
PubkeyAuthentication yes
IgnoreRhosts yes
RhostsRSAAuthentication no
# On n’autorise qu'un seul utilisateur, belair, root devra se connecter par celui-ci, puis faire un "su" pour
# s’enregistrer.
AllowUsers belair
# Interdit les mot de passe vide
PermitEmptyPasswords no
# Interdit le passage du texte en clair, il va donc crypter toute la connection
PasswordAuthentication yes
# Interdit l’envoi de données X11, tout ce qui touche à l’interface graphique
X11Forwarding no
X11DisplayOffset 10
PrintMotd no
# Permet de ne pas supprimer instantanément les connexions inactives
KeepAlive yes
UsePAM yes
Geoffroy Rabouin
Lycée Bel Air
Page 51
le 09/06/2005
b- apache
/etc/apache-ssl/Httpd.conf
## httpd.conf -- Fichier de configuration d'Apache
#
# Les serveurs SSL DOIVENT être standalone.
ServerType standalone
#
# ServerRoot: La racine du répertoire où les fichiers de configuration,
# logs et erreurs sont conservés
ServerRoot /etc/apache-ssl
#
# LockFile: A laisser par défaut, sauf si apache est sur un lecteur réseau
LockFile /var/lock/apache-ssl.lock
#
# PidFile: Fichier dans lequel le serveur va enregistrer son numéro de
# processus quand il démarrera
PidFile /var/run/apache-ssl.pid
#
# ScoreBoardFile: Fichier utilisé pour stocker les fichiers de configuration
# de chaque serveur. Ici, nous n'en utilisons qu'un seul, laissons la valeur
# par défaut.
ScoreBoardFile /var/run/apache-ssl.scoreboard
#
# Timeout: Temps en seconde avant d'envoyer ou de recevoir un timeout
Timeout 300
#
# KeepAlive: Autoriser ou non plusieurs requêtes par connection.
# le serveur étant protégé par un firewall et un noyau sécurisé,
# on peut se permettre d'autoriser cela.
KeepAlive On
#
# MaxKeepAliveRequests: Nombre maximum de requête autoriser durant
# une connection persistante.
MaxKeepAliveRequests 100
#
# KeepAliveTimeout: Temps en secondes d'attente maximum pour avoir la prochaine
# requête d'un même client sur la même connection
KeepAliveTimeout 15
#
# Apache est capable de gérer dynamiquement le nombre d'instances
# nécessaires pour contenter toutes les requêtes.
# les deux paramètre correspondent au nombre minimal et maximal
# ces 2 nombres peuvent être dépassés durant une courte période
MinSpareServers 5
MaxSpareServers 10
Geoffroy Rabouin
Lycée Bel Air
Page 52
le 09/06/2005
#
# StartServers: Nombre d'instances à démarrer initialement
StartServers 5
#
# MaxClients: Limite maximale d'instance fonctionnant en même temps.
MaxClients 150
#
# MaxRequestsPerChild: Nombre maximum de requête que chaque processus
# hérité peut créer avant de mourir
MaxRequestsPerChild 100
#
# Listen: Permet de faire écouter apache sur des ports spécifiques
# 443 est le port défaut pour le SSL
Listen 443
# On ajoute aussi le port 80, celui par défaut
Listen 80
#
# Permet d'accepter les modules, PHP par exemple
Include /etc/apache-ssl/modules.conf
#
# ExtendedStatus: Indique le niveau de détail que apache doit fournir
# (version, numéro de PID, ...) quand on le lui demande
# Pour plus de sécurité, on lui demande de ne rien fournir
<IfModule mod_status.c>
ExtendedStatus Off
</IfModule>
#
# Port: Le port que apache écoutera par défaut
Port 443
#
# Propriétaire et groupe de l'utilisateur apache
User www-data
Group www-data
#
# ServerAdmin: Mail de l'administrateur du serveur,
# ce mail servira pour envoyer les rapports d'erreurs
ServerAdmin [email protected]
#
# ServerName: Permet d'envoyer un nom aux clients à la place de l'ip
ServerName www.lyceebelair.fr
#
# NameVirtualHost: définit les différents serveurs virtuels que l'on utilisera
NameVirtualHost servweb:80
NameVirtualHost servweb:443
# NameVirtualHost www.lyceebelair.fr:80
# NameVirtualHost www.lyceebelair.fr:443
Geoffroy Rabouin
Lycée Bel Air
Page 53
le 09/06/2005
# NameVirtualHost www.lyceebelair.com:80
# NameVirtualHost www.lyceebelair.com:443
#
# DocumentRoot: Répertoire qui contient les différents documents,
# par défaut toutes les requêtes dirigent vers ce répertoire
DocumentRoot /var/www
#
# On interdit à apache d'accéder au répertoire / et à tous les dossiers qui en dépendent.
<Directory />
Options SymLinksIfOwnerMatch
AllowOverride None
</Directory>
#
# On autorise la lecture du répertoire www pour tous
<Directory /var/www/>
Options Indexes Includes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
#
# Contrôle l'accès aux répertoires HOME. Cela est interdit par raison de sécurité
<IfModule mod_userdir.c>
UserDir public_html
<Directory /home/*/public_html>
AllowOverride FileInfo AuthConfig Limit
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
<Limit GET POST OPTIONS PROPFIND PUT DELETE PATCH PROPPATCH MKCOL COPY MOVE
LOCK UNLOCK>
Order deny,allow
Deny from all
</Limit>
</Directory>
</IfModule>
#
# DirectoryIndex: Nom des fichiers qui serviront de première page par ordre de préférence.
<IfModule mod_dir.c>
DirectoryIndex index.php index.html index.htm index.shtml index.cgi
</IfModule>
#
# AccessFileName: Nom du fichier qui permet la gestion des droits par répertoire
AccessFileName .htaccess
#
# Interdit aux butineurs de voir les fichiers .htaccess
<Files ~ "^\.ht">
Order allow,deny
Deny from all
</Files>
Geoffroy Rabouin
Lycée Bel Air
Page 54
le 09/06/2005
#
# UseCanonicalName: On préfèrera une adresse de type nom_serveur:port
UseCanonicalName Off
#
# TypesConfig: donne le chemin du fichier mime.types, ce fichier contient
# les différentes extensions de fichier
TypesConfig /etc/mime.types
#
# DefaultType: C'est le type de fichier par défaut si on n'arrive pas à le déterminer
DefaultType text/plain
#
# Cette utilitaire permet de trouver le type d'un fichier par son contenu.
# on donne à apache le chemin pour y accéder
<IfModule mod_mime_magic.c>
MIMEMagicFile /usr/share/misc/file/magic.mime
</IfModule>
#
# HostnameLookups: N'enregistre que l'ip du client dans les logs, pas son nom.
# par exemple: www.apache.org (on) ou 204.62.129.132 (off).
HostnameLookups Off
#
# ErrorLog: Emplacement du fichier d'erreurs
ErrorLog /var/log/apache-ssl/error.log
#
# LogLevel: Indique le niveau de danger qui doit être retenu dans les fichiers log.
# soit: debug, info, notice, warn, error, crit, alert, emerg.
LogLevel warn
#
# On crée ces alias de manière a simplifier l'appel aux procédures suivantes
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" \"%{forensic-id}n\" %T %v"
full
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" \"%{forensic-id}n\" %P %T"
debug
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" \"%{forensic-id}n\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{forensic-id}n\"" forensic
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
#
# On définit le format des données enregistrées
CustomLog /var/log/apache-ssl/access.log combined
#
# Ce module n'est plus utilisé, mais pour des raisons de comptabilité,
# il est conseillé de laisser sa configuration
<IfModule mod_log_forensic.c>
ForensicLog /var/log/apache-ssl/forensic.log
</IfModule>
Geoffroy Rabouin
Lycée Bel Air
Page 55
le 09/06/2005
#
# Les 2 mode suivants ne servent que pour enlever les erreurs de compilation, inutile ici
<IfModule mod_backtrace.c>
EnableExceptionHook On
</IfModule>
<IfModule mod_whatkilledus.c>
EnableExceptionHook On
</IfModule>
#
# ServerSignature: on interdit qu'apparaisse le nom du serveur dans les pages erronées
ServerSignature Off
#
# On ajoute ici tous les alias nécessaires aux fonxtionnement de apache.
# Ici, si on tape l'adresse /icons, on sera redirigé vers /usr/share/apache/icons
<IfModule mod_alias.c>
Alias /icons/ /usr/share/apache/icons/
<Directory /usr/share/apache/icons>
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
</IfModule>
#
# Nous n'utilisons pas de script, mais par mesure de sécurité nous laissons
# quand même un répertoire pour ceux-ci, de manière à ne pas permettre
# à quelqu’un d'exécuter n'importe quel fichier
<IfModule mod_alias.c>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory /usr/lib/cgi-bin/>
AllowOverride None
Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
</IfModule>
#
# Permet d'afficher les fichiers d'un répertoire si aucun fichier index n'est présent.
# Nous n'afficherons pas tout pour des raisons de sécurité
<IfModule mod_autoindex.c>
IndexOptions FancyIndexing NameWidth=*
AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip
AddIconByType (TXT,/icons/text.gif) text/*
AddIconByType (IMG,/icons/image2.gif) image/*
AddIconByType (SND,/icons/sound2.gif) audio/*
AddIconByType (VID,/icons/movie.gif) video/*
AddIcon /icons/binary.gif .bin .exe
AddIcon /icons/binhex.gif .hqx
AddIcon /icons/tar.gif .tar
Geoffroy Rabouin
Lycée Bel Air
Page 56
le 09/06/2005
AddIcon /icons/world2.gif .wrl .wrl.gz .vrml .vrm .iv
AddIcon /icons/compressed.gif .Z .z .tgz .gz .zip
AddIcon /icons/a.gif .ps .ai .eps
AddIcon /icons/layout.gif .html .shtml .htm .pdf
AddIcon /icons/text.gif .txt
AddIcon /icons/c.gif .c
AddIcon /icons/p.gif .pl .py
AddIcon /icons/f.gif .for
AddIcon /icons/dvi.gif .dvi
AddIcon /icons/uuencoded.gif .uu
AddIcon /icons/script.gif .conf .sh .shar .csh .ksh .tcl
AddIcon /icons/tex.gif .tex
AddIcon /icons/bomb.gif core
AddIcon /icons/deb.gif .deb
AddIcon /icons/back.gif ..
AddIcon /icons/hand.right.gif README
AddIcon /icons/folder.gif ^^DIRECTORY^^
AddIcon /icons/blank.gif ^^BLANKICON^^
DefaultIcon /icons/unknown.gif
ReadmeName README.html
HeaderName HEADER.html
IndexIgnore .??* *~ *# HEADER.html HEADER.txt RCS CVS *,v *,t
</IfModule>
#
# Tous les types de document connus
<IfModule mod_mime.c>
AddEncoding x-compress Z
AddEncoding x-gzip gz tgz
AddLanguage da .dk
AddLanguage nl .nl
AddLanguage en .en
AddLanguage et .ee
AddLanguage fr .fr
AddLanguage de .de
AddLanguage el .el
AddLanguage it .it
AddLanguage ja .ja
AddCharset ISO-2022-JP .jis
AddLanguage pl .po
AddCharset ISO-8859-2 .iso-pl
AddLanguage pt .pt
AddLanguage pt-br .pt-br
AddLanguage lb .lu
AddLanguage ca .ca
AddLanguage es .es
AddLanguage sv .se
AddLanguage cs .cz
<IfModule mod_negotiation.c>
LanguagePriority en da nl et fr de el it ja pl pt pt-br lb ca es sv
</IfModule>
Geoffroy Rabouin
Lycée Bel Air
Page 57
le 09/06/2005
AddType application/x-tar .tgz
AddType image/bmp .bmp
AddType text/x-hdml .hdml
<IfModule mod_include.c>
AddType text/html .shtml
AddHandler server-parsed .shtml
</IfModule>
</IfModule>
# Le DefaultCharset est le iso-8859-1, il correspond au clavier occidental sans accents
AddDefaultCharset on
#
# On définit ici les paramètres propres aux différents navigateurs
<IfModule mod_setenvif.c>
BrowserMatch "Mozilla/2" nokeepalive
BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0
BrowserMatch "RealPlayer 4\.0" force-response-1.0
BrowserMatch "Java/1\.0" force-response-1.0
BrowserMatch "JDK/1\.0" force-response-1.0
</IfModule>
# Cela est spécifique au plugiciel perl, de même qu'avant, cela ne sert qu'à la compatibilité
<IfModule mod_perl.c>
<IfModule mod_alias.c>
Alias /perl/ /var/www/perl/
</IfModule>
<Location /perl>
SetHandler perl-script
PerlHandler Apache::Registry
Options +ExecCGI
</Location>
</IfModule>
#
# On charge un nombre aléatoire de 1024 bits, de manière à générer un certificat valide et sécurisé
SSLRandomFile file /dev/urandom 1024
SSLRandomFilePerConnection file /dev/urandom 1024
#
# On active SSL par défaut partout, on pourra le désactiver si besoin
SSLEnable
#
# Définit le chemin vers le cache du serveur ainsi que son port et son timeout
SSLCacheServerPath /usr/lib/apache-ssl/gcache
SSLCacheServerPort /var/run/gcache_port
SSLSessionCacheTimeout 15
#
# Chemin pour accéder au certificat
SSLCertificateFile /etc/apache-ssl/apache.pem
Geoffroy Rabouin
Lycée Bel Air
Page 58
le 09/06/2005
#
# Ici, on indique que le client n'a pas besoin d'un certificat pour se connecter au serveur
# et autorise le client à se connecter même si le certificat du serveur est périmé
SSLVerifyClient 0
SSLVerifyDepth 10
SSLUseCRL
SSLCRLCheckAll
SSLOnRevocationSetEnv SSL_REVOKED
SSLOnCRLExpirySetEnv SSL_CRL_EXPIRED
SSLOnNoCRLSetEnv SSL_NO_CRL
#
# Définit un fichier de notification d'évènement personnalisé pour chaque sessions SSL
CustomLog /var/log/apache-ssl/ssl.log "%t %{version}c %{cipher}c %{clientcert}c"
# Ici on définit tous les VirtualHost nécessaires
# Exemple :
# <VirtualHost test:2916>
# ServerName Nom_Serveur
# SSLEnable
# DocumentRoot /var/www/testtest/
# </VirtualHost>
# On accèdera au serveur via le nom test, par le port 2916
# La connection sera sécurisé en SSL
# On se retrouvera dans le répertoire /var/www/testtest/
<VirtualHost servweb:443>
ServerName 192.168.3.1
SSLEnable
DocumentRoot /var/www/https/
</VirtualHost>
<VirtualHost servweb:80>
ServerName 192.168.3.1
SSLDisable
DocumentRoot /var/www/http/
</VirtualHost>
<VirtualHost stage.servweb:443>
ServerName 192.168.3.1
SSLEnable
DocumentRoot /var/www/stage/
</VirtualHost>
<VirtualHost ressource.servweb:443>
ServerName 192.168.3.1
SSLEnable
DocumentRoot /var/www/grr/
</VirtualHost>
# Automatiquement inclut pour favoriser la migration vers apache2
Include /etc/apache-ssl/conf.d
Geoffroy Rabouin
Lycée Bel Air
Page 59
le 09/06/2005
c- VsFTPd
/etc/vsftpd.conf
# /etc/vsftpd.conf
# vsftpd sera lancé via init.d
listen=YES
# On interdit les utilisateurs anonymes
anonymous_enable=NO
# Autorise les utilisateurs du système à se loguer
local_enable=YES
# On autorise l'écriture
write_enable=YES
# Le umask par défaut, on autorise lecture pour tous, mais écriture uniquement pour le propriétaire
local_umask=022
# Désactive le message de bienvenue à chaque changement de répertoire
dirmessage_enable=NO
# On log toutes les connections et tous les transferts
xferlog_enable=YES
# On se connecte via le port 20 (ftp-data)
connect_from_port_20=YES
# Interdit la suppression brusque d'un transfert, cela aurait pu planter le serveur
async_abor_enable=NO
# Interdit l'envoi et la réception de donnée en mode ascii, ce mode n’est plus assez sécurisé
# et on peut faire planter le serveur avec ce type de transfert
ascii_upload_enable=NO
ascii_download_enable=NO
# Message de bienvenue à la connection
ftpd_banner=Bienvenue sur le serveur FTP du lycée Bel-Air.
# On bloque les utilisateurs dans leurs répertoire HOME, il leurs est interdit d'en sortir
chroot_local_user=YES
chroot_list_enable=NO
# Interdit le "ls -R", cela évite de lister les répertoire successif, cela empêche les attaques par déni de service
ls_recurse_enable=NO
# Répertoire de chroot du serveur ftp
secure_chroot_dir=/var/run/vsftpd
# Service de gestion des mot de passe du système
pam_service_name=vsftpd
# Crypte la connection en ssh2
ssl_enable=YES
Geoffroy Rabouin
Lycée Bel Air
Page 60
le 09/06/2005
force_local_data_ssl=YES
force_local_logins_ssl=YES
rsa_cert_file=/etc/ssh/vsftpd_cert.pem
Geoffroy Rabouin
Lycée Bel Air
Page 61
le 09/06/2005
d- samba
/etc/samba/smb.conf
[global]
# ces paramètres vont s’appliquer partout par défaut
# Le nom du domaine NT/workgroup
workgroup = EDULIP
# Description du serveur qui apparaîtra dans l'explorer de Windows
server string = %h serveur (Samba %v)
# Interdit a Samba de chercher les noms netbios sur un serveur DNS, cela est beaucoup plus rapide
dns proxy = no
# On utilise un fichier de log par machine du réseau
log file = /var/log/samba/log.%m
# Définit la taille maximale du fichier de log en Kb
max log size = 1000
# On ne log rien dans les fichiers journaux du système, mais tout dans les journaux de samba
syslog = 0
# Action à effectuer si samba se plante
panic action = /usr/share/samba/panic-action %d
# Permet de n'autoriser un accès à samba qu’aux personnes ayant un compte sur le serveur Unix
security = user
# Crypte les mots de passe
encrypt passwords = true
# Définit la manière de crypter les mot de passe et la politique de sécurité
passdb backend = tdbsam guest
obey pam restrictions = yes
# On interdit l'utilisateur root, root n'a pas besoin de samba, cela évite les attaques par ce serveur
invalid users = root
# Permet la synchronisation entre les mots de passe samba et les mots de passe système
passwd program = /usr/bin/passwd %u
passwd chat = *Enter\snew\sUNIX\spassword:* %n\n *Retype\snew\sUNIX\spassword:* %n\n .
# Accélère la connection au serveur samba
socket options = TCP_NODELAY
# Partage des fichiers HOMES des utilisateurs
[homes]
# Commentaire de ce répertoire
comment = Votre répertoire FTP
# Interdit la visualisation par les autres utilisateurs
browseable = no
# Autorise l'écriture
writable = true
Geoffroy Rabouin
Lycée Bel Air
Page 62
le 09/06/2005
# Masque de création des fichiers et des répertoires (écriture et lecture pour l'auteur, lecture uniquement pour
# les autres)
create mask = 0755
directory mask = 0755
Geoffroy Rabouin
Lycée Bel Air
Page 63
le 09/06/2005
e- MySQL
/etc/mysql/my.cnf
[client]
# On définit le mot de passe et l’identifiant de connexion
password
= mot_de_passe
port
= 3306
socket
= /var/run/mysqld/mysqld.sock
[safe_mysqld]
# Fichier de log
err-log
= /var/log/mysql/mysql.err
[mysqld]
user
= mysql
pid-file = /var/run/mysqld/mysqld.pid
socket
= /var/run/mysqld/mysqld.sock
# On définit le port découte
port
= 3306
# Les différents répertoire de mysqld, le serveur mysql
log
= /var/log/mysql.log
basedir
= /usr
datadir
= /var/lib/mysql
tmpdir
= /tmp
language
= /usr/share/mysql/french
skip-locking
# Permet d'écouter sur le réseau via le port 3306 si cette ligne est commentée
# skip-networking
set-variable
= key_buffer=16M
set-variable
= max_allowed_packet=1M
set-variable
= thread_stack=128K
skip-innodb
[mysqldump]
quick
set-variable
= max_allowed_packet=1M
[isamchk]
set-variable
= key_buffer=16M
Geoffroy Rabouin
Lycée Bel Air
Page 64
le 09/06/2005
f- Divers
1- /etc/hosts
# Sert à faire le lien entre le nom de la machine et son adresse ip
# Le format de ce fichier est :
# adresse_ip
nom1
nom2
nom3
127.0.0.1
localhost.localdomain
localhost
192.168.3.1
servweb.EDULIP
servweb
stage.servweb
ressource.servweb
# Les lignes suivantes sont utiles pour les ordinateurs fonctionnant en IP version 6
# Elles peuvent rester non commentées dans le fichier, cela évitera de les oublier en cas de passage à IPv6
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts
2- /etc/resolv.conf
# Ce fichier sert à la recherche de noms sur un serveur DNS
# Nom du domaine
search EDULIP
# Adresse du serveur DNS
nameserver 194.2.0.20
3- /etc/shutdown.allow
# Ce fichier permet d’autoriser des utilisateurs à éteindre ou redémarrer l’ordinateur
# Ici, on n’autorise que root
root
Geoffroy Rabouin
Lycée Bel Air
Page 65
le 09/06/2005
g- apt
1- /etc/apt/apt-conf
//apt.conf
// La ligne suivante évite que "apt-get autoclean" n'efface de /var/cache/apt/archives les paquets installés
// actuellement.
APT::Clean-Installed "false";
// Ce paramètre permet d'augmenter la valeur par défaut de la place allouée aux noms des paquets gérés par apt
APT::Cache-Limit "12582912";
// Nombre d'essais en cas d'échec d'un téléchargement
Acquire::Retries "5";
2- /etc/apt/preferences
// On définit ici les priorité des paquets
// On préfère la version stable, car stable et très sécurisé.
Package: *
Pin: release a=stable
Pin-Priority: 990
Package: *
Pin: release a=testing
Pin-Priority: 500
Package: *
Pin: release a=unstable
Pin-Priority: 33
Package: *
Pin: release a=experimental
Pin-Priority: 15
3- /etc/apt/sources.list.old
# Liste de tous les endroits où les paquets peuvent être téléchargés
# rendu obsolète par la nouvelle version de Debian
#stable
deb http://security.debian.org woody/updates main contrib non-free
deb http://ftp.fr.debian.org/debian-non-US woody/non-US main contrib non-free
deb http://ftp.fr.debian.org/debian woody main contrib non-free
#testing
deb http://security.debian.org sarge/updates main contrib non-free
deb http://ftp.fr.debian.org/debian-non-US sarge/non-US main contrib non-free
deb http://ftp.fr.debian.org/debian sarge main contrib non-free
Geoffroy Rabouin
Lycée Bel Air
Page 66
le 09/06/2005
#UNSTABLE !
deb http://ftp.fr.debian.org/debian-non-US sid/non-US main contrib non-free
deb http://ftp.fr.debian.org/debian sid main contrib non-free
deb ftp://ftp.oleane.net/pub/java-linux/debian woody non-free
4- /etc/apt/sources.list
# Liste de tous les endroits où les paquets peuvent être téléchargés
# non-us est devenu obsolète, et sarge est passé stable
#stable
deb http://security.debian.org sarge /updates main contrib non-free
deb http://ftp.fr.debian.org/debian sarge main contrib non-free
#testing
deb http://security.debian.org echlt/updates main contrib non-free
deb http://ftp.fr.debian.org/debian echlt main contrib non-free
#UNSTABLE !
deb http://ftp.fr.debian.org/debian sid main contrib non-free
deb ftp://ftp.oleane.net/pub/java-linux/debian sarge non-free
Geoffroy Rabouin
Lycée Bel Air
Page 67
le 09/06/2005
ANNEXE 4
Scripts
Geoffroy Rabouin
Lycée Bel Air
Page 68
le 09/06/2005
Scripts
creer2.sh
#!/bin/bash
# ================
# Création automatique des comptes d'après le fichier users.txt
# appel : ./creer2.sh [users.txt]
# Analyse de la ligne de commande
# a t-on passe un paramètre ?
if [ $ = 1 ]
then
fichier=$1
else
echo "Nom du fichier des comptes Linux a créer [par défaut users.txt]"
read fichier
if [ -z $fichier ]
then
fichier="users.txt"
echo "Utilisation du fichier $fichier pour générer les comptes"
fi
fi
# Le fichier $fichier existe t-il ? Si non, sortie du script par exit 1
if [ ! -e $fichier ]
then
echo "Le fichier $fichier n'existe pas ! Vérifiez !"
exit 1
fi
# Lecture une par une des lignes de $fichier
cat $fichier | while true
do
read ligne
# C’est la fin du fichier --> sortie brutale de la boucle
if [ "$ligne" = "" ]
then
break
fi
# Traitement de la ligne (attention pas de " " autour de $ligne)
# On "éclate" la ligne en affectant les variables de position
set -- $ligne
login=$1
mdp=$2
nom=$3
groupe=$4
echo $login $passwd $groupe $nom
# Existe t-il un sous répertoire au nom $login dans /home/ ?
if [ -d "/home/$login" ]
then
echo "Le compte $login existe deja ! "
# On crée le compte avec $groupe comme groupe primaire
else
mkdir /home/$login
useradd -G $groupe $login -s /dev/nul
echo $login:$mdp | chpasswd
smbpasswd -a $login $mdp
Geoffroy Rabouin
Lycée Bel Air
Page 69
le 09/06/2005
uid=$(grep -w "^$login" /etc/passwd | cut -d: -f3)
echo "creation de $login / uid = $uid / passwd = $mdp"
echo "creation de $login / uid = $uid / passwd = $mdp, cree le $(date)" >>creer.txt
fi
done
# fin de la boucle de creation
echo "----------------------------------------------" >>creer.txt
users.txt
IDENTIFIANT1
IDENTIFIANT2
IDENTIFIANT3
…
Geoffroy Rabouin
Lycée Bel Air
MOT_DE_PASSE1
MOT_DE_PASSE2
MOT_DE_PASSE3
NOM1
NOM2
NOM3
Page 70
GROUPE1
GROUPE2
GROUPE3
le 09/06/2005
ANNEXE 5
Règles du forum
Geoffroy Rabouin
Lycée Bel Air
Page 71
le 09/06/2005
Tout membre du forum quel qu'il soit, ainsi que les invités, sont tenus de respecter ces règles.
Le contenu des avatars et signatures subit les mêmes règles que le contenu des messages. Les
sanctions dépendront de la gravité du problème.
1. Contenu
1. Vous êtes tenu de ne pas abuser de MAJUSCULES, de textes illisibles tant par la
taille que la couleur, de répétitions exagérées de caractères et/ou de mots, ainsi que de smilie.
2. Tout message dont le contenu est choquant, raciste, impoli, ou illégal vis à vis de la
loi française (et de celle de votre pays) sera édité/effacé. L'auteur dudit message sera
sanctionné en fonction de la gravité de son contenu (texte, images, liens hypertextes, etc.).
3. L'utilisation du forum et de ses fonctionnalités (messagerie privée, liste des membres,
signature, etc.) en tant que support publicitaire (spamming) est totalement prohibé.
4. Afin d'obtenir une navigation optimale pour tous, il est fortement déconseillé d'inclure
dans vos messages, des images dont la taille en largeur et/ou hauteur dépasse 500 pixels et
dont le poids dépasse 150 ko. Ces messages seront susceptibles d'être édités par les
modérateurs, et ceci, sans aucun appel.
2. Comportement
1. Tout membre qui ne s'entend pas avec un autre membre pour une raison ou une autre
est prié de régler son différend en privé ou par mail. Le forum doit continuer à constituer un
lieu d'échange et de partage courtois et poli.
2. Afin de conserver une ambiance cordiale sur le forum, les membres du forum doivent
se respecter mutuellement. Ceci est plus un principe logique qu'une règle, mais il est
important de le rappeler, surtout lorsqu'il s'agit d'une communauté.
3. Sujets, messages, forums
1. Veuillez lire les descriptions des forums et poster votre message dans le forum
approprié. Merci aussi de faire une recherche, de lire d'abord le Centre de documentation ainsi
que les post-it et annonces avant de poster votre message.
2. Lorsque vous posez une question, mettez un sujet correspondant à votre problème. Il
est inutile de mettre URGENT, please, Aidez-moi…, problème, ou autre. Chacun doit pouvoir
connaître le thème du message d'après le sujet. N'employez pas de MAJUSCULES dans le
titre de votre message.
3. Si vous devez mettre une copie d'écran lourde et de grande taille, mettez un lien vers
l'image plutôt que de l'insérer directement dans le message afin de ne pas pénaliser les
membres ayant une faible connexion. Ceci ne pourrait que décourager le membre qui ne vous
répondra pas.
4. Si vous trouvez un bug ou une faille, merci d'informer l'équipe en privé plutôt que de
le poster sur le forum.
4. Avatars
1. L'image utilisée pour l'avatar ne doit pas dépasser 130 pixels en largeur, 160 pixels en
hauteur et 25 ko. Les avatars animés sont acceptés si l'animation n'est pas gênante (cela est
laissé à l'appréciation des membres de l'équipe)
Geoffroy Rabouin
Lycée Bel Air
Page 72
le 09/06/2005
2. Il est préférable de ne pas utiliser le même avatar qu'un autre membre.
3. Etant donné que le contenu s'applique aussi aux avatars, tout membre ayant un avatar
pouvant choquer sera prié de l'enlever ou de le remplacer par un avatar plus décent.
5. Signatures
1. Le texte ne doit pas dépasser la taille 15. Il ne doit pas y avoir plus de 6 lignes de
texte normal ou petit (5 en taille 15)
2. Les animations et images de la signature ne doivent pas dépasser 25 ko, 468 pixels en
largeur et 60 pixels en hauteur.
3. Etant donné que le contenu s'applique aussi aux signatures, tout membre ayant une
signature contenant des messages/images/liens choquants ou illégaux sera prié de la changer
ou de l'enlever.
6. Inscriptions
1. Les administrateurs se réserve le droit de refuser les candidatures des personnes ayant
des antécédants sur le forum et des personnes ne voulant que semer la zizanie.
Geoffroy Rabouin
Lycée Bel Air
Page 73
le 09/06/2005
ANNEXE 6
Les risques, les
attaques
Geoffroy Rabouin
Lycée Bel Air
Page 74
le 09/06/2005
a- Le DoS, Denial of Service (déni de service)
Dans ce type d’attaque le premier but est d’empêcher la machine cible d’exécuter ce pour
quoi elle est prévue, si c’est est un serveur web, il ne pourra plus fournir les pages web
demandées. Il y a au moins deux types d’attaques par DoS, le déni de service par
consommation de bande passante (Denial of service attacks via Bandwidth Consumption) et
le déni de service par la consommation d’une autre ressource.
1- Déni de service par consommation de Bande Passante
Le flooding (envoi de beaucoup de données) d’un réseau peut agir sur des équipements de
réseau tel que des switchs et des hubs de façon à affecter la vitesse ou le succès du routage du
trafic. En résumé, toute la bande passante est consommée pour la réception de l’attaque, et
non plus pour le trafic normal. Généralement un réseau est inondé par des paquets d'ICMP
ECHO pour essayer de consommer toute la largeur de bande disponible. Dans la pratique ce
peut être n'importe quel type de paquet. De nos jours un attaquant ne peut pas simplement
utiliser un ordinateur pour assurer une attaque de la mode ci-dessus. La raison de cela est
qu’une simple machine ne peut pas créer assez de demandes pour saturer l'équipement de
réseau, par conséquent il est nécessaire qu’un attaquant coordonne plusieurs ordinateurs pour
inonder une victime.
Comment les ordinateurs sont-ils victimes ? Simple, par email virus/worms qui répandent le
virus aux millions d'ordinateurs. Une fois que le virus "est installée" sur un ordinateur il peut
être dirigé par l'attaquant pour attaquer des victimes serveur.
2- Déni de service par la consommation d’une autre ressource
On peut saturer un serveur par une trop grosse demande de requête sur celui-ci (courrier ou
impression), ainsi il rejettera les demandes légitimes. Les sites Web peuvent tomber parce
qu'un attaquant crée une grande quantité de demandes au serveur. Cela veut dire envoyer des
centaines et des milliers de paquets faux dans une quantité de temps très courte. Dans un
bureau vos capacités d'impression peuvent être détruites par un ouvrier malveillant qui cause
une attaque en envoyant plusieurs grands tirages ou des tirages corrompus qui peuvent planter
l'imprimante. Les attaquants peuvent tirer profit des bogues dans le logiciel qui peut faire
augmenter considérablement l'utilisation de CPU/mémoire pour refuser l’accès non seulement
au service visé mais à tous les services offerts par cette machine. Un firewall peut arrêter un
nombre limité d'attaques de DoS, il peut également filtrer des attaques visant le logiciel
d'exploitation ou des applications. Les firewalls de votre ordinateur familial ne peuvent
généralement pas se protéger contre le flooding. Votre ligne sera pour un temps inondée.
Cependant un firewall peut réduire le flux en bloquant vos réponses à l’attaquant.
b- L'IP Spoofing
C’est une technique largement utilisée dans de nombreux types d'attaques. Du fait de la
possibilité de créer des paquets bruts à l'aide de la programmation RAW SOCKET, il est
possible d'envoyer des paquets avec une fausse adresse IP de source.
Geoffroy Rabouin
Lycée Bel Air
Page 75
le 09/06/2005
1- L’ICMP Spoofing
L'ICMP Spoofing est très certainement le plus répandu car c'est le plus facile à mettre en
oeuvre. Il est très utilisé dans les attaques de type DoS. En effet, les DoS consistent à
déconnecter (ou molester) donc il est préférable de les lancer avec une fausse IP de source de
manière à ne pas se faire repérer. Mais il y a d’autres utilisations plus intelligentes de l'ICMP
Spoofing.
Un exemple d'une telle attaque est l'envoie massif de paquets ICMP type 3
(Destination Unreachable) vers un host donné. Si par exemple on sait que ce host est connecté
à un serveur et qu'on a l'IP du serveur et bien il suffit d'envoyer une multitude de paquets
ICMP type 3 avec une adresse de source correspondant à l'IP du serveur auquel est connecté
l'host en question. Celui-ci va penser que les paquets proviennent effectivement du serveur et
qu'il ne peut pas l'atteindre et donc il va déconnecté spontanément.
Une autre utilisation possible est très bien représentée par le très célèbre Smurf. Il
suffit d'envoyer un paquet ICMP type 8 (Echo request) vers un serveur Broadcast pour que
celui-ci transfert le paquet à toutes les machines de son sous réseau. A la réception de ce
paquet les machines vont répondre par un ICMP type 0 (Echo Reply) à la machine qui avait
envoyé le request. De ce fait si l'on envoie un paquet ICMP type 8 avec une fausse IP de
source à un broadcast, tous les Reply vont être envoyer vers cette fausse IP. Donc si l'on
envoie beaucoup de paquets a beaucoup de broadcast et bien la machine dont on a mis l'IP en
adresse source risque fort d'être déconnectée.
Enfin le dernier type d'attaque et certainement le meilleur est l'utilisation du ICMP
type 5 (Redirect). Ce message est généralement envoyé par un routeur à un host pour lui
préciser qu'il devrait l'utiliser, car la route est plus rapide. Il suffit donc en théorie d'envoyer
un paquet ICMP type 5 à un host avec une IP de source correspond à notre IP et ainsi l'host va
dévier sa route pour passer par notre PC en pensant que c'est un routeur. A ce moment là tout
le jeu consiste à émuler le fonctionnement d'un routeur, c'est à dire router les paquets vers leur
destination et bien sur au passage on les écoute. On peut donc soit recueillir des informations
importantes, soit récupérer des numéros de séquences afin de lancer une attaque de type TCP
Hijack, procédé qui s'apparente au TCP spoofing et qui consiste en fait à prendre la place de
l'host sur la connexion qu'il a avec un serveur.
2- L’UDP Spoofing
Si l'on envoie un paquet à un serveur qui fonctionne avec le protocole UDP, celui-ci traite le
paquet directement. Il n'y a aucunement besoin de satisfaire le processus de connection en 3
étapes nécessaire sous TCP. De ce fait, il est très simple d'envoyer des paquets UDP spoofés.
Un service qui fonctionne sous UDP est le service Talk qui permet à un utilisateur de discuter
avec un autre utilisateur. Si l'on spoof son IP en prenant celle d'un autre utilisateur on pourra
se faire passer pour celui-ci sur le service Talk. Et c'est ainsi qu'on peut obtenir des
informations importantes en se faisant passé pour une personne importante dans la hiérarchie
de l’entreprise.
3- Le TCP Spoofing
Sans doute la meilleure mais aussi la plus difficile a mettre en place, le TCP Spoofing permet
de cacher son IP sur la plupart des services (Telnet, Ftp, Smtp, …) utilisés sur les réseaux
TCP/IP. Le problème avec le TCP Spoofing provient du fait que ce protocole fonctionne en
mode connecté. De ce fait il est nécessaire d’établir une connection. En effet lorsque l'on
envoie notre Syn avec une fausse IP, le serveur renvoie le Ack/Syn vers la fausse IP. Tout le
Geoffroy Rabouin
Lycée Bel Air
Page 76
le 09/06/2005
problème consiste donc à connaître la valeur de l'ISN (Initial Sequence Number) envoyée par
le serveur et ici deux cas se présentent :
- vous êtes sur un LAN (réseau local) et vous essayez de vous faire passer aux yeux du
serveur pour une autre machine. Dans ce cas la manipulation est assez simple. Vous envoyez
votre Syn avec la fausse IP (qui est celle d'une autre machine sur le réseau) le serveur envoie
le Ack/Syn vers cette fausse IP mais la vous avez lancé un sniffer qui va récupérer le
Ack/Syn au passage et donc vous avez la valeur de l'ISN du serveur. Il ne vous reste plus qu’à
renvoyer le Ack correspondant (toujours avec la fausse IP) et la connection est établie.
Cependant encore une fois ce n'est pas aussi simple car la machine dont vous essayez de
spoofer l'IP va aussi recevoir le Ack/Syn du serveur mais puisqu'elle n'a pas envoyé de Syn
elle va automatiquement envoyé un Rst au serveur ce qui aura pour but de fermer la
connexion. Pour que ce phénomène ne se produise pas il y 2 possibilités: soit on déconnecte
la machine du réseau physiquement, soit on utilise une attaque de type DoS de manière à
prendre toute la bande passante de la machine dont on veut prendre l'IP et ainsi l'empêcher
d'envoyer le Rst ou même l'empêcher de recevoir le Syn/Ack. Cette méthode est très utile
quand on l'utilise sur des services de type rlogin par exemple.
- vous êtes sur internet et vous souhaitez avoir une IP quelconque pour vous connecter a
un serveur qui utilise TCP. Et bien là les choses se compliquent pour récupérer le Ack/Syn du
serveur, si vous avez accès au réseau local du serveur (routeur compromis) la technique est
identique à celle utilisée sur un LAN, vous sniffez le Ack/Syn au niveau du routeur. Si par
contre vous n'avez accès à rien et bien la seule solution est de prédire l'ISN que va envoyer le
serveur de manière à acquitter le serveur. Les ISN sont gérés 'aléatoirement' mais comme rien
n'est vraiment aléatoire en informatique il est possible de prédire l'ISN qui va être envoyé à
partir de valeurs d'ISN envoyés précédemment. De manière à étudier l'évolution des ISN en
fonction du temps notamment, il faudra récupérer plusieurs ISN et essayer d'établir des
corrélations avec le temps et le nombre de connections à l'aide de régressions (linéaires,
exponentielles....) et aussi vérifier l'algorithme de génération des ISN dans la pile TCP/IP de
l'OS en question. Bref c'est loin d'être facile surtout sur des systèmes de type *nix qui nous
renvoient souvent des Difficulty=999999 lorsque l'on scan avec Nmap. Ce nombre correspond
à la difficulté de la prédiction de séquence. Mais, vous avez certainement remarqué que les
OS Microsoft renvoyaient des valeurs comprises en 1 et 50 pour la plupart du temps (avec
une petite remarque précisant que la génération des numéros de séquence dépend
implicitement du temps). Il est donc assez facile de prédire l'ISN sur de tels systèmes.
Le TCP Spoofing a été le plus largement utilisé avec le service rlogin. Ce service permet de
se connecter à un serveur comme avec un Telnet, mais à ceci près que l'authentification se fait
par l'IP et non par la combinaison login/pass. Si l'on spoofe l'IP de quelqu'un autorisé à se
connecter au serveur en rlogin et bien on pourra se connecter sans aucun problème et obtenir
un shell.
c- Le cheval de troie
Le cheval de troie est un programme informatique effectuant des opérations malicieuses à
l'insu de l'utilisateur. Le nom "Cheval de Troie" provient d'une légende narrée dans l'Iliade
(Homère) à propos du siège de la ville de Troie par les Grecs. La légende veut que les Grecs,
n'arrivant pas à pénétrer dans les fortifications de la ville, aient l'idée de donner en cadeau un
énorme cheval de bois en offrande à la ville en abandonnant le siège. Les troyens (peuple de
Geoffroy Rabouin
Lycée Bel Air
Page 77
le 09/06/2005
la ville de Troie), apprécièrent cette offrande à priori inoffensive et la ramenèrent dans les
murs de la ville. Cependant le cheval était rempli de soldats cachés qui s'empressèrent d'en
sortir à la tombée de la nuit, alors que la ville entière était endormie, pour ouvrir les portes de
la cité et en donner l'accès au reste de l'armée…
Un cheval de Troie (informatique) est donc un programme caché dans un autre qui exécute
des commandes sournoises, et qui généralement donne un accès à la machine sur laquelle il
est exécuté en ouvrant une porte dérobée (en anglais backdoor), par extension il est parfois
nommé troyen par analogie avec les habitants de la ville de Troie. Le trojan est composé de 2
parties, le client est utilisé par le pirate et le serveur doit être exécuté sur la machine victime.
Un peu comme le virus, le cheval de Troie est un code (programme) nuisible placé dans un
programme sain.
Un cheval de Troie peut par exemple
• voler des mots de passe
• copier des données sensibles
• exécuter tout autre action nuisible…
Pire, un tel programme peut créer, de l'intérieur de votre réseau, une brèche volontaire dans la
sécurité pour autoriser des accès à des parties protégées du réseau à l’intention des personnes
se connectant de l'extérieur.
Les principaux chevaux de Troie sont des programmes ouvrant des ports de la machine, c'està-dire permettant à son concepteur de s'introduire sur votre machine par le réseau en ouvrant
une porte dérobée. C'est la raison pour laquelle on parle généralement de backdoor
(littéralement porte de derrière) ou de back orifice. A l’origine, les trojans étaient utilisés par
les hackers une fois qu’ils étaient entrés dans un système pour ne pas avoir à recasser toutes
les protections, mais maintenant, la plupart des « lamerz », ceux qui croient tout connaître
parce qu’ils ont réussi à configurer un trojan ou lus des cours sur le réseau, utilisent les
trojans pour infecter des ordinateurs (écoles, amis, proches, …)
De nombreux troyens existent :
Subseven, donalddick, beast, optix pro, Y3T, MiniMo …
Il existe plusieurs méthodes pour « cacher » le troyen :
_ la méthode classique consiste à simuler un message d’erreur lors de son lancement, afin de
ne pas inquiéter la victime.
_ une autre méthode consiste à « binder » le trojan avec un autre fichier exécutable, le trojan
s’exécutera en arrière plan, et l’autre application se lancera, la victime ne remarquera pas que
son PC lance 2 processus.
_ On peut également changer l’icône du serveur, la victime ne s’inquiètera pas en voyant une
icône de fichier texte ou d’image, c’est pourquoi de plus en plus de personnes choisissent
d’afficher les extensions des fichiers.
_ On peut également jumeler le serveur avec un fichier quelconque, un fichier texte peut très
bien renfermer du code, de même pour un fichier .jpg ou .bmp qui ne devrait contenir que de
l’image … Et cela va tromper la victime qui verra la bonne extension pour son fichier.
Geoffroy Rabouin
Lycée Bel Air
Page 78
le 09/06/2005

Documents pareils