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 Présenté par : RAMANDANIRAINY Oliva Michaël N° d’ordre : 09/EN/IA/2010 Soutenu, le 16 juin 2011 MISE EN PLACE D’UN SERVEUR PROXY ET SYSTEME DE SECURISATION DES RESEAUX SOUS LINUX

MISE EN PLACE D’UN SERVEUR PROXY ET SYSTEME DE

  • Upload
    others

  • View
    16

  • Download
    2

Embed Size (px)

Citation preview

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

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

Présenté par :

RAMANDANIRAINY Oliva Michaël

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

MISE EN PLACE D’UN SERVEUR PROXY ET SYSTEME DE

SECURISATION DES RESEAUX SOUS LINUX

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

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

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

MISE EN PLACE D’UN SERVEUR PROXY ET SYSTEME

DE SECURISATION DES RESEAUX SOUS LINUX

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

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

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

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.

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

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

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

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

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

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

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

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

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

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

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

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

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

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)

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

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

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

1

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.

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

2

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.

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

3

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.

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

4

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.

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

5

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.

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

6

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

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

7

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

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

8

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

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

9

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 ;

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

10

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

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

11

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

transfert des fichiers. 21 Port de contrôle FTP

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.

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

12

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

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

13

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]

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

14

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

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

15

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.

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

16

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

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

17

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.

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

18

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.

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

19

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.

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

20

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.

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

21

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.

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

22

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.

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

TCP Xmas ou NULL ou

FIN

TCP RST

Poste A Poste B

Poste A Poste B

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

23

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.

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.

Client

Serveur Pare-feu

Intrus

(1)

(2)

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

24

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.

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.

Requête ARP (1)

Réponse ARP (2)

Trafic (3)

P1 P2

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

25

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.

Réponse ARP (1)P1 P2

Trafic (2)

P3

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

26

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.

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

27

Client C Serveur S

Intrus P

Trafic S vers C

Trafic C vers S

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.

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

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

28

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

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

29

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

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

30

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.

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

31

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

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

32

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

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

33

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.

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

34

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]

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

35

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.

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

36

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

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

37

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.

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

38

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

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

39

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.

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

40

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)

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.

Internet

Réseau interne

Firew all Proxy

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

41

Le serveur va ensuite donner sa réponse au proxy, qui va à son tour la transmettre à

l'application cliente. (Figure 3.14)

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

Internet

Application cliente

requête

réponse

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

42

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

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

43

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.

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

requête

réponse

Client distant reverse-proxy serveur interne

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

44

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

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

45

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

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

46

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

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

47

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.

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

48

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.

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

49

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.

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

50

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

COUCHES FONCTIONS

NIVEAU 1

Couche

Physique

La couche physique assure un transfert de bits sur le canal physique. À cet

effet, elle définit les supports et les moyens d’y accéder : spécifications

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

Couche Liaison

de données

La couche liaison assure, sur la ligne, un service de transfert de blocs de

données(trames) entre deux systèmes adjacents en assurant le contrôle,

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

Couche Réseau

La couche réseau assure, lors d’un transfert à travers un système relais,

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

Couche

Transport

La couche transport est la couche pivot du modèle OSI. Elle assure le contrôle

du transfert de bout en bout des informations (messages) entre les deux

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

Couche Session

La couche session gère l’échange de données (transaction) entre les

applications distantes. La fonction essentielle de la couche session est la

synchronisation des échanges et la définition de points de reprise.

NIVEAU 6

Couche

Présentation

Interface entre les couches qui assurent l’échange de données et celle qui les

manipule, cette couche assure la mise en forme des données, les conversions

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.

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

51

NIVEAU 7

Couche

Application

La couche application, la dernière du modèle de référence, fournit au pro-

gramme utilisateur, l’application proprement dite, un ensemble de fonctions

(entités d’application) permettant le déroulement correct des programmes

communicants (transferts de fichiers, courrier électronique...).

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

52

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 :

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

53

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 :

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

54

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.

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

55

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 :

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

56

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:

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

57

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

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

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