RamandanirainyOlivaM ESPA ING 11

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 70

Année Universitaire 2009/2010

UNIVERSITE D’ANTANANARIVO
ECOLE SUPERIEURE POLYTECHNIQUE D’ANTANANARIVO
DEPARTEMENT ELECTRONIQUE

MEMOIRE DE FIN D’ETUDES


EN VUE DE L’OBTENTION DU DIPLOME D’INGENIEUR

Spécialité ELECTRONIQUE
Option : INFORMATIQUE APPLIQUEE

MISE EN PLACE D’UN SERVEUR PROXY ET SYSTEME DE


SECURISATION DES RESEAUX SOUS LINUX

Présenté par :
 RAMANDANIRAINY Oliva Michaël

N° d’ordre : 09/EN/IA/2010 Soutenu, le 16 juin 2011


UNIVERSITE D’ANTANANARIVO
ECOLE SUPERIEURE POLYTECHNIQUE D’ANTANANARIVO
DEPARTEMENT ELECTRONIQUE

MEMOIRE DE FIN D’ETUDES EN


VUE DE L’OBTENTION DU DIPLOME D’INGENIEUR

Spécialité ELECTRONIQUE
Option: INFORMATIQUE APPLIQUEE

MISE EN PLACE D’UN SERVEUR PROXY ET SYSTEME


DE SECURISATION DES RESEAUX SOUS LINUX

Présenté par :
RAMANDANIRAINY Oliva Michaël

Président : Madame RABEHERIMANANA Lyliane Irène

Examinateurs: Monsieur RABESANDRATANA Andriamihaja Mamisoa

Monsieur ANDRIAMANANTSOA Guy Danielson

Monsieur RANDRIAMAROSON Rivo Mahandrisoa

Rapporteur : Monsieur RAKOTONDRASOA Justin

Soutenu, le16 juin 2011


REMERCIEMENTS

Tout d’abord , je rends grâce au Seigneur Dieu tout puissant pour son amour et sa
bénédiction qui m'a permis de mener à terme ce travail.

Ensuite, j'adresse mes vifs remerciements et sincères reconnaissances à :

- Monsieur RATSIMBA Mamy Nirina, chef de Département Electronique à l’Ecole Supérieure


Polytechnique d’Antananarivo, qui m' a permis d’arriver à ce stade.

- Madame RABEHERIMANANA Lyliane Irène, qui malgré ses lourdes responsabilités me fait
l’honneur de présider cette soutenance de mémoire.

- Monsieur RAKOTONDRASOA Justin, mon encadreur, qui m' a aidé énormément dans mes
travaux de recherche et surtout de m' avoir accordé sa confiance.

- Messieurs RABESANDRATANA Andriamihaja Mamisoa, ANDRIAMANANTSOA Guy Danielson et


RANDRIAMAROSON Rivo Mahandrisoa, qui ont voulu consacrer leur précieux temps pour juger ce
travail.

- Tous les enseignants de l’ESPA pour la formation inestimable que j'ai reçue de leur part durant
mes cinq années d’études.

Mes sincères remerciements s’adressent également à :

-Ma famille, qui m' a soutenu tant moralement que financièrement durant mes années d’études et
surtout pendant la réalisation de ce travail.

- Tous mes collègues, mes amis et à tous ceux qui ont contribué, de près ou de loin, à la réalisation
de ce présent mémoire.

QUE DIEU VOUS BENISSE!

Mika
RESUME

La sécurisation d’un réseau informatique nécessite au préalable une base de


connaissance suffisante concernant en premier lieu, les réseaux informatiques et leurs
architectures. Puis des risques encourus lors de ses déploiements autrement dit ses
vulnérabilités face aux actes intrusifs ou aux piratages. Ainsi, il faut prévoir une politique de
sécurité pour assurer la protection du réseau. Ce qui m' a amené à étudier le système de
sécurisation des réseaux sous Linux ainsi que la mise en place d'un serveur proxy.
TABLE DES MATIERES

INTRODUCTION ............................................................................................................. 1

PRESENTATION DU PROJET ...................................................................................... 2

Chapitre I : GENERALITES SUR LES RESEAUX ET LA SECURITE .................... 6

I.1. Généralités sur les réseaux informatiques .................................................................... 6

I.1.1. Qu’est-ce qu’un réseau ? ........................................................................................... 6

I.1.2. Classification des réseaux ......................................................................................... 6

I.1.3. Architectures protocolaires ....................................................................................... 6

I.1.3.1. Le modèle OSI .................................................................................................. 6

I.1.3.2. Architecture TCP/IP .......................................................................................... 8

a. La couche Application ................................................................................... 9

b. La couche Transport .................................................................................... 11

c. La couche Internet ........................................................................................ 13

d. La couche Accès réseau ............................................................................... 14

I.1.3.2. L’encapsulation des données ........................................................................... 14

I.2. La sécurité des réseaux informatiques ....................................................................... 15

I.2.1. Introduction ............................................................................................................ 15

I.2.2. Les systèmes de sécurité ........................................................................................ 16

I.2.2.1. Objectifs d’un système de sécurité .................................................................. 16

I.2.2.2. Les buts de la sécurité des réseaux informatiques .......................................... 16

a. La confidentialité ......................................................................................... 16
b. L’authentification ......................................................................................... 17
c. L’intégrité .................................................................................................... 17
d. La disponibilité ............................................................................................ 17
e. Le non répudiation de l’origine .................................................................... 17
f. Le non répudiation de la délivrance .............................................................. 18
g. Le contrôle d’accès ...................................................................................... 18
h. Le secret de flux ........................................................................................... 18
i. Le confinement ............................................................................................. 18
Chapitre II : LES ATTAQUES RESEAUX ................................................................. 19

II.1. INTRODUCTION ...................................................................................................... 19

II.2. ANATOMIE D’UNE ATTAQUE.............................................................................. 19

II.3. LES DIFFERENTS TYPES D’ATTAQUES ............................................................. 20

II.3.1. Les attaques réseaux ........................................................................................... 20

III.3.1.1. Les techniques de scan ......................................................................... 20


III.3.1.2. IP Spoofing ........................................................................................... 22
III.3.1.3. ARP Spoofing ...................................................................................... 24
III.3.1.4. Fragments Attacks ................................................................................ 25
II.3.2. Les attaques applicatives .................................................................................... 26

III.3.2.1. Les problèmes de configuration ........................................................... 26

III.3.2.2. Les bugs ................................................................................................ 26

III.3.2.3. Les buffer overflows ............................................................................. 26

III.3.2.4. Les scripts ............................................................................................. 27

III.3.2.5. Les injections SQL ................................................................................ 27

III.3.2.6. Man in the middle ................................................................................. 27

III.3.2.7. Le Déni de service ................................................................................. 28

II.4. CONCLUSION ............................................................................................................. 29

Chapitre III : LES FIREWALLS .................................................................................. 30

III.1. Définition ................................................................................................................. 30

III.2. Les pare-feux sous Windows et sous Linux ........................................................... 31

III.2.1. Description du système d'exploitation ............................................................. 31

III.2.2. Composantes du système d'exploitation .......................................................... 31

III.2.3. Mode de fonctionnement des pare-feux sous Windows et sous Linux ........... 32

III.3. Fonctionnement du pare-feu sous Linux ................................................................ 33

III.3.1. Les firewalls à filtrage de paquets ................................................................... 33

III.3.1.1. Netfilter ................................................................................................. 33

a. L’architecture de Netfilter ............................................................................ 33

b. La commande iptables .................................................................................. 35

c. Filtrage des paquets ...................................................................................... 36


d. Translation d’adresse ................................................................................... 37

III.3.2. Les firewalls Proxy ............................................................................................... 40

III.3.2.1. Le principe de fonctionnement d'un proxy ................................................... 40

III.3.2.2. Le principe de fonctionnement d'un proxy ................................................... 41

a. La fonction de cache .................................................................................... 41

b. Le filtrage...................................................................................................... 42

c. L'authentification .......................................................................................... 43

III.3.2.3. Le reverse-proxy ........................................................................................... 43

III.3.2.4. Mise en place d'un serveur proxy ................................................................. 44

III.4. Les pare-feux matériels ........................................................................................... 44

III.4.1. Présentation ..................................................................................................... 44

III.4.2. Avantages ........................................................................................................ 45

III.4.2. Inconvénients ................................................................................................... 45

III.5. Les limites des firewalls ......................................................................................... 45

Chapitre V : REALISATION ET SIMULATION ....................................................... 46

V.1. DESCRIPTION ............................................................................................................ 46


V.1.1. Le Cheval de Troie ................................................................................................ 46

IV.1.1.1. Définition ............................................................................................... 46

IV.1.1.2. Schéma d’utilisation .............................................................................. 46

IV.1.1.3. Principe .................................................................................................. 47

V.1.2. Outils utilisés pour le développement ................................................................... 47

V.1.3. Architecture des logiciels développés .................................................................... 47

V.1.4. Outils utilisés pour le développement .................................................................... 47

IV.1.4.1. L’application serveur ............................................................................. 47

IV.1.4.2. L’application cliente............................................................................... 48

CONCLUSION ....................................................................................................................... 49
ANNEXE 1 : Rôles de chaque couche du modèle OSI ................................................ 50

ANNEXE 2 : Installation d’un serveur proxy Squid et SquidGuard ....................... 52

A2.1. Principe de fonctionnement .................................................................................... 52

A2.2. Installation et configuration du proxy Squid .......................................................... 54

A2.3. SquidGuard ............................................................................................................. 54

REFERENCES BIBLIOGRAPHIQUES ............................................................................ 57


LISTE DES ABREVIATIONS

ACK: ACKnowledged

ADOdb: Active Data Objects Data Base

API: Appliacation Programming Interface

ARP: Address Resolution Protocol

ASP: Active Server Page

ATM: Asyncrhronous transfer Mode

BASE: Basic Analysis and Security Engine

DARPA: Defense Advanced Research Project Agency

DMZ: DeMilitarized Zone

DNS: Domain Name System

DoD: Department of Defense

DSA: Distributed System Architecture

FTP: File Transfer Protocol

GNU: GNU is Not Unix

GPL: General Public License

HTTP:HyperText Transfer Protocol

HTTPS:HyperText Transfer Protocol Secure

ICMP: Internet Control Message Protocol

IGMP: Internet Group Management Protocol

IP: Internet Protocol

IPX: Internet Packet eXchange

ISO: International Standardization Organization


MAC: Medium Access Control

NAT: Network Address Translation

OSI: Open System Interconnection

OSPF: Open Shortest Path First

Perl: Pathologically Eclectic Rubbish Lister

PHP: PHP Hypertext Preprocessor

PPP: Point to Point Protocol

RARP: Reverse Address Resolution Protocol

RFC: Request For Comment

RIP: Routing Information Protocol

RST: Reset

SLIP: Serial Line Interface Protocol

SMTP: Simple Mail Transfer Protocol

SNA: System Network Architecture

SNMP: Simple Network Management Protocol

SQL: Structured Query Language

TCP: Transmission Control Protocol

TFTP: Trivial FTP

UDP: User Datagram Protocol


LISTE DES FIGURES ET TABLEAUX

Liste des figures dans la présentation du projet

Figure P.1 : Architecture non sécurisée

Figure P.2 : Architecture munie des firewalls

Figure P.3 : Architecture sécurisée avec des firewalls et proxy

Listes des figures et tableaux dans les chapitres et annexes

