RamandanirainyOlivaM ESPA ING 11
RamandanirainyOlivaM ESPA ING 11
RamandanirainyOlivaM ESPA ING 11
UNIVERSITE D’ANTANANARIVO
ECOLE SUPERIEURE POLYTECHNIQUE D’ANTANANARIVO
DEPARTEMENT ELECTRONIQUE
Spécialité ELECTRONIQUE
Option : INFORMATIQUE APPLIQUEE
Présenté par :
RAMANDANIRAINY Oliva Michaël
Spécialité ELECTRONIQUE
Option: INFORMATIQUE APPLIQUEE
Présenté par :
RAMANDANIRAINY Oliva Michaël
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.
- 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.
- 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.
-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.
Mika
RESUME
INTRODUCTION ............................................................................................................. 1
a. La confidentialité ......................................................................................... 16
b. L’authentification ......................................................................................... 17
c. L’intégrité .................................................................................................... 17
d. La disponibilité ............................................................................................ 17
e. Le non répudiation de l’origine .................................................................... 17
f. Le non répudiation de la délivrance .............................................................. 18
g. Le contrôle d’accès ...................................................................................... 18
h. Le secret de flux ........................................................................................... 18
i. Le confinement ............................................................................................. 18
Chapitre II : LES ATTAQUES RESEAUX ................................................................. 19
III.2.3. Mode de fonctionnement des pare-feux sous Windows et sous Linux ........... 32
b. Le filtrage...................................................................................................... 42
c. L'authentification .......................................................................................... 43
CONCLUSION ....................................................................................................................... 49
ANNEXE 1 : Rôles de chaque couche du modèle OSI ................................................ 50
ACK: ACKnowledged
RST: Reset
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é.
1
PRESENTATION DU PROJET
Le projet consiste, dans un premier temps, à la mise en place d’une architecture réseau
sécurisée en y implémentant différents outils de protection (firewalls, proxys), puis en
l’élaboration d’un « Trojan » (cheval de Troie). Pour l’information, ce dernier est en quelques
sortes un programme informatique caché dans un autre qui exécute des commandes
sournoises, et qui généralement donne un accès à l'ordinateur sur lequel il est exécuté afin d’y
effectuer des opérations malicieuses à l'insu de l'utilisateur.
Il existe une infinité de façon d’organiser un réseau mais, quand la sécurité entre en jeu, il
est conseillé d’avoir une architecture réseau bien pensée. Je présente dans cet ouvrage
différents niveaux d’architecture sécurisée partant d’une architecture peu ou pas sécurisée
pour arriver à une architecture sécurisée.
2
1. Architcture non sécurisée
L’architecture réseau de base initiale est dépourvue de tous types de moyen de sécurité
mais disposant d’une connexion Internet avec le réseau local, un serveur de messagerie et un
site web :
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.
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).
La mise en place d’un firewall entre le réseau local et le routeur empêchera toute
connexion de l’extérieur vers le réseau local. Ainsi, on autorisera seulement les connexions
depuis le réseau local sur un nombre limité de services.
3
Un firewall situé entre le routeur et la DMZ gèrera tous les accès sur les serveurs web
et de messagerie (depuis le réseau local comme depuis l’extérieur). Il empêchera les tentatives
de connexion sur les autres services.
4
3. Le deuxième niveau de sécurisation
La mise en place de ces différents outils de protection est explicitée dans les chapitres
qui suivent.
5
Chapitre I : GENERALITES SUR LES RESEAUX ET LA SECURITE
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.
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]
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.
6
apparaitre la nécessité de définir un modèle complet de communication ou architecture
protocolaire réseau.
Historiquement, chaque grand constructeur avait défini la sienne : SNA d’IBM, DSA de
BULL. Ces architectures propriétaires incompatibles entre elles ne permettent pas
l’interopérabilité des systèmes. C’est ce qu’entreprit l’ISO en définissant une architecture de
communication normalisée, couramment appelée modèle de référence ou modèle OSI. [1]
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.
7
I.1.3.2. Architecture TCP/IP
Origine
L’architecture TCP/IP a été développée, dans le milieu des années 1970, par la DARPA pour
les besoins d’interconnexion des systèmes informatiques de l’armée (DoD). TCP/IP, du nom
de ses deux protocoles principaux (TCP, Transmission Control Protocol et IP, Internet
Protocol), est un ensemble de protocoles permettant de résoudre les problèmes
d’interconnexion en milieu hétérogène. [1]
Aujourd’hui, TCP/IP est le protocole standard de tous les réseaux, du LAN au WAN. De
récentes adaptations autorisent les flux multimédia et, en particulier, la voix.
Principe architectural
Précédant le modèle OSI, TCP en diffère fortement, non seulement par le nombre de couches,
mais aussi par l’approche. Le modèle OSI spécifie des services (approche formaliste), TCP/IP
des protocoles (approche pragmatique). Développé au-dessus d’un environnement existant,
TCP/IP ne décrit, à l’origine, ni de couche physique ni de couche liaison de données. Les
applications s’appuient directement sur le service de transport. La Figure 1.2 compare les
deux architectures.
8
Description générale de la pile et applications TCP/IP
a. La couche Application
9
- TFTP, est une version allégée du protocole FTP,
- DNS, est un système de bases de données réparties assurant la correspondance d’un
nom symbolique et d’une adresse Internet (adresse IP) ;
- RIP, est le premier protocole de routage (vecteur distance) utilisé dans Internet ;
- SNMP, est devenu le standard des protocoles d’administration de réseau ;
- ICMP, assure un dialogue IP/IP et permet notamment : la signalisation de la
congestion, la synchronisation des horloges et l’estimation des temps de transit... Il est
utilisé par l’utilitaire Ping qui permet de tester la présence d’une station sur le réseau.
- ARP, est utilisé pour associer une adresse logique IP à une adresse physique MAC
(adresse de l’interface dans les réseaux locaux) ;
- RARP, permet l’attribution d’une adresse IP à une station ;
- OSPF, est un protocole de routage du type état des liens, il a succédé à RIP ;
- SLIP, protocole d’encapsulation des paquets IP, il n’assure que la délimitation des
trames ;
- PPP, protocole d’encapsulation des datagrammes IP, il assure la délimitation des
trames, identifie le protocole transporté et la détection d’erreurs.
De nombreux programmes TCP/IP peuvent être exécutés simultanément sur Internet. Chacun
de ces programmes travaille avec un protocole, toutefois l'ordinateur doit pouvoir distinguer
les différentes sources de données.
Ainsi, pour faciliter ce processus, chacune de ces applications se voit attribuer une adresse
unique sur la machine, codée sur 16 bits appelé:port. Le port sert donc à indiquer l'application
à laquelle les données sont destinées. De cette manière, lorsque l'ordinateur reçoit des
informations destinées à un port, les données sont envoyées vers l'application correspondante.
S'il s'agit d'une requête à destination de l'application, l'application est appelée application
serveur. S'il s'agit d'une réponse, on parle alors d'application cliente. [5]
10
Ces ports sont numérotés de 0 à 65535 :
Les ports 0 à 1023 sont les «ports reconnus» ou réservés. Ils sont, de manière
générale, réservés aux processus système ou aux programmes exécutés par des
utilisateurs privilégiés.
Les ports 1024 à 49151 sont appelés «ports enregistrés».
Les ports 49152 à 65535 sont les «ports dynamiques et/ou privés».
Voici une liste des ports reconnus les plus couramment utilisés :
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é :
11
Établissement d'une connexion
Étant donné que ce processus de communication, qui se fait grâce à une émission de données
et d'un accusé de réception, est basé sur un numéro d'ordre (appelé généralement numéro de
séquence), il faut que les machines émettrices et réceptrices (client et serveur) connaissent le
numéro d'ordre initial de l'autre machine.
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.
12
Enfin, le client transmet au serveur un accusé de réception, c'est-à-dire un
segment dont le drapeau ACK est à 1, dont le drapeau SYN est à zéro (il ne s'agit plus d'un
segment de synchronisation). Son numéro d'ordre est incrémenté et le numéro d'accusé de
réception représente le numéro d'ordre initial du serveur incrémenté de 1.
Suite à cette séquence comportant trois échanges les deux machines sont synchronisées et la
communication peut commencer.
c. La couche Internet
La couche Internet est la couche la plus importante car c'est elle qui définit les datagrammes,
et qui gère les notions d'adressage IP. Elle permet l'acheminement des datagrammes (paquets
de données) vers des machines distantes ainsi que la gestion de leur fragmentation et de leur
assemblage à la réception [2]. Elle accepte des requêtes venant de la couche de transport avec
une identification de la machine vers laquelle le paquet doit être envoyé.
Elle utilise alors l’algorithme de routage pour décider si le paquet doit être envoyé vers une
passerelle ou vers une machine directement accessible. [6]
13
La couche Internet contient 5 protocoles :
- IP : Internet Protocol
- ARP : Address Resolution Protocol
- ICMP : Internet Control Message Protocol
- RARP : Reverse Address Resolution Protocol
- IGMP : Internet Group Management Protocol
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 :
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.
L’encapsulation consiste à transporter les données d’une couche dans une unité de données de
la couche inférieure. Un en-tête contient les informations nécessaires à l’entité homologue
pour extraire et traiter les données. Dans le modèle TCP/IP, les données de l’application
constituent des messages, ceux-ci sont transportés dans des segments qui seront émis sur le
réseau sous forme de datagrammes. L’unité de transport élémentaire est la trame qui constitue
au niveau physique un train de bits (figure 1.5).
14
Figure 1.5 : L’encapsulation des données dans TCP/IP
I.2.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.
Sécuriser un réseau informatique, c’est garantir diligemment des préventions pour qu’aucun
préjudice ne puisse mettre en péril la pérennité en termes de performance, d’exactitude, de
fonctionnement et de perfection du réseau.
15
I.2.2. Les systèmes de sécurité
Renforcer la sécurité des réseaux en même temps que leur performance apparaît,
irréfutablement, comme un enjeu technologique et économique d’importance capitale.
Concrètement, pour atteindre ce but il faut munir le réseau d’un système de sécurité qui puisse
offrir un ensemble de services en s’appuyant sur un ensemble de techniques et d’outils
appropriés.
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.
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]
a. La confidentialité
Dans la littérature, la confidentialité semble être la qualité la plus importante d’un système
sûr. Elle a été la première préoccupation des militaires. Assurer la confidentialité des données
consiste à faire en sorte que les informations restent secrètes et que seules les personnes
16
autorisées y aient accès. Les utilisateurs du système ont besoin d’avoir la garantie que leurs
informations ne risquent pas d’être divulguées à des personnes non autorisées.
b. L’authentification
Fournir deux preuves en parallèle, l’une est aussi importante et indispensable que l’autre:
Prouver qu’un sujet (site, personne, système, processus, etc.) est celui qu’il prétend être et que
les informations reçues sont conformes à celles fournies. Pratiquement, dans le cas d’un
simple message, le service d’authentification assure que le message provient de l’endroit d’où
il prétend venir. Dans le cas d’un échange bidirectionnel, deux aspects sont à vérifier. Il faut
assurer que les deux entités communicantes sont bien ce qu’elles affirment être. De plus, le
service d’authentification doit montrer que la connexion ne peut être brouillée par une
troisième entité essayant de se faire passer pour un des deux correspondants.
c. L’intégrité
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.
La technique de non répudiation à l’origine vise à éliminer le risque qu’un émetteur puisse
nier avoir envoyé un message alors que réellement tel a été le cas. A titre d’exemple, lors
d’une transaction commerciale électronique, le service du non répudiation de l’origine oblige
le client à ne pas démentir le fait qu’il a adressé une requête d’achat au fournisseur.
17
f. Le non répudiation de la délivrance
Le destinataire ne pourra jamais nier l’arrivée d’un message qu’il a réellement reçu. A titre
d’exemple, lors d’une transaction commerciale électronique, le service du non répudiation de
la délivrance oblige le fournisseur à ne pas démentir le fait que le client lui a adressé une
requête d’achat.
g. Le contrôle d’accès
En matière de sécurité, le contrôle d’accès est indispensable. Paradoxalement, son étude n’a
pas suscité l’intérêt d’une large communauté de chercheurs. Lorsqu’un sujet souhaite
effectuer une opération sur un objet, le système transforme l’opération en une requête qu’il
fait passer au moniteur de référence. Ce dernier est responsable du contrôle d’accès aux
ressources. Si le sujet est autorisé à accéder à l’objet et à réaliser le type d’opération demandé
alors l’accès à l’objet est accordé et l’opération peut se dérouler sans aucune entrave. Dans le
cas contraire, il retournera un refus catégorique à l’utilisateur. Les buts du contrôle d’accès
rejoignent ceux de la disponibilité.
h. Le secret du flux
L’intérêt est d’empêcher tout utilisateur non autorisé d’avoir la possibilité d’analyser les flux
des données à travers le réseau. Tout accès illégal, même en lecture, à un flux de données
permet à l’utilisateur de déduire des informations utiles et qui peuvent, ultérieurement, servir
ses intentions malveillantes. La taille des messages échangés, leurs sources et leurs
destinations, ainsi que la fréquence des communications entre les utilisateurs sont des
exemples de données à préserver pour prévenir le secret des flux dans le réseau et le rendre
plus sûr.
i. Le confinement
18
Chapitre II : LES ATTAQUES RESEAUX
II. 1. INTRODUCTION
A l’heure actuelle la migration des systèmes d’information vers le réseau mondial Internet
s’accroit de plus en plus. Bien que bénéfique, cette migration a aussi son inconvénient majeur.
Malheureusement, si Internet a apporté une formidable révolution de l’informatique et de la
circulation mondiale de l’information, il a également mis à la disposition de personnes mal
intentionnées de nouveaux moyens d’accéder illégalement à des données privées, qu’elles
soient au sein de l’entreprise ou chez un particulier, et ceci avec un risque bien moindre
puisque sans intrusion physique.
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.
Toutes les attaques informatiques sont basées sur ce qu’on appel « les 5 P » :
Prospecter – Pénétrer – Persister – Propager - Paralyser
Prospecter : C’est une phase où l’agresseur collecte des informations sur une
cible potentielle. Le but de cette phase est de dresser une cartographie du réseau et
d’obtenir des détails sur les systèmes. L’agresseur choisit ainsi une attaque en
fonction des vulnérabilités connues pour les versions des applications utilisées ou
explore la possibilité d’erreurs de configuration.
Pénétrer : L’étape qui suit la découverte des systèmes et service potentiellement
vulnérables est l’attaque. Elle peut prendre de nombreuses formes et résulter en
l’exécution des programmes de l’agresseur sur l’un des systèmes. Si l’agresseur
n’a gagné qu’un accès à un utilisateur sans privilèges, il tenterait d’obtenir l’accès
à un compte possédant des droits d’administration. L’attaque peut simplement
conduire au dysfonctionnement d’un service ou du système complet.
19
Persister : Lorsqu’un agresseur parvient à trouver un système vulnérable, puis à
trouver ou construire une attaque et, enfin, à s’introduire avec succès dans le
système, il n’aimerait pas recommencer entièrement ce processus chaque fois
qu’il souhaiterait y accéder. C’est pourquoi la première action qu’entreprend un
agresseur qui réussit à « s’approprier » une machine est d’installer un dispositif
qui lui permet de revenir aisément sur le système.
L’agresseur peut aussi installer un programme de contrôle à distance. Cela lui
permet de travailler plus facilement à distance sur le système.
Propager : Une fois l’agresseur bien installé sur le système, la prochaine étape
consiste à évaluer ce qui devient accessible sur le réseau pirate, que ce soit au
niveau des ressources ou des services à sa disposition. Le pirate va chercher à
étendre son contrôle sur plusieurs systèmes.
Paralyser : Voici l’objectif ultime d’une agression ciblée, si l’agresseur en a
après votre environnement dans un but bien précis. Ce but pourrait être le vol ou
la détérioration de données, la mise hors service de vos systèmes ou l’attaque
d’une autre organisation depuis l’un d’eux, vous faisant ainsi passer pour
responsable.
Ce type d’attaque se base principalement sur des failles liées aux protocoles ou à leur
implémentation. Il existe plusieurs types d’attaque réseau. Nous allons voir celles qui
sont bien connues.
II.3.1.1. Les techniques de scan
Les scans de ports ne sont pas des attaques à proprement parler. Le but des scans
est de déterminer quels sont les ports ouverts, et donc en déduire les services qui sont
exécutés sur la machine cible (ex : port 80/TCP pour un service HTTP). Par
conséquent, la plupart des attaques sont précédées par un scan de ports lors de la phase
de « Prospection » qui est comme nous l’avons vu, la première phase des 5P dans le
déroulement d’une attaque.
20
Il existe un nombre important de techniques de scan. Idéalement, la meilleure
technique de scan est celle qui est la plus furtive afin de ne pas alerter les soupçons de
la future victime. Voici une description des techniques de scan les plus répandues :
Les scans XMAS, NULL et FIN : déterminent si un port est fermé ou non en
fonction de la réaction à certaines requêtes. Ces scans sont moins fiables que le
scan SYN mais ils sont un peu plus furtifs. La différence entre ces trois types de
scan se situe au niveau des flags TCP utilisés lors de la requête. Le scan FIN
(respectivement NULL) consiste en l’envoi de paquets TCP avec seulement le flag
FIN (respectivement NULL) armé, et le Xmas scan consiste en l’envoi de paquets
TCP avec les flags FIN/URG/PUSH armés.
21
Pour ces trois types de scans, les systèmes répondent avec un paquet RST si le
port est fermé et ne répondent pas si le port est ouvert. Le NULL scan ne
fonctionne pas contre des plateformes Microsoft.
Poste A Poste B
Poste A Poste B
TCP RST
II.3.1.2. IP Spoofing
Finalité : se faire passer pour une autre machine en truquant les paquets IP. Cette technique
peut être utile dans le cas d’authentifications basées sur une adresse IP (services tels que
rlogin ou ssh par exemple).
Déroulement : il existe des utilitaires qui permettent de modifier les paquets IP ou de créer ses
propres paquets (ex : hping2). Grâce à ces utilitaires, il est possible de spécifier une adresse IP
différente de celle que l’on possède, et ainsi se faire passer pour une autre « machine ».
22
Cependant, ceci pose un problème : en spécifiant une adresse IP différente de notre
machine, nous ne recevrons pas les réponses de la machine distante, puisque celle-ci répondra
à l’adresse usurpée. Il existe toutefois deux méthodes permettant de récupérer les réponses :
Serveur Pare-feu
(1)
Client
(2)
Intrus
(1) : On envoie un paquet forgé avec une adresse usurpée vers le serveur. Le
pare-feu le laisse passer puisqu’il accepte tout trafic venant de cette
adresse.
(2) : Le serveur répond aux requêtes en pensant que le client est l’émetteur du
paquet.
C’est après que l’intrus déploie les moyens nécessaires pour rediriger le trafic vers lui.
23
II.3.1.3. ARP Spoofing (ou ARP Redirect)
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.
Trafic (3)
(1) Pour connaître l’adresse physique de P1, P2 lui envoie une requête ARP.
(2) P1 renvoie à P2 son adresse physique dans la réponse ARP puis P2 la stocke
dans son cache en faisant correspondre l’adresse IP de P1 à son adresse physique.
(3) Le trafic circule entre P1 et P2.
24
P1 P2 Réponse ARP (1) P3
Trafic (2)
(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.
But : le but de cette attaque est de passer outre les protections des équipements de filtrage IP.
Finalité : en passant outre les protections, un pirate peut par exemple s’infiltrer dans un réseau
pour effectuer des attaques ou récupérer des informations confidentielles.
Déroulement : deux types d’attaque sur les fragments IP peuvent être distingués :
Fragments overlapping : quand un message est émis sur un réseau, il est fragmenté
en plusieurs paquets IP. Afin de pouvoir reconstruire le message, chaque paquet possède un
offset. Le but de l’attaque est de réaliser une demande de connexion et de faire chevaucher
des paquets en spécifiant des offsets incorrects. La plupart des filtres analysant les paquets
indépendamment, ils ne détectent pas l’attaque. Cependant, lors de la défragmentation, la
demande de connexion est bien valide et l’attaque a lieu.
Tiny fragments : le but de l’attaque est de fragmenter une demande de connexion sur
deux paquets IP : le premier paquet de taille minimum (68 octets selon la norme du protocole
IP) ne contient que l’adresse et le port de destination. Le deuxième paquet contient la
demande effective de connexion TCP. Le premier paquet est accepté par les filtres puisqu’il
ne contient rien de suspect. Quand le deuxième paquet arrive, certains filtres ne le vérifient
pas pensant que si le premier paquet est inoffensif, le deuxième l’est aussi. Mais lors de la
défragmentation sur le système d’exploitation, la connexion s’établit.
De nos jours, une grande majorité des firewalls sont capables de détecter et stopper ce
type d’attaques.
25
Les attaques réseaux connues de part le monde ne se résument pas qu’à ces quelques
exemples qu’on vient de citer, nombreux sont encore à craindre (ex. les DNS spoofing, TCP
session hijacking, …etc).
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.
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.
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.
26
II.3.2.4. Les scripts
Principalement web (ex : Perl, PHP, ASP), ils s’exécutent sur un serveur et renvoie un
résultat au client. Cependant, lorsqu’ils sont dynamiques (i.e. qu’ils utilisent des entrées
saisies par un utilisateur), des failles peuvent apparaître si les entrées ne sont pas correctement
contrôlées.
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.
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.
Client C Serveur S
Trafic C vers S
Trafic S vers C
Intrus P
27
II.3.2.6. Le déni de service
Evoqué précédemment, le déni de service est une attaque visant à rendre indisponible
un service. Ceci peut s’effectuer de plusieurs manières : par le biais d’une surcharge réseau,
rendant ainsi la machine totalement injoignable ; ou bien de manière applicative en crashant
l’application à distance.
L’utilisation d’un buffer overflow (voir plus bas) peut permettre de planter
l’application à distance. Grâce à quelques instructions malicieuses et suite à une erreur de
programmation, une personne mal intentionnée peut rendre indisponible un service (serveur
web, serveur de messagerie, … etc) voire un système complet.
UDP Flooding : le trafic UDP est prioritaire sur TCP. Le but est donc d’envoyer un
grand nombre de paquets UDP, ce qui va occuper toute la bande passante et ainsi
rendre indisponible toutes les connexions TCP.
Smurfling ou attaque par réflexion : le pirate fait des requêtes ICMP à plusieurs
machines présentes sur le réseau en usurpant l'adresse source (en indiquant l’adresse
de la machine cible). Cette machine cible va recevoir un nombre énorme de réponses,
car toutes les machines vont lui répondre, et ainsi utiliser toute sa bande passante.
Déni de service distribué : le but est ici de reproduire une attaque normale à grande
échelle. Pour ce faire, le pirate va tenter de se rendre maître d’un nombre important de
machines. Grâce à des failles, il va pouvoir prendre le contrôle de machines à distance
et ainsi pouvoir les commander à sa guise. Une fois ceci effectué, il ne reste plus qu’à
donner l’ordre d’attaquer à toutes les machines en même temps, de manière à ce que
l’attaque soit reproduite à des milliers d’exemplaires. Ainsi, une simple attaque
28
comme un SYN Flooding pourra rendre une machine ou un réseau totalement
inaccessible.
II. 4. CONCLUSION
29
Chapitre III : LES FIREWALLS (PARE-FEU)
Chaque ordinateur connecté à Internet est susceptible d'être victime d'une attaque d'un
pirate informatique. La méthodologie généralement employée par le pirate informatique
consiste à scruter le réseau (en envoyant des paquets de données de manière aléatoire) à la
recherche d'une machine connectée, puis à chercher une faille de sécurité afin de l'exploiter et
d'accéder aux données s'y trouvant.
Ainsi, il est nécessaire, autant pour les réseaux d'entreprises que pour les internautes
possédant une connexion, de se protéger des intrusions réseaux en installant un dispositif de
protection.
III.1. Définition
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).
Un firewall permet donc de délimiter les environnements publics et privés afin de protéger
son réseau. On arrive à mieux gérer les flux entrants et sortants et ainsi séparer son réseau
intranet du réseau internet.
Il permet donc d'analyser, de sécuriser et de gérer le trafic réseau, et ainsi d'utiliser le réseau
de la façon pour laquelle il a été prévu.
30
III.2. Les pare-feux sous Windows et sous Linux
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]
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 ;
31
- Le noyau du système :
- L'interface utilisateur :
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.
Par contre, sous Linux tout se passe au niveau du noyau, c'est-à-dire qu’à l’exception du
programme de configuration, aucun autre processus ne peut interférer avec le pare-
feu.
32
III.3. Fonctionnement du pare-feu sous Linux
Ce type de firewall travaille sur la composition même des paquets réseaux (couche réseau du
modèle OSI). Ils analysent les paquets entrants/sortants suivant leur type, leurs adresses
source et destination ainsi que les ports utilisés.
Travaillant directement sur la couche IP, ils sont très peu gourmands en mémoire. Il est à
noter que s’ils sont totalement transparents pour les utilisateurs il n'y a pas d'authentification
possible des dits utilisateurs car seule l’adresse IP source est connue du firewall.
Sous linux, il existe un Framework (kit de composants logiciels) permettant de filtrer tous les
paquets réseau lors des appels des routines de réception ou d'émission des paquets des
interfaces réseau appelé : Netfilter. [8]
III.3.1.1. Netfilter
Netfilter est une partie du noyau Linux destinée à assurer la surveillance de tous les transferts
de données réseau. Fournissant des fonctions de sécurité, il est essentiellement utilisé pour la
réalisation de pare-feux pour le filtrage de paquets.
NetFilter est composé de 2 parties : d'une part, NetFilter proprement dit qui doit être compilé
dans le noyau (« en dur » ou sous forme de module), d'autre part la commande iptables :
commande qui permet la configuration du Netfilter, c’est une interface très fiable et se dispose
de très nombreuses options qui permettent de faire du filtrage très fin.
a. L’architecture de Netfilter
Netfilter définit trois tables : Filter, NAT et Mangle, chaque table est composée de plusieurs
chaînes, et chaque chaîne pourra contenir une ou plusieurs règles.
33
Figure 3.3 : Netfilter
Une règle définit l’action et le type de paquets sur lesquels l’action va être appliquée.
Les chaînes sont des ensembles de règles que nous allons écrire dans chaque table. Ces
chaînes vont permettre d'identifier des paquets qui correspondent à certains critères.
Une table représente une séparation des règles selon le type d’opération.
i. La table Filter
C’est la table par défaut, utilisée pour le filtrage des paquets et elle est composée des chaînes
suivantes :
- INPUT : Cette chaîne est utilisée pour les paquets étant à destination des applications
du firewall. A ce stade, les paquets sont prêts à être envoyés aux applications.
- OUTPUT : Cette chaîne est utilisée pour les paquets sortant des applications du
firewall. A ce stade, les paquets ont donc déjà été traités, ou générés par les
applications.
- FORWARD : Cette chaîne filtre les paquets passant d'une interface à une autre
du firewall, c'est à dire qu'ils ne sont pas destinés à une application
présente sur le firewall. Ces paquets ne passent pas par les chaînes INPUT et
OUTPUT et ne passent les chaînes. [8]
34
ii. La table NAT
La table NAT table utilisée pour la translation d'adresse. Les chaînes de cette table sont les
suivantes :
- PREROUTING : Quand les paquets arrivent au niveau du firewall, ils sont dans
un état non modifié. C'est à dire qu'il n'y a encore eu aucun traitement quel qu'il
soit sur celui-ci au niveau du firewall. Cette chaîne est utilisée afin de
faire des traitements particuliers sur les paquets en arrivée avant d'effectuer leur
filtrage à proprement dit. Il est utilisé, par exemple, dans les cas d'utilisation de
destination NAT ou DNAT, qui correspond à la modification de l'adresse IP
destination.
- POSTROUTING : Quand les paquets sont prêts à être envoyés sur l'interface réseau.
Ils ont donc été traités par les applications, et routés par le firewall. Tous les
traitements sur ces paquets sont alors terminés. Il est utilisé, par exemple, dans
le cas de source NAT ou SNAT, qui correspond à la modification de l'adresse IP
source (utile pour accéder au réseau Internet avec une adresse IP privé). [8]
C’est la table utilisée pour la modification de types spécifiques de paquets. Les chaînes de
cette table sont les suivantes :
- PREROUTING
- Et OUTPUT
Le système vérifie chaque paquet reçu et lorsqu’un paquet correspond à une règle
précise, il se voit assigner une action ou cible. Il pourra donc être accepté «ACCEPT»,
abandonné sans envoyé un message à la machine d’origine «DROP» ou bien abandonné par
rejet «REJECT», dans ce dernier cas un message d’erreur est envoyé à la machine d’origine.
b. La commande iptables.
Iptables est une commande qui sert à ajouter, modifier, supprimer et afficher les règles
Netfilter. Elle se lance en ligne de commande par le super-utilisateur « root », et attend de
nombreux paramètres et options.
35
Figure 3.4 : la commande iptables.
<nom-table> : permet de spécifier une table autre que la table par défaut Filter.
<commande> : représente une action, telle que l'ajout ou la suppression d’une règle.
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.
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]
36
Tous les paquets qui entrent et sortent sont traités par la table Filter. La figure 3.6 représente
la structure interne de cette table. Lorsqu’un paquet entre sur une des interfaces de la machine,
une décision de routage est prise, si le paquet est destiné à un processus local, alors il traverse
la chaîne INPUT, si le paquet est destiné à un autre réseau alors il traverse la chaîne
FORWARD. Un paquet généré par un processus local et qui a comme destination le réseau,
traverse la chaîne OUTPUT.
d. Translation d’adresse
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.
37
Comme le montre la figure 3.8, la machine passerelle (Adresse publique 98.76.54.1) va
effectuer le remplacement de l'adresse IP source de la machine H1 par son adresse publique
(98.76.54.1) puis envoyer le paquet vers Internet. Elle va mettre à jour la table de translation
d’adresse, d’après cette figure l’adresse privée 192.168.0.2, port 1200 correspond à l’adresse
publique : 98.76.54.1, port 1400. Quand la réponse lui parviendra, elle va cette fois-ci
modifier l'adresse de destination (98.76.54.1/1400) par celle de H1 (192.168.0.2/1200). Pour
activer la translation de l’adresse source, on utilise la commande de la figure 3.9.
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.
Consiste à remplacer l’adresse de destination des paquets qui rentrent dans la passerelle par
l’adresse d’une machine qui existe sur le réseau local privé. La translation d’adresse de
destination va permettre d’héberger un serveur web ou bien un serveur de messagerie dans le
réseau local avec une adresse privée. Lorsque les paquets arrivent à la passerelle de l’Internet,
cette dernière va changer l’adresse de destination (qui était son adresse) à l’adresse privée du
serveur sur le réseau local (figure 3.10).
38
Figure 3.10: translation d’adresse de destination (Portforwarding).
Dans la figure 3.10, H1 est un serveur de messagerie (192.168.0.2). Quand les paquets
arrivent avec un numéro de port 25, la passerelle change l’adresse de destination de ces
paquets à l’adresse du serveur de messagerie (192.168.0.2). Pour activer la translation
d’adresse de destination il faut premièrement permettre le transite (Forwarding) des paquets
qui arrivent sur le port 25 en utilisant la commande de la figure 3.11.
39
Deuxièmement, on active la translation d’adresse de destination en utilisant la commande de
la figure 3.12.
Int ernet
Le principe de fonctionnement basique d'un serveur proxy est assez simple : il s'agit d'un
serveur "mandaté" par une application pour effectuer une requête sur Internet à sa place.
Ainsi, lorsqu'un utilisateur se connecte à Internet à l'aide d'une application cliente configurée
pour utiliser un serveur proxy, celle-ci va se connecter en premier lieu au serveur proxy et lui
donner sa requête. Le serveur proxy va alors se connecter au serveur que l'application cliente
cherche à joindre et lui transmettre la requête.
40
Le serveur va ensuite donner sa réponse au proxy, qui va à son tour la transmettre à
l'application cliente. (Figure 3.14)
Application cliente
requêt e
Int ernet
réponse
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.
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.
41
Cette fonctionnalité implémentée dans certains serveurs proxy permet d'une part de réduire
l'utilisation de la bande passante vers internet ainsi que de réduire le temps d'accès aux
documents pour les utilisateurs.
Toutefois, pour mener à bien cette mission, il est nécessaire que le proxy compare
régulièrement les données qu'il stocke en mémoire cache avec les données distantes afin de
s'assurer que les données en cache sont toujours valides.
b. Le filtrage
D'autre part, grâce à l'utilisation d'un proxy, il est possible d'assurer un suivi des connexions
via la constitution de journaux d'activité (logs) en enregistrant systématiquement les requêtes
des utilisateurs lors de leurs demandes de connexion à Internet.
Il est ainsi possible de filtrer les connexions à internet en analysant d'une part les requêtes des
clients, d'autre part les réponses des serveurs. Lorsque le filtrage est réalisé en comparant la
requête du client à une liste de requêtes autorisées, on parle de liste blanche, lorsqu'il s'agit
d'une liste de sites interdits on parle de liste noire.
42
c. L'authentification
Dans la mesure où le proxy est l'intermédiaire indispensable des utilisateurs du réseau interne
pour accéder à des ressources externes, il est parfois possible de l'utiliser pour authentifier les
utilisateurs, c'est-à-dire de leur demander de s'identifier à l'aide d'un nom d'utilisateur et d'un
mot de passe par exemple. Il est ainsi aisé de donner l'accès aux ressources externes aux
seules personnes autorisées à le faire et de pouvoir enregistrer dans les fichiers journaux des
accès identifiés.
requêt e
réponse
Client dist ant rev erse- pro x y serv eur int erne
Le reverse-proxy sert ainsi de relais pour les utilisateurs d'Internet souhaitant accéder à un site
web interne en lui transmettant indirectement les requêtes. Grâce au reverse-proxy, le serveur
web est protégé des attaques directes de l'extérieur, ce qui renforce la sécurité du réseau
interne. D'autre part, la fonction de cache du reverse-proxy peut permettre de soulager la
43
charge du serveur pour lequel il est prévu, c'est la raison pour laquelle un tel serveur est
parfois appelé « accélérateur »
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.1. Présentation
Ils se trouvent souvent sur des routeurs comme Cisco ou Nortel. Intégrés directement dans la
machine, ils font office de « boite noire », et ont une intégration parfaite avec le matériel.
Leur configuration est souvent relativement ardue, mais leur avantage est que leur interaction
avec les autres fonctionnalités du routeur est simplifiée par leur présence sur le même
équipement réseau. Souvent relativement peu flexibles en terme de configuration, ils sont
aussi peu vulnérables aux attaques, car présent dans la « boite noire » qu'est le routeur.
De plus, étant souvent très liés au matériel, l'accès à leur code est assez difficile, et le
constructeur a eu toute latitude pour produire des systèmes de codes « signés » afin
d'authentifier le logiciel. Ce système n'est implanté que dans les firewalls haut de gamme, car
cela évite un remplacement du logiciel par un autre non produit par le fabricant, ou toute
modification de ce dernier, rendant ainsi le firewall très sûr.
Son administration est souvent plus aisée que les firewalls logiciels, les grandes marques de
routeurs utilisant cet argument comme argument de vente. Leur niveau de sécurité est de plus
très bon, sauf découverte de faille éventuelle comme tout firewall.
Néanmoins, il faut savoir que l'on est totalement dépendant du constructeur du matériel pour
cette mise à jour, ce qui peut être, dans certains cas, assez contraignant.
Enfin, seules les spécificités prévues par le constructeur du matériel sont implémentées. Cette
dépendance induit que si une possibilité nous intéresse sur un firewall d'une autre marque, son
44
utilisation est impossible. Il faut donc bien déterminer à l'avance ses besoins et choisir le
constructeur du routeur avec soin.
III.4.2. Avantages
Nous pouvons noter trois grands avantages à utiliser des pare-feux matériels. Dans un premier
temps, ceux-ci sont intégrés au matériel réseau, ce qui réduit grandement les coûts de
maintenance, deuxièmement, une configuration et une administration relativement simple car
souvent associé à des services web. Et enfin, un pare-feu matériel offre toujours un bon
niveau de sécurité.
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
Un système pare-feu n'offre bien évidemment pas une sécurité absolue, bien au contraire. Les
firewalls n'offrent une protection que dans la mesure où l'ensemble des communications vers
l'extérieur passe systématiquement par leur intermédiaire et qu'ils sont correctement
configurés. Ainsi, les accès au réseau extérieur par contournement du firewall sont autant de
failles de sécurité.
45
CHAPITRE IV : REALISATION ET SIMULATION
IV.1. Description
IV.1.1.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.
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.
46
IV.1.1.3. Principe
Le principe des chevaux de Troie étant d’ouvrir un port de votre machine pour
permettre à un pirate d’en prendre le contrôle (par exemple voler des données personnelles
stockées sur le disque).
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.
- L’application serveur
- L’application cliente
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.
47
b. Caractéristiques techniques de l’application serveur
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.
Le cheval de Troie établit une interaction complète sans autorisation avec le PC distant, il
englobe beaucoup de fonctionnalité.
48
CONCLUSION
Parmi tant d’autres, nous venons de découvrir le Firewall, un outil de sécurité pour les
réseaux locaux vis-à-vis de l’Internet. Il se base sur le principe de filtrage de paquets pour
fonctionner. Il se sert les numéros de ports ou les adresses réseau pour bloquer ou laisser
passer les services Internet ou ceux qui viennent du réseau protégé, néanmoins, le
firewall a ses propres limites, c’est pour cela qu’on a mis un serveur proxy pour combler la
sécurisation de l’ infrastructure réseau.
Mais malgré l’efficacité de notre infrastrucure, son déploiement reste néanmoins assez
coûteux et difficile à gérer ; une des solutions pour l’avenir est l’architecture virtualisée qui
permet de déployer plus rapidement et simplement la sécurisation des serveurs.
49
ANNEXE 1 : Rôles de chaque couche du modèle OSI
COUCHES FONCTIONS
NIVEAU 1 La couche physique assure un transfert de bits sur le canal physique. À cet
Couche effet, elle définit les supports et les moyens d’y accéder : spécifications
Physique mécaniques (connecteur), spécifications électriques (niveau de tension),
spécifications fonctionnelles des éléments de raccordement nécessaires à
l’établissement, au maintien et à la libération de la ligne.
NIVEAU 2 La couche liaison assure, sur la ligne, un service de transfert de blocs de
Couche Liaison données(trames) entre deux systèmes adjacents en assurant le contrôle,
de données l’établissement, le maintient et la libération du lien logique entre les entités.
Les protocoles de niveau 2 permettent, en outre, de détecter et de corriger les
erreurs inhérentes aux supports physiques.
NIVEAU 3 La couche réseau assure, lors d’un transfert à travers un système relais,
Couche Réseau l’acheminement des données (paquets) à travers les différents nœuds d’un
sous-réseau (routage). Les protocoles de niveau 3 fournissent les moyens
d’assurer l’acheminement de l’appel, le routage, le contrôle de congestion,
l’adaptation de la taille des blocs de données aux capacités du sous-réseau
physique utilisé. Elle offre, en outre, un service de facturation de la prestation
fournie par le sous-réseau de transport.
NIVEAU 4 La couche transport est la couche pivot du modèle OSI. Elle assure le contrôle
Couche du transfert de bout en bout des informations (messages) entre les deux
Transport systèmes d’extrémité. La couche transport est la dernière couche de contrôle
des informations, elle doit assurer aux couches supérieures un transfert fiable
quelle que soit la qualité du sous-réseau de transport utilisé.
NIVEAU 5 La couche session gère l’échange de données (transaction) entre les
Couche Session applications distantes. La fonction essentielle de la couche session est la
synchronisation des échanges et la définition de points de reprise.
NIVEAU 6 Interface entre les couches qui assurent l’échange de données et celle qui les
Couche manipule, cette couche assure la mise en forme des données, les conversions
Présentation de code nécessaires pour délivrer à la couche supérieure un message dans une
syntaxe compréhensible par celle-ci. En outre, elle peut, éventuellement,
réaliser des transformations spéciales, comme la compression de données.
50
NIVEAU 7 La couche application, la dernière du modèle de référence, fournit au pro-
Couche gramme utilisateur, l’application proprement dite, un ensemble de fonctions
Application (entités d’application) permettant le déroulement correct des programmes
communicants (transferts de fichiers, courrier électronique...).
51
ANNEXE 2 : Installation d’un serveur proxy Squid et SquidGuard
Squid est un proxy capable d'utiliser les protocoles FTP, HTTP et HTTPS. C'est un logiciel
libre distribué sous la licence GNU GPL. Squid garde les données les plus fréquemment
utilisées en mémoire. Il conserve aussi les requêtes DNS. Il existe un plugin à ce dernier,
SquidGard, qui permet de filtrer les informations demandées par les clients.
Les manipulations suivantes ont été faites sous Debian, mais il est possible de l’étendre à
d’autres systèmes Unix en adaptant quelques commandes.
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.).
A2.2.1. Installation
52
A2.2.2. Configuration
Les ACL (Access Control Lists) permettent de définir des conditions sur les IPs, les ports, le
contenu de certains textes, etc.
53
A2.2.3. Authentification et ajout d’utilisateurs
Si l’on souhaite que les utilisateurs s’authentifient auprès du proxy avant de pouvoir l’utiliser,
on ajoute la ligne suivante dans le fichier de configuration :
Pour ajouter les utilisateurs, on utilise l’outil d’apache htpasswd (il faut qu’Apache soit
installé) :
A2.3. SquidGuard
Squidguard est un plugin de Squid. Il permet de filtrer les pages consultées par les utilisateurs.
On peut définir des groupes d’utilisateurs à partir de leurs logins (authentification réalisée par
Squid) ou d’adresses IP sources (fixe, réseau, ou à partir d’un fichier de la base de données).
SquidGuard va comparer la destination des requêtes HTTP (URL et domaine) à sa base de
données et agir en fonction du comportement configuré grâce à des ACL. Si un utilisateur
essaye d'accéder à une page interdite, il se verra redirigé vers une page spécifiée dans la
configuration.
54
SquidGuard propose un filtrage très puissant d'accès au web, en fonction :
• De groupes d'utilisateurs, définis de diverses manières. Ici, nous nous baserons sur des IPs
ou des groupes d'IPs, mais il est possible d'utiliser l'identification des utilisateurs mise en
place sur Squid ;
• de listes de domaines et d'URI qui serviront à définir soit des cibles autorisées, soit des
cibles interdites (listes blanches, listes noires) ;
A2.3.1. Installation
Dans un premier temps, il faut ajouter la ligne suivante dans le fichier de configuration de
Squid pour qu’il prenne en compte SquidGuard :
55
A2.3.3. Configuration
56
REFERENCES BIBLIOGRAPHIQUES
[5] : http://www.commentcamarche.net
[10] : « Mise en place d’un système de détection d'intrusion sur le réseau d’entreprise »,
QSSI, 2009.
[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.
57
AUTEUR : Monsieur RAMANDANIRAINY Oliva Michaël
Nombre de pages : 57
Nombre de figures : 32
Nombre de tableaux : 01
RESUME
Mots clés: Debian GNU/Linux, Firewall, Netfilter, IPtables, Proxy, Squid, SquidGuard,
Trojan.