78
Rapport de stage IUT de La Rochelle Département GTR Promotion 2003/2005 Par RABOUIN Geoffroy Sous la tutelle de Monsieur Octavien Yves Installation configuration et sécurisation d’un serveur web et ftp LYCEE BEL-AIR, FONTENAY LE COMTE

Installation configuration et sécurisation d’un serveur ...fil.leon.free.fr/Rapport_de_stage_de_Geoffroy_Rabouin.pdf · impossible compte tenu de la volonté de sécuriser le système

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Rapport de stage

IUT de La Rochelle Département GTR Promotion 2003/2005

Par RABOUIN Geoffroy Sous la tutelle de Monsieur Octavien Yves

Installation configuration

et sécurisation

d’un serveur web et ftp

LYCEE BEL-AIR, FONTENAY LE COMTE

Geoffroy Rabouin Page 2 le 09/06/2005 Lycée Bel Air

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 Page 3 le 09/06/2005 Lycée Bel Air

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 Page 4 le 09/06/2005 Lycée Bel Air

I- Le contexte page 5 1- Sujet du stage page 5

2- État de l’existant page 5

3- Le lycée page 5

4- Les nouveaux outils page 6

II- Déroulement page 6 1- Préliminaire page 6

2- Free-EOS, solution clé en main page 6

3- Serveur Debian, le changement page 7

a- L’aspect matériel, sécurisation page 8 b- OpenSSH, la sécurisation logiciel page 9 c- Apache, le serveur web page 10 d- Vsftpd, le serveur FTP page 11 e- Samba, le partage pour Windows page 12 f- MySQL, le serveur de base de données page 13 g- Test de stabilité et de failles page 13 h- Passage de woody vers sarge page 16

4- Symantec Ghost et l’open source page 17

a- Unatended page 17 b- ANI page 17 c- PartImage page 18 d- g4u page 18 e- Conclusion page 18

5- Le forum des anciens BTS page 19

a- La base page 19 b- Les modifications page 19

1- Arcade page 20 2- Attach’mod page 20 3- Thèmes page 20

6- Audit du réseau page 21

Geoffroy Rabouin Page 5 le 09/06/2005 Lycée Bel Air

7- IpCOP, un firewall très efficace page 22

a- Généralités sur les firewalls page 22 b- Fonctionnement page 23 c- Ajouts page 23

III- Avis personnel page 23

1- L’Humain page 23 2- La Machine page 23

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

a- OpenSSH 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 page57 1- /etc/hosts page57 2- /etc/resolv.conf page57 3- /etc/shutdown.allow page57

g- Apt page58 1- /etc/apt/apt-conf page58 2- /etc/apt/preferences page58 3- /etc/apt/sources.list.old page58 4- /etc/apt/sources.list page59

Geoffroy Rabouin Page 6 le 09/06/2005 Lycée Bel Air

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

a. Le DoS, Denial of Service (déni de service) page 67 1- Déni de service par consommation de Bande Passante page 67 2- Déni de service par la consommation d’une autre ressource page 67

b. L'IP Spoofing page 67 1- L’ICMP Spoofing page 67 2- L’UDP Spoofing page 68 3- Le TCP Spoofing page 68

c. Le cheval de troie page 69

Geoffroy Rabouin Page 7 le 09/06/2005 Lycée Bel Air

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 Page 8 le 09/06/2005 Lycée Bel Air

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 Page 9 le 09/06/2005 Lycée Bel Air

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 Page 10 le 09/06/2005 Lycée Bel Air

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 Page 11 le 09/06/2005 Lycée Bel Air

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 Page 12 le 09/06/2005 Lycée Bel Air

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 Page 13 le 09/06/2005 Lycée Bel Air

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 Page 14 le 09/06/2005 Lycée Bel Air

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 Page 15 le 09/06/2005 Lycée Bel Air

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 Page 16 le 09/06/2005 Lycée Bel Air

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 Page 17 le 09/06/2005 Lycée Bel Air

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 Page 18 le 09/06/2005 Lycée Bel Air

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 : apt-get update # cela va mettre à jour la base des paquets 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 Page 19 le 09/06/2005 Lycée Bel Air

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 Page 20 le 09/06/2005 Lycée Bel Air

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 Page 21 le 09/06/2005 Lycée Bel Air

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 Page 22 le 09/06/2005 Lycée Bel Air

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 Page 23 le 09/06/2005 Lycée Bel Air

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 Page 24 le 09/06/2005 Lycée Bel Air

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 Page 25 le 09/06/2005 Lycée Bel Air

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 Page 26 le 09/06/2005 Lycée Bel Air

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 Page 27 le 09/06/2005 Lycée Bel Air

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 Page 28 le 09/06/2005 Lycée Bel Air

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 Page 29 le 09/06/2005 Lycée Bel Air

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 Page 30 le 09/06/2005 Lycée Bel Air

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 Page 31 le 09/06/2005 Lycée Bel Air