Figure 1.1 : Les sept couches du modèle OSI

Figure 1.2 : Le modèle OSI et l’architecture TCP/IP

Figure 1.3 : Protocoles et applications de TCP/IP

Figure 1.4 : Etablissement d’une connexion TCP

Figure 1.5 : L’encapsulation des données dans TCP/IP

Figure 2.1 : Scan SYN

Figure 2.2 : Scans Xmas, NULL, FIN

Figure 2.3 : Illustration de l’IP Spoofing

Figure 2.4 : Procédure de requête ARP

Figure 2.5 : Man in the middle ou Attaque de l’homme au milieu

Figure 3.1 : Firewall

Figure 3.2 : Composantes du système d'exploitation

Figure 3.3 : Netfilter

Figure 3.4 : la commande iptables

Figure 3.5 : filtrage de paquets

Figure 3.6 : Exemple d’une règle

Figure 3.8: Translation d’adresse source

Figure 3.9 : Translation d’adresse source (masquerading)

Figure 3.10 : Translation d’adresse de destination (Portforwarding)


Figure 3.11 : Activation du transit des paquets vers un serveur de messagerie

Figure 3.12 : Activation de la translation d’adresse de destination

Figure 3.13 : Firewall proxy

Figure 3.14 : Principe de fonctionnement d’un proxy

Figure 3.15 : Cache proxy

Figure 3.16 : Filtrage

Figure 3.17 : Authentification

Figure 3.18 : Principe de fonctionnement d’un reverse-proxy

Figure 4.1: Schéma d’utilisation

Figure A2. 1 : Schéma de fonctionnement d’un proxy

Tableau I : Liste des ports couramment utilisés


INTRODUCTION

De nos jours, grâce au phénomène d’expansion réseau aucun système d’informations


n’est plus complètement sûr. La sécurité vise à protéger l’accès et la manipulation des
données par des mécanismes d’authentification, d’autorisation, de contrôle, etc. C’est dans ce
contexte que m'est venue l’idée de mettre en place un serveur proxy et aussi d'étudier le
fonctionnement du firewall du système d'exploitation Linux pour avoir une sécurisation
optimale. D’ailleurs, c’est l’essence même de ce mémoire de fin d’études qui s’intitule « Mise
en place d’un serveur proxy et système de sécurisation des réseaux sous Linux ».

Après analyses des différentes solutions présentes sur le marché, mon choix s’est
orienté vers « NetFilter » pour le Firewall et « Squid» pour le serveur proxy. Pour leur
implantation, j'ai fait appel au système d’exploitation « Debian GNU/Linux» qui est une
distribution majeure non commerciale. Il est reconnu pour son sérieux et ses fortes prises de
position dans le monde libre ; il garantit la liberté des logiciels. D’autant plus « Debian» est
réputé pour sa stabilité, pour son très bon système d’installation de mise à jour des
composants logiciels et pour sa rapidité à réparer les failles de sécurité.

Ce rapport se subdivise en quatre chapitres bien distincts. Le premier chapitre


introduira des généralités sur les réseaux informatiques et leurs sécurités. Il décrit en quelques
pages les topologies des réseaux informatiques, et les états de la sécurité informatique. Le
second chapitre renseigne sur quelques types d’attaques réseaux le plus utilisés. Quant au
troisième chapitre, il sera entièrement consacré aux solutions envisagées pour l’obtention d’un
niveau de sécurité optimale: le firewall, le proxy; enfin le dernier chapitre est dédié aux
différentes simulations.

1
PRESENTATION DU PROJET

Le projet consiste, dans un premier temps, à la mise en place d’une architecture réseau
sécurisée en y implémentant différents outils de protection (firewalls, proxys), puis en
l’élaboration d’un « Trojan » (cheval de Troie). Pour l’information, ce dernier est en quelques
sortes un programme informatique caché dans un autre qui exécute des commandes
sournoises, et qui généralement donne un accès à l'ordinateur sur lequel il est exécuté afin d’y
effectuer des opérations malicieuses à l'insu de l'utilisateur.

Le thème principal de ce projet concerne la sécurité des réseaux informatiques. Pour


soigner le mal, il faut d’ores et déjà le connaitre d’avance. C’est dans ce contexte que j'ai
créé cette application (Trojan) qui est à ce jour considérée comme malveillant mais
seulement, ici, je l’ai développée dans un but éducatif et aussi pour faire part des risques
encourus de part son existence.

Il existe une infinité de façon d’organiser un réseau mais, quand la sécurité entre en jeu, il
est conseillé d’avoir une architecture réseau bien pensée. Je présente dans cet ouvrage
différents niveaux d’architecture sécurisée partant d’une architecture peu ou pas sécurisée
pour arriver à une architecture sécurisée.

2
1. Architcture non sécurisée

L’architecture réseau de base initiale est dépourvue de tous types de moyen de sécurité
mais disposant d’une connexion Internet avec le réseau local, un serveur de messagerie et un
site web :

Figure 1 : Architecture non sécurisée

Les serveurs web, de messagerie et de partage de connexion Internet seront assurés par
une seule machine. Cette machine est connectée directement à Internet. Dans ce type de
réseau, il n’y a aucune forme de sécurité : la connexion avec Internet n’est absolument pas
sécurisée.

2. Le premier niveau de sécurité

Notons qu’il est préférable de dédier une machine pour le serveur web, une machine
pour le serveur de messagerie et on procèdera de la même façon pour les autres types de
serveur. Ensuite, il faut les placer dans une zone extérieure au réseau local. Ils constitueront
une zone démilitarisée (DMZ).

On utilisera deux machines pour le firewalling et un routeur pour assurer la connexion


Internet.

La mise en place d’un firewall entre le réseau local et le routeur empêchera toute
connexion de l’extérieur vers le réseau local. Ainsi, on autorisera seulement les connexions
depuis le réseau local sur un nombre limité de services.

3
Un firewall situé entre le routeur et la DMZ gèrera tous les accès sur les serveurs web
et de messagerie (depuis le réseau local comme depuis l’extérieur). Il empêchera les tentatives
de connexion sur les autres services.

Figure 2 : Architecture munie des firewalls.

4
3. Le deuxième niveau de sécurisation

Celle-ci s’appuiera sur l’architecture précédente, en ajoutant, une zone de décontamination


entre Internet et le réseau interne qui est constituée essentiellement d’analyseurs de contrôle
de contenu, des antivirus, des utilitaires surveillant le trafic réseau et surtout des proxys qui
pourront prendre la décision de couper la connexion en cas d’attaques ou de simplement
rejeter la demande. Tous les flux entrants et sortants passeront par cette zone.

Figure 3 : Architecture sécurisée avec des firewalls et serveur proxy

La mise en place de ces différents outils de protection est explicitée dans les chapitres
qui suivent.

5
Chapitre I : GENERALITES SUR LES RESEAUX ET LA SECURITE

I.1. Généralités sur les réseaux informatiques

I.1.1. Qu’est-ce qu’un réseau ?

Un réseau informatique est un ensemble d'équipements reliés entre eux pour échanger des
informations. Les équipements interconnectés peuvent être des ordinateurs, des stations de
travail, des terminaux ou des appareils de stockage.

I.1.2. Classification des réseaux

Les réseaux sont classifiés selon différents critères. La classification traditionnelle, fondée sur
la notion d’étendue géographique, correspond à un ensemble de contraintes que le concepteur
devra prendre en compte lors de la réalisation de son réseau. [1]

Généralement, on adopte la terminologie suivante :

 LAN (Local Area Network), réseau local d’étendue limitée à une circonscription
géographiquement réduite, ces réseaux destinés au partage local de ressources
informatiques (matérielles ou logicielles) offrent des débits élevés de 10 à 100 Mbits/s.

 MAN (Metropolitan Area Network), d’une étendue de l’ordre d’une centaine de


kilomètres, les MAN sont généralement utilisés pour fédérer les réseaux locaux ou
assurer la desserte informatique de circonscriptions géographiques importantes (réseau
de campus).

 WAN (Wide Area Network), ces réseaux assurent généralement le transport


d’information sur de grande distance. Lorsque ces réseaux appartiennent à des
opérateurs, les services sont offerts à des abonnés contre une redevance. Les débits
sont très variables de quelques Kbit/s à quelques Mbit/s. [2]

I.1.3. Architectures protocolaires

I.1.3.1. Le modèle OSI

Le développement rapide des moyens de calcul et l’importante croissance des systèmes


d’information ont engendré la multiplicité des techniques réseaux. La complexité croissante
des besoins de communication et la diversité des solutions adoptées ont très vite fait

6
apparaitre la nécessité de définir un modèle complet de communication ou architecture
protocolaire réseau.

Historiquement, chaque grand constructeur avait défini la sienne : SNA d’IBM, DSA de
BULL. Ces architectures propriétaires incompatibles entre elles ne permettent pas
l’interopérabilité des systèmes. C’est ce qu’entreprit l’ISO en définissant une architecture de
communication normalisée, couramment appelée modèle de référence ou modèle OSI. [1]

La décomposition en sept couches superposées, sept sous-ensembles fonctionnels, proposée


par l’ISO définit les caractéristiques physiques et logicielles pour l’interconnexion en réseau
des systèmes ouverts. Les fonctionnalités de chaque couche sont assurées par des fonctions
logicielles, à l’exception des couches 1 et 2, réalisées par des composants matériels. [3]

Ce modèle d’architecture en couches, dénommé modèle OSI, est décrit par la figure 1.1. Il est
fondamental de garder à l’esprit que ce sont les applications (couche 7) des systèmes
d’extrémité (systèmes A et B) qui ont besoin d’échanger des données. Les autres couches ne
sont là que pour permettre cet échange [4]. L’annexe [A1.1] détaille les fonctionnalités de
chacune des couches composant le modèle.

Figure 1.1 : Les sept couches du modèle OSI

7
I.1.3.2. Architecture TCP/IP

 Origine

L’architecture TCP/IP a été développée, dans le milieu des années 1970, par la DARPA pour
les besoins d’interconnexion des systèmes informatiques de l’armée (DoD). TCP/IP, du nom
de ses deux protocoles principaux (TCP, Transmission Control Protocol et IP, Internet
Protocol), est un ensemble de protocoles permettant de résoudre les problèmes
d’interconnexion en milieu hétérogène. [1]

Aujourd’hui, TCP/IP est le protocole standard de tous les réseaux, du LAN au WAN. De
récentes adaptations autorisent les flux multimédia et, en particulier, la voix.

 Principe architectural

Précédant le modèle OSI, TCP en diffère fortement, non seulement par le nombre de couches,
mais aussi par l’approche. Le modèle OSI spécifie des services (approche formaliste), TCP/IP
des protocoles (approche pragmatique). Développé au-dessus d’un environnement existant,
TCP/IP ne décrit, à l’origine, ni de couche physique ni de couche liaison de données. Les
applications s’appuient directement sur le service de transport. La Figure 1.2 compare les
deux architectures.

Figure 1.2 : Le modèle OSI et l’architecture TCP/IP

8
 Description générale de la pile et applications TCP/IP

L’architecture TCP/IP comprend de nombreux programmes applicatifs, utilitaires et


protocoles complémentaires (figure 1.2) [2]. À l’origine TCP/IP ne spécifiait aucun protocole
de ligne, il s’appuyait sur les réseaux existants. L’utilisation massive de TCP/IP a fait
apparaître des réseaux tout IP et la nécessité de disposer d’un protocole de liaison (SLIP,
PPP). De même, TCP/IP a été adapté aux protocoles dits « Haut Débit » comme l’ATM qui
constitue aujourd’hui le cœur de la plupart des réseaux privés et d’opérateurs.

