Vous êtes sur la page 1sur 155

1

2
Sommaire

Sommaire...........................................................................................3
Remerciements...................................................................................5
Introduction.......................................................................................6
I.Présentation du projet......................................................................7
1)Contexte du projet........................................................................................... 7
2)Objectifs du projet............................................................................................ 7
3) Gestion du projet............................................................................................ 7
a)Modélisation.................................................................................................. 8
b)Diagramme de séquences............................................................................ 9
c)Diagramme d’activité.................................................................................. 11
d)Diagramme de Gantt prévisionnel..............................................................12
e)Tableau des ressources prévisionnelles des tâches de l'équipe..................14
f)Tableau des ressources prévisionnelles par membre de l'équipe.................15
g)Diagramme de Gantt réel........................................................................... 17
h)Tableau des ressources réelles des tâches de l'équipe...............................19
i)Tableau des ressources réelles par membre de l'équipe..............................20
j)Chiffrage...................................................................................................... 22
II.Cahier des charges.........................................................................23
1)Présentation globale du projet.......................................................................23
a)L’entreprise................................................................................................. 23
b)Objectif....................................................................................................... 23
c)Périmètre du projet..................................................................................... 23
2)Description graphique.................................................................................... 24
a)Charte graphique........................................................................................ 24
b) Réseau global............................................................................................. 25
3)Modalités du projet........................................................................................ 25
a)Prestations attendues................................................................................. 25
b)Planning et délai......................................................................................... 25
III.Spécifications...............................................................................26
1)Système d'exploitation des services..............................................................26
2)Modèle Conceptuel de Données.....................................................................26
IV.Conception et architecture.............................................................27
1)Adressage...................................................................................................... 27
2)Services......................................................................................................... 27
3) Gestion des risques....................................................................................... 33

3
V.Réalisation du projet......................................................................34
1)Division des tâches techniques......................................................................34
2)Maquettage individuelle................................................................................. 34
3)Maquettage commun..................................................................................... 34
4)Tests............................................................................................................... 35
Conclusion........................................................................................36
Annexes...........................................................................................37
Procédures......................................................................................................... 38
Installation et de configuration de PfSense....................................................38
Proxy.............................................................................................................. 41
Clam............................................................................................................... 46
DHCP.............................................................................................................. 50
IPsec............................................................................................................... 52
OpenVPN........................................................................................................ 58
SNORT............................................................................................................ 71
Samba............................................................................................................ 80
SQL................................................................................................................. 85
Apache........................................................................................................... 90
HTTPS........................................................................................................... 109
Messagerie................................................................................................... 116
Installation du serveur LDAP........................................................................133
Annuaire LDAP.............................................................................................. 141
NAT............................................................................................................... 147
Firewall......................................................................................................... 149
Lexiques.........................................................................................152

4
Remerciements

Nous tenons tout d’abord à remercier notre professeur référent sur ce projet,
Monsieur ESSAYED MESSAOUDI Driss, pour sa disponibilité et ses conseils.

Nous souhaitons aussi remercier Monsieur RAMADANE CHERIF Amar pour nous
avoir guidés lors de la gestion du projet.

Enfin, nous remercions l’ensemble des enseignants de l’IUT de Vélizy-Villacoublay


pour leur accompagnement, leur écoute et leurs conseils avisés.

5
Introduction

Ce projet de fin d’année a pour principal objectif de nous placer dans un contexte
professionnel afin que nous puissions développer une certaine autonomie et un
sens des responsabilités, intégrer un groupe de travail et mettre en pratique les
différentes connaissances acquises lors de cette année en licence professionnelle
MRIT.

Il était important pour nous de valider et de consolider nos compétences sur le


plan technique, les infrastructures réseaux, mais également au niveau
organisationnel, conception et gestion d’un projet.

Ce mémoire va nous permettre de vous présenter les objectifs de notre projet et


la méthodologie de travail suivie durant l’avancement du projet. Nous conclurons
par un bilan qui nous permettra d’exposer les apports de ce projet sur un plan
personnel et professionnel.

6
I. Présentation du projet

1) Contexte du projet

Afin de valider les connaissances acquises lors de la licence professionnelle MRIT,


nous devons mener à terme un projet tuteuré axé sur la mise en place d’une
architecture réseau virtualisée et sécurisée, la gestion d’une base de données et
l’informatique décisionnelle.

Durant ce projet, nous allons concevoir et réaliser une architecture réseau qui
recensera différents services qui aura pour but une organisation et une
communication opérationnelle en sein de la société « IRONCARBONE ».

Ce projet a été réalisé par une équipe de quatre étudiants, MANGASSI Sahdio,
PRETEUX Florent, TAVARES SOARES Mélanie et TOUNKARA Modibo, encadré par
Monsieur RAMADANE CHERIF Amar pour la partie gestion de projet et Monsieur
ESSAYED MESSAOUDI Driss pour la partie technique.

2) Objectifs du projet

L’architecture réseau créée a pour objectifs de répondre aux besoins et aux


impératifs de l’entreprise IRONCARBONE qui comporte trois sites : Vélizy, Rome
et Paris (siège social). Le service commercial est composé majoritairement
d’ingénieurs spécialisés dans les transactions commerciales. Ces ingénieurs
négocient aussi bien avec des compagnies françaises qu’étrangères, ils doivent à
tout moment et en tout lieu accéder aux informations commerciales des produits
qui sont sensibles. Ce qui impose une liaison sécurisée pour chaque ingénieur.

3) Gestion du projet

Pour mener à bien notre projet, nous avons décidé de suivre le modèle du cycle
en V. Ce modèle conceptuel de gestion de projet est apparu dans les années 80
afin de faire face aux problèmes de réactivité du modèle en cascade. En effet, ce
modèle permet de limiter le retour aux étapes précédentes lorsqu’une anomalie
est détectée.
Étant donné le temps imparti pour réaliser notre projet et les fortes
recommandations reçues par l’encadrement pédagogique, ce modèle de gestion
de projet nous a semblé être le plus approprié à notre situation car notre
architecture réseau sera totalement spécifiée avant de débuter la mise en œuvre
des services.

Figure n°1 : Cycle en V

7
a) Modélisation

Figure n°2 : Modélisation

8
b) Diagramme de séquences

1. L'utilisateur allume l’ordinateur


2. L’ordinateur affiche la fenêtre pour saisir les identifiants de session
3. L ‘utilisateur saisi ses identifiants de connexion à sa session
4. Envoie des identifiants au serveur LDAP 1
5. Les identifiants sont comparés au contenu de l'annuaire
6. Les identifiants sont corrects l'accès au poste est autorisé
7. L'utilisateur accède au réseau en fonction de ses droits
8. L'utilisateur clique sur OpenVPN2
9. Le système lance la fenêtre OpenVPN
10. L'application OpenVPN demande les identifiants de connexion
11. L'utilisateur saisi ses identifiants LDAP
12. Envoi des identifiants au serveur LDAP
13. Les identifiants sont comparés au contenu de l'annuaire LDAP
14. Les identifiants sont corrects
15. Le serveur LDAP envoi une requête pour connecter l'utilisateur authentifié
16. L'application OpenVPN donne l'accès au VPN 3
17. Affiche : Authentication successful

9
Figure n°3 : Diagramme de séquences

10
c) Diagramme d’activité

Figure n°4 : Diagramme d'activité

11
d) Diagramme de Gantt prévisionnel

Nous avons établi un diagramme de Gantt prévisionnel pour la réalisation du projet dont en voici les tâches :

Figure n°5 : Tâches prévisionnelles du projet

12
Puis le diagramme de Gantt prévisionnel :

Figure n°6 : Diagramme de Gantt prévisionnel

13
e) Tableau des ressources prévisionnelles des tâches de l'équipe

Figure n°7 : Tableau des ressources prévisionnelles de l'équipe

14
f) Tableau des ressources prévisionnelles par membre de l'équipe

Figure n°8 : Tableau des ressources prévisionnelles de Florent

Figure n°9 : Tableau des ressources prévisionnelles de Mélanie

15
Figure n°10 : Tableau des ressources prévisionnelles de Modibo

Figure n°11 : Tableau des ressources prévisionnelles de Sahdio

16
g) Diagramme de Gantt réel

Nous avons établi un diagramme de Gantt réel à la fin de notre projet dont en voici les tâches :

Figure n°12 : Tâches réel du projet

17
Puis le diagramme de Gantt réel :

Figure n°13 : Diagramme de Gantt réel

18
h) Tableau des ressources réelles des tâches de l'équipe

Figure n°14 : Tableau des ressources réelles de l'équipe

19
i) Tableau des ressources réelles par membre de l'équipe

Figure n°15 : Tableau des ressources réelles de Florent

Figure n°16 : Tableau des ressources réelles de Mélanie

20
Figure n°17 : Tableau des ressources réelles de Modibo

Figure n°18 : Tableau des ressources réelles de Sahdio

21
j) Chiffrage

22
II. Cahier des charges

Le cahier des charges va nous permettre de formaliser les besoins. Afin de


rédiger ce dernier, nous avons simulé une demande venant de la maîtrise
d’ouvrage. Par la suite, il nous servira de référentiel tout au long du projet.

1) Présentation globale du projet

a) L’entreprise

La société IRONCARBONE est leader dans la fabrication et la distribution de tubes


en acier inoxydable sans soudure destinés à une industrie à forte contrainte de
sécurité. Elle utilise deux principes de fabrication : le filage et l’étirage. La
production est réalisée sur trois sites, Vélizy, Rome et Paris (siège social). Chaque
site conçoit des tubes avec des diamètres spécifiques.

Figure n°19 : IronCarbone

b) Objectif

IRONCARBONE fabrique et distribue des tubes en acier inoxydable sans soudure


afin de générer du chiffre d’affaires et d’optimiser dans le futur, la sécurité des
équipements, la qualité ainsi que sa relation cliente.

c) Périmètre du projet

La société comprend trois sites qui seront organisés au siège social (Paris) de
façon virtuelle.

Le délai imparti ne nous permet pas, pour le moment, d’inclure l’authentification


des portables avec le routeur dans le périmètre du projet.
2) Description graphique

a) Charte graphique

Il a été décidé que PfSense4 se charge des services suivants :

Figure n°20 : PfSense

Nous avons pris la décision de créer une architecture avec un PfSense


comprenant une grande partie des services compte tenu du temps imparti. Ainsi,
70% des services sont configurés sur PfSense.

Pour éviter l’interruption des services intégrés dans PfSense en cas de


dysfonctionnement de celui-ci, un deuxième PfSense est présent en parallèle
(failover5) afin de prendre la relève de tous les services.

Figure n°21 : Répartition des services


Le serveur Web a été créé avec le logiciel libre Apache, le plus populaire des
serveurs HTTP6. De plus, un serveur de messagerie a été mis en place ainsi qu'un
annuaire LDAP.
Ces services sont susceptibles d'être accédées depuis Internet, nous avons donc
mis en place une DMZ7.

b) Réseau global

Figure n°22 : schéma réseau

Sur chaque site, nous trouvons un PfSense, avec son failover, connecté à deux
commutateurs8, l'un pour les utilisateurs, l'autre pour les serveurs. Nous
reviendrons sur ce sujet plus en profondeur dans la partie « Conception et
architecture », page 27.

3) Modalités du projet

a) Prestations attendues

Le prestataire devra s’acquitter des tâches suivantes :


- mettre en place une architecture réseau ;
- Sécurisée le réseau ;
- Implémenter une base de données ;
- Présenter le projet grâce aux outils de gestion de projets ;
- Quantifier financièrement l’étude.

b) Planning et délai

Le projet devra débuter au plus tard le 7 Mars 2016 pour une livraison finale
prévue à la mi-Juin 2016.
III. Spécifications

1) Système d'exploitation des services

PFSENSE (FreeBSD) WINDOWS LINUX


DHCP9 ANTIVIRUS APACHE17
NAT10 LDAP
VPN MESSAGERIE
PROXY/ANTIVIRUS11 SAMBA18
DNS12
SNORT13
HTTPS14
SSH15
FIREWALL16

2) Modèle Conceptuel de Données

Le Modèle Conceptuel de Données19 (MCD) nous a permis de formaliser les


données qui seront utilisées par le site Web :

Figure n°23 : Modèle Conceptuel de Données

La commande d’un client concerne une ou plusieurs références de tube avec une
quantité à produire pour chaque référence. Elle déclenche une ou plusieurs
productions.
IV. Conception et architecture

1) Adressage