IV ANNEXES

Geoffroy Rabouin Page 32 le 09/06/2005 Lycée Bel Air

ANNEXE 1 Création d’un

serveur Web et FTP pour le lycée Bel-Air, Fontenay Le Comte

Geoffroy Rabouin Page 33 le 09/06/2005 Lycée Bel Air

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 Page 34 le 09/06/2005 Lycée Bel Air

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 Page 35 le 09/06/2005 Lycée Bel Air

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 Page 36 le 09/06/2005 Lycée Bel Air

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 Page 37 le 09/06/2005 Lycée Bel Air

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 Page 38 le 09/06/2005 Lycée Bel Air

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 Page 39 le 09/06/2005 Lycée Bel Air

a. 1ère 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 500 300 40 40 10 Utilisation intensive intensive intensive modérée modérée

Vitesse du processeur (Mhz) 800 700 600 400 100 Mémoire vive minimale (Mo) 384 256 256 128 64

Taille disque dur (Go) 20 15 10 6 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.

b. 2ème solution 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 Page 40 le 09/06/2005 Lycée Bel Air

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

i686.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 Page 41 le 09/06/2005 Lycée Bel Air

GD (http://www.boutell.com/gd) http://www.boutell.com/gd/http/gd-2.0.33.tar.gz MD5: be0a6d326cd8567e736fbc75df0a5c45

Geoffroy Rabouin Page 42 le 09/06/2005 Lycée Bel Air

ANNEXE 2 Introduction à

FileZilla

Geoffroy Rabouin Page 43 le 09/06/2005 Lycée Bel Air

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 ). La fenêtre suivante s’ouvre :

Geoffroy Rabouin Page 44 le 09/06/2005 Lycée Bel Air

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 Page 45 le 09/06/2005 Lycée Bel Air

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 Page 46 le 09/06/2005 Lycée Bel Air

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 Page 47 le 09/06/2005 Lycée Bel Air

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 Page 48 le 09/06/2005 Lycée Bel Air

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 Page 49 le 09/06/2005 Lycée Bel Air

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 Page 50 le 09/06/2005 Lycée Bel Air

ANNEXE 3 Fichiers de

configuration

Geoffroy Rabouin Page 51 le 09/06/2005 Lycée Bel Air

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 Page 52 le 09/06/2005 Lycée Bel Air

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 Page 53 le 09/06/2005 Lycée Bel Air

# # 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 Page 54 le 09/06/2005 Lycée Bel Air

# 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 Page 55 le 09/06/2005 Lycée Bel Air

# # 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 Page 56 le 09/06/2005 Lycée Bel Air

# # 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 Page 57 le 09/06/2005 Lycée Bel Air

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 Page 58 le 09/06/2005 Lycée Bel Air

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 Page 59 le 09/06/2005 Lycée Bel Air

# # 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 Page 60 le 09/06/2005 Lycée Bel Air

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 Page 61 le 09/06/2005 Lycée Bel Air

force_local_data_ssl=YES force_local_logins_ssl=YES rsa_cert_file=/etc/ssh/vsftpd_cert.pem

Geoffroy Rabouin Page 62 le 09/06/2005 Lycée Bel Air

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 Page 63 le 09/06/2005 Lycée Bel Air

# 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 Page 64 le 09/06/2005 Lycée Bel Air

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 Page 65 le 09/06/2005 Lycée Bel Air

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 Page 66 le 09/06/2005 Lycée Bel Air

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 Page 67 le 09/06/2005 Lycée Bel Air

#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 Page 68 le 09/06/2005 Lycée Bel Air

ANNEXE 4 Scripts

Geoffroy Rabouin Page 69 le 09/06/2005 Lycée Bel Air

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 Page 70 le 09/06/2005 Lycée Bel Air

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 MOT_DE_PASSE1 NOM1 GROUPE1 IDENTIFIANT2 MOT_DE_PASSE2 NOM2 GROUPE2 IDENTIFIANT3 MOT_DE_PASSE3 NOM3 GROUPE3 …

Geoffroy Rabouin Page 71 le 09/06/2005 Lycée Bel Air

ANNEXE 5 Règles du forum

Geoffroy Rabouin Page 72 le 09/06/2005 Lycée Bel Air

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 Page 73 le 09/06/2005 Lycée Bel Air

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 Page 74 le 09/06/2005 Lycée Bel Air

ANNEXE 6 Les risques, les

attaques

Geoffroy Rabouin Page 75 le 09/06/2005 Lycée Bel Air

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 Page 76 le 09/06/2005 Lycée Bel Air

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 Page 77 le 09/06/2005 Lycée Bel Air

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 Page 78 le 09/06/2005 Lycée Bel Air

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.