Figure 1.3 : Protocoles et applications de TCP/IP

a. La couche Application

Contrairement au modèle OSI, c'est la couche immédiatement supérieure à la couche


transport.

Les principaux protocoles et applications de l’environnement TCP/IP sont :

- HTTP, assure le transfert de fichiers hypertextes entre un serveur Web et un client


Web ;
- FTP, est un système de manipulation de fichiers à distance (transfert, suppression,
création...) ;
- TELNET, TELetypewriter NETwork protocol (ARPA) ou TERminaL NETwork
protocol, système de terminal virtuel, permet l’ouverture de sessions avec des
applications distantes ;
- SMTP, offre un service de courrier électronique ;

9
- TFTP, est une version allégée du protocole FTP,
- DNS, est un système de bases de données réparties assurant la correspondance d’un
nom symbolique et d’une adresse Internet (adresse IP) ;
- RIP, est le premier protocole de routage (vecteur distance) utilisé dans Internet ;
- SNMP, est devenu le standard des protocoles d’administration de réseau ;
- ICMP, assure un dialogue IP/IP et permet notamment : la signalisation de la
congestion, la synchronisation des horloges et l’estimation des temps de transit... Il est
utilisé par l’utilitaire Ping qui permet de tester la présence d’une station sur le réseau.
- ARP, est utilisé pour associer une adresse logique IP à une adresse physique MAC
(adresse de l’interface dans les réseaux locaux) ;
- RARP, permet l’attribution d’une adresse IP à une station ;
- OSPF, est un protocole de routage du type état des liens, il a succédé à RIP ;
- SLIP, protocole d’encapsulation des paquets IP, il n’assure que la délimitation des
trames ;
- PPP, protocole d’encapsulation des datagrammes IP, il assure la délimitation des
trames, identifie le protocole transporté et la détection d’erreurs.

i. Les ports réseaux

De nombreux programmes TCP/IP peuvent être exécutés simultanément sur Internet. Chacun
de ces programmes travaille avec un protocole, toutefois l'ordinateur doit pouvoir distinguer
les différentes sources de données.

Ainsi, pour faciliter ce processus, chacune de ces applications se voit attribuer une adresse
unique sur la machine, codée sur 16 bits appelé:port. Le port sert donc à indiquer l'application
à laquelle les données sont destinées. De cette manière, lorsque l'ordinateur reçoit des
informations destinées à un port, les données sont envoyées vers l'application correspondante.
S'il s'agit d'une requête à destination de l'application, l'application est appelée application
serveur. S'il s'agit d'une réponse, on parle alors d'application cliente. [5]

10
Ces ports sont numérotés de 0 à 65535 :

 Les ports 0 à 1023 sont les «ports reconnus» ou réservés. Ils sont, de manière
générale, réservés aux processus système ou aux programmes exécutés par des
utilisateurs privilégiés.
 Les ports 1024 à 49151 sont appelés «ports enregistrés».
 Les ports 49152 à 65535 sont les «ports dynamiques et/ou privés».

Voici une liste des ports reconnus les plus couramment utilisés :

Tableau I : liste des ports couramment utilisés

Port Service ou Application Description


20 Port de donnée FTP Le FTP est utilisé pour le
21 Port de contrôle FTP transfert des fichiers.
23 Telnet Connexion à distance.
25 SMTP Courrier sortant.
68 DHCP Utilisé pour une configuration
automatique d’une adresse IP.
80 HTTP Navigation sur Internet.
110 POP3 Courrier entrant.

b. La couche Transport

Elle assure l’acheminement des données et les mécanismes permettant de connaitre l’état de la
transmission. Le numéro de port est associé au paquet de données appelé message au niveau
de la couche application pour identifier le type de service utilisé.

La couche transport contient deux protocoles permettant à deux applications d’échanger des
données indépendamment du type de réseau emprunté :

 Le protocole TCP : protocole de transport orienté connexion fiable assurant un


contrôle de flux.

11
Établissement d'une connexion

Étant donné que ce processus de communication, qui se fait grâce à une émission de données
et d'un accusé de réception, est basé sur un numéro d'ordre (appelé généralement numéro de
séquence), il faut que les machines émettrices et réceptrices (client et serveur) connaissent le
numéro d'ordre initial de l'autre machine.

L'établissement de la connexion entre deux applications se fait souvent comme suit:

 Les ports TCP doivent être ouverts


 L'application sur le serveur est passive, c'est-à-dire que l'application est à l'écoute, en
attente d'une connexion
 L'application sur le client fait une requête de connexion sur le serveur dont
l'application est en ouverture passive. L'application du client est dite "en ouverture
active"

Les deux machines doivent donc synchroniser leurs séquences grâce à un mécanisme
communément appelé « three ways handshake » (poignée de main en trois temps), que l'on
retrouve aussi lors de la clôture de session.

Ce dialogue permet d'initier la communication, il se déroule en trois temps, comme sa


dénomination l'indique :

 Dans un premier temps la machine émettrice (le client) transmet un segment