Utilisateurs Management INFO DMZ

Paris 192.168.2.0/24 192.168.1.0/24 192.168.3.0/24 192.168.4.0/24

Rome 192.168.5.0/24 X X X

Vélizy 192.168.6.0/24 X X X

Chaque site possède deux réseaux : l'un pour les utilisateurs et l'autre pour la
DMZ. Pour le siège social (Paris), nous avons définit la DMZ dans le réseau
192.168.4.0/24.

PARIS

UTILISATEURS (DHCP) 192.168.2.0 à 192.168.2.100 / 24

SERVEURS (DMZ) 192.168.4.0/24

PFSENSE 192.168.1.1/24

LDAP (INFO) 192.168.3.2/24

SAMBA (INFO) 192.168.3.3/24

APACHE (DMZ) 192.168.4.2/24

MESSAGERIE (DMZ) 192.168.4.3/24

Comme indiqué sur le premier tableau, le réseau pour les utilisateurs est
192.168.2.0/24 et ceci en DHCP sur une plage allant de 192.168.2.0 à
192.168.2.100 en /24.

Le réseau DMZ 192.168.4.0/24 regroupe donc les serveurs de l'infrastructure


réseau c'est-à-dire le PfSense (et son failover), le serveur LDAP, le serveur
Samba, le serveur Web ainsi que le serveur de messagerie.

2) Services

Nous avons utilisé différentes technologies pour mettre en œuvre le réseau


d’IRONCARBONE.

 DHCP
Le DHCP pour Dynamic Host Configuration Protocol, délivre des adresses IP 20 aux
ordinateurs qui se connectent sur le réseau. On y configure la durée des baux (la
durée d'une adresse IP attribué, à expiration, cette adresse est de nouveau
disponible) et les paramétrages réseaux qui combinent une adresse IP suivie de
son masque de sous-réseau.
Pour l'attribution d'une adresses IP, les requêtes sont les suivantes :

– DHCPDISCOVER pour localiser les serveurs DHCP disponibles ;


– DHCPOFFER où le serveur DHCP répond au client qui contient les premiers
paramétrages ;
– DHCPREQUEST où le client peut prolonger son bail par exemple ;
– DHCPACK pour envoyer des paramètres et l'adresse IP au client.

Le nombre de postes au siège social est de 29 et 21 dans chacun des deux autres
sites. Il aurait été possible d'attribuer les adresses IP en statique mais cela
donnera du travail dans le cadre d'une extension du parc informatique. C'est pour
cela que nous avons attribué les postes en DHCP.
La plage d'adresses au siège social est de 192.168.2.1 à 192.168.2.100 avec
comme masque de sous-réseau 255.255.255.0.

 DNS

Le DNS pour Domain Name System, permet d'associer une adresse IP à un nom
appelé « nom de domaine » ou des adresses plus explicites appelées adresses
« FQDN » (Fully Qualified Domain Name 21). La corrélation entre les noms de
domaine et les adresses IP s'appelle la « résolution de noms de domaines ».

Ainsi, le DNS permet de faciliter l'accès à des ressources.

 SSH

SSH est un protocole de communication sécurisé contrairement à Telnet qui


n’offre aucune sécurité de connexion.

Dès le début de la connexion un échange de clé de chiffrement a lieu, puis tous


les échanges TCP22 sont authentifiés et cryptés (cryptographie asymétrique 23
RSA).

SSH permet entre autres d’administrer les serveurs à distance de façon sécurisée
et de transférer des fichiers (SFTP24).

 HTTPS

HTTPS (Hypertext Transfer Protocol Secure ou protocole de transfert hypertexte


sécurisé) est un protocole de communication Internet qui protège l'intégrité et la
confidentialité des données de vos visiteurs lors du transfert d'informations entre
l'ordinateur de l'internaute et le serveur.

On sait que le protocole HTTP à des failles qui peuvent être exploitées par les
attaquants. Pour une connexion sécurisée entre les clients et le serveur PfSense,
il fallait obligatoire sécuriser notre serveur avec le protocole HTTPS.

HTTPS garantit la confidentialité et l'intégrité des données envoyées par


l'utilisateur et reçues du serveur. Il permet de valider l'identité du visiteur, si
celui-ci utilise également un certificat d'authentification client.
Pour la mise en place, nous avons créé une autorité de certification CA 25 qui est
CA-ironcarbone sur le Pfsense. Le client et le serveur sont authentifiés à l’aide de
certificats. Ces certificats ont été émis par CA-ironcarbone reconnus comme sûr
aussi bien par le serveur que le client.

 SNORT

Snort est un détecteur d'intrusion aussi appelé IDS 26 pour Intrusion Detection
System. Il existe deux possibilités d'installer un IDS :
– NIDS (Netowrk Intrusion Detection System)
– HIDS (Host Intrusion Detection System).

Snort est un NIDS, il travaille sur les données transitant sur le réseau. Il peut
détecter en temps réel une attaque s'effectuant sur une machine.
Il est gratuit et est l'un des plus actifs NIDS Open Source avec une communauté
importante contribuant à son succès. Il fonctionne avec des règles fournies par la
communauté qui permet d'envoyer un message d'alerte en fonction du paquet
suspecté.

L'en-tête des règles contient :


– L'action de la règle (la réaction de SNORT) ;
– Le protocole qui est utilisé (SNORT en considèrent trois : TCP, UDP27 et
ICMP28) ;
– Les adresses IP source et destination et leur masque ;
– Les ports source et destination sur lesquels il faudra vérifier les paquets.

Un exemple avec une règle qui permet de détecter les tentatives de login sous
l'utilisateur root pour le protocole FTP29 (port 21) :

alert tcp any any → <adresseIP/masque> 21 (content : « USER root » ; nocase ;


msg : « Tentative d'accès au FTP pour l'utilisateur root »;)

Les messages en direction de cette plage d'adresses IP effectuant une tentative


de login root auront pour conséquence la génération de l'alerte « Tentative
d'accès au FTP pour l'utilisateur root ».

 LDAP

LDAP est un annuaire qui permet de gérer toutes les informations de type
utilisateur du domaine Irconcarbone. Cet annuaire est indispensable pour gérer
facilement et rapidement l’ensemble des utilisateurs des différents sites. Pour
simplifier cette gestion, nous avons mis en place différents groupes métiers :

– Production
– Informatique
– Administration
– Direction

Grâce à cela, nous pouvons authentifier les utilisateurs et gérer leurs accès en
fonction des droits attribuer au groupe auquel ils appartiennent.
L’objectif premier de l’annuaire est de donner un accès rapide et facile à une
ressource contenue dans l’annuaire. Il y a plusieurs avantages à utiliser les
annuaires :

– Leur flexibilité, on ajoute aisément des utilisateurs et des groupes


d’utilisateurs ;
– Il participe à fournir une certaine sécurité car les informations fournies
aux utilisateurs sont contrôlées grâce à leurs groupes d’appartenance.

 MESSAGERIE

Il est indispensable pour une entreprise de cette taille de disposer d’un système
de messagerie internet et commun à tous les employés. C’est un élément
indispensable lorsque l’on crée une entreprise.

Utiliser un système de messagerie homogène permet d’une, de faciliter


l’administration des services au sein d’une entreprise et de deux, permet de
donner une image sérieuse et professionnelle à nos interlocuteurs. C’est pour ses
raisons que nous avons choisi d’intégrer ce service chez Ironcarbone. De plus
Irconcarbone disposant de peu de services, il a été assez simple d’ajouter ce
service dans cette organisation.

Il y a plusieurs prérequis à l’installation d’un serveur mail. Nous avons donc dû


adapter la mise en place et la configuration du serveur mail aux éléments
existants.
Un serveur de messagerie (serveur mail) repose sur plusieurs services, entre
autres :

– DNS : avec notamment l’enregistrement de type « MX Record » qui va


permettre de définir le serveur de courrier pour notre domaine. Cet
enregistrement va permettre d’indiquer les
serveurs SMTP à contacter pour envoyer un mail.
– Apache2 : c'est le serveur Web qui va permettre aux utilisateurs
d’accéder à l’interface
graphique de l’application mail.
– MySQL30 : permet de créer et gérer la base de données avec les
comptes mail des utilisateurs.
– Postfix31 : c'est le serveur de messagerie qui grâce aux différents
démons modules qu’il intègre permet de traiter les courriers.

 APACHE

Un serveur web permet à des clients d'accéder à des pages web écrite en
langage HTML32 combiné à du CSS33 et du PHP34 généralement.

Pour récupérer une page web, le navigateur envoie une requête au serveur Web.
Celui-ci traite alors la requête pour le fichier demandé. Lorsqu'il trouve le fichier,
le serveur le lit et l'envoie au navigateur.

Pour notre projet, nous avons utilisé le langage HTML avec du CSS et nous avons
tenté d'intégrer du PHP et une base de données afin qu'une personne puisse
effectuer une commande à partir du site Web. Compte tenu du temps qui nous
était imparti, nous avons développé un site Web afin de présenter l'entreprise
dans sa globalité.

Parmi les serveurs Web, Apache est le plus populaire. C'est pour cela que nous
avons choisi de l'utiliser.

 PROXY

Un serveur proxy est une fonction informatique client-serveur qui a pour fonction
de relayer des requêtes entre une fonction cliente et une fonction serveur.

Principe de fonctionnement :
En tapant une adresse comme http://www.yahoo.com/index.html, votre
ordinateur va se connecter sur le serveur www.yahoo.com et demander la page
index.html.

Figure n°24 : Proxy

Avec un proxy, quand vous tapez http://www.yahoo.com/index.html, votre


ordinateur va se connecter au proxy et lui demande d'aller chercher la page sur
www.yahoo.com.

Figure n°25 : Proxy

Dans notre cas on a mis en place un proxy transparent avec SQUID 35. On a aussi
intégrer l'antivirus Clam36 dans pour augmenter la sécurité du proxy.

 VPN site to site

La connexion entre les ordinateurs est gérée de façon transparente par le logiciel
de VPN, créant un tunnel entre eux. Les ordinateurs connectés au VPN sont ainsi
sur le même réseau local.
La communication entre les sites est chiffrée.

L’intérêt est de pouvoir se connecter directement au réseaux local du site distant


et donc d'avoir accès au service qui s'y trouve comme un serveur DNS.

 VPN client to site

Le VPN client to site permet à un ordinateur d’accéder au réseau local de


l'entreprise où qu'il soit.
Comme le VPN site to site les communications sont chiffrées.
Ce service permet aux commerciaux de pouvoir se connecter un distance sur la
base de données.

 ANTIVIRUS

Un logiciel antivirus vérifie les fichiers et courriers électroniques, les secteurs de


démarrage afin de détecter les virus 37 dans la mémoire vive de l'ordinateur, les
médias amovibles, les données qui transitent sur le réseau.

Pour mieux sécuriser les postes utilisateurs, on a décidé d'installer un antivirus.


Notre choix est porté sur Avira 38 parce qu’il est gratuit et facile à installer. Son
rôle consiste à prévenir l'attaque virale en analysant le comportement des
fichiers.

Pour détecter un virus, il se sert de plusieurs techniques :

Détection de la signature :
C'est la méthode la plus ancienne et la plus utilisée. Cette méthode consiste à
analyser le disque dur à la recherche de la signature du virus, qui est présente
dans la base de données du logiciel, si celui-ci est à jour et s’il connaît ce virus.

Le contrôle d'intégrité :
Vérifier l'intégrité d'un fichier consiste à contrôler qu'il n'a pas été modifié ou
altéré au cours du temps.

Pour contrôler l'intégrité d’un fichier, il va stocker un fichier central recensant


l'ensemble des fichiers présents sur le disque auxquels il aura associé des
informations qui peuvent changer lorsque le fichier est modifié :
– La taille
– La date et l'heure de dernière modification
– La somme de contrôle (CRC39 : Code de Redondance Cyclique) éventuelle.

Lorsqu'une analyse est effectuée l'antivirus recalcule la somme de contrôle et


vérifie que les autres paramètres n'ont pas été modifiés. Si une anomalie se
présente, l'utilisateur est informé.

L'analyse heuristique :
C'est la méthode la plus puissante car elle permet de détecter d'éventuels virus
inconnus par votre antivirus. Elle cherche à détecter la présence d'un virus en
analysant le code d'un programme inconnu en simulant son fonctionnement. Elle
provoque parfois de fausses alertes.

 DMZ

Une DMZ est un sous-réseau séparé du réseau local et isolé de celui-ci et