dont le drapeau SYN est à 1 (pour signaler qu'il s'agit d'un segment de synchronisation),
avec un numéro d'ordre N, que l'on appelle numéro d'ordre initial du client
 Dans un second temps la machine réceptrice (le serveur) reçoit le segment
initial provenant du client, puis lui envoie un accusé de réception, c'est-à-dire un segment
dont le drapeau ACK est à 1 et le drapeau SYN est à 1 (car il s'agit là encore d'une
synchronisation). Ce segment contient le numéro d'ordre de cette machine (du serveur) qui
est le numéro d'ordre initial du client. Le champ le plus important de ce segment est le
champ accusé de réception qui contient le numéro d'ordre initial du client, incrémenté de 1.

12
 Enfin, le client transmet au serveur un accusé de réception, c'est-à-dire un
segment dont le drapeau ACK est à 1, dont le drapeau SYN est à zéro (il ne s'agit plus d'un
segment de synchronisation). Son numéro d'ordre est incrémenté et le numéro d'accusé de
réception représente le numéro d'ordre initial du serveur incrémenté de 1.

Figure 1.4 : Etablissement d’une connexion TCP

Suite à cette séquence comportant trois échanges les deux machines sont synchronisées et la
communication peut commencer.

- Le protocole UDP : c’est un protocole de transport non fiable et non orienté


connexion. [2]

c. La couche Internet

La couche Internet est la couche la plus importante car c'est elle qui définit les datagrammes,
et qui gère les notions d'adressage IP. Elle permet l'acheminement des datagrammes (paquets
de données) vers des machines distantes ainsi que la gestion de leur fragmentation et de leur
assemblage à la réception [2]. Elle accepte des requêtes venant de la couche de transport avec
une identification de la machine vers laquelle le paquet doit être envoyé.

Elle utilise alors l’algorithme de routage pour décider si le paquet doit être envoyé vers une
passerelle ou vers une machine directement accessible. [6]

13
La couche Internet contient 5 protocoles :

- IP : Internet Protocol
- ARP : Address Resolution Protocol
- ICMP : Internet Control Message Protocol
- RARP : Reverse Address Resolution Protocol
- IGMP : Internet Group Management Protocol

d. La couche Accès réseau

La couche accès réseau est la première couche de la pile TCP/IP, elle offre les capacités à
accéder à un réseau physique quel qu'il soit, c'est-à-dire les moyens à mettre en œuvre afin de
transmettre des données via un réseau. [2]

Ainsi, la couche accès réseau contient toutes les spécifications concernant la transmission de
données sur un réseau physique, qu'il s'agisse de réseau local (Anneau à jeton - token ring,
Ethernet, FDDI), de connexion à une ligne téléphonique ou n'importe quel type de liaison à un
réseau. Elle prend en charge les notions suivantes :

- Acheminement des données sur la liaison


- Coordination de la transmission de données (synchronisation)
- Format des données
- Conversion des signaux (analogique/numérique)
- Contrôle des erreurs à l'arrivée

Heureusement toutes ces spécifications sont transparentes aux yeux de l'utilisateur, car
l'ensemble de ces tâches est en fait réalisé par le système d'exploitation, ainsi que les drivers
du matériel permettant la connexion au réseau.

I.1.3.3. L’encapsulation des données

L’encapsulation consiste à transporter les données d’une couche dans une unité de données de
la couche inférieure. Un en-tête contient les informations nécessaires à l’entité homologue
pour extraire et traiter les données. Dans le modèle TCP/IP, les données de l’application
constituent des messages, ceux-ci sont transportés dans des segments qui seront émis sur le
réseau sous forme de datagrammes. L’unité de transport élémentaire est la trame qui constitue
au niveau physique un train de bits (figure 1.5).

14
Figure 1.5 : L’encapsulation des données dans TCP/IP

I.2. LA SECURITE DES RESEAUX INFORMATIQUES

I.2.1. Introduction

Au début des années 70, avec la naissance des réseaux informatiques, le souci majeur n’était
pas la protection des informations qui circulaient d’une machine à l’autre mais plutôt la
gestion des procédures de transmission (la gestion des adresses, la correction des erreurs de
transmission), qui se fait, désormais, suivant des protocoles de communication. La sécurité
des réseaux informatiques était locale se limitant aux techniques de contrôle d’accès aux
ressources du système et aux mécanismes d’identification et d’authentification des
utilisateurs.

En matière de sécurité, le besoin d’être sceptique n’est pas nécessaire pour détecter les failles
considérables dans ces systèmes, tel le fait que toute personne disposant des droits sur une
ressource peut accorder ces mêmes droits à tout autre utilisateur.

Piratage, virus, espionnage, destruction, détournements, escroqueries informatiques sont


devenus monnaie courante, et imaginer la catastrophe économique qui peut en découler. C’est
pourquoi, la sécurité informatique est considérée comme une priorité absolue.

Sécuriser un réseau informatique, c’est garantir diligemment des préventions pour qu’aucun
préjudice ne puisse mettre en péril la pérennité en termes de performance, d’exactitude, de
fonctionnement et de perfection du réseau.

15
I.2.2. Les systèmes de sécurité

Renforcer la sécurité des réseaux en même temps que leur performance apparaît,
irréfutablement, comme un enjeu technologique et économique d’importance capitale.
Concrètement, pour atteindre ce but il faut munir le réseau d’un système de sécurité qui puisse
offrir un ensemble de services en s’appuyant sur un ensemble de techniques et d’outils
appropriés.

I.2.2.1. Objectifs d’un système de sécurité

La mise en place d’un système de sécurité doit, d’une part, garantir la détection des tentatives
malveillantes qui visent à nuire au bon fonctionnement du réseau et d’autres part, fournir les
moyens de les arrêter en temps opportun ou en cas de sinistre pourvoir ce qui est nécessaire
(mesures et techniques) pour la reprise et la correction. [7]

En outre, un système de sécurité a sa charge, d’un côté, de préserver aussi bien les ressources
de tout accès illégal ou abusif que la discrétion des données transmises en empêchant toute
analyse significative du flux d’information, et d’un autre côté, de fournir les mécanismes
d’authentification des parties communicantes en vue de garantir l’imputabilité de leurs
actions.

I.2.2.2. Les buts de la sécurité des réseaux informatiques

En prenant l’exemple d’une transaction commerciale via Internet, il convient de s’assurer que
le numéro de la carte bancaire du client ne pourra pas être connu par un individu malveillant
et aussi que les décisions d’achat ne seront pas modifiées par autrui. Il est aussi primordial
que le client (le fournisseur) ait la certitude qu’il est en train d’entreprendre une opération
d’achat (de vente) avec le bon fournisseur (client) et pas avec une entité malveillante qui tente
de se faire passer pour un fournisseur. [7]

La sécurité informatique tente de maintenir neuf caractéristiques principales :

a. La confidentialité

Dans la littérature, la confidentialité semble être la qualité la plus importante d’un système
sûr. Elle a été la première préoccupation des militaires. Assurer la confidentialité des données
consiste à faire en sorte que les informations restent secrètes et que seules les personnes

16
autorisées y aient accès. Les utilisateurs du système ont besoin d’avoir la garantie que leurs
informations ne risquent pas d’être divulguées à des personnes non autorisées.

b. L’authentification

Fournir deux preuves en parallèle, l’une est aussi importante et indispensable que l’autre:
Prouver qu’un sujet (site, personne, système, processus, etc.) est celui qu’il prétend être et que
les informations reçues sont conformes à celles fournies. Pratiquement, dans le cas d’un
simple message, le service d’authentification assure que le message provient de l’endroit d’où
il prétend venir. Dans le cas d’un échange bidirectionnel, deux aspects sont à vérifier. Il faut
assurer que les deux entités communicantes sont bien ce qu’elles affirment être. De plus, le
service d’authentification doit montrer que la connexion ne peut être brouillée par une
troisième entité essayant de se faire passer pour un des deux correspondants.

c. L’intégrité

Outre la confidentialité des informations, l’intégrité évite la corruption, l’altération et la


destruction des données dans le réseau de manière non autorisée. L’intégrité reste un domaine
très large ouvrant à la fois les modifications, les moyens de modification mais également
l’après-modification et donc la cohérence des données.

d. La disponibilité

Assurer aux utilisateurs légitimes une continuelle disponibilité des informations, des services
et des ressources dans le réseau (les temps de réponse, la tolérance aux fautes, le contrôle de
concurrence, le partage équitable de ressources, etc.). En somme, veiller à la disponibilité
d’un système, c’est prévenir contre les perturbations et les interruptions de son
fonctionnement et aussi contre toute utilisation abusive des services et des ressources du
système.

e. Le non répudiation de l’origine

La technique de non répudiation à l’origine vise à éliminer le risque qu’un émetteur puisse
nier avoir envoyé un message alors que réellement tel a été le cas. A titre d’exemple, lors
d’une transaction commerciale électronique, le service du non répudiation de l’origine oblige
le client à ne pas démentir le fait qu’il a adressé une requête d’achat au fournisseur.

17
f. Le non répudiation de la délivrance

Le destinataire ne pourra jamais nier l’arrivée d’un message qu’il a réellement reçu. A titre
d’exemple, lors d’une transaction commerciale électronique, le service du non répudiation de
la délivrance oblige le fournisseur à ne pas démentir le fait que le client lui a adressé une
requête d’achat.

g. Le contrôle d’accès

En matière de sécurité, le contrôle d’accès est indispensable. Paradoxalement, son étude n’a
pas suscité l’intérêt d’une large communauté de chercheurs. Lorsqu’un sujet souhaite
effectuer une opération sur un objet, le système transforme l’opération en une requête qu’il
fait passer au moniteur de référence. Ce dernier est responsable du contrôle d’accès aux
ressources. Si le sujet est autorisé à accéder à l’objet et à réaliser le type d’opération demandé
alors l’accès à l’objet est accordé et l’opération peut se dérouler sans aucune entrave. Dans le
cas contraire, il retournera un refus catégorique à l’utilisateur. Les buts du contrôle d’accès
rejoignent ceux de la disponibilité.

h. Le secret du flux

L’intérêt est d’empêcher tout utilisateur non autorisé d’avoir la possibilité d’analyser les flux
des données à travers le réseau. Tout accès illégal, même en lecture, à un flux de données
permet à l’utilisateur de déduire des informations utiles et qui peuvent, ultérieurement, servir
ses intentions malveillantes. La taille des messages échangés, leurs sources et leurs
destinations, ainsi que la fréquence des communications entre les utilisateurs sont des
exemples de données à préserver pour prévenir le secret des flux dans le réseau et le rendre
plus sûr.

i. Le confinement

Ce principe est complémentaire à la confidentialité s’inscrivant dans le même but du bon


usage des informations. Le confinement garantit qu’un sujet n’arrive pas à divulguer
volontairement le contenu des objets auxquels il a accès à quelqu’un qui n’a pas le droit d’y
accéder.

18
Chapitre II : LES ATTAQUES RESEAUX

II. 1. INTRODUCTION

A l’heure actuelle la migration des systèmes d’information vers le réseau mondial Internet
s’accroit de plus en plus. Bien que bénéfique, cette migration a aussi son inconvénient majeur.
Malheureusement, si Internet a apporté une formidable révolution de l’informatique et de la
circulation mondiale de l’information, il a également mis à la disposition de personnes mal
intentionnées de nouveaux moyens d’accéder illégalement à des données privées, qu’elles
soient au sein de l’entreprise ou chez un particulier, et ceci avec un risque bien moindre
puisque sans intrusion physique.

Du fait que le domaine de l’informatique étant très vaste, le nombre de vulnérabilités


présentes sur les systèmes informatiques sont assez importants. En plus d’être très variées, ces
failles peuvent vraiment être dangereuses.

Pour plus d’éclaircissement à ce sujet, je vais présenter quelques types d’attaques réseaux
bien connues et leurs caractéristiques. Mais avant voyons comment ces personnes que nous
qualifierons d’intrus ou pirates procèdent pour s’infiltrer dans le réseau en question.

II. 2. ANATOMIE D’UNE ATTAQUE

Toutes les attaques informatiques sont basées sur ce qu’on appel « les 5 P » :
Prospecter – Pénétrer – Persister – Propager - Paralyser

 Prospecter : C’est une phase où l’agresseur collecte des informations sur une
cible potentielle. Le but de cette phase est de dresser une cartographie du réseau et
d’obtenir des détails sur les systèmes. L’agresseur choisit ainsi une attaque en
fonction des vulnérabilités connues pour les versions des applications utilisées ou
explore la possibilité d’erreurs de configuration.
 Pénétrer : L’étape qui suit la découverte des systèmes et service potentiellement
vulnérables est l’attaque. Elle peut prendre de nombreuses formes et résulter en
l’exécution des programmes de l’agresseur sur l’un des systèmes. Si l’agresseur
n’a gagné qu’un accès à un utilisateur sans privilèges, il tenterait d’obtenir l’accès
à un compte possédant des droits d’administration. L’attaque peut simplement
conduire au dysfonctionnement d’un service ou du système complet.

19
 Persister : Lorsqu’un agresseur parvient à trouver un système vulnérable, puis à
trouver ou construire une attaque et, enfin, à s’introduire avec succès dans le
système, il n’aimerait pas recommencer entièrement ce processus chaque fois
qu’il souhaiterait y accéder. C’est pourquoi la première action qu’entreprend un
agresseur qui réussit à « s’approprier » une machine est d’installer un dispositif
qui lui permet de revenir aisément sur le système.
L’agresseur peut aussi installer un programme de contrôle à distance. Cela lui
permet de travailler plus facilement à distance sur le système.
 Propager : Une fois l’agresseur bien installé sur le système, la prochaine étape
consiste à évaluer ce qui devient accessible sur le réseau pirate, que ce soit au
niveau des ressources ou des services à sa disposition. Le pirate va chercher à
étendre son contrôle sur plusieurs systèmes.
 Paralyser : Voici l’objectif ultime d’une agression ciblée, si l’agresseur en a
après votre environnement dans un but bien précis. Ce but pourrait être le vol ou
la détérioration de données, la mise hors service de vos systèmes ou l’attaque
d’une autre organisation depuis l’un d’eux, vous faisant ainsi passer pour
responsable.

II. 3. LES DIFFERENTS TYPES D’ATTAQUES

II.3.1. Les attaques réseaux

Ce type d’attaque se base principalement sur des failles liées aux protocoles ou à leur
implémentation. Il existe plusieurs types d’attaque réseau. Nous allons voir celles qui
sont bien connues.
II.3.1.1. Les techniques de scan
Les scans de ports ne sont pas des attaques à proprement parler. Le but des scans
est de déterminer quels sont les ports ouverts, et donc en déduire les services qui sont
exécutés sur la machine cible (ex : port 80/TCP pour un service HTTP). Par
conséquent, la plupart des attaques sont précédées par un scan de ports lors de la phase
de « Prospection » qui est comme nous l’avons vu, la première phase des 5P dans le
déroulement d’une attaque.

20
Il existe un nombre important de techniques de scan. Idéalement, la meilleure
technique de scan est celle qui est la plus furtive afin de ne pas alerter les soupçons de
la future victime. Voici une description des techniques de scan les plus répandues :

 Le scan simple : aussi appelé le scan connect(), il consiste à établir une


connexion TCP complète sur une suite de ports. S’il arrive à se connecter, le port
est ouvert ; sinon, il est fermé. Cette méthode de scan est très facilement
détectable.
 Le scan furtif : aussi appelé scan SYN, il s’agit d’une amélioration du scan
simple. Ce scan essaie également de se connecter sur des ports donnés, mais il
n’établit pas complètement la connexion : pas de commande ACK (acquittement)
après avoir reçu l’accord de se connecter (Or pour qu’une connexion TCP soit
établie, il faut au préalable que la commande ACK soit renvoyé). Grâce à ceci, la
méthode est bien plus furtive que le scan normal.

Figure 2.1: Scan SYN

 Les scans XMAS, NULL et FIN : déterminent si un port est fermé ou non en
fonction de la réaction à certaines requêtes. Ces scans sont moins fiables que le
scan SYN mais ils sont un peu plus furtifs. La différence entre ces trois types de
scan se situe au niveau des flags TCP utilisés lors de la requête. Le scan FIN
(respectivement NULL) consiste en l’envoi de paquets TCP avec seulement le flag
FIN (respectivement NULL) armé, et le Xmas scan consiste en l’envoi de paquets
TCP avec les flags FIN/URG/PUSH armés.

21
Pour ces trois types de scans, les systèmes répondent avec un paquet RST si le
port est fermé et ne répondent pas si le port est ouvert. Le NULL scan ne
fonctionne pas contre des plateformes Microsoft.

Poste A Poste B

TCP Xmas ou NULL ou


FIN

Poste A Poste B

TCP RST

Figure 2.2: Scans Xmas, NULL, FIN

 Le scan à l’aveugle : s’effectue via une machine intermédiaire et avec du


spoofing ou usurpation d’adresse (voir plus bas). Le système attaqué pense que le
scan est réalisé par la machine intermédiaire et non par le pirate.
 Le scan passif : est la méthode la plus furtive. Consiste à analyser les champs
d’en-tête des paquets et les comparer avec une base de signatures qui pourra
déterminer les applications qui ont envoyé ces paquets.

II.3.1.2. IP Spoofing

But : usurper l’adresse IP d’une autre machine.

Finalité : se faire passer pour une autre machine en truquant les paquets IP. Cette technique
peut être utile dans le cas d’authentifications basées sur une adresse IP (services tels que
rlogin ou ssh par exemple).

Déroulement : il existe des utilitaires qui permettent de modifier les paquets IP ou de créer ses
propres paquets (ex : hping2). Grâce à ces utilitaires, il est possible de spécifier une adresse IP
différente de celle que l’on possède, et ainsi se faire passer pour une autre « machine ».

22
Cependant, ceci pose un problème : en spécifiant une adresse IP différente de notre
machine, nous ne recevrons pas les réponses de la machine distante, puisque celle-ci répondra
à l’adresse usurpée. Il existe toutefois deux méthodes permettant de récupérer les réponses :

 Source routing : technique consistant à placer le chemin de routage


directement dans le paquet IP. Cette technique ne fonctionne plus de nos jours,
les routeurs rejetant cette option.
 Reroutage : cette technique consiste à envoyer des paquets RIP aux routeurs
afin de modifier les tables de routage. Les paquets avec l’adresse spoofée
seront ainsi envoyés aux routeurs contrôlés par le pirate et les réponses
pourront être également reçues par celui-ci.

Serveur Pare-feu

(1)
Client

(2)

Intrus

Figure 2.3: Illustration de l’IP Spoofing

(1) : On envoie un paquet forgé avec une adresse usurpée vers le serveur. Le
pare-feu le laisse passer puisqu’il accepte tout trafic venant de cette
adresse.
(2) : Le serveur répond aux requêtes en pensant que le client est l’émetteur du
paquet.

C’est après que l’intrus déploie les moyens nécessaires pour rediriger le trafic vers lui.

23
II.3.1.3. ARP Spoofing (ou ARP Redirect)

But : rediriger le trafic d’une machine vers une autre.

Finalité : grâce à cette redirection, une personne mal intentionnée peut se faire passer pour
une autre. De plus, le pirate peut rerouter les paquets qu’il reçoit vers le véritable destinataire,
ainsi l’utilisateur usurpé ne se rendra compte de rien. La finalité est la même que l’IP spoofing
mais on travaille ici au niveau de la couche liaison de données.

Déroulement : pour effectuer cette usurpation, il faut corrompre le cache ARP de la victime.
Toute carte réseau possède une adresse physique. C’est cette adresse qui lui permet de
recevoir les paquets qui lui sont destinés. Cette adresse physique est associée à l’adresse IP
grâce au protocole ARP. La table de correspondance entre les adresses IP et les adresses
physiques est contenue dans le cache ARP. Lorsqu’un échange doit s’établir entre 2 machines,
ces deux machines envoient des requêtes ARP avec l’adresse IP du récepteur, associée à un
champ vide pour son adresse physique. Ce récepteur va renvoyer son adresse physique dans
une réponse ARP [7]. Ce qui signifie qu’il faut lui envoyer des trames ARP en lui indiquant
que l’adresse IP d’une autre machine est la sienne. Les caches ARP étant régulièrement vidés,
il faudra veiller à maintenir l’usurpation.

P1 Requête ARP (1) P2

Réponse ARP (2)

Trafic (3)

Figure 2.4: Procédure de requête ARP

(1) Pour connaître l’adresse physique de P1, P2 lui envoie une requête ARP.
(2) P1 renvoie à P2 son adresse physique dans la réponse ARP puis P2 la stocke
dans son cache en faisant correspondre l’adresse IP de P1 à son adresse physique.
(3) Le trafic circule entre P1 et P2.

24
P1 P2 Réponse ARP (1) P3

Trafic (2)

Figure 2.5: Illustration de l’ARP spoofing

(1) P3 envoie à P2 une réponse ARP avec son adresse physique correspondant à
l’adresse IP de P1. P2 stocke cette nouvelle correspondance dans son cache et
écrase l’ancienne.
(2) P3 dialogue avec P2 et P1 ne reçoit plus rien.

III.3.1.4. Fragments attacks

But : le but de cette attaque est de passer outre les protections des équipements de filtrage IP.

Finalité : en passant outre les protections, un pirate peut par exemple s’infiltrer dans un réseau
pour effectuer des attaques ou récupérer des informations confidentielles.

Déroulement : deux types d’attaque sur les fragments IP peuvent être distingués :

Fragments overlapping : quand un message est émis sur un réseau, il est fragmenté
en plusieurs paquets IP. Afin de pouvoir reconstruire le message, chaque paquet possède un
offset. Le but de l’attaque est de réaliser une demande de connexion et de faire chevaucher
des paquets en spécifiant des offsets incorrects. La plupart des filtres analysant les paquets
indépendamment, ils ne détectent pas l’attaque. Cependant, lors de la défragmentation, la
demande de connexion est bien valide et l’attaque a lieu.

Tiny fragments : le but de l’attaque est de fragmenter une demande de connexion sur
deux paquets IP : le premier paquet de taille minimum (68 octets selon la norme du protocole
IP) ne contient que l’adresse et le port de destination. Le deuxième paquet contient la
demande effective de connexion TCP. Le premier paquet est accepté par les filtres puisqu’il
ne contient rien de suspect. Quand le deuxième paquet arrive, certains filtres ne le vérifient
pas pensant que si le premier paquet est inoffensif, le deuxième l’est aussi. Mais lors de la
défragmentation sur le système d’exploitation, la connexion s’établit.

De nos jours, une grande majorité des firewalls sont capables de détecter et stopper ce
type d’attaques.

25
Les attaques réseaux connues de part le monde ne se résument pas qu’à ces quelques
exemples qu’on vient de citer, nombreux sont encore à craindre (ex. les DNS spoofing, TCP
session hijacking, …etc).

II.3.2. Les attaques applicatives

Les attaques applicatives se basent sur des failles dans les programmes utilisés, ou
encore des erreurs de configuration. Toutefois, comme précédemment, il est possible de
classifier ces attaques selon leur provenance.

II.3.2.1. Les problèmes de configuration

Il est très rare que les administrateurs réseaux configurent correctement un


programme. En général, ils se contentent d’utiliser les configurations par défaut. Celles-ci
sont souvent non sécurisées afin de faciliter l’exploitation du logiciel (ex : login/mot de passe
par défaut d’un serveur de base de données).

De plus, des erreurs peuvent apparaître lors de la configuration d’un logiciel. Une
mauvaise configuration d’un serveur peut entraîner l’accès à des fichiers importants, ou
mettant en jeu l’intégrité du système d’exploitation. C’est pourquoi il est important de bien
lire les documentations fournies par les développeurs afin de ne pas créer de failles.

II.3.2.2. Les bugs

Liés à un problème dans le code source, ils peuvent amener à l’exploitation de failles.
Il n’est pas rare de voir l’exploitation d’une machine suite à une simple erreur de
programmation. On ne peut toutefois rien faire contre ce type de problèmes, si ce n’est
d’attendre un correctif de la part du développeur.

II.3.2.3. Les buffers overflows

Les buffers overflows, ou dépassement de la pile, sont une catégorie de bug


particulière.

26
II.3.2.4. Les scripts

Principalement web (ex : Perl, PHP, ASP), ils s’exécutent sur un serveur et renvoie un
résultat au client. Cependant, lorsqu’ils sont dynamiques (i.e. qu’ils utilisent des entrées
saisies par un utilisateur), des failles peuvent apparaître si les entrées ne sont pas correctement
contrôlées.

L’exemple classique est l’exploitation de fichier à distance, tel que l’affichage du


fichier mot de passe du système en remontant l’arborescence depuis le répertoire web.

II.3.2.5. Les injections SQL

Tout comme les attaques de scripts, les injections SQL profitent de paramètres
d’entrée non vérifiés. Comme leur nom l’indique, le but des injections SQL est d’injecter du
code SQL dans une requête de base de données. Ainsi, il est possible de récupérer des
informations se trouvant dans la base (exemple : des mots de passe) ou encore de détruire des
données.

II.3.2.6. Man in the middle

Moins connue, mais tout aussi efficace, cette attaque permet de détourner le trafic
entre deux stations. Imaginons un client C communiquant avec un serveur S. Un pirate peut
détourner le trafic du client en faisant passer les requêtes de C vers S par sa machine P, puis
transmettre les requêtes de P vers S. Et inversement pour les réponses de S vers C.

Totalement transparente pour le client, la machine P joue le rôle de proxy. Il accédera


ainsi à toutes les communications et pourra en obtenir les informations sans que l’utilisateur
s’en rende compte.

Client C Serveur S
Trafic C vers S

Trafic S vers C

Intrus P

Figure 2.5: Man in the middle ou Attaque de l’homme au milieu

27
II.3.2.6. Le déni de service

Evoqué précédemment, le déni de service est une attaque visant à rendre indisponible
un service. Ceci peut s’effectuer de plusieurs manières : par le biais d’une surcharge réseau,
rendant ainsi la machine totalement injoignable ; ou bien de manière applicative en crashant
l’application à distance.

L’utilisation d’un buffer overflow (voir plus bas) peut permettre de planter
l’application à distance. Grâce à quelques instructions malicieuses et suite à une erreur de
programmation, une personne mal intentionnée peut rendre indisponible un service (serveur
web, serveur de messagerie, … etc) voire un système complet.

Voici quelques attaques réseaux connues permettant de rendre indisponible un service :

 SYN Flooding : exploite la connexion en 3 phases de TCP (Three Way Handshake :


SYN / SYN-ACK / ACK). Le principe est de laisser un grand nombre de connexions
TCP en attente. Le pirate envoie de nombreuses demandes de connexion (SYN), reçoit
les SYN-ACK mais ne répond jamais avec ACK. Les connexions en cours occupent
des ressources mémoire, ce qui va entraîner une saturation et l’effondrement du
système.

 UDP Flooding : le trafic UDP est prioritaire sur TCP. Le but est donc d’envoyer un
grand nombre de paquets UDP, ce qui va occuper toute la bande passante et ainsi
rendre indisponible toutes les connexions TCP.
 Smurfling ou attaque par réflexion : le pirate fait des requêtes ICMP à plusieurs
machines présentes sur le réseau en usurpant l'adresse source (en indiquant l’adresse
de la machine cible). Cette machine cible va recevoir un nombre énorme de réponses,
car toutes les machines vont lui répondre, et ainsi utiliser toute sa bande passante.

 Déni de service distribué : le but est ici de reproduire une attaque normale à grande