d'Internet (ou un autre réseau) par un pare-feu. Ce sous-réseau contient les
machines étant susceptibles d'être accédés depuis Internet.

Le pare-feu bloquera donc les accès au réseau local pour garantir la sécurité de
ce dernier. Et les services susceptibles d'être accédés depuis Internet seront
situés en DMZ.

En cas de compromission d'un des services dans la DMZ, le pirate n'aura accès
qu'aux machines de la DMZ et non au réseau local.
La règle implicite est d'interdire tout.
3) Gestion des risques

La gestion des risques consiste en une analyse complète du projet afin de mettre en avant les risques éventuels que nous
pourrions rencontrer. Cette analyse s’articule principalement autour de trois axes :

- le responsable,
- le niveau d’impact sur le projet,
- les mesures préventives et/ou curatives.

Nature
Description Impact Responsable Prévention Correction
du risque
Absence : congé, Mise en place d'une marge de
Utilisation de la marge de
Humain maladie, retard d'un Moyen Chef de projet temps supplémentaire à
temps supplémentaire
membre de l'équipe chaque tâche
Réunion régulière pour faire le Mise en place d'une
Discordance au sein de Ensemble de
Humain Moyen point sur les ressentis du réunion exceptionnelle
l'équipe l'équipe
projet pour régler le sujet
Plantage d'une de nos La personne en
applications ou d'un de charge de Mise en place d'un backup de Reprise du dernier
Technique Fort
nos services (exemple : l'application ou du nos serveurs backup
serveur indisponible) service
Se complimenter les uns les
Démotivation d'un Faible- Ensemble de Discussion avec la
Humain autres sur l'avancement de
membre de l'équipe Moyen l'équipe personne
nos tâches respectives
La personne en
Les utilisateurs ne Rédaction d'une procédure
charge de Assister la personne en
Technique savent pas utiliser une Faible pour les services et
l'application ou du question
application applications mis en œuvre
service
Mise en place de réunion entre
Mauvaise définition du Ensemble de Reprise des parties en
Technique Fort nous et le MOA (maître
besoin l'équipe erreur
d'ouvrage)

Figure n°26 : Gestion des risques

33
V. Réalisation du projet

1) Division des tâches techniques

Pour les deux premières phases (analyse du besoin et spécifications), nous avons
travaillé ensemble afin que tout le monde s’implique dans le projet et qu’il y ait
une réelle confrontation des idées.
Pour la réalisation du projet, chaque élément d’un membre de l’équipe a eu la
responsabilité de réaliser différentes tâches indépendantes.

Mélanie Sahdio Florent Modibo

DNS LDAP VPN HTTPS

DHCP SSH FIREWALL PROXY

SNORT MESSAGERIE DMZ ANTIVIRUS

WEB

SAMBA

2) Maquettage individuelle

A notre première réunion, nous avons attribuer les premiers services à mettre en
place à chacun des membres du groupe.
Chacun était chargé d'effectuer des recherches pour déterminer quelle était la
solution la plus adaptée au besoin de l'entreprise.

Dans cette phase de recherches, nous avons étudié les différentes possibilités,
mis en avant les avantages et inconvénients de chacune, effectué un rapport que
nous avons présenté aux autres membres du groupe afin de prendre la décision
finale ensemble.

Une fois les services validés par l'ensemble de l'équipe, chacun était chargé de
mettre en place ses services en local de son côté afin de rédiger une procédure
de mise en place de chaque service.
Ces procédures nous a permis de gagner du temps lors du maquettage commun.

Au fil des réunions, nous avons déterminé que le temps restant pour la réalisation
du projet était suffisant pour nous permettre d'ajouter des services
supplémentaires en suivant les mêmes étapes de recherches et de rédactions de
procédures que pour les services initiaux.

Les services supplémentaires sont le serveur Web et le serveur de messagerie.

3) Maquettage commun

Lorsque des services étaient finalisés, on se réunissait pour l'intégrer à la


maquette commune.

34
Nous avons pour cela dans un premier temps mis en place un « phpvirtualbox40 »
qui permettait à chacun d'intégrer ses services depuis son domicile sans pour
autant attendre la prochaine réunion.
Cette méthode était censée nous faire gagner du temps mais nous avons
rencontré plusieurs difficultés à l'utilisation de service qui au final ne nous a pas
réellement fait gagner du temps.

Dans un second temps, un nouveau système a été mis en place pour palier à ce
problème. Nous avons donc utiliser « TeamViewer41 » pour l'intégration de
chacun de nos services avec l'accord de chacun des membres de l'équipe.

4) Tests

Les tests sont réalisés lorsque nous nous trouvons sur la branche remontante du
cycle en V. Les différentes procédures établies ont pour objectif de vérifier le bon
fonctionnement d’une partie du projet. Dans notre cas, nous avons mis en place
un scénario de tests unitaires pour une partie des services.

Exemple de tests

Tests
Étape Fonctionnalité État
1 Efficacité du proxy en HTTP Réussi
2 Efficacité du proxy en HTTPS Échec
3 Accès au site web en local Réussi
4 Accès au site web de l'extérieur Réussi
5 Connexion au Samba Réussi
6 Connexion à la messagerie Échec
7 Connexion au VPN/LDAP Réussi
8 Connexion au Samba Réussi

Figure n°27 : Tests

35
Conclusion

Durant la réalisation de ce projet, nous avons été confrontés à différentes


problématiques que nous retrouverons à un moment donné dans un contexte
professionnel. Pour la première fois, nous avons dû mener à bien un projet dans
son intégralité. Ainsi, nous avons pu prendre la pleine mesure de l’importance
des différentes étapes de la phase descendante du cycle en V. En effet, l’analyse,
les spécifications et la conception nous ont permis, dans un premier temps, de
définir au mieux les besoins du client, puis, d’y répondre dans un second temps.

En parallèle, nous avons pu approfondir nos connaissances acquises durant cette


année de formation et découvrir de nouveaux logiciels.

La principale difficulté rencontrée a été la conduite du projet, ce qui peut


s’expliquer par notre manque d’expérience dans ce domaine. Nous avons mis en
place un planning et un découpage des tâches que chaque membre de l’équipe a
suivi. Le plus compliqué a été de communiquer et de mettre en commun notre
travail en dehors des créneaux prévus à l’IUT de Vélizy-Villacoublay. Le fait d’être
une équipe de quatre membres a forcément eu un impact sur l’organisation et
notre communication.

Néanmoins, lorsque l’un d’entre nous se retrouvait bloqué, un autre membre de


l’équipe était toujours disponible afin d’apporter son aide et de trouver une
solution. Nous avions la chance d’être un groupe complémentaire ce qui nous a
toujours permis de compenser les points faibles de chacun.

Au final, en travaillant sur ce projet, nous avons acquis une expérience


professionnelle supplémentaire, et nous serons désormais capables de prendre le
recul nécessaire lors de la prise en charge d’un nouveau projet. De plus, nos
choix concernant notre avenir professionnel se retrouve conforté : poursuite
d’études pour certains et évolution professionnelle pour d’autres.

36
Annexes

37
Procédures

Installation et de configuration de PfSense

Prérequis (minimum) :
- Image ISO de PfSense ;
- Deux ordinateurs ;
- Un commutateur et un câble droit ;
- Trois interfaces sur le poste qui va accueillir PfSense.

Installation
Pour installer, il faut booter sur le CD (image ISO) de PfSense.

1. Au démarrage, taper sur i pour démarrer l’installation de PfSense :

2. Choisir « Accept these Settings » :

3. Sélectionner « Quick/Easy Install » :

38
4. Cliquer sur « OK » sur la fenêtre suivante pour que l’installation
commence.

5. Sélectionner « Standard Kernel » :

6. Il y a encore quelques fichiers à charger et pour finir redémarrez la


machine :

/!\Penser à retirer le CD (image ISO) afin qu’il ne boot pas à


nouveau dessus.

Une fois le poste redémarré, on arrive sur cette page :

1. Taper 2 pour configurer l'adresse IP de PfSense (l'adresse IP de PfSense


sera 192.168.1.1)

2. Choisir l'interface LAN

3. Y indiquer l'adresse IP et le masque de sous-réseau (255.255.255.0 ou


24 en CIDR).

39
A préciser que l’adresse IP de PfSense sur cette procédure est 192.168.1.60.

Vous pouvez voir dans la capture suivante, les trois étapes :

4. Ignorer les deux questions suivantes


5. PfSense nous demande si l’on veut configurer un server DHCP, taper Y
6. Indiquer la plage d’adresses IP (début et fin)
7. Taper N pour le http (qui active le protocole HTTPS pour plus de sécurité)

Enfin, PfSense nous indique l’adresse à laquelle se connecter sur notre


navigateur pour accéder à l’interface graphique de PfSense :

A présent, tout se passer par l'interface graphique.

Se rendre sur le navigateur et entrer https://192.168.1.60 dans la barre


d’adresse.

L'identifiant par-défaut est « admin » et le mot de passe « pfsense ».

Cliquer sur « OK » pour les deux pages suivantes.

Ici, il faut entrer le nom de la machine, son domaine et l'adresse du ou des


serveurs DNS :

40
Ignorer le NTP pour le moment.

Ignorer la configuration de la WAN.

Laisser la configuration du LAN.

Changer le mot de passe par défaut.

Enfin, nous avons accès à l’interface graphique de PfSense avec tous ses services
qui n’attendent qu’être configurés.

Proxy

Installation des paquets nécessaires :

Tout d'abord commençons par installer les paquets supplémentaires nécessaires.

Dans le menu « System » - « Packages » – « Available Packages », on


télécharge les paquets suivants : « Squid3 » et « Squid ».

41
Configuration du package Squid :

Aller dans l'onglet « Services » General » puis cliquer sur « General » puis on
arrive sur la page suivante :

Enable Squid Proxy : Cocher pour activer le proxy Squid.


Proxy interface : Sélectionner la ou les interfaces qu'utilisera le proxy.
Proxy port : Spécifier le port d'écoute du proxy (on va laisser le port par
défaut).
Allow users on interface : Si c'est cocher, tous les sous réseaux de l'interface
sont autorisés.

42
Transparent proxy : Cocher cette option.

Enable Access logging : Cochez cette case permet d’avoir accès aux logs.
Il faut ensuite spécifier le chemin du dossier log. Ici « /var/squid/logs ».

43
Visible hostname : Permet d’afficher le nom d'hôte dans les messages d'erreurs
du serveur proxy.
Administrator Email : Renseigner l’adresse mail d’administrateur dans les
messages d'erreurs du serveur proxy.
Suppress Squid Version : Cocher cette option afin de masquer la version de
Squid.

Cliquer Sur « Save » :

44
Toujours dans le même menu, on se déplace dans l’onglet « ACLs » :

Whitelist : Pour renseigner les sites autorisés.


Blacklist : Pour renseigner les sites qui seront bloqués par le proxy.

On n’oublie pas de « Save » en bas de la page.

Vérification du service :

Pour verifier le que notre proxy est démarrer, on va dans le menu « Status » «
Services ».
On voit bien que Squid en cours :

45
Vérification du fonctionnement :

Pour tester le bon fonctionnement de notre proxy, on va sur le navigateur Web et


on va tester l’adresse « facebook.com » qu’on avait décidé de blacklister dans
l’onglet « ACLs » plus haut.

Si on essaye de se connecter à « facebook.com », on a la page avec un message


d’erreur suivant :

Clam

Prérequis : Un proxy fonctionnel.

Installation des paquets nécessaires :

Dans le menu « System » - « Packages » – « Available Packages », on


télécharge les paquets suivants : HAVP antivirus.

46
Configuration de l’Antivirus: HTTP proxy (HAVP + ClamAV):

Aller dans l'onglet « Services » Antivirus » HTTP proxy ». On arrive sur la


page ci-dessous :

Enable : Cocher cette case pour activer proxy AV.


ClamAV Mode : Choisir l’option Daemon et ClamAV sera démarrer comme
daemon arrière-plan.
Proxy Mode : Permet de sélectionner le mode de fonctionnement du proxy ; ici
on choisira le mode « Standard ».
Proxy interface(s) : Par défaut le serveur proxy sera en écoute sur toutes les
interfaces mais pour plus de sécurité on va le mettre sur le réseau local. On
choisit « LAN ».
Proxy port : On laisse le port par default 3125.

47
Pour terminer la configuration, cliquer sur « Save » tout en bas en soit de laisser
le menu cocher par default :

On se déplace ensuite dans le Menu « Settings ».

48
ClamAV Database Update : Permet de choisir la fréquence à laquelle ClamV
sera mis à jour.
Region Av Database Update Servers Mirror : Sélectionner un miroir de base
de données régionale.

Cliquer sur « Save » pour terminer.

Pour tester le bon fonctionnement, se déplacer dans le menu « Services »


Antivirus » puis cliquer sur le bouton «play » pour relancer le service :

On peut ensuite voir dans le menu « Status » Services » les services en cours :

49
Le proxy est fonctionnel avec un antivirus.

DHCP

PfSense peut être utilisé comme serveur DHCP ou relai DHCP.


Le DHCP peut être configuré par interface graphique ou lors de l'installation de
PfSense.

Lors de l'installation de PfSense

La configuration du DHCP se fait de la façon suivante :

On indique la plage d'adresses IP.

Interface graphique

Il faut tout d'abord se rendre dans l'onglet « Services » > « DHCP Server » :

Les paramètres sont les suivants :

50
(1) Pour commencer, on coche la case « Enable DHCP server on LAN interface ».

(2) L'option « Deny unknown clients » est une sécurité : elle permet de filtrer les
requêtes DHCP. Par défaut, PfSense attribue une adresse IP à n'importe quel
client connecté sur le réseau qui en fait la demande. Par sécurité, on peut grâce à
cette option, autoriser la distribution d'adresses IP qu'aux clients connus (c'est-à-
dire, dont l'adresse MAC a été renseignée dans PfSense).

(3) Trois champs d'informations concernant le réseau :


– Subnet => rappelle l'adresse du réseau (du siège de IronCarbone) ;
– Subnet Mask => rappelle le masque de sous-réseau ;
– Available range => donne la plage maximale des adresses IP pouvant être
attribuées.

(4) C'est dans le champ « Range » qu'on désigne la plage d'adresses IP qui sera
utilisée. Nous avons choisi la plage : 192.168.1.1 à 192.168.1.100.

On indique la passerelle par défaut qui est notre routeur : 192.168.1.254.


Ainsi que le nom de domaine : IronCarbone.com (siège de IronCarbone).
Durée des baux :

La durée de bail est de 7 200 secondes (2h) et 86 400 secondes (1 jour) pour la
durée de bail maximum (deux paramètres par défaut).

L'option « failover peer IP » permet d'indiquer l'adresse IP du second serveur


PfSense. Nous avons décidé de créer une redondance au niveau de PfSense au vu
des nombreux services utilisés sur celui-ci.

Pour finir, cliquer sur le bouton « Save » afin de sauvegarder les paramètres
définis.

51
Enfin, un message apparaît pour nous communiquer le bon déroulement des
modifications.

On peut vérifier le statut du service DHCP dans l'onglet « Status » > « Services ».

IPsec
Introduction
IPsec va nous servir a faire un VPN site to site pour relier les sites entre eux de
manière sécurisée.

Prérequis :
Il faut deux PfSense déjà configuré ayant un accès vers l’extérieur (adresse IP
public).

Configuration :
Pour configurer Ipsec, il faut se rendre dans vpn ⇒ ipsec :

Ensuite, cliquer sur add P1 pour lancer la configuration :

Vous serez alors en présence d'un formulaire :

Key Exchange version :V2 c'est la version du protocole pour établir l'échange
de clé.

52
Internet Protocol :IPv4 c'est la version d'internet protocole utilisée. On utilise
IPv4 dans l'entreprise ironcarbone.

Interface : WAN c'est l'interface par laquelle on entre.

Remote gateway : l'adresse IP public du PfSense distant.

Description : votre choix.

Ici, laisser tout par défaut sauf Pre-Shared Key où vous devez mettre une clé
suffisamment compliquée et longue que vous copierez sur le PfSense distant :

Ici, l'important est qu'il y ai la même chose des deux cotés :

Encryption Algorithm:AES & 256 bits


Hash Algorithm : SHA256
DH Group : 2(1024bit)
Lifetime : 28800

Ensuite, laisser tout par défaut et cliquer sur save :

53
Maintenant que cette partie est configurer, on peut configurer le PfSense distant
avec les mêmes paramètres à quelque chose près puisque remote gateway
sera l'adresse IP public du PfSense qu'on a configurer précédemment.

Il y a encore des paramètres à saisir.

Cliquer sur Show Phases 2 Entries :

puis sur Add P2 :

De nouveau un formulaire :

54
La seul modification à faire est dans Remote Network où il faut y mettre le
réseau local distant, ici 192.168.6.0/24.

Protocol : ESP
Encryption Algorithms : AES & 256 bits
Hash Algorithms : SHA256
PFS key group : off
Lifetime : 3600

55
Enfin, cliquer sur save.

Puis Apply Changes :

Maintenant, on doit faire la même chose sur le PfSense distant en mettant


l'adresse IP local distant correspondant.

Mise en route
Pour mettre en route le tunnel allez dans status==> IPsec :

56
Et cliquer sur connect.

Si tout se passe bien, vous devriez voir ceci :

Puis en bas à gauche Show child SA entries. Si l’icône en bas à gauche n'est
pas présente, cela veut dire que le phase 2 ne s'est pas déroulée correctement. Il
faut donc corriger la phase 2.
S'il y a rien d'afficher c'est qu'il y a un souci sur la phase 1 .

Test
Pour tester que tout fonctionne, il suffit de saisir une adresse présente sur le site
distant et vérifier qu'on y accède bien.

57
Ici, on peut voir que je suis pas sur le même sous-réseaux que le PfSense distant
et pourtant j'accède bien au PfSense distant ; je suis donc passé par le tunnel
IPsec.

Debug
Si le tunnel est bien monté mais que vous accédez pas au PfSense distant,
vérifier vos règles de firewall. Si ça ne fonctionne toujours pas, arrêtez le service
des deux PfSense et relancez-le.

OpenVPN
Prérequis :
Il vous faut :
 un PfSense déjà installé et configuré
 un LDAP configuré et fonctionnel

Une connexion à internet sur PfSense pour installer le plugin.

Introduction
La configuration d'OpenVPN sur PfSense se déroule en plusieurs étapes :
 Installation du plugin openvpn-client-export
 Création d'une CA pour la création de certificat

Installation du plugin openvpn-client-export


Pour installer un plugin il faut se rendre dans System ⇒ Package manager.

Aller dans l'onglet Available Package, dans la barre de recherche saisir


openvpn puis à droite, cliquer sur install :

Et confirm.

58
Création des certificats

Création d'une CA :
Il y a plusieurs champs à remplir :

 Descriptive name :Le nom de la CA


 Method : Create an internal Certificate Authority
 Key length (bits):2048
 Digest Algorithm sha256
 Lifetime (days):3650
 Country Code : FR
 State or province :France
 City:Paris
 Organization:ironcarbone
 Email Address : vpn@ironcarbone.com
 Common Name : ironcarbone.com

59
Et pour finir cliquer sur Save.

Création du certificat serveur :

Maintenant il faut créer deux certificats, un pour le serveur et un pour le client.


Pour cela, il faut se rendre sur l'onglet Certificates et cliquer sur add pour en
crée un.

60
Maintenant il y a plusieurs champs à remplir mais heureusement cette fois ils
sont déjà pré-rempli. Les champs à modifier sont les suivants :

 Method : Create an internal Certificate


 Descriptive name : Cert_serv
 Certificate authority : CA_int_vpn
 Certificate Type : Server Certificate
 Common Name ironcarbone.com
 Alternative Names ironcarbone.com

61
Et cliquez sur Save pour enregistrer le certificat.

Création du certificat client :


Maintenant on va créer un certificat pour le client, cliquer sur add.
Les champs à modifier sont :

 Descriptive Name:Cert_user
 Certificate Type : User Certificate

Les autres champs doivent être rempli comme sur le formulaire précédent.

62
Et cliquez sur Save pour enregistrer le certificat.

Les certificats sont prêt.

Configuration du serveur
Aller dans le menu VPN ⇒ OpenVPN

Ensuite cliquez sur l'onglet Wizards.

Il y a un menu demandant de choisir la provenance des utilisateurs,


choisir LDAP : ce sont les utilisateurs présent sur le serveur LDAP.

63
Cliquer ensuite sur next.

Cliquer à nouveau sur next.

Sur la page suivante il est demandé de choisir le CA (Autorité de Certification).


Mettre celui que l'on vient de créer :

Puis cliquer sur next.

La page suivante est similaire mais il s'agit du certificat cette fois-ci :

64
Par la suite, il y a de nombreux champs à remplir mais vous pouvez les laisser par
défaut ; il faut simplement remplir :

 Description : tunnelvpn
 DNS Default Domain:ironcarbone.com
 DNS Server 1 : 192.168.2.1

65
Enfin, cliquer sur next.

Ensuite il y a les règles de firewall à paramétrer. Heureusement, PfSense peut les


configurer pour vous, il suffit de laisser les cases cochées.

66
Et cliquer sur next et finish pour terminer la configuration du serveur OpenVPN.

Ensuite, aller de nouveau dans l'onglet servers et cliquez sur pour


éditer le serveur.

Modifier seulement le champs Server mode et le mettre à Remote Access


(SSL/TLS)

Installation sur le client


Pour configurer le client, rien de plus simple, il suffit de se rendre sur l'onglet
Client Export et tout en bas, choisir votre système (ici ça sera x64-win6).

Deux solutions sont possible :


 soit vous téléchargez le .exe depuis une machine quelconque et vous
faites une copie sur le client final ;
 ou vous téléchargez le .exe directement depuis le client final.

67
Exécuter sur le client final le fichier téléchargé.

Cliquer sur exécuter.

Puis sur oui.

68
Et enfin sur install et finish.

Maintenant se rendre dans le menu démarrer ⇒ tous les programmes ⇒


OpenVPN ⇒ OpenVPN GUI :

Et cliquez sur oui.

A présent, dans la barre des tâches en bas à droite, vous devriez voir une icône
grise. Faites un clic droit dessus :

Cliquer sur la configuration portant le même nom que le .exe téléchargé plus
haut.

Cliquer maintenant sur connecter :

69
Saisissez votre identifiant et votre mot de passe du compte LDAP :

Si l’icône grise passe au vert, la connexion est établie.

Test
Pour tester si le VPN fonctionne correctement, vous pouvez aller sur
pfsense.ironcarbone.com depuis chez vous, si vous y accéder c'est que le VPN
fonctionne :

Pour vous déconnecter, cliquer sur déconnecter :

70
SNORT
Installation

Pour utiliser Snort dans PfSense, il faut tout d'abord télécharger le package qu'on
trouve dans «System» > «Packages» :

Puis «Available Packages» > «Security» :

Choisir le package «snort» :

L'installation démarre :

71
Lorsque l'installation est terminée :

On peut se rendre dans «Services» et on y trouve «Snort» :

Configuration requise (Global Settings)

Pour obtenir les règles prédéfinies de Snort, il faut s'inscrire sur le site officiel.

72
Après la validation de notre inscription, on se connecte sur notre compte afin de
récupérer le Oinkcode qu'on devra renseigner sur PfSense :

On retourne sur PfSense, dans «Services» > «Snort» puis dans «Global
Settings» :

Choix d'installation des types de règles :

73
1

(1) Snort Community Rules => Ce sont les règles communautaires se réfèrent à
toutes les règles qui ont été soumises par les membres de la communauté open
source ou Snort Intégrateurs. Ces règles sont librement accessibles à tous les
utilisateurs de Snort.

(2) Emerging Threats Rules => C'est un point pour un certain nombre de projets
de sécurité principalement liés à la détection d'intrusion et d'analyse du trafic
réseau.

(3) OpenAddID => Remonte des alertes sur les utilisations des applicatifs sur un
réseau. Elle détecte les applications sur le réseau, établie des statistiques sur les
utilisations des applicatifs et bloque les applications grâces aux règles établies.

L'installation d'OpenAddID a finalement été ajouté. On pourra le voir dans les


mise à jour plus tard.

On choisi l'intervalle des mises à jour avec «Update Interval» ainsi que l'heure de
début d'installation avec «Update Start Time». Donc tous les jours, une mise à
jour sera faite à minuit. Puis la configuration des hôtes bloqués.

Mises à jour

A l'installation de Snort, aucunes règles n'est mise à jour. Pour cela, il faut cliquer
sur «Update» pour mettre les règles qu'on a défini dans «Global Settings» à jour.

74
La mise à jour commence :

A la fin des mises à jour, on peut voir celles-ci avec la signature MD5 et la date de
la dernière mise à jour avec son résultat (mise à jour effectuée avec succès).

Configuration des interfaces

Aucunes interfaces n'est configurées. Pour cela, on clique sur le petit + pour
ajouter une interface.

75
On configure l'interface WAN. Tout d'abord, il faut cliquer sur Enable puis on
détermine les bloquages des hôtes qui remonteront une alerte.

Après avoir cliquer sur «Save» en bas de la page, on retrouve notre interface
WAN qui est désactivée.
Il faut cliquer sur la croix rouge pour l'activer. Elle passera au vert.

Un «laissez passer»

L'onglet «Pass Lists» permet de définir un hôte ou un réseau qui ne sera pas
bloqué. Il faut ici y indiqué les adresses IP de confiance (une liste blanche
d'adresses IP).

Pour cela, il faut d'abord créer un alias à partir de «Firewall» > «Aliases» :

76
On configure l'alias comme suit :

Après la sauvegarde de cet alias, cela donne :

L'alias créé, on peut retourner dans «Services» > «Snort» et «Pass Lists».
On ajoute notre alias (Reseau_IronCarbone) où est déterminé les réseaux à
laisser passer. A noter qu'il le reconnaît après avoir écrit quelques lettres de
l'alias.

77
Et voici notre «Pass Lists» :

/!\Ne pas oublier d'ajouter le «Pass Lists» dans l'interface WAN


configuré plus haut :

On avait donné comme nom «Réseau_PassList». A ne pas confondre avec


le nom de l'alias «Reseau_IronCarbone».

Détermination des règles (interface WAN)

On se place dans «Snort Interfaces» on clique sur le «E» de l'interface puis «WAN
Categories». Les règles téléchargées plus haut sont regroupées sous forme de
catégories. A nous de sélectionner celles qui correspondent aux attaques que l'on
veut détecter sur notre réseau.
A éviter : Cliquer sur toutes les règles. En effet, on peut se retrouver avec des
alertes qui n'en sont pas et ainsi, remplir les logs d'alertes inutilement. Il faut

78
savoir trouver le juste milieu.

On peut choisir parmis trois politiques IPS (IPS policies) pré-configurés. Elles
simplifient le processus de choix des règles à utiliser lors de l'inspection du trafic.

Les trois politiques sont :


– Connectivity
– Balanced
– Security

Elles sont classés par ordre de sécurité. Il faut éviter la politique «Security»
lorsque Snort nous est peu connu. En tant que point de départ, on choisi
«Connectivity» ; on passera ensuite en «Security» lorsque l'expérience avec
Snort sera acquise.

Pour commencer, on sélectionne les règles incluses dans la GPLv2 Communauty


Rules.

79
Vérification

Enfin, je vérifie si l'interface (ou les interfaces) sont activés dans «Snort
Interfaces» :

Que les alertes sont activées dans «Alerts» :

Et que les blocages sont activés dans «Blocked» :

Les autres onglets

On peut voir ces onglets sur la capture précédente.


L'onglet «Suppress» est utilisé pour bloquer des fausses alertes.
L'onglet «IP Lists» affiche la liste des adresses IP malveillantes.
L'onglet «SID Mgmt» permet de régler les signatures ID (SID) des règles Snort.
L'onglet «Log Mgmt» permet d'ouvrir une session de gestion.

Samba

Serveur

Installer le paquet « samba » :

80
Ajouter un utilisateur :

Ajouter un utilisateur samba :

Par sécurité, copier le fichier de configuration samba :

Configurer la partie « global » :

81
Configurer la partie « homes » :

Configurer le dossier « partage » :

82
Tester la configuration du samba avec la commade « testparm » :

Puis redémarrer le service samba :

Client

Cliquer sur « ordinateur » puis « connecter un lecteur réseau » en haut à droite :

Choisir le lecteur puis indiquer le dossier.

Ici, l'adresse IP du serveur Samba suivi du dossier à partager.

Cocher « Se connecter à l'aide d'informations d'identification différentes ».

83
Saisir les identifiants du client samba :

Le lecteur est créé :

Dans le serveur Samba, un répertoire dans « /home/samba » a été créé :

84
Sur le client, dans le lecteur, on vient bien ce dossier :

Aucun répertoire dans « partage » :

On créé un dossier « IronCarbone » dans « partage » sur le serveur :

Sur le client, il apparaît de suite :

Et vice-versa en créant un dossier sur le client, il apparaît dans le serveur.

SQL

Schéma relationnel

USINE (num, ville)

85
num : clé primaire

ATELIER (num, numUsine)


num : clé primaire
numUsine : clé étrangère en référence à num de USINE

TUBE (ref, libelle, diametre, poids, numAtelier)


ref : clé primaire
numAtelier : clé étrangère en référence à num de ATELIER

CLIENT (ref, nom, adr, pays)


ref : clé primaire

COMMANDE (num, refClient, date)


num : clé primaire
refClient : clé étrangère en référence à ref de CLIENT

PRODUCTION (num, numCommande)


num : clé primaire
numCommande : clé étrangère en référence à num de COMMANDE

COMPOSER_PRODUCTION (numProduction, refTube, dateJour, quantite)


numProduction, refTube, dateJour : clé primaire
numProduction : clé étrangère en référence à num de PRODUCTION
refTube : clé étrangère en référence à ref de TUBE

OPERATEUR (num, nom, prenom, numAtelier)


num : clé primaire
numAtelier : clé étrangère en référence à num de ATELIER

COMPOSER_COMMANDE (num, numClient, refTube, quantite, numProduction)


num : clé primaire
refTube : clé étrangère en référence à ref de TUBE
quantite, numProduction : clé étrangère en référence à quantite et
numProduction de COMPOSER_PRODUCTION

Installation de mysql-server

Puis on se connecte à la base de données avec la commande « mysql -u root -p ».

Création de la base de données « ironcarbone »

86
On utilise (« USE ») la base de données « ironcarbone » pour y ajouter nos tables.
Vérification des tables avec « show tables ». Aucunes tables puisque la base de
données vient d'être créée.

Création des tables


Table USINE

CREATE TABLE USINE (num INT NOT NULL PRIMARY KEY AUTO_INCREMENT, ville
VARCHAR(30) NOT NULL);

Table ATELIER

CREATE TABLE ATELIER (num INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
numUsine INT NOT NULL, FOREIGN KEY (numUsine) REFERENCES USINE(num));

Table TUBE

CREATE TABLE TUBE (ref INT NOT NULL PRIMARY KEY AUTO_INCREMENT, libelle
VARCHAR(30), diametre REAL NOT NULL, poids REAL NOT NULL, numAtelier INT
NOT NULL, FOREIGN KEY (numAtelier) REFERENCES ATELIER(num));

Table CLIENT

87
CREATE TABLE CLIENT (ref INT NOT NULL PRIMARY KEY AUTO_INCREMENT, nom
VARCHAR(30) NOT NULL, adr VARCHAR(80) NOT NULL, pays VARCHAR(30) NOT
NULL);

Table COMMANDE

CREATE TABLE COMMANDE (num INT NOT NULL PRIMARY KEY


AUTO_INCREMENT,
refClient INT NOT NULL, date DATE NOT NULL, FOREIGN KEY (refClient)
REFERENCES CLIENT(ref));

Table PRODUCTION

88
CREATE TABLE PRODUCTION (num INT NOT NULL PRIMARY KEY
AUTO_INCREMENT,
numCommande INT NOT NULL, FOREIGN KEY (numCommande) REFERENCES
COMMANDE(num));

Table COMPOSER_PRODUCTION

CREATE TABLE COMPOSER_PRODUCTION (numProduction INT NOT NULL,


refTube INT NOT NULL AUTO_INCREMENT, dateJour DATE, quantite INT NOT NULL,
PRIMARY KEY (numProduction, refTube, dateJour), FOREIGN KEY (numProduction)
REFERENCES PRODUCTION(num), FOREIGN KEY (refTube) REFERENCES
TUBE(ref));

Table OPERATEUR

CREATE TABLE OPERATEUR (num INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
nom VARCHAR(30) NOT NULL, prenom VARCHAR(30) NOT NULL, numAtelier INT
NOT NULL, FOREIGN KEY (numAtelier) REFERENCES ATELIER(num));

89
Apache

Mettre à jour les dépôts : apt-get update


Mettre à jour les paquets : apt-get upgrade
Installer apache : apt-get install apache2

Accéder au site par défaut avec l'adresse IP du serveur ou par avec le


nom « localhost » :

90
Le service Apache est fonctionnel.

Un dossier nommé « html » se trouve déjà dans « var/www » où se


trouve index.html, la page par défaut. On créé dans ce dernier nos
différents fichiers de codes.

On peut voir différents fichiers : « index.html » qui est celui par défaut et ceux
créés pour le projet.
A noter qu'il aurait été préférable de les mettre dans un dossier nommé
« ironcarbone » principalement lorsque l'on a plusieurs sites.

Ces fichiers créés sont les suivants :


1. style.css => fichier CSS pour les pages HTML
2. ironcarbone.html => page d'accueil du site web
3. siege_social.html => page concernant le siège social
4. velizy.html => page concernant le site de Vélizy
5. rome.html => page concernant le site de Rome
6. contact.html => page de contact avec formulaire
7. traitement_formulaire_contact.php => fichier PHP pour le traitement
des messages
Le dossier « theme » comprend les images (fonds de page) utilisées pour le
site.

Les fichiers de configuration

Les différentes pages de codes seront commentées afin de mieux comprendre la


structure du site web. Cependant, les pages « ironcarbone.html »,
« siege_social.html », « velizy.html » et « rome.html » étant quasi identiques, je
ne commenterai que la page « ironcarbone.html ».

1. style.css

Le code de « style.css ».

/* on détermine les apparences de ce qui sera entre les balises body du fichier HTML */
body{
/* le chemin de l'image pour l'arrière plan sans répétition et centré */
background:url(theme/fond.png) no-repeat top center;
/* la marge à 0 pour éviter certains bogues sur certains navigateurs */
margin 0;
padding 0;

91
/* la police à utiliser par ordre de priorité selon le navigateur */
font-family:Verdana, Geneva, sans-serif;
/* la taille de la police */
font-size:9px;
}

/* on définit un id qu'on utilisera dans les pages HTML par des 'div id=....' */
#top{
/* la hauteur de cet id */
height:72px;
/* la largeur */
width:900px;
/* le chemin de l'image pour cet id */
background:url(theme/top.png) no-repeat top center;
/* la taille de la police */
font-size:25px;
/* le texte centré */
text-align:center;
/* la hauteur de ligne (généralement la même hauteur que dans 'height' */
line-height:72px;
/* la couleur de la police */
color:white;
/* quand il y a 4 valeurs de marges, c'est en haut, à droite, en bas puis à gauche */
margin:40px 100px 40px 225px;
}

/* on définit une 'class' qu'on utilisera dans les pages HTML par des 'span class=....' */
.grand{
/* la taille de police plus grande que plus haut */
font-size:35px;
}

/* on définit un id 'conteneur' qui va englober la majeure partie de la page */


#conteneur{
/* la largeur */
width:830px;
/* marges de 0 en bas et en 0 et auto pour les marges à droite et à gauche */
margin:0 auto;
}