échelle. Pour ce faire, le pirate va tenter de se rendre maître d’un nombre important de
machines. Grâce à des failles, il va pouvoir prendre le contrôle de machines à distance
et ainsi pouvoir les commander à sa guise. Une fois ceci effectué, il ne reste plus qu’à
donner l’ordre d’attaquer à toutes les machines en même temps, de manière à ce que
l’attaque soit reproduite à des milliers d’exemplaires. Ainsi, une simple attaque

28
comme un SYN Flooding pourra rendre une machine ou un réseau totalement
inaccessible.

II. 4. CONCLUSION

Dans ce chapitre, l’illustration des différents types et caractéristiques de technique


d’intrusion à des réseaux informatiques nous ont permis de constater qu’il existe de
nombreuses faiblesses pouvant être exploitées par les pirates. J'ai présenté que quelques types
d’attaques de base mais il en existe encore d’autres que je n'ai pas illustrés dans cet ouvrage.
Mais noter aussi que d’autres moyens pour s’infiltrer dans les réseaux existent à part Internet.
Les failles les plus répandues proviennent généralement de l’intérieur de l’entreprise, et non
de l’extérieur.

Du fait du nombre et de la variété des attaques existantes dans le monde, on ne cesse


de renforcer les moyens de défense voir cherché de nouvelle approche stratégique en vue de
l’augmentation du niveau de sécurité. On fait appel à différente sorte d’outils comme
l’antivirus, les firewalls et les proxys, pour assurer la protection. Ce qui nous amène au
prochain chapitre : les contre-mesures existants pour renforcer la sécurité.