/* on définit l'apparence du menu */


#menu{
/* le chemin de l'image */
background:url(theme/top.png) no-repeat bottom left;
/* la hauteur */
height:55px;
}

92
/* on définit l'apparence des listes */
#menu ul li{
/* on retire les points de listes qui apparaissent quand on créé une liste */
list-style:none;
/* on aligne les éléments à gauche */
float:left;
/* on met le padding à 0 au cas où certains navigateurs utilisent leur marge */
padding:0;
}

/* on définit l’apparence des liens exprimée par la balise 'a href' dans le fichier HTML */
#menu ul li a{
/* la hauteur des boutons */
height:43px;
/* la largeur des boutons */
width:150px;
/* la taille de la police */
font-size:15px;
/* on supprime le texte souligné des liens */
text-decoration:none;
/* texte centré */
text-align:center;
/* la couleur du texte */
color:white;
/* la hauteur du texte */
line-height:43px;
/* une liste n'étant pas un bloc, on définit donc les listes en tant que bloc */
display:block;
/* le chemin de l'image */
background:url(theme/bouton_bleu.jpg) no-repeat top center;
}

/* 'hover' permet à l'élément de se lever quand la souris est dessus */


#menu ul li a:hover{
/* la position des boutons (listes) */
background-position: bottom left;
/* la hauteur du texte pour que le texte des listes se lève vers le haut */
line-height:35px;
}

/* on définit le contenu qui intégrera la description de la page */


#contenu{
/* le chemin de l'image et on décide de la répéter à chaque fois qu'on insère du
texte */
background:white repeat-y left;
/* les marges à l'intérieur de la 'div' en hauteur 0 et 20 en largeur pour l'alignement */
padding:0 20px;

93
}

/* on détermine les éléments qui seront dans 'contenu' */


#propos{
/* pour aligner les éléments */
float:left;
}

2. ironcarbone.html

Le code de « ironcarbone.html ».

<!-- insérer les accents sur le site -->


<?xml version="1.0" encoding="UTF-8"?>

<!-- le doctype de W3C et le type de html -->


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd>
<html mlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">

<head>
<!-- à nouveau le langage UTF-8 pour les accents -->
<meta http-equiv="Content-Type" content="text/html;
charset=UTF-8" />
<!-- le titre au site qui apparaîtra dans l'onglet -->
<title> IronCarbone </title>
<!-- lien entre le fichier HTML et le fichier CSS -->
<link href="style.css" rel="stylesheet" type="text/css"
media="all">
</head>

<body>

<!-- se réfère à l'id 'top' dans le fichier CSS -->


<div id="top">
<!-- la balise 'span' se réfère à la classe 'grand' dans le fichier CSS -->
Bienvenue sur le site de <span class="grand"> <b> IronCarbone
</b> </span>
</div>

<!-- se réfère à l'id 'contenu' dans le fichier CSS -->


<div id="conteneur">

94
<!-- se réfère à l'id 'menu' dans le fichier CSS -->
<div id="menu">
<ul>
<!-- utilisation de la balise 'a href' pour les liens vers les autres pages
HTML -->
<li> <a href="ironcarbone.html"> <b> A propos </b>
</a> </li>
<li> <a href="siege_social.html"> <b> Siège </b> </a>
</li>
<li> <a href="velizy.html"> <b> Vélizy </b> </a> </li>
<li> <a href="rome.html"> <b> Rome </b> </a> </li>
<li> <a href="contact.html"> <b> Contact </b> </a>
</li>
</ul>
</div>

<!-- se réfère à l'id 'contenu' dans le fichier CSS -->


<div id="contenu">

<!-- se réfère à l'id 'propos' dans le fichier CSS -->


<div id="propos">

<!-- balise 'h1' pour le titre de la page dans le 'contenu' -->


<!-- balise 'font color' pour détermine la couleur exacte du texte-->
<!-- balise 'center' pour centrer le texte-->
<h1> <br> <font color="#0174DF"> <center> Qui sommes-
nous ? </center>
</font> </h1>

<!-- balise 'h2' pour la description dans le 'contenu' -->


<!-- balise 'font color' pour détermine la couleur exacte du texte-->
<!-- balise 'font size' pour détermine la taille du texte-->
<!-- balise 'font face' pour détermine la police de ce paragraphe-->
<h2> <font color="#0174DF"> <font size="3pt"> <font
face="arial">
<!-- balise 'br' pour les sauts de ligne -->
<br> <br>
La société <b> IronCarbone </b> est leader dans la
fabrication et la
distribution de tubes en acier inoxydable <br> <br>
sans soudure destinés
à une industrie à forte contrainte de sécurité.
<br> <br>
Elle utilise deux principes de fabrication : le filage et
l'étirage. La
production est réalisée sur trois sites, <br> <br> Paris
(siège social), Vélizy et
Rome.

95
<br> <br>
Chaque tube est contrôlé minutieusement par des scanners.
Un tube ne
correspondant pas aux critères <br> <br> de sélection est
mis au rebut.
<br> <br>
</font> </font> </font>
</h2>

</div>
< !-- à cause des nombreux 'div', on veut que le texte soit dans le id
'contenu' car
sinon il sort de l'id 'contenu' et n'est donc pas dans le fond blanc -->
<br clear="all"/>

</div>

</div>
</body>
</html>

Aperçu de la page.

96
3. siege_social.html

Le code de « siege_social.html ».

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"


http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd>

<html mlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">

<head>
<meta http-equiv="Content-Type" content="text/html;
charset=UTF-8" />
<title> IronCarbone </title>
<link href="style.css" rel="stylesheet" type="text/css"
media="all">
</head>

<body>

<div id="top">
Bienvenue sur le site de <span class="grand"> <b> IronCarbone

97
</b> </span>
</div>

<div id="conteneur">

<div id="menu">
<ul>
<li> <a href="ironcarbone.html"> <b> A propos </b>
</a> </li>
<li> <a href="siege_social.html"> <b> Siège </b> </a>
</li>
<li> <a href="velizy.html"> <b> Vélizy </b> </a> </li>
<li> <a href="rome.html"> <b> Rome </b> </a> </li>
<li> <a href="contact.html"> <b> Contact </b> </a>
</li>
</ul>
</div>

<div id="contenu">

<div id="propos">

<h1> <br> <font color="#0174DF"> <center> Siège social


</center> </font>

<h2> <font color="#0174DF"> <font size="3pt"> <font


face="arial">

<br> <br>
L'usine est spécialisée dans la conception des tubes fins ayant
un
diamètre inférieur à 25mm. <br> <br> Pour les réaliser, la
technique de l'étirage est
utilisée. Elle nécessite des tubes plus épais produits par <br>
<br> le site de Vélizy.
<br> <br>
Ces tubes sont tirés à froid et passent dans des goulottes de
plus en plus
étroites jusqu'à <br> <br> l'obtention du diamètre désiré.
<br> <br>
</font> </font> </font>
</h2>

</div>
<br clear="all"/>
</div>
</div>
</body>
</html>

98
Aperçu de la page.

4. velizy.html

Le code de « velizy.html ».

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"


http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd>

<html mlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">

<head>
<meta http-equiv="Content-Type" content="text/html;
charset=UTF-8" />
<title> IronCarbone </title>
<link href="style.css" rel="stylesheet" type="text/css"
media="all">
</head>

99
<body>

<div id="top">
Bienvenue sur le site de <span class="grand"> <b> IronCarbone
</b> </span>
</div>

<div id="conteneur">

<div id="menu">
<ul>
<li> <a href="ironcarbone.html"> <b> A propos </b> </a>
</li>
<li> <a href="siege_social.html"> <b> Siège </b> </a>
</li>
<li> <a href="velizy.html"> <b> Vélizy </b> </a> </li>
<li> <a href="rome.html"> <b> Rome </b> </a> </li>
<li> <a href="contact.html"> <b> Contact </b> </a>
</li>
</ul>
</div>

<div id="contenu">

<div id="propos">

<h1> <br> <font color="#0174DF"> <center> Site de Vélizy


</center> </font>

<h2> <font color="#0174DF"> <font size="3pt"> <font


face="arial">
<br> <br>
L'usine conçoit des tubes de diamètre spécifiques de diamètre
supérieur
à 50 mm.
<br> <br>
</font> </font> </font>
</h2>

</div>
<br clear="all"/>

</div>

</div>
</body>
</html>

100
Aperçu de la page.

5. rome.html

Le code de « rome.html ».

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"


http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd>

<html mlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">

<head>
<meta http-equiv="Content-Type" content="text/html;
charset=UTF-8" />
<title> IronCarbone </title>
<link href="style.css" rel="stylesheet" type="text/css"
media="all">
</head>

<body>

<div id="top">
Bienvenue sur le site de <span class="grand"> <b> IronCarbone
</b> </span>
</div>

101
<div id="conteneur">

<div id="menu">
<ul>
<li> <a href="ironcarbone.html"> <b> A propos </b>
</a> </li>
<li> <a href="siege_social.html"> <b> Siège </b> </a>
</li>
<li> <a href="velizy.html"> <b> Vélizy </b> </a> </li>
<li> <a href="rome.html"> <b> Rome </b> </a> </li>
<li> <a href="contact.html"> <b> Contact </b> </a>
</li>
</ul>
</div>

<div id="contenu">

<div id="propos">

<h1> <br> <font color="#0174DF"> <center> Site de Rome


</center> </font>

<h2> <font color="#0174DF"> <font size="3pt"> <font


face="arial">
<br> <br>
L'usine conçoit des tubes de diamètre compris entre 25 et 50
mm. De
l'acier fondu dans des fourneaux <br> <br> à 1 000°C passe
dans des filières
de diamètre variable. A sa sortie, le tube est plongé dans un
bain <br> <br>
d'acide afin d'évacuer toute aspérité.
<br> <br>
</font> </font> </font>
</h2>
</div>
<br clear="all"/>

</div>

</div>
</body>
</html>

Aperçu de la page.

102
6. contact.html

Le code de « contact.html ».

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"


http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd>

<html mlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">

<head>
<meta http-equiv="Content-Type" content="text/html;
charset=UTF-8" />
<title> IronCarbone </title>
<link href="style.css" rel="stylesheet" type="text/css"
media="all">
</head>

<body>

<div id="top">
Bienvenue sur le site de <span class="grand"> <b> IronCarbone
</b> </span>
</div>

103
<div id="conteneur">

<div id="menu">
<ul>
<li> <a href="ironcarbone.html"> <b> A propos </b>
</a> </li>
<li> <a href="siege_social.html"> <b> Siège </b> </a>
</li>
<li> <a href="velizy.html"> <b> Vélizy </b> </a> </li>
<li> <a href="rome.html"> <b> Rome </b> </a> </li>
<li> <a href="contact.html"> <b> Contact </b> </a>
</li>
</ul>
</div>

<br>

<form id="contact" method="post"


action="traitement_formulaire_contact.php">
<fieldset> <legend> <font size="2pt"> <font color="white">
Vos coordonnées
</font> </font> </legend>

<p> <label for="nom"> <font size="2pt"> <font color="white">


Nom :
</font> </font> </label> <input type="text" id="nom" name="nom"
tabindex="1" /> </p>

<p> <label for="email"> <font size="2pt"> <font color="white">


Email :
</font> </font> </label> <input type="text" id="email" name="email"
tabindex="2" /> </p> </fieldset>

<br>
<fieldset> <legend> <font size="2pt"> <font color="white">
Votre message :
</font> </font> </legend>

<p> <label for="objet"> <font size="2pt"> <font color="white">


Objet :
</font> </font> </label> <input type="text" id="objet" name="objet"
tabindex="3" /> </p>

104
<p> <label for="message"> <font size="2pt"> <font color="white">
Message :
</font> </font> </label> <textarea id="message" name="message"
tabindex="4" cols="30" rows="8"> </textarea> </p> </fieldset>
<br> <br>
<div style="text-align:center;"> <input type="submit" name="envoi"
value="Envoyer le formulaire !"

Aperçu de la page.

105
7. traitement_formulaire_contact.php

Le code de « traitement_formulaire_contact.php ».

<?php
/*

*******************************************************************************
CONFIGURATION

*******************************************************************************
*/
// Destination du message
$destinataire = 'melanie.tavaressoares@yahoo.fr';

// copie (envoie une copie au visiteur)


$copie = 'oui'; // 'oui' ou 'non'
// Messages de confirmation du mail
$message_envoye = "Votre message nous est bien parvenu !";
$message_non_envoye = "L'envoi du mail a échoué, veuillez réessayer
SVP.";

106
// Messages d'erreur du formulaire
$message_erreur_formulaire = "Vous devez d'abord <a
href=\"contact.html\">envoyer le formulaire</a>.";
$message_formulaire_invalide = "Vérifiez que tous les champs soient
bien remplis et que l'email soit sans erreur.";

/*

*******************************************************************************
FIN DE LA CONFIGURATION

*******************************************************************************
*/

// on teste si le formulaire a été soumis


if (!isset($_POST['envoi']))
{
// formulaire non envoyé
echo '<p>'.$message_erreur_formulaire.'</p>'."\n";
}
else
{
/*
* cette fonction sert à nettoyer et enregistrer un texte
*/
function Rec($text)
{
$text = htmlspecialchars(trim($text), ENT_QUOTES);
if (1 === get_magic_quotes_gpc())
{
$text = stripslashes($text);
}

$text = nl2br($text);
return $text;
};

/*
* Cette fonction sert à vérifier la syntaxe d'un email
*/
function IsEmail($email)
{
$value = preg_match('/^(?:[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]
+\.)*[\w\!\#\$\ %\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+@(?:(?:(?:[a-zA-Z0-9_](?:[a-
zA-Z0-9_\-](?!\.)){0,61}[a-zA-Z0-9_-]?\.)+[a-zA-Z0-9_](?:[a-zA-Z0-9_\-](?!
$)){0,61}[a-zA-Z0-9_]?)|(?:\[(?:(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\.){3}(?:
[01]?\d{1,2}|2[0-4]\d|25[0-5])\]))$/', $email);
return (($value === 0) || ($value === false)) ? false : true;