29
Chapitre III : LES FIREWALLS (PARE-FEU)

Chaque ordinateur connecté à Internet est susceptible d'être victime d'une attaque d'un
pirate informatique. La méthodologie généralement employée par le pirate informatique
consiste à scruter le réseau (en envoyant des paquets de données de manière aléatoire) à la
recherche d'une machine connectée, puis à chercher une faille de sécurité afin de l'exploiter et
d'accéder aux données s'y trouvant.

Ainsi, il est nécessaire, autant pour les réseaux d'entreprises que pour les internautes
possédant une connexion, de se protéger des intrusions réseaux en installant un dispositif de
protection.

III.1. Définition

Un firewall (appelé aussi pare-feu en français), est un système permettant de protéger un


ordinateur ou un réseau d'ordinateurs des intrusions provenant d'un réseau tiers (notamment
Internet). [2]

Le principe de base de la sécurité d’un réseau, intranet, repose sur l’installation d’un ou
plusieurs firewalls qui peuvent être logiciels ou matériels. L'idée principale d’un firewall est
la connexion du réseau interne avec l'Internet (ou un autre réseau local non sûr) en un point, et
une sécurisation extrême en ce point (Figure 3.1).

Figure 3.1 : Firewall

Un firewall permet donc de délimiter les environnements publics et privés afin de protéger
son réseau. On arrive à mieux gérer les flux entrants et sortants et ainsi séparer son réseau
intranet du réseau internet.

Il permet donc d'analyser, de sécuriser et de gérer le trafic réseau, et ainsi d'utiliser le réseau
de la façon pour laquelle il a été prévu.

30
III.2. Les pare-feux sous Windows et sous Linux

III.2.1. Description du système d'exploitation

Le système d'exploitation est chargé d'assurer la liaison entre les ressources matérielles,
l'utilisateur et les applications. Ainsi lorsqu'un programme désire accéder à une ressource
matérielle, il ne lui est pas nécessaire d'envoyer des informations spécifiques au périphérique,
il lui suffit d'envoyer les informations au système d'exploitation, qui se charge de les
transmettre au périphérique concerné via son pilote. En l'absence de pilotes il faudrait que
chaque programme reconnaisse et prenne en compte la communication avec chaque type de
périphérique. [5]

III.2.2. Composantes du système d'exploitation

Le système d'exploitation est composé d'un ensemble de logiciels permettant de gérer les
interactions avec le matériel. Parmi cet ensemble de logiciels on distingue généralement les
éléments suivants (figure 3.2) :

 Le noyau ;
 Et L'interface utilisateur ;

Figure 3.2 : Composantes du système d'exploitation

31
- Le noyau du système :

Le noyau (ou cœur) assure les fonctionnalités suivantes :

• gestion des périphériques (au moyen de pilotes) ;


• gestion de l’exécution des programmes (aussi nommés processus) :
• gestion de la mémoire attribuée à chaque processus ;
• ordonnancement des processus (répartition du temps d’exécution sur le ou les processeurs).
• synchronisation et communication entre processus (services de synchronisation, d’échange
de messages, mise en commun de segments de mémoire, etc.)
• gestion des fichiers (au moyen de systèmes de fichiers) ;
• gestion des protocoles réseau (TCP/IP, IPX, etc.).

- L'interface utilisateur :

L'interface utilisateur aussi nommée interface homme-machine (IHM) permet la


communication avec le système d'exploitation par l'intermédiaire d'un langage de commandes,
afin de permettre à l'utilisateur de piloter les périphériques en ignorant tout des
caractéristiques du matériel qu'il utilise, de la gestion des adresses physiques, etc.

III.2.3. Mode de fonctionnement des pare-feux sous Windows et sous Linux

Le principe de fonctionnement des pare-feux diffère énormément entre les deux systèmes
d’exploitation.

Sous Windows, le pare-feu est un programme dédié ; il est donc extérieur au noyau. C’est
l’OS qui est chargé de mettre les paquets réseaux à disposition de ce dernier qui doit décider
si oui ou non ils doivent être acceptés par le système.

De ce fait, si un autre programme de la machine, un virus par exemple, attaque le pare-feu et


le force à s’éteindre, le réseau perd sa protection.

Par contre, sous Linux tout se passe au niveau du noyau, c'est-à-dire qu’à l’exception du
programme de configuration, aucun autre processus ne peut interférer avec le pare-
feu.

32
III.3. Fonctionnement du pare-feu sous Linux

III.3.1. Les firewalls à filtrage de paquets

Ce type de firewall travaille sur la composition même des paquets réseaux (couche réseau du
modèle OSI). Ils analysent les paquets entrants/sortants suivant leur type, leurs adresses
source et destination ainsi que les ports utilisés.

Travaillant directement sur la couche IP, ils sont très peu gourmands en mémoire. Il est à
noter que s’ils sont totalement transparents pour les utilisateurs il n'y a pas d'authentification
possible des dits utilisateurs car seule l’adresse IP source est connue du firewall.

Sous linux, il existe un Framework (kit de composants logiciels) permettant de filtrer tous les
paquets réseau lors des appels des routines de réception ou d'émission des paquets des
interfaces réseau appelé : Netfilter. [8]

III.3.1.1. Netfilter

Netfilter est une partie du noyau Linux destinée à assurer la surveillance de tous les transferts
de données réseau. Fournissant des fonctions de sécurité, il est essentiellement utilisé pour la
réalisation de pare-feux pour le filtrage de paquets.

NetFilter est composé de 2 parties : d'une part, NetFilter proprement dit qui doit être compilé
dans le noyau (« en dur » ou sous forme de module), d'autre part la commande iptables :
commande qui permet la configuration du Netfilter, c’est une interface très fiable et se dispose
de très nombreuses options qui permettent de faire du filtrage très fin.

a. L’architecture de Netfilter

Netfilter définit trois tables : Filter, NAT et Mangle, chaque table est composée de plusieurs
chaînes, et chaque chaîne pourra contenir une ou plusieurs règles.

33
Figure 3.3 : Netfilter

Une règle définit l’action et le type de paquets sur lesquels l’action va être appliquée.

Les chaînes sont des ensembles de règles que nous allons écrire dans chaque table. Ces
chaînes vont permettre d'identifier des paquets qui correspondent à certains critères.

Une table représente une séparation des règles selon le type d’opération.

i. La table Filter

C’est la table par défaut, utilisée pour le filtrage des paquets et elle est composée des chaînes
suivantes :

- INPUT : Cette chaîne est utilisée pour les paquets étant à destination des applications
du firewall. A ce stade, les paquets sont prêts à être envoyés aux applications.

- OUTPUT : Cette chaîne est utilisée pour les paquets sortant des applications du
firewall. A ce stade, les paquets ont donc déjà été traités, ou générés par les
applications.

- FORWARD : Cette chaîne filtre les paquets passant d'une interface à une autre
du firewall, c'est à dire qu'ils ne sont pas destinés à une application
présente sur le firewall. Ces paquets ne passent pas par les chaînes INPUT et
OUTPUT et ne passent les chaînes. [8]

34
ii. La table NAT

La table NAT table utilisée pour la translation d'adresse. Les chaînes de cette table sont les
suivantes :

- PREROUTING : Quand les paquets arrivent au niveau du firewall, ils sont dans
un état non modifié. C'est à dire qu'il n'y a encore eu aucun traitement quel qu'il
soit sur celui-ci au niveau du firewall. Cette chaîne est utilisée afin de
faire des traitements particuliers sur les paquets en arrivée avant d'effectuer leur
filtrage à proprement dit. Il est utilisé, par exemple, dans les cas d'utilisation de
destination NAT ou DNAT, qui correspond à la modification de l'adresse IP
destination.

- POSTROUTING : Quand les paquets sont prêts à être envoyés sur l'interface réseau.
Ils ont donc été traités par les applications, et routés par le firewall. Tous les
traitements sur ces paquets sont alors terminés. Il est utilisé, par exemple, dans
le cas de source NAT ou SNAT, qui correspond à la modification de l'adresse IP
source (utile pour accéder au réseau Internet avec une adresse IP privé). [8]

iii. La table Mangle

C’est la table utilisée pour la modification de types spécifiques de paquets. Les chaînes de
cette table sont les suivantes :

- PREROUTING
- Et OUTPUT

Le système vérifie chaque paquet reçu et lorsqu’un paquet correspond à une règle
précise, il se voit assigner une action ou cible. Il pourra donc être accepté «ACCEPT»,
abandonné sans envoyé un message à la machine d’origine «DROP» ou bien abandonné par
rejet «REJECT», dans ce dernier cas un message d’erreur est envoyé à la machine d’origine.

b. La commande iptables.

Iptables est une commande qui sert à ajouter, modifier, supprimer et afficher les règles
Netfilter. Elle se lance en ligne de commande par le super-utilisateur « root », et attend de
nombreux paramètres et options.

35
Figure 3.4 : la commande iptables.

<nom-table> : permet de spécifier une table autre que la table par défaut Filter.

<commande> : représente une action, telle que l'ajout ou la suppression d’une règle.

<nom-de-chaîne> : représente la règle sur laquelle l’action sera accomplie.

On pourra aussi ajouter des paires de paramètres et options servant à définir l'action à
entreprendre lorsqu'un paquet correspond aux critères de la règle.

c. Filtrage des paquets.

Netfilter a la possibilité de choisir laisser certains paquets pénétrés dans le système et bloquer
les autres. La table Filter est utilisée pour créer les règles de filtrage. Cette table contient les
chaînes standards INPUT, OUTPUT et FORWARD. [8]

Figure3.5 : filtrage de paquets

36
Tous les paquets qui entrent et sortent sont traités par la table Filter. La figure 3.6 représente
la structure interne de cette table. Lorsqu’un paquet entre sur une des interfaces de la machine,
une décision de routage est prise, si le paquet est destiné à un processus local, alors il traverse
la chaîne INPUT, si le paquet est destiné à un autre réseau alors il traverse la chaîne
FORWARD. Un paquet généré par un processus local et qui a comme destination le réseau,
traverse la chaîne OUTPUT.

Figure 3.6 : Exemple d’une règle.

d. Translation d’adresse

i. Translation d’adresse source (Masquerading).

Elle consiste à remplacer l’adresse source des paquets qui sortent du réseau local par l’adresse
IP publique de la passerelle. Ce type de translation se fait après le routage.

Figure 3.8: translation d’adresse source.

37
Comme le montre la figure 3.8, la machine passerelle (Adresse publique 98.76.54.1) va
effectuer le remplacement de l'adresse IP source de la machine H1 par son adresse publique
(98.76.54.1) puis envoyer le paquet vers Internet. Elle va mettre à jour la table de translation
d’adresse, d’après cette figure l’adresse privée 192.168.0.2, port 1200 correspond à l’adresse
publique : 98.76.54.1, port 1400. Quand la réponse lui parviendra, elle va cette fois-ci
modifier l'adresse de destination (98.76.54.1/1400) par celle de H1 (192.168.0.2/1200). Pour
activer la translation de l’adresse source, on utilise la commande de la figure 3.9.

Figure 3.9 : translation d’adresse source (masquerading).