107
}
// formulaire envoyé, on récupère tous les champs.
$nom = (isset($_POST['nom'])) ? Rec($_POST['nom']) : '';
$email = (isset($_POST['email'])) ? Rec($_POST['email']) : '';
$objet = (isset($_POST['objet'])) ? Rec($_POST['objet']) : '';
$message = (isset($_POST['message'])) ? Rec($_POST['message'])
: '';

// On va vérifier les variables et l'email ...


$email = (IsEmail($email)) ? $email : ''; // soit l'email est vide si
erroné, soit il vaut
l'email entré

if (($nom != '') && ($email != '') && ($objet != '') && ($message !
= ''))
{
// les 4 variables sont remplies, on génère puis envoie le mail
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'From:'.$nom.' <'.$email.'>' . "\r\n" .
'Reply-To:'.$email. "\r\n" .
'Content-Type: text/plain; charset="utf-8";
DelSp="Yes";
format=flowed '."\r\n" .
'Content-Disposition: inline'. "\r\n" .
'Content-Transfer-Encoding: 7bit'." \r\n" .
'X-Mailer:PHP/'.phpversion();

// envoyer une copie au visiteur ?


if ($copie == 'oui')
{
$cible = $destinataire.';'.$email;
}
else
{
$cible = $destinataire;
};

// Remplacement de certains caractères spéciaux


$message = str_replace("&#039;","'",$message);
$message = str_replace("&#8217;","'",$message);
$message = str_replace("&quot;",'"',$message);
$message = str_replace('<br>','',$message);
$message = str_replace('<br />','',$message);
$message = str_replace("&lt;","<",$message);
$message = str_replace("&gt;",">",$message);
$message = str_replace("&amp;","&",$message);

// Envoi du mail
$num_emails = 0;

108
$tmp = explode(';', $cible);
foreach($tmp as $email_destinataire)
{
if (mail($email_destinataire, $objet, $message,
$headers))
$num_emails++;
}

if ((($copie == 'oui') && ($num_emails == 2)) || (($copie ==


'non') &&
($num_emails == 1)))
{
echo '<p>'.$message_envoye.'</p>';
}
else
{
echo '<p>'.$message_non_envoye.'</p>';
};
}
else
{
// une des 3 variables (ou plus) est vide ...
echo '<p>'.$message_formulaire_invalide.' <a
href="contact.html">
Retour au formulaire</a></p>'."\n";
};
}; // fin du if (!isset($_POST['envoi']))

?>

HTTPS

Pré-requis :

Un serveur DNS fonctionnelle.

Principe de fonctionnement :

Le client et le serveur sont authentifiés à l’aide de certificats. Le certificat doit


être émis par une autorité de certification reconnue comme sûre aussi bien par le
serveur que le client.
Nous allons créer une autorité de certification CA sur le Pfsense faisant office de
serveur. On va créer deux certificats coté client et un certificat serveur. Ces deux
certificats seront signés par le CA.

Création d’une autorité de certification-CA

109
Pour commencer, nous nous rendons dans le menu System > Cert Manager :

Dans l'onglet "CAs" (l'onglet par défaut), nous cliquons sur l'icône en forme de
"+" se trouvant en bas à droite de la liste des CAs existants.

Les champs à renseigner sont les suivants :

- Descriptive name : le nom que l'on souhaite donner à notre autorité de


certification ;
- Method : 3 méthodes sont possibles :

1. Certificate Authority : permet d'importer le certificat (clé publique + clé


privée) d'une autorité de certification existante ;
2. Create an internal Certificate Authority : permet de créer une nouvelle
autorité de certification ;
3. Create an intermediate Certificate Authority : permet de créer une
autorité de certification intermédiaire. Cette autorité de certification
intermédiaire doit être rattachée à une autorité de certification existante.

On renseigne les champs suivants comme ci-dessous :

110
Pour terminer on clique sur Save et notre autorité de certification est créée.

NB : le champ « Common » est important, c’est le nom complet du domaine


Internet à sécuriser.

Création d'un certificat serveur

Nous restons dans le menu System > Cert Manager et basculons sur l'onglet
« Certificates » :

Nous cliquons sur l'icône en forme de "+" se trouvant en bas à droite de la liste
des certificats existants.

On renseigne les champs ci-dessous en faisant comme précédemment lors de la


création du CA mais avec quelques modifications.

111
Le champ « Certificate authority » : l'autorité de certification qui signera le
certificat que nous sommes en train de créer. Dans notre cas, nous choisissons le
CA que nous venons de créer « ca –ironcarbone ».

Le seul élément distinctif est le champ « Certificate Type » pour lequel nous
choisissons « Server Certificate ».

On ajoute le champ hostname pour sécuriser le site en https avec l’adresse IP au


cas où le serveur DNS venait à tomber :

Pour terminer on clique sur Save. Notre certificat pour le serveur est créé.

Création d'un certificat client

Nous procédons exactement de la même manière que pour la création d'un


certificat serveur.

Le seul élément à changer est le champ « Certificate Type » pour lequel nous
choisissons « User Certificate ».

112
Export du certificat Clients

Pour cela, nous retournons dans le menu System > Cert Manager :

Ensuite puis, dans l'onglet « Certificates », nous cliquons sur les icônes « export
CA, export cert et export key » du certificat client que nous avons créé
précédemment :

113
Maintenant notre certificat est téléchargé dans dossier de téléchargement du
navigateur :

Ensuite on va dans les menu Preference > Adcenced > View Certificates :

On va importer le certificat qu’on a téléchargé dans le dossier téléchargement.


Pour cela, il faut aller dans l’onglet Your Certificates > Import :

114
Maintenant on va éditer notre CA pour qu’il identifie les sites internet. Pour cela,
on se place dans l’onglet « Authorities » et on choisit CA qu’on crée.
Puis on clique sur > Edit Trust > This certificate can identify websites > ok :

Pour tester le bon fonctionnement de notre CA, on ferme le navigateur et on le


redémarre on tape « https:// » suivie de notre CN = « pfsense.ironcarbane.com ».
On arrive sur la page de connexion ci-dessous :

115
La sécurisation en https de notre client avec https est terminée.

Messagerie

Installation du serveur Apache

On tape « apt-get install apache2 ». Pour vérifier qu’apache est bien installé, aller
sur un navigateur et taper l’adresse de votre machine.

Installation de PHP

116
Installer les paquets suivants :
apt-get install libapache2-mod-php5 php5 php5-common php5-curl php5-dev
php5-gd php5-idn php-pear php5-imagick php5-imap php5-json php5-mcrypt
php5-memcache php5-mhash php5-ming php5-mysql php5-ps php5-pspell php5-
recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl

Installation de MySQL

Installer les paquets suivants : apt-get install mysql-server mysql-client


mysql-common.

On vous demande de définir un mot de passe super-utilisateur MySQL. Dans le


cadre de notre projet, le mot de passe sera projet2016.

Une fois MySQL installé, nous allons effectuer quelques modifications dans les
fichiers de configuration. Dans « etc/mysql/my.cnf », on va modifier la taille du
cache des index, mettre 32M :

On change également la limite du cache par requête et la taille du cache :

On force utl8 pour éviter les problèmes avec les caractères type accents, etc :

De même dans la section client :

117
Saisir le mot de passe root MySQL (projet2016).

On vous demande de changer de mot de passe, mettre non :

Mettre oui aux autres demandes.

Redémarrer le service : /etc/init.d/mysql restart.

Installation de phpmyadmin

Installer le paquet phpmyadmin : apt-get install phpmyadmin.

Cette fenêtre apparaît :

118
Cocher « apache2 » à l’aide de la touche espace puis la touche entrée.

Puis cette fenêtre s’affiche :

Mettre « oui ».

Saisir le mot de passe root MySQL (projet2016).

Puis il faudra choisir un nouveau mot de passe de connexion pour phpmyadmin.


Dans le cadre du projet, je choisis projet20162 :

Redémarrer apache2 : /etc/init.d/apache2 reload.

Tester que phpmyadmin a bien été installé en allant sur le navigateur :

119
Se connecter avec l’utilisateur « root » et le mot de passe « projet2016 ».

Installation de Postfix

Installer les paquets suivants : « apt-get install postfix » et « apt-get install


postfix-mysql ».

Se connecter à phpmyadmin :

120
On crée une nouvelle base :

La base de données est créée :

Cliquer dessus, ensuite l’onglet plus, puis privilège.

Puis ajouter un nouvel utilisateur :

121
Génération du mot de passe : CQD2mqB8QaDCFt9Q.

Pour lier postfix à la base de données, il faut éditer cinq fichiers.

/etc/postfix/mysql-virtual_domaines.cf :

/etc/postfix/mysql-virtual_comptes.cf :

/etc/postfix/mysql-virtual_aliases.cf :

122
/etc/postfi/mysql-virtual_aliases_comptes.cf :

/etc/postfix/mysql-virtual_quotas.cf :

On teste la connexion en ajoutant un utilisateur dans un groupe :

Dans « /etc/postfix », on édite le fichier « main.cf » :

123
Comme le fichier contient les mots de passe en clair, il faut le sécuriser :

On redémarre le service postfix : /etc/init.d/postfix restart.

On retourne sur phpmysql pour créer dans la table domaine le domaine


« ironcarbone.com ».
Puis dans compte, on ajoute un compte utilisateur en SQL pour pouvoir crypter le
mot de passe :

Pour activer le compte qu’on vient de créer, il faut envoyer un mail en ligne de
commande. Ce qui va permettre d’ajouter le compte dans le fichier
« /var/spool/vmail » qui doit contenir tous les comptes mails :

124
Installation de « courier » qui va permettre de gérer les
protocoles POP et IMAP

Installer les paquets suivants :


apt-get install courier-base courier-authdaemon courier-authlib-mysql courier-
imap courier-pop

Se placer dans « /etc/courier » et modifier le fichier « authdaemonrc » :

125
Il faut ensuite modifier le fichier « authmysqlrc » :

126
Ajouter cette ligne à la fin du fichier :

On redémarre tous les services courier :

Installation du webmail roundcube

Se placer dans /root.


Télécharger « roundcubemail » avec la commande « wget » puis le lien en
.tar.gz :

127
Lien :
https://github.com/roundcube/roundcubemail/releases/download/1.2.0/roundcube
mail-1.2.0-complete.tar.gz

On décompresse le fichier :

On le renomme en www :

On ajoute un utilisateur test :

L’utilisateur s’est crée dans ls/home :

On va copier le dossier « root/www » dans « home/roundcube » : mv www


/home/roundcube.

Et on change le propriétaire du dossier :

128
On crée une nouvelle base de données « roundcube » :

On clique su la base de données puis dans plus > privileges et on on ajoute un


utilisateur :

ROUNDCUBE

On redémarre « courier » et « apache » :

129
Ici l’erreur concerne le propriétaire du dossier, on remarque que Roundcube n’a pas de droits
sur les fichiers indiqués :

130
131
Une fois la configuration terminée, on peut réaliser les tests suivants depuis
l’installer :

132
Malheureusement nous avons une erreur pas encore résolu que nous tenterons
de résoudre avant la présentation finale afin de vous présenter un service
fonctionnel.

Installation du serveur LDAP

Se connecter en tant que superutilisateur root (mdp root) :

133
Installation de slapd et ldap-utils

Saisir la commande « apt-get install slapd ». A la question « souhaitez-vous


continuez ? », répondre « oui » :

Il est demandé de saisir le mot de passe administrateur. Dans le cadre du projet


ca sera « projet2016 ». Il faudra le confirmer en le saisissant une seconde fois.
L’installation du paquet se poursuit.

OpenLDAP

dpkg-reconfigure slapd :

Renseigner le nom de domaine :

134
Saisir le nom de l’organisation :

Indiquer de nouveau le mot de passe :

Rappel : mot de passe administrateur => projet2016.

135
Une question demandant s’il faut supprimer la base de données à la purge du
paquet, on peut répondre « oui ».

Pas besoin de déplacer l’ancienne base de données :

On n’utilisera pas LDAPv2 pour des raisons de sécurité :

136
La configuration de LDAP est finie.

Démarrage du serveur : /etc/init.d/slapd start

Test: ldapsearch -x -b dc=ironcarbone,dc=com

Creation du fichier ldif

Nano /etc/ldap/init.ldif

137
On ajoute un utilisateur dans l’annuaire avec la commande :

« ldapadd -x -f init.ldif -W -D cn=admin,dc=ironcarbone,dc=com »


 -x : ne pas utiliser SASL
 -f : utiliser le fichier init.ldif
 -W : s'authentifier par mot de passe
 -D : avec le login admin@abdomain.org

Mot de passe : projet2016.

Sur pfsense
Aller dans system > user manager > authentification server :

138
Ensuite aller dans Settings et choisir l’annuaire qu’on vient de créer et cliquer sur
« Save & Test » :

139
Si la configuration est correcte le message suivant apparaît :

Ensuite aller dans Diagnostics > Authentication et tester le compte admin :

140
Annuaire LDAP

Prérequis

Pour crée un annuaire LDAP il nous faut un Ubuntu serveur avec une connexion à
internet.
Ensuite il faut installer slapd et ldap-utils, un mot de passe nous sera
demander choisissez un mot de passe suffisamment complexe pour pas qu'on
puisse le devinez. Les conséquences d'un annuaire compromis sont désastreuses.

Puis une confirmation sera également demandée.

Configuration d'OpenLDAP

141
Une fois les deux paquets installés exécuter la commande « sudo dpkg-
reconfigure slapd » ce qui va permettre de configurer slapd.

Plusieurs questions vous seront alors demandées.

À la première répondez non.

Ensuite on nous demande le nom de domaine ici ça sera ironcarbone.com

Ensuite il faut saisir le nom de l'organisation

Et de nouveau le mot de passe

Et encore une confirmation puis vient ensuite le type de base, sélectionner HDB.

142
Une question concernant la base de donnée on peut répondre oui

Non il n'y a pas besoin de déplacer l'ancienne base de données.

143
On n’utilisera pas LDAPv2 pour des raisons de sécurité

La configuration de LDAP est finie.

On peut maintenant démarrer le serveur grâce à la commande : sudo


/etc/init.d/slapd start

On peut déjà faire un premier test avec la commande : ldapsearch -x -b


dc=ironcarbone,dc=com

144
Ensuite on prépare l'annuaire en créant un fichier init.ldif avec la commande :
nano /etc/ldap/init.ldif

145
On ajoute un utilisateur dans l'annuaire avec la commande :

« ldapadd -x -f init.ldif -W -D cn=admin,dc=ironcarbone,dc=com »


4) -x : ne pas utiliser SASL
5) -f : utiliser le fichier init.ldif
6) -W : s'authentifier par mot de passe
7) -D : avec le login admin@abdomain.org

Il vous sera demander un mot de passe, entrer celui que vous avez choisi lors de
la configuration de slapd.

Ensuite il faut installer samba-doc avec la commande : apt-get install samba-


doc samba-common-bin

Il faut maintenant copier les schémas samba :


cp /usr/share/doc/samba-doc/examples/LDAP/samba.ldif.gz
/etc/ldap/schema/

Ensuite on décompresse le fichier :


/etc/ldap$ sudo gzip -d /etc/ldap/schema/samba.ldif.gz

Et pour finir on ajoute le schéma : ldapadd -Q -Y EXTERNAL -H ldapi:/// -f


/etc/ldap/schema/samba.ldif

Et on édite une nouvelle entrée "cn=samba,cn=schema,cn=config"

Dans le cadre du projet nous allons maintenant ajouter quelques utilisateurs.


Pour cela, de la même façon que nous avons créé le fichier /etc/ldap/init.ldif, nous
allons créer le fichier user.ldif qui va contenir tous les utilisateurs de l’annuaire.

146
NAT

Introduction :

Le NAT veut dire Network Address Translation c'est de la traduction d'adresse


réseau. Dans notre cas on va plutôt s’intéresser au pat (port adresse translation).
Le pat permet d’accéder à plusieurs machine à partir d'une seule adresse ip.
Imaginons que l'on dispose de l'adresse 192.168.1.1 et derrière cet adresse on
dispose d'un serveur http et d'un serveur ftp sur deux machine distincte, et bien
pour accéder au serveur http je vais saisir 192 .168.1.80 pour le serveur http et
192.168.1.1:21 pour le serveur ftp ce qui me permet d’accéder au 2 services
sans avoir a connaître l'adresse ip des mes serveurs et ça permet également
d'économiser des adresses ipv4.

Pre-requis :

Pour configurer le NAT il vous faut :


• un pfsense configurer avec au minimum 2 interfaces
• un serveur accueillant au moins un services pour faire des tests
• un client en dehors du réseau local

Configuration :

Pour configurer un NAT il suffit d'aller dans firewall ⇒ nat

147
Ensuite on clique sur add

On va faire un exemple pour un serveur HTTP.

Interface:il s'agit de l'interface qui donne sur l’extérieur du réseau de


l'entreprise
protocole :il s'agit du protocole utilisé ici http utilise du tcp donc on met tcp
destination:il s'agit ici des clients qui vont se connecter les client vont parti du
réseau wan donc on choisi wan adress
Destination port range:Il s'agit du port sur lequel les clients vont se connecter
ici c'est le port 80 si jamais ce port aurait déjà été utilisé il aurait value le changé
par exemple 8080
Redirect target ip : il s'agit de l'adresse ip du serveurs
Redirect target port: il s'agit du port utilisé par le serveur ici on utilise le port
par défaut
C'est tout ce qu'il faut configurer.

Test

148
Pour tester rien de plus simple il suffit de se connecter à un client depuis
l’extérieur.

Firewall

Prérequis :

Pour réaliser un firewall sur pfsense il vous faut :

 Au moins 2 interfaces connecter

Configuration du firewall

Pour configurer le firewall allez dans firewall ⇒ rules

Ensuite vous vous retrouverez sur cette page :

149
En haut il y a les interfaces du firewall (WAN ,LAN,OPT1,V10,V30 et V20) ici on
configure le vlan 10 (vlan de management). En bas à droite vous voyez qu'il y a
deux boutons add. Il y en a un pour ajouter la règle au dessus et un autre pour
rajouter une règle en dessous car l'ordre de règle a une importance.

Par exemple ici je mets une règle qui interdit tout au dessus , la règle en dessous
ne sera pas appliqué.

Pourquoi ? Parce que le firewall lit les règles dans l'ordre donc si la première règle
est d’interdire tout, le moindre trafic concordera à cette règle donc la règle pour
tout interdire vaut mieux la mettre à la fin,même principe si c'est un réseau en
particulier il vaut mieux mettre les règles d'interdiction à la fin.

Par défaut le firewall interdit tout le trafic si aucune règle n'est spécifiée.
On va faire un exemple pour autoriser le ping.

Cliquons sur add avec la flèche vers le bas.

Action:permet de choisir entre trois actions :


Pass : laisse passer le trafic
Block : bloque le trafic
Reject : bloque mais envoie un message comme quoi le paquet a été supprimer.
Protocol : permet de choisir le protocole ici on mettra icmp

150
Source : permet de choisir la source ici on mettra le réseau du vlan 10
Destination : permet de choisir la destination ici on mettra seulement le pfsense
et on clique sur save.

Test

Pour faire un test rien de plus simple il suffit de pinger le firewall (192.168.1.1)

151
Lexiques

152
LDAP1 (Lightweight Directory Access Protocol) : protocole permettant
l'interrogation et la modification des services d'annuaire c'est-à-dire d'accéder à
des bases d'informations sur les utilisateurs d'un réseau.

OpenVPN2 : logiciel libre permettant de créer un réseau privé virtuel (VPN).

VPN3 (Virtual Private Network) : permet d'accéder à des ordinateurs distants


comme si l'on était connecté au réseau local. On peut ainsi avoir un accès au
réseau interne de l'entreprise.

Pfsense4 : routeur/pare-feu possédant les mêmes fonctionnalités d'une box


opérateur avec des services supplémentaires.

Failover5 : moyens mis en œuvre pour assurer une continuité de service d'un
système critique en basculant automatiquement sur un système de secours.

HTTP6 (HyperText Transfer Protocol) : protocole de communication client-serveur


développé pour le World Wide Web.

DMZ7 (Demilitarized Zone) : sous-réseau séparé du réseau local et isolé


d'internet par un pare-feu.

Commutateur8 : équipement qui relie plusieurs segments (câbles ou fibres) dns


un réseau informatique.

DHCP9 : protocole réseau dont le rôle est d'assurer la configuration automatique


des paramètres IP d'une station, notamment en lui affectant automatiquement
une adresse IP et un masque de sous-réseau.

NAT10 (Network Address Translation) : fonctionnalité des routeurs qui permet de


traduire une adresse IP source interne en adresse IP globale.

Proxy11 : composant logiciel informatique qui joue le rôle d'intermédiaire en se


plaçant entre deux hôtes pour faciliter ou surveiller leurs échanges.

DNS12 (Domain Name System) : service permettant de traduire une adresse IP en


un nom de site internet.

Snort13 : système de détection d'intrusion (IDS) pour le réseau informatique.

HTTPS14 ( HyperText Transfer Protocol Secure) : variante du HTTP sécurisée par


l'usage des protocoles SSL ou TLS.

SSH15 (Secure Shell) : protocole permettant à un client d'ouvrir une session


interactive sur une machine distante.

Firewall16 : système permettant de protéger un ordinateur ou un réseau


d'ordinateurs des intrusions provenant d'internet.

Apache17 : logiciel permettant à des clients d'accéder à des pages web.

Samba18 : logiciel qui permet le partage de fichiers.

153
MCD19 (Modèle Conceptuel des Données) : représente de façon structurée les
données qui seront utilisées par le système d'information.

IP20 : numéro d'identification qui est attribué de façon permanente ou provisoire


à chaque appareil connecté à un réseau informatique.

FQDN21 (Fully Qualified Domain Name) : nom de domaine révélant la position


absolue d'un nœud dans l'arborescence DNS en indiquant tous les domaines de
niveau supérieur jursqu'à la racine. Le FQDN est ponctué par un point final.

TCP22 : protocole qui permet de transporter des données de manière fiable sur
un réseau.

Cryptographie asymétrique23 : méthode de cryptage utilisant une paire de


clés composée d'une clé publique pour chiffrer et d'une clé privée pour déchiffrer
des données confidentielles.

SFTP24 : protocole de transferts de fichiers sécurisés par SSH.

CA25 (Certificate Authority) : autorité de certification délivant des certificats


décrivant des identités numériques et mettant à disposition les moyens de
vérifier la validité des certificats qu'elle a fourni.

IDS26 (Intrusion Detection System) : mécanisme destiné à repérer des activités


anormales ou suspectes sur le réseau ou sur une machine.

UDP27 (User Datagram Protocol) : protocole qui permet la transmission de


données de manière très simple entre deux entités.

ICMP28 (Internet Control Message Protocol) : protocole qui permet de gérer les
informations relatives aux erreurs des machines connectées.

FTP29 (File Transfer Protocol) : protocole de communication destiné à l'échange


informatique de fichiers sur un réseau.

MySQL30 : système de gestion de bases de données informatique.

Postfix31 : logiciel de messagerie électroniques qui se charge de la livraison de


courriers électroniques.

HTML32 (HyperText Markup Languaga) : langage informatique conçu pour


représenter les pages web.

CSS33 (Cascading Style Sheets) : forme un langage informatique qui décrit la


présentation des documents HTML et XML.

PHP34 (Hypertext Preprocessor) : langage de programmation principalement


utilisé pour produire des pages web dynamiques.

Squid35 : serveur proxy.

Clam36 : logiciel antivirus pour Unix. Il est généralement utilisé avec les serveurs
de courriels pour filtrer les courriers comportant des virus.

154
Virus informatique37 : programme informatique qui infecte un ordinateur et
perturbe son bon fonctionnement.

Avira38 : logiciel de détection de virus informatique.

CRC39 (Code de Redondance Cyclique) : outil code permettant de détecter les


erreurs lors d'une transmission de données.

PhpVirtualBox40 : logiciel qui permet d'administrer VirtualBox à distance à partir


d'un navigateur web.

TeamViewer41 : logiciel gratuit permettant de partager directement son


ordinateur avec n'importe qui à travers le monde.

155

Vous aimerez peut-être aussi