La commande de la figure 3.9 implique la translation d’adresse source à tous les paquets qui
sortent via l’interface eth1, qu’est l’interface connecté à Internet.

ii. Translation d’adresse de destination (Portforwarding).

Consiste à remplacer l’adresse de destination des paquets qui rentrent dans la passerelle par
l’adresse d’une machine qui existe sur le réseau local privé. La translation d’adresse de
destination va permettre d’héberger un serveur web ou bien un serveur de messagerie dans le
réseau local avec une adresse privée. Lorsque les paquets arrivent à la passerelle de l’Internet,
cette dernière va changer l’adresse de destination (qui était son adresse) à l’adresse privée du
serveur sur le réseau local (figure 3.10).

38
Figure 3.10: translation d’adresse de destination (Portforwarding).

Dans la figure 3.10, H1 est un serveur de messagerie (192.168.0.2). Quand les paquets
arrivent avec un numéro de port 25, la passerelle change l’adresse de destination de ces
paquets à l’adresse du serveur de messagerie (192.168.0.2). Pour activer la translation
d’adresse de destination il faut premièrement permettre le transite (Forwarding) des paquets
qui arrivent sur le port 25 en utilisant la commande de la figure 3.11.

Figure 3.11 : activation du transite des paquets vers un serveur de messagerie.

39
Deuxièmement, on active la translation d’adresse de destination en utilisant la commande de
la figure 3.12.

Figure 3.12 : activation de la translation d’adresse de destination.

III.3.2. Les firewalls Proxy

Le firewall proxy (ou firewall applicatif) a un mode de fonctionnement différent de firewall à


filtrage de paquet. Il masque les ressources internes du réseau en faisant l’intermédiaire entre
les ordinateurs d'un réseau local et Internet. (Figure 3.13)

Réseau int erne

Int ernet

Firew all Pro x y

Figure 3.13 : Firewall proxy

III.3.2.1. Le principe de fonctionnement d'un proxy

Le principe de fonctionnement basique d'un serveur proxy est assez simple : il s'agit d'un
serveur "mandaté" par une application pour effectuer une requête sur Internet à sa place.
Ainsi, lorsqu'un utilisateur se connecte à Internet à l'aide d'une application cliente configurée
pour utiliser un serveur proxy, celle-ci va se connecter en premier lieu au serveur proxy et lui
donner sa requête. Le serveur proxy va alors se connecter au serveur que l'application cliente
cherche à joindre et lui transmettre la requête.

40
Le serveur va ensuite donner sa réponse au proxy, qui va à son tour la transmettre à
l'application cliente. (Figure 3.14)

Application cliente

requêt e

Int ernet
réponse

Figure 3.14 : Principe de fonctionnement d’un proxy

Le client devient donc invisible pour l’Internet, si un client est derrière un proxy, les autres
machines sur Internet penseront qu'il s'agit du serveur.

III.3.2.2. Les fonctionnalités d'un proxy

Désormais, avec l'utilisation de TCP/IP au sein des réseaux locaux, le rôle de relais
du serveur proxy est directement assuré par les passerelles et les routeurs. Pour autant, les
serveurs proxy sont toujours d'actualité grâce à un certain nombre d'autres fonctionnalités.

a. La fonction de cache

La plupart des proxys assurent ainsi une fonction de cache, c'est-à-dire la capacité à garder en
mémoire (en "cache") les pages les plus souvent visitées par les utilisateurs du réseau local
afin de pouvoir les leur fournir le plus rapidement possible.

Figure 3.15 : Cache proxy

41
Cette fonctionnalité implémentée dans certains serveurs proxy permet d'une part de réduire
l'utilisation de la bande passante vers internet ainsi que de réduire le temps d'accès aux
documents pour les utilisateurs.

Toutefois, pour mener à bien cette mission, il est nécessaire que le proxy compare
régulièrement les données qu'il stocke en mémoire cache avec les données distantes afin de
s'assurer que les données en cache sont toujours valides.

b. Le filtrage

D'autre part, grâce à l'utilisation d'un proxy, il est possible d'assurer un suivi des connexions
via la constitution de journaux d'activité (logs) en enregistrant systématiquement les requêtes
des utilisateurs lors de leurs demandes de connexion à Internet.

Il est ainsi possible de filtrer les connexions à internet en analysant d'une part les requêtes des
clients, d'autre part les réponses des serveurs. Lorsque le filtrage est réalisé en comparant la
requête du client à une liste de requêtes autorisées, on parle de liste blanche, lorsqu'il s'agit
d'une liste de sites interdits on parle de liste noire.

Au niveau des serveurs, l'analyse des réponses en fonction de certains critères


s'appelle le filtrage de contenu (mots clés, adresses IP, noms de domaines, ...).

Figure 3.16 : filtrage

42
c. L'authentification

Dans la mesure où le proxy est l'intermédiaire indispensable des utilisateurs du réseau interne
pour accéder à des ressources externes, il est parfois possible de l'utiliser pour authentifier les
utilisateurs, c'est-à-dire de leur demander de s'identifier à l'aide d'un nom d'utilisateur et d'un
mot de passe par exemple. Il est ainsi aisé de donner l'accès aux ressources externes aux
seules personnes autorisées à le faire et de pouvoir enregistrer dans les fichiers journaux des
accès identifiés.

Figure 3.17 : Authentification

III .3.2.3. Le reverse-proxy

On appelle reverse-proxy un serveur proxy-cache "monté à l'envers", c'est-à-dire un serveur


proxy permettant non pas aux utilisateurs d'accéder au réseau internet, mais aux utilisateurs
d'internet d'accéder indirectement à certains serveurs internes.

requêt e

réponse

Client dist ant rev erse- pro x y serv eur int erne

Figure 3.18 : Principe de fonctionnement d’un reverse-proxy

Le reverse-proxy sert ainsi de relais pour les utilisateurs d'Internet souhaitant accéder à un site
web interne en lui transmettant indirectement les requêtes. Grâce au reverse-proxy, le serveur
web est protégé des attaques directes de l'extérieur, ce qui renforce la sécurité du réseau
interne. D'autre part, la fonction de cache du reverse-proxy peut permettre de soulager la

43
charge du serveur pour lequel il est prévu, c'est la raison pour laquelle un tel serveur est
parfois appelé « accélérateur »

III.3.2.4. Mise en place d'un serveur proxy

Le serveur Proxy le plus utilisé par les fournisseurs d'accès et les administrateurs de réseaux
locaux s'appelle Squid. Il est capable d'utiliser les protocoles FTP, HTTP, et HTTPS.

C'est un logiciel libre distribué sous licence GNU GPL, c’est-à- dire « Open Source ». (cf :
ANNEXE 4: pour l’installation et configuration)

III.4. Les pare-feux matériels

III.4.1. Présentation

Ils se trouvent souvent sur des routeurs comme Cisco ou Nortel. Intégrés directement dans la
machine, ils font office de « boite noire », et ont une intégration parfaite avec le matériel.
Leur configuration est souvent relativement ardue, mais leur avantage est que leur interaction
avec les autres fonctionnalités du routeur est simplifiée par leur présence sur le même
équipement réseau. Souvent relativement peu flexibles en terme de configuration, ils sont
aussi peu vulnérables aux attaques, car présent dans la « boite noire » qu'est le routeur.

De plus, étant souvent très liés au matériel, l'accès à leur code est assez difficile, et le
constructeur a eu toute latitude pour produire des systèmes de codes « signés » afin
d'authentifier le logiciel. Ce système n'est implanté que dans les firewalls haut de gamme, car
cela évite un remplacement du logiciel par un autre non produit par le fabricant, ou toute
modification de ce dernier, rendant ainsi le firewall très sûr.

Son administration est souvent plus aisée que les firewalls logiciels, les grandes marques de
routeurs utilisant cet argument comme argument de vente. Leur niveau de sécurité est de plus
très bon, sauf découverte de faille éventuelle comme tout firewall.

Néanmoins, il faut savoir que l'on est totalement dépendant du constructeur du matériel pour
cette mise à jour, ce qui peut être, dans certains cas, assez contraignant.

Enfin, seules les spécificités prévues par le constructeur du matériel sont implémentées. Cette
dépendance induit que si une possibilité nous intéresse sur un firewall d'une autre marque, son

44
utilisation est impossible. Il faut donc bien déterminer à l'avance ses besoins et choisir le
constructeur du routeur avec soin.

III.4.2. Avantages

Nous pouvons noter trois grands avantages à utiliser des pare-feux matériels. Dans un premier
temps, ceux-ci sont intégrés au matériel réseau, ce qui réduit grandement les coûts de
maintenance, deuxièmement, une configuration et une administration relativement simple car
souvent associé à des services web. Et enfin, un pare-feu matériel offre toujours un bon
niveau de sécurité.

III .4.3. Inconvénients

Les principales difficultés des pare-feux matériels provient du fait qu’ils sont dépendants du
constructeur pour les mises à jour et souvent peu flexibles

III-5. Les limites des firewalls

Un système pare-feu n'offre bien évidemment pas une sécurité absolue, bien au contraire. Les
firewalls n'offrent une protection que dans la mesure où l'ensemble des communications vers
l'extérieur passe systématiquement par leur intermédiaire et qu'ils sont correctement
configurés. Ainsi, les accès au réseau extérieur par contournement du firewall sont autant de
failles de sécurité.

45
CHAPITRE IV : REALISATION ET SIMULATION

IV.1. Description

IV.1 .1. Le Cheval de Troie

IV.1.1.1. Définition

Le « Cheval de Troie » (en anglais Trojan horse) est un programme informatique effectuant
des opérations malicieuses à l'insu de l'utilisateur.

A la façon du virus, le cheval de Troie est un code caché qui exécute des commandes
sournoise, et qui généralement donne un accès à la machine sur laquelle il est exécuté, le
Trojan s’infiltre par la suite sur le disque dur pour y effectuer des actions néfastes une fois à
l’intérieur, dès qu’on exécutera son fichier porteur. Un cheval de Troie est donc conçu pour
espionner et infiltrer les systèmes.

C’est l’un des outils le plus puissant utilisé par les pirates afin de prendre le contrôle total
d’une machine cible.

IV.1.1.2. Schéma d’utilisation

Je vais présenter un schéma typique d’utilisation d’un cheval de Troie. L’attaquant, situé à
l’extérieur du réseau local a réussi à faire exécuter le cheval de Troie sur une machine cible
ayant accès à des données situées sur un serveur interne. L’idée générale est donc de pouvoir
piloter les programmes de la machine cible depuis la machine attaquante.

Figure 4.1: schéma d’utilisation

46
IV.1.1.3. Principe

Le principe des chevaux de Troie étant d’ouvrir un port de votre machine pour
permettre à un pirate d’en prendre le contrôle (par exemple voler des données personnelles
stockées sur le disque).

IV.1.2. Outils utilisés pour le développement

 Microsoft Visual Studio

L’outil Microsoft Visual Studio a été utilisé lors de ce projet autant comme IDE
(éditeur de texte spécialisé dans la programmation) que comme débuggeur ou compilateur, en
utilisant directement l’API Windows.

IV.1.3. Architecture des logiciels développés

Le Trojan se compose généralement de 2 parties :

- L’application serveur
- L’application cliente

IV.1.3.1. L’application serveur

a. Présentation

C’est ce programme qu’on doit lancer sur l'ordinateur que l'on veut hacker. Il peut aussi être
intégré dans un autre programme "alléchant" en utilisant la technique d’injection de code dans
un autre programme.

Après lancement, il se cache et travaille en mémoire comme étant un processus Windows; de


ce fait, il :

- Ouvre automatiquement un port de communication TCP/IP.


- Attend les commandes provenant de l’application cliente
- Enregistre toute frappe au clavier (fonction Keylogger), à la demande de ’application
cliente,
- Démarre automatiquement avec Windows, au cas où la victime ferme sa session ou
redémarre l’ordinateur.

47
b. Caractéristiques techniques de l’application serveur

- Établissement d’une connexion (circuit virtuel) entre le client et le serveur via


l’adresse IP et le numéro de port du PC contenant le serveur
- Connexion assurée par le protocole TCP
- Mode d’échange par flot d’octets : le récepteur n’a pas connaissance du découpage des
données effectué par l’émetteur
- Le serveur est “passif” : il n’est activé que lors de l’arrivée d’une demande de
connexion du client ou d’une commande du client
- Le serveur répond aux demandes de service de plusieurs clients : les requêtes arrivées
et non traitées sont stockées dans une file d’attente
- Utilisation du mode itératif pour la gestion des requêtes : le processus traite les
requêtes les unes après les autres

IV.1.3.2. L’application Cliente

a. Présentation

Elle sert à se connecter à l'ordinateur infecté (passer les commandes au serveur). Elle se
présente sous la forme d'un panneau de contrôle. Après l’établissement de la connexion,
l’application cliente est en mesure de tout faire, de tout contrôler sur la machine distante.

b. Les différentes fonctions de l’application cliente

Le cheval de Troie établit une interaction complète sans autorisation avec le PC distant, il
englobe beaucoup de fonctionnalité.

- Obtenir les informations de la machine cible


- Accéder sur le disque dur de la machine cible
- Arrêter les processus en cours
- Fermer la session, éteindre, redémarrer la machine cible.
- etc.

48
CONCLUSION

Aujourd’hui, on ne peut plus reculer devant l’expansion de l’Internet, mais on ne peut


pas non plus exposer nos réseaux locaux, à des innombrables attaques venant de lui.

Parmi tant d’autres, nous venons de découvrir le Firewall, un outil de sécurité pour les
réseaux locaux vis-à-vis de l’Internet. Il se base sur le principe de filtrage de paquets pour
fonctionner. Il se sert les numéros de ports ou les adresses réseau pour bloquer ou laisser
passer les services Internet ou ceux qui viennent du réseau protégé, néanmoins, le
firewall a ses propres limites, c’est pour cela qu’on a mis un serveur proxy pour combler la
sécurisation de l’ infrastructure réseau.

Mais malgré l’efficacité de notre infrastrucure, son déploiement reste néanmoins assez
coûteux et difficile à gérer ; une des solutions pour l’avenir est l’architecture virtualisée qui
permet de déployer plus rapidement et simplement la sécurisation des serveurs.

49
ANNEXE 1 : Rôles de chaque couche du modèle OSI

COUCHES FONCTIONS
NIVEAU 1 La couche physique assure un transfert de bits sur le canal physique. À cet
Couche effet, elle définit les supports et les moyens d’y accéder : spécifications
Physique mécaniques (connecteur), spécifications électriques (niveau de tension),
spécifications fonctionnelles des éléments de raccordement nécessaires à
l’établissement, au maintien et à la libération de la ligne.
NIVEAU 2 La couche liaison assure, sur la ligne, un service de transfert de blocs de
Couche Liaison données(trames) entre deux systèmes adjacents en assurant le contrôle,
de données l’établissement, le maintient et la libération du lien logique entre les entités.
Les protocoles de niveau 2 permettent, en outre, de détecter et de corriger les
erreurs inhérentes aux supports physiques.
NIVEAU 3 La couche réseau assure, lors d’un transfert à travers un système relais,
Couche Réseau l’acheminement des données (paquets) à travers les différents nœuds d’un
sous-réseau (routage). Les protocoles de niveau 3 fournissent les moyens
d’assurer l’acheminement de l’appel, le routage, le contrôle de congestion,
l’adaptation de la taille des blocs de données aux capacités du sous-réseau
physique utilisé. Elle offre, en outre, un service de facturation de la prestation
fournie par le sous-réseau de transport.
NIVEAU 4 La couche transport est la couche pivot du modèle OSI. Elle assure le contrôle
Couche du transfert de bout en bout des informations (messages) entre les deux
Transport systèmes d’extrémité. La couche transport est la dernière couche de contrôle
des informations, elle doit assurer aux couches supérieures un transfert fiable
quelle que soit la qualité du sous-réseau de transport utilisé.
NIVEAU 5 La couche session gère l’échange de données (transaction) entre les
Couche Session applications distantes. La fonction essentielle de la couche session est la
synchronisation des échanges et la définition de points de reprise.
NIVEAU 6 Interface entre les couches qui assurent l’échange de données et celle qui les
Couche manipule, cette couche assure la mise en forme des données, les conversions
Présentation de code nécessaires pour délivrer à la couche supérieure un message dans une
syntaxe compréhensible par celle-ci. En outre, elle peut, éventuellement,
réaliser des transformations spéciales, comme la compression de données.

50
NIVEAU 7 La couche application, la dernière du modèle de référence, fournit au pro-
Couche gramme utilisateur, l’application proprement dite, un ensemble de fonctions
Application (entités d’application) permettant le déroulement correct des programmes
communicants (transferts de fichiers, courrier électronique...).

51
ANNEXE 2 : Installation d’un serveur proxy Squid et SquidGuard

Squid est un proxy capable d'utiliser les protocoles FTP, HTTP et HTTPS. C'est un logiciel
libre distribué sous la licence GNU GPL. Squid garde les données les plus fréquemment
utilisées en mémoire. Il conserve aussi les requêtes DNS. Il existe un plugin à ce dernier,
SquidGard, qui permet de filtrer les informations demandées par les clients.

Les manipulations suivantes ont été faites sous Debian, mais il est possible de l’étendre à
d’autres systèmes Unix en adaptant quelques commandes.

A2.1. Principe de fonctionnement

Squid tourne en tâche de fond (daemon). Il écoute sur un port spécifique (3128 par défaut,
mais il est possible d'utiliser 8080, plus habituel pour un proxy HTTP). L'éventuel module
d'identification vient se greffer dessus, ce qui fait apparaitre un certain nombre de processus
fils.

SquidGuard vient également se greffer dessus et apparait lui aussi sous la forme de processus
fils (cf. Annexe A4.3.).

Figure A4. 1 : Schéma de fonctionnement d’un proxy

A2.2. Installation et configuration du proxy Squid

A2.2.1. Installation

Les lignes commençant par # sont des commentaires.

On installe Squid à partir des paquets Debian :

52
A2.2.2. Configuration

Le fichier de configuration est /etc/squid3/squid.conf.

Les ACL (Access Control Lists) permettent de définir des conditions sur les IPs, les ports, le
contenu de certains textes, etc.

Toujours dans le fichier /etc/squid3/squid.conf :

53
A2.2.3. Authentification et ajout d’utilisateurs

Si l’on souhaite que les utilisateurs s’authentifient auprès du proxy avant de pouvoir l’utiliser,
on ajoute la ligne suivante dans le fichier de configuration :

Pour ajouter les utilisateurs, on utilise l’outil d’apache htpasswd (il faut qu’Apache soit
installé) :

A2.3. SquidGuard

Squidguard est un plugin de Squid. Il permet de filtrer les pages consultées par les utilisateurs.
On peut définir des groupes d’utilisateurs à partir de leurs logins (authentification réalisée par
Squid) ou d’adresses IP sources (fixe, réseau, ou à partir d’un fichier de la base de données).
SquidGuard va comparer la destination des requêtes HTTP (URL et domaine) à sa base de
données et agir en fonction du comportement configuré grâce à des ACL. Si un utilisateur
essaye d'accéder à une page interdite, il se verra redirigé vers une page spécifiée dans la
configuration.

54
SquidGuard propose un filtrage très puissant d'accès au web, en fonction :

• De groupes d'utilisateurs, définis de diverses manières. Ici, nous nous baserons sur des IPs
ou des groupes d'IPs, mais il est possible d'utiliser l'identification des utilisateurs mise en
place sur Squid ;

• de listes de domaines et d'URI qui serviront à définir soit des cibles autorisées, soit des
cibles interdites (listes blanches, listes noires) ;

• de plages horaires pendant lesquelles l'accès sera autorisé ou interdit

A2.3.1. Installation

On l'installe avec la commande :

A2.3.2. Intégration à Squid

Dans un premier temps, il faut ajouter la ligne suivante dans le fichier de configuration de
Squid pour qu’il prenne en compte SquidGuard :

55
A2.3.3. Configuration

La configuration de SquidGuard se fait par le fichier spécifié à


Squid,etc/squid/squidGuard.conf. Voici un exemple de configuration:

56
REFERENCES BIBLIOGRAPHIQUES

[1] : « Réseaux et Télécoms », Claude Servin, Dunod Informatique, Paris, 2003

[2] : E414, « Cours Réseau local », 4ème année, ESPA, 2009

[3] : « Transmissions et Réseaux », Stéphane Lohier, Dunod Informatique, Paris, 2003

[4] : E551IA, « Cours Téléinformatique », 5ème année, ESPA, 2010

[5] : http://www.commentcamarche.net

[6] : « Cours TCP/IP », François Laissus, France, 2009

[7] : « Un petit guide pour la sécurité », Alexandre Viardin , Novembre 2003

[8] : E520, « Cours Administration Système », 5ème année, ESPA, 2010

[9] : « Système autonome de détection d’intrusions », HABERER Thomas et HUMANN


Alexandre, 2005

[10] : « Mise en place d’un système de détection d'intrusion sur le réseau d’entreprise »,
QSSI, 2009.

[11] : « Architecture expérimentale pour la détection d’intrusions dans un système


informatique », Philippe Bondi, 2001

[12] : « Les systèmes de détection d'intrusions », David Burgermeister et Jonathan Krier, 2006

[13] : « Mise en place d’une sonde SNORT », M. Fathi BEN NASR et Mme Alia
KHESSAIRI ABBASSI, 2005.

[14] : « Sécurité informatique », Laurent Bloch, Paris , 2006

57
AUTEUR : Monsieur RAMANDANIRAINY Oliva Michaël

TITRE : MISE EN PLACE D’UN SERVEUR PROXY ET SYSTEME DE


SECURISATION DES RESEAUX SOUS LINUX

Nombre de pages : 57

Nombre de figures : 32

Nombre de tableaux : 01

RESUME

La sécurisation d’un réseau informatique nécessite au préalable une base de


connaissance suffisante concernant en premier lieu, les réseaux informatiques et leurs
architectures. Puis des risques encourus lors de ses déploiements autrement dit ses
vulnérabilités face aux actes intrusifs ou aux piratages. Ainsi, il faut prévoir une
politique de sécurité pour assurer la protection du réseau. Ce qui nous a amené à étudier
différentes options en matière de système de défense allant des firewalls, jusqu’à la mise
en place d'un serveur proxy.

Mots clés: Debian GNU/Linux, Firewall, Netfilter, IPtables, Proxy, Squid, SquidGuard,
Trojan.

Rapporteur : Monsieur RAKOTONDRASOA Justin

Adresse de l'auteur : Lot III E 67 A Mahamasina Sud

Vous aimerez peut-être aussi