outil de mise en place un réseau privé...

36
Outil de mise en place un Réseau Privé Virtuel Page1

Upload: dinhkien

Post on 29-Mar-2018

217 views

Category:

Documents


3 download

TRANSCRIPT

Outil de mise en place un Réseau Privé Virtuel

Page1

Outil de mise en place un Réseau Privé Virtuel

Page2

Jusqu’a présent, il y a toujours eu une très claire différence entre les réseaux

privés et publics. Un réseau public, comme le réseau téléphonique ou Internet, est un

ensemble de points entre lesquels ont lieu des échanges plus ou moins libre

d’informations. Les personnes Qui ont accès à ce réseau sont susceptibles d’avoir un

intérêt commun et utilisent le réseau pour communiquer les uns avec les autres.

Il y a peu de temps, les entreprises pouvaient encore se permettront de construire

leurs propres LAN, supportant leurs propres systèmes de nommage, système de

messagerie, voire même leur propre protocole réseau. Cependant, comme de plus en plus

de données étaient stockées sur ordinateurs, les entreprises ressentirent le besoin

d’interconnecter leurs différents bureaux. Grace à l’utilisation de lignes d´dédiées, une

entreprise avait à la garantie que la connexion entre ses départements serait toujours

disponible et privée. Cependant, cette solution peut être très couteuse, notamment si

l’entreprise a plusieurs bureaux à travers tout un pays. De plus, les réseaux privés manque

de souplesse par rapport aux situations que l’on peut rencontrer dans une entreprise. En

effet, si un représentant à besoin d’accéder à distance au réseau privé de son entreprise

alors qu’il est a des milliers de kilomètres de celle-ci, le cout de l’appel téléphonique sera

extrêmement élevé.

Ce rapport présentera le réseau virtuel privé ou VPN, un concept qui rend flou la

différence entre réseau privé et public. Les VPN vous permettent de créer un réseau

privé et sur un réseau public tel qu’Internet. On peut les réaliser à l’aide de matériels

spécifiques (cartes réseaux, routeurs, . . .), de logiciels ou d’une combinaison

hardware/software.

Outil de mise en place un Réseau Privé Virtuel

Page3

Outil de mise en place un Réseau Privé Virtuel

Page4

1. Rôle d’un VPN Un grand nombre de protocole ne protègent pas leurs informations en les chiffrant.

Si nous prenons le cas de POP3, par exemple, on s’aperçoit alors que non

seulement les messages électronique circulent en claire sur le réseau mais également les noms d’utilisateur et les mots de passe, il est alors facile pour une personne mal intentionnée d’écouter les communications entre client et serveur et de récupérer les informations qui l’intéresse. Sachant, de plus, qu’il existe un certain nombre de logiciels permettant d’automatiser la procédure (dsniff par

exemple), c est avec bien des traces que l’on relève ses mails depuis un endroit peut sûr…

Bien sûr, il existe toujours la possibilité d’utiliser des versions spécifiques de

ces protocoles. Mais, dans ce cas, on se heurte rapidement à des problèmes d’incompatibilités entre les applications clientes et serveurs.

La solution au problème qui vient d’être exposé est toute simple. Comme

Les protocoles peu sûrs ne peuvent être remplacés, il suffit de les utiliser sur un réseau protégé. L’astuce con siste alors à crée une connexion chiffrée entre le client et le serveur et c’est par l’intermédiaire de cette connexion que la liaison en clair d’effectuera. On crée ainsi un tunnel chiffré permettant la

communication entre les machines.

Ce tunnel peut être crée sur plusieurs niveaux d’un réseau existant :

Niveau réseau :

Les paquets circulants entre les machines sont chiffrés par un logiciel placé directement au-dessus du support réseau

Niveau transport :

C’est la liaison logique entre des programmes fonctionnant de concert sur les machines qui chiffrent la communication. Ces programmes interceptent les communications les concernant et les traitent à la volée ; c’est le cas pour SSL par exemple.

Niveau application :

Ici, c’est l’application elle-même qui protège les communications. Cette méthode est celle qui est offre le moins de comptabilité puisque client et serveur dialogue dans un « patois »qui leur est propre. Une application souhaitant être compatible avec la méthode de communication utilisée doit être claquée sur les spécifications de l’application d’origine. Tous les

Outil de mise en place un Réseau Privé Virtuel

Page5

logiciels et les plugins des clients mails entrent dans cette catégorie.

Un VPN est une généralisation du concept de tunnel. Il s’agit de faire

Circuler dans le tunnel non seulement les informations des applications, mais

également tout ce qui concerne les couches réseau et transport. Ainsi, on crée un

nouveau réseau à l’intérieur du tunnel. Vous imaginerez facilement les avantages

d’un VPN en considérant deux réseaux locaux ayant besoin d’être reliés via un

réseau peu sûr comme Internet. Les deux LAN se relient par un tunnel traversant

Internet et forment un nouveau LAN virtuel et sûr : le VPN.

2. Vers un VPN sécurisé Un VPN utilise un ensemble de technologie pour protéger les données

qui voyagent d’un bout à l’autre de l’Internet. Les concepts les plus importants

sont ceux de firewall , d’authentification, de tunnels et du chiffrement de

données que nous allons présenter dans les parties suivantes.

a. Les firewalls

Un firewall Internet a le même but qu’une porte coupe feu dans un

immeuble: protéger une certaine zone de l’avancée de la flamme ou d’une

explosion qu’elles pourraient engendrer l’avancée des flammes dans un

immeuble est contrôlé en plaçant de solides murs à des endroits stratégiques

qui aident à contenir les flammes et à réduire les dégâts occasionnés. Un

pare-feu Internet à le même rôle: en utilisant des techniques telles que

l’examen de l’adresse IP du paquet qu’il reçoit ou le port sur lequel arrive

une connexion il décide de laisser passer ou de bloquer le trafic entrant.

Bien que VPN n’implémente pas de firewall standard par défaut, les pare-feu

font partie intégrante d’un VPN, L’idée est qu’ils doivent être utilisés pour

garder les utilisateurs non désirables hors du réseau tout en acceptant les

utilisateurs du VPN. Si vous n’avez pas de firewall protégeant votre réseau

ne vous embêtez pas à construire un VPN avant d’en avoir un !

Outil de mise en place un Réseau Privé Virtuel

Page6

Le pare-feu le plus classique est un pare-feu filtrant les paquets, qui bloquera

l’accès à certains services(en fonction des ports) au niveau de la passerelle.

De nombreux routeurs support les technologies VPN, tel que le routeur Cisco

Private Internet Exchange(PIX), gèrent en natif ce type de filtrage. Un

serveur Proxy est aussi une solution possible pour protéger un réseau en

laissant accès aux services VPN. Ce type de serveur tourne généralement sur

un système d’exploitation tel que Linux, Open BSD, Windows.

b. Les tunnels De nombreuses solutions en matière de VPN utilisent des tunnels pour

créer un réseau privé sur un réseau public. C’est le cas notamment de PPTP

de Microsoft, du Layer 2 Forwarding Protocole et d’OpenVPN. Les VPNs

vous permettent ainsi de vous connectez à un réseau distant via l’Internet, qui

est lui-même un réseau IP. Néanmoins, de nombreux réseaux locaux

d’entreprise n’utilisent pas IP comme base exclusive (même si aujourd’hui le

courant va dans cette direction). Des réseaux composés de serveurs Windows

NT par exemple, pourraient utiliser NetBEUI, tandis que les serveurs Novell

utilisent IPX, le tunnel vous permet ainsi d’encapsuler un paquet à l’intérieur

Outil de mise en place un Réseau Privé Virtuel

Page7

d’un autre paquet afin de résoudre les problèmes de protocoles

incompatibles. De ce fait, le paquet à l’intérieur d’un paquet peut être du

même protocole ou d’un protocole complètement différent, par exemple le

tunneling peut être utilisé pour envoyer des paquets IPX à travers l’Internet

pour se connecter à un serveur distant Novell ne support que l’IPX. Le

serveur distant décapsulera le paquet IP reçu, analysera le paquet IPX qu’il

contient et enverra à son tour un paquet IPX encapsulé à l’utilisateur distant.

Grace au tunneling, vous pouvez également encapsuler un paquet IP à

l’intérieur d’un paquet IP. Ceci signifie que vous pouvez envoyer un paquet

IP ayant une adresse source et une adresse de destination Complètement

arbitraire sur Internet en l’encapsulant dans un paquet qui possède une source

et une destination joignable sur Internet. L’aspect pratique de la chose est que

vous pouvez ainsi utiliser les adresses IP réservées par l’Internet Assigned

Numbers Authority(IANA) aux réseaux sur votre LAN et continuer d’avoir

accès à vos host à travers Internet.

Outil de mise en place un Réseau Privé Virtuel

Page8

c. Les techniques d’authentification : Les techniques d’authentification sont essentielles au bon fonctionnement d’un VPN puisqu’elles assurent aux utilisateurs d’un VPN

qu’ils effectuent un échange de données avec le bon partenaire.

L’authentification dans un VPN est semblable à l’authentification sur un

système à l’aide d’un nom d’utilisateur et d’un mot de passe. Cependant les

méthodes d’authentification des VPN sont souvent bien plus rigoureuses et

compliquées. La plupart des systèmes d’authentification s’appuyé en effet

Outil de mise en place un Réseau Privé Virtuel

Page9

sur un échange de clefs entre les hôtes. Chaque hôte possède un jeu de clefs,

composé d’une clef publique et d’une clef privée. Les clefs parcourent un

algorithme de hashage qui produit une valeur hachée de ces dernières.

L’autre bout de la connexion, l’hôte possédant les

Mêmes clefs réalise un hash identique, récupère et compare la valeur de hash

retournée à celle qu’il a reçue. L’authentification réussie si deux valeurs

correspondent.

Notez que la valeur de hash qui transite sur le réseau Internet n’a aucune

signification pour un observateur extérieur qui la snifferait dans

L’espoir de trouver un mot de passe. C’est de cette façon là que fonction le

Challenge Handshake Authentification Protocole (CHAP). Une autre

méthode commune d’authentification est le système RSA.

L’authentification a généralement lieu début de la session, puis de

Outil de mise en place un Réseau Privé Virtuel

Page10

manière aléatoire au cours de la session pour s’assurer qu’un imposteur ne se

soit pas glisser dans la conversation. L’authentification peut aussi être

utilisée pour assurée l’intégrité des données. En effet une donnée elle-même

peut être envoyée au travers de l’algorithme de hashage pour donner une

valeur qui sera alors utiliser comme un checksum à l’intérieur d’un message.

Si ce checksum n’est pas le même d’un hôte `a l’autre, cela signifie que la

donnée a été corrompue ou qu’elle a été interceptée et modifiée durant le

transport.

d. Le chiffrement des informations

Tous les VPN supportent au moins un type de chiffrement qui a pour

rôle essentiel de placer les données dans une enveloppe sécurisée. Le

chiffrement est souvent considéré comme tout aussi important que

l’authentification puisqu’il protège les données en cours de transport contre

le sniffing. Il existe 2 grandes techniques de chiffrement employées dans la

mise en place de VPN : le chiffrement à clef publique et le chiffrement à clef

secrète(ou privée).

Chiffrement à clef secrète :

Il existe un mot de passe ou une phrase connu de tous les hôtes

souhaitant accéder à l’information chiffrée. Cette clef unique est

utilisée à la fois pour chiffrer et pour déchiffrer l’information. Le

système de chiffrement DES (Data Encryption Standard) est un

exemple de méthode de chiffrement à clef privée.

Un problème posé par cette méthode de chiffrement par clef secrète

est que chaque hôte souhaitant accéder à une donnée chiffrée doit

connaitre le mot de passe. Si tout se passe bien pour un petit groupe

de travail, cette solution devient vite ingérable pour un réseau plus

important. En effet, si un employé quitte la compagnie il vous faudra

révoquer l’ancienne clef, en créer une nouvelle et arriver `à mettre au

courant tout le monde de manière sécurisée que la clef a changé.

Outil de mise en place un Réseau Privé Virtuel

Page11

Le chiffrement par clef publique :

Suppose une clef publique et une clef privée. Vous transmettez votre

publique à tout le monde tandis que vous ne connaissez que votre clef

privée. Si vous souhaitez transmettre `a quelqu’un des données

sensibles, vous les chiffrer à l’aide de votre clef privée et de sa clef

publique. Quand il recevra votre message, il pourra le déchiffrer à

l’aide de sa clef privée et de votre clef publique. Selon l’application

utilisée pour générer les clefs, ces dernières peuvent être grosses ;

trop grosses pour que quelqu’un s’en souvienne par cœur. Ainsi, on

les stocke sur la machine de la personne souhaitant chiffrer de

données en utilisant cette méthode de chiffrement. A cause de cela les

clefs privées sont généralement stockées en utilisant un principe de

chiffrement par clef secrète, tel que DES, et un mot de passe de sorte

que si quelqu’un a accès à votre système il ne puisse pas voir ou

utiliser votre clef privée. GnuPG est une application signant des

données qui fonctionne sur ce modèle ; RSA est un autre system à

clef publique que l’on retrouve dans de nombreux produits en vente

dans le commerce. Le principal désavantage du chiffrement par clef

publique est que pour un montant égal de donnée à chiffrer, le

processus de chiffrement est plus lent qu’avec une clef secrète.

Les VPN, quant `a eux, doivent chiffrer les données en temps réel. A

cause de cela, les flux chiffrés sur un réseau le sont en utilisant une

Outil de mise en place un Réseau Privé Virtuel

Page12

clef secrète plutôt qu’une clef publique. Néanmoins cette clef n’est

valide que pour la liaison. La session secrète elle-même est chiffrée

en utilisant le principe de clefs publiques. Les clefs secrètes sont

négociées selon un protocole de gestion de clefs clairement défini.

Clé publique Clé privée

Algorithme de

chiffrement

Algorithme de

déchiffrement

Outil de mise en place un Réseau Privé Virtuel

Page13

Outil de mise en place un Réseau Privé Virtuel

Page14

Données Chiffrées

1. Présentation : Le protocole SSL (Secure Socket Layer) a été spécifié par Netscape dans le

but de sécuriser les transactions sur internet. Il constitue un complément à

TCP/IP et permet en principe de sécuriser n'importe quel protocole ou

programme utilisant TCP/IP.

SSL forme un canal de sécurité qui assure :

Confidentialité: les informations échangées ne peuvent être accessible que par les parties autorisées.

Intégrité: l'émetteur et le destinataire peuvent détecter la corruption des informations échangées.

Authentification: permet de s'assurer de l'identité du programme, de la personne ou de l'entreprise avec laquelle on communique.

Ce protocole est composé de quatre sous protocole :

Le SSL Handshake Protocol (négociation des attributs de la session

SSL): permet au serveur et au client de s’authentifier (opération

optionnelle) et de négocier un algorithme de chiffrement et des clés

cryptographiques communs avant que le protocole d’application ne

reçoive son premier octet d’information (donc mis en œuvre avant

toute communication entre les 2 parties). Ce protocole comporte deux

phases. La première phase sert à établir des communications privées.

La seconde phase sert à l’authentification du client.

SSL Change Cipher Spec Protocol : Permet de signaler des

transitions dans les stratégies de chiffrement par l’envoi d’un

message indiquant que les messages suivants utiliseront les éventuels

nouveaux paramètres négociés (le message envoyé étant chiffré selon

les paramètres actuels).

Outil de mise en place un Réseau Privé Virtuel

Page15

SSL Alert Protocol : utilisé pour échanger les messages d’erreurs

(signaux d’avertissements) entre le client et le serveur quand des

erreurs surviennent (erreurs de séquence, de certificat ou

d'authentification de message). Certaines alertes sont définies pour

entraîner l’arrêt immédiat de la session SSL (c’est le cas où l’erreur

est qualifiée de fatale).

le SSL Record Protocol (encodage): se trouve au niveau le plus bas,

juste au dessus du protocole de transport TCP. Il est utilisé pour

encapsuler d’autres protocoles de plus haut niveau tel que le SSL

Handshake Protocol.

La communication entre le client et le serveur est caractérisée par :

L’expéditeur

Découpe les données en paquets.

Compressé les données (opération optionnel).

Signe crypto graphiquement les données(pour garantir l’intégrité du données envoyé).

Chiffré les données

Les envoie

Le récepteur

Déchiffré les données.

Vérifier la signature des données.

Décompressé les données(en cas de la compression de la part d’expéditeur).

Ré assemble les paquet de données pour les transmettre au protocole de niveau supérieur le protocole applicatif sécurisé par la couche SSL

Outil de mise en place un Réseau Privé Virtuel

Page16

2. Principe de fonctionnement :

SSL combine l'utilisation de clés asymétriques (phase de négociation) et

symétriques (phase d'encodage). Le chiffrement symétrique est utilisé pour

chiffrer les données transmises durant une session SSL alors que le chiffrement

asymétrique est utilisé pour négocier les clés symétriques de session.

3. Attaque potentielle :

Des attaques contre une session de communication spécifique peuvent

être réalisées en enregistrant la session et ensuite utiliser cet

enregistrement pour craquer soit la clé de session, soit la clé publique

RSA jusqu'à l'obtention de la communication claire.

Attaques de rejeu (Relay en anglais) : où l’attaquant enregistre une

session de communication entre un client et un serveur. Plus tard, cet

attaquant se connecte à ce même serveur et rejoue les messages du

client qu'il vient d'enregistrer.

SSL élimine cette attaque en utilisant un des aléas (connection-id)

qui est ``unique'' pour chaque connexion. En théorie, l’attaquant ne

peut prédire à l'avance l’aléa car il est basé sur une série

d'événements sur lesquels il n'a aucun contrôle. L’attaquant ne peut

donc pas répondre aux demandes du serveur.

Attaques dites ``l'homme au milieu'' (en anglais : man-in-the-middle),

où l’attaquant se situe sur le réseau entre le client et le serveur, et

intercepte le trafic provenant à la fois du client et du serveur.

L'homme du milieu opère en faisant semblant d'être le vrai serveur

envers le client.

Outil de mise en place un Réseau Privé Virtuel

Page17

Avec SSL, ce genre d’attaques est impossible grâce à l'utilisation de

certificats du serveur. En effet, le serveur est demandé à présenter

un certificat signé par une autorité (le certificat contient le nom et la

clé publique du serveur). Le client vérifie ce certificat en regardant

la signature et en vérifiant si le nom du donneur de certificat est

quelqu'un que le client reconnaît. De plus, le serveur doit chiffrer

quelque chose avec la clé privée qui s'associe avec la clé publique

mentionnée dans le certificat. Seul un serveur qui possède à la fois

le certificat et la clé privée peut répondre convenablement à ce

challenge.

Outil de mise en place un Réseau Privé Virtuel

Page18

Outil de mise en place un Réseau Privé Virtuel

Page19

1. Introduction

En se connectant sur Internet, des liens généralement sans protection sont

établis entre votre ordinateur et d'autres machines. Pour minimiser les risques de

sécurité informatique liés à ces échanges de données, il est possible de sécuriser

les connexions, lors de l'implémentation des programmes qui les utilisent. Nous

allons donc voir comment mettre en place une connexion sécurisée entre un

client et un serveur à l'aide de TLS (SSL v.3) en Java.

2. JSSE : Cette extension est une implémentation des protocoles SSL et TLS destinée aux

applications Java. JSSE étend les API de sécurité et réseau en fournissant une

classe de sockets spécialisée SSL, des gestionnaires de clés, des systèmes de

fabriques de sockets mais aussi le support pour les mécanismes de négociation,

d'authentification et de session. JSSE implémente RSA jusqu'à 2048 bits. JSSE

était autrefois une extension mais est maintenant inclus dans le JDK 1.4.

3. Implémentation : A. Technologie SSLSocket

a. Création des certificats : Création des deux certificats client et serveur dans les magasins de

clés : D’abord Lancer l’invite de commande et taper :

Pour le serveur :

keytool -genkey -alias Client -keyalg RSA -keystore client_keystore - dname "cn=Client" -keypass password -storepass password

Pour le client:

keytool -genkey -alias Server -keyalg RSA -keystore server_keystore -dname "cn=Server" -keypass password -storepass password Signature fictive des certificats :

Le certificat client : keytool -selfcert -alias Client -keystore client_keystore -keypass password -storepass password Et serveur : keytool -selfcert -alias Server -keystore server_keystore -keypass password -storepass password

exporter les clés publiques au format binaire dans un fichier :

Outil de mise en place un Réseau Privé Virtuel

Page20

La clé publique du client : keytool -export -keystore client_keystore -alias Client -storepass password -file client_cert Et la clé publique du serveur: keytool -export -keystore server_keystore -alias Server -storepass password -file server_cert

Importation des clés publiques dans le magasin de clé de l'autre partie

keytool -import -alias Client -file client_cert -keystore server_keystore -storepass password keytool -import -alias Server -file server_cert -keystore client_keystore -storepass password keytool -list -keystore server_keystore keytool -list -keystore client_keystore

b. Implémentation en java :

1. Partie Serveur : Le serveur sera en écoute des nouveaux clients qui vient de se

connecter. Pour démarré le serveur en créer d’abord le socket

d’écoute

Après en lance le serveur

SSLServerSocket ecoute = null; KeyManagerFactory kmf; KeyManager[] km; KeyStore ks; TrustManagerFactory tmf; TrustManager[] tm; SSLContext sslc; ks = KeyStore.getInstance("JKS"); ks.load(new FileInputStream(KEYSTORE_FILE), PASSWORD.toCharArray()); kmf = KeyManagerFactory.getInstance(ALGORITHM); kmf.init(ks, PASSWORD.toCharArray()); km = kmf.getKeyManagers(); tmf = TrustManagerFactory.getInstance(ALGORITHM); tmf.init(ks); tm = tmf.getTrustManagers(); sslc = SSLContext.getInstance("TLS"); sslc.init(km, tm, null); SSLServerSocketFactory ssf = sslc.getServerSocketFactory(); ecoute = (SSLServerSocket)ssf.createServerSocket(PORT);

Outil de mise en place un Réseau Privé Virtuel

Page21

Thread c = new GestionClient(socketEcoute, socketClient);

GestionClient c’est la méthode qui va communiquer ave ce nouveau client

Le traitement effectué par le Serveur sera :

Réception des nouveau clients.

Création d’un nouveau processus pour le nouveau client.

Le traitement effectué par GestionClient :

Authentification des clients.

Ajouté un client

Envoie et réception des fichiers

public void run(){ try{ while (socketEcoute.isClosed()==false) { SSLSocket socketClient = (SSLSocket)socketEcoute.accept(); // Un client se connecte // Creation d'un nouveau processus pour le nouveau client Thread c = new GestionClient(socketEcoute, socketClient); } }catch(Exception e){ MessageErreur.show("Serveur arrete");}}

Outil de mise en place un Réseau Privé Virtuel

Page22

Pour envoyer un fichier au client

pour envoyer la list des fichiers au client

infoEnvoyer est une Vector contient la list des fichiers

File repertoireSource = new File(repertoire); File fichierSource = OperationsFichier.getFile(numFichier, repertoireSource); FileInputStream fin = null; boolean erreurLecture = false; try{ fin = new FileInputStream(fichierSource); } catch(Exception e){erreurLecture=true;} if(erreurLecture) gererErreurEnvoyerFichier(numFichier); else { byte[] buffer_send = new byte[4094]; while (fin.available() !=0){ int size_msg = fin.read(buffer_send, 0, buffer_send.length); if (size_msg < 0) throw new Exception(""); String msg_send = new String(buffer_send, 0, size_msg); ecrire(buffer_send); } ecrire("{end}");} fin.close();

Vector infoAEnvoyer = null; ecrire("listeFichiers"); infoAEnvoyer = OperationsFichier.getVectorFileList(new File(repertoire)); byte[] buffer_send; for(int i=0; i<infoAEnvoyer.size(); i++){ ecrire("{newSousVect}"); Vector sousVect = (Vector) infoAEnvoyer.elementAt(i); for(int j=0; j<sousVect.size(); j++){ buffer_send = ((String) sousVect.elementAt(j)).getBytes(); attendreSignal(); out.write(buffer_send, 0, buffer_send.length); } attendreSignal(); ecrire("{endSousVect}"); } attendreSignal(); ecrire("{end}");

Outil de mise en place un Réseau Privé Virtuel

Page23

2. Partie Client

C’est le plus important et celui qui communiquer avec le serveur

Et qui va être authentifié au serveur si l’authentification est passe le

Serveur envoie la liste des fichiers de ce client au serveur a partir de

ce liste le client peut télécharger n’import qu’il fichier, et il peut

envoyer et supprimer un fichier dans sa répertoire au serveur

pour connecter au serveur :

SSLSocket socket = null; KeyManagerFactory kmf; KeyStore ks; TrustManagerFactory tmf; SSLContext sslc; String line; kmf = KeyManagerFactory.getInstance(ALGORITHM); ks = KeyStore.getInstance("JKS"); ks.load(new FileInputStream(KEYSTORE_FILE), PASSWORD.toCharArray()); mf.init(ks, PASSWORD.toCharArray()); tmf = TrustManagerFactory.getInstance(ALGORITHM); tmf.init(ks); sslc = SSLContext.getInstance("TLS"); sslc.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null); SSLSocketFactory sf = sslc.getSocketFactory(); socket = (SSLSocket) sf.createSocket(HOST, PORT);

in = new DataInputStream(socketClient.getInputStream()); out = new DataOutputStream(socketClient.getOutputStream());

Outil de mise en place un Réseau Privé Virtuel

Page24

Pour recupére la liste des fichier il suffit d’envoyé « out.write("listeFichiers".getBytes()); ».

Pour recupérer la list des fichier

En recupére un vecteur contient la list des fichiers ensuite en remmplie cette liste dans un « List »

Pour récupére un fichier :

Vector infosReception = new Vector(); Vector v = null; String msg_receive = ""; int num = 0; while(msg_receive.equals("{end}")==false){ // Creation d'un tampon de stockage byte[] buffer_receive = new byte[4094]; out.flush(); int size_msg = in.read(buffer_receive, 0, buffer_receive.length); if (size_msg < 0) throw new Exception(); msg_receive = new String(buffer_receive, 0, size_msg); if(msg_receive.equals("{newSousVect}")){ num++; v = new Vector(); // debut de nouveau vecteur} else if(msg_receive.equals("{endSousVect}")){ v.add(""+num); infosReception.add(v); // fin de vecteur} else if(msg_receive.equals("{end}")==false && msg_receive!="@"){ v.add(msg_receive); // cas general }} }// VecicherInfosVecteurRep(infosReception); for(int i=0;i<infosReception.size();i++){ Vector sous=(Vector)infosReception.elementAt(i); Fichiers fic=new Fichiers(Integer.parseInt((String)sous.elementAt(3)),(String)sous.elementAt(0),Integer.parseInt((String)sous.elementAt(2))); fich.add(fic); }

Outil de mise en place un Réseau Privé Virtuel

Page25

String nomFichier = new String(buffer_receive, 0, size_msg); File fileDest = new File(repertoire +File.separator + nomFichier); FileOutputStream fileOut = new FileOutputStream(fileDest); PrintStream p = new PrintStream(fileOut); String msg_receive = ""; while(msg_receive.equals("{end}")==false){ buffer_receive = new byte[4094]; size_msg = in.read(buffer_receive, 0, buffer_receive.length); if(size_msg < 0) throw new Exception("La connexion a ete arretee par le serveur"); msg_receive = new String(buffer_receive, 0, size_msg); p.write(buffer_receive); p.flush(); }close() ;

Outil de mise en place un Réseau Privé Virtuel

Page26

Diagramme de cas d’utilisation

Outil de mise en place un Réseau Privé Virtuel

Page27

Diagramme de séquences

Outil de mise en place un Réseau Privé Virtuel

Page28

Diagramme de classe

Pack serveur

Outil de mise en place un Réseau Privé Virtuel

Page29

Pack client

Outil de mise en place un Réseau Privé Virtuel

Page30

Outil de mise en place un Réseau Privé Virtuel

Page31

Guide d’utilisation :

Outil de mise en place un Réseau Privé Virtuel

Page32

1 : Créer un fichier texte qui contient les logins et les mots de passes des utilisateurs.

2 : Vérifier l’existence des dossiers qui contient les différents fichiers qu’on souhaite partagé.

3 : Copier le dossier cert dans le disque qui contient ‘1’ et ‘2’.

Outil de mise en place un Réseau Privé Virtuel

Page33

Le projet nommé soutenance contient deux packages, le premier concerne les class du client( client, fichier, infoconnection, interface, jtree) le seconde les class du serveur( auth,gestionclient, infoconnection, interfaceseveur, menuserveur, messageavertissement, messageerreur, operationfichier,serveur).

Interface authentification :

Le client devra dabort s’authentifier pour qu’il puisse accéder aux autres interfaces.

Interface utilisateur :

Outil de mise en place un Réseau Privé Virtuel

Page34

Après avoir s’identifier, l’utilisateur accède directement à son propre interface qui lui permet de consulter son répertoire (colonne répertoire distant) et les fichiers locaux qui sont sur le disque local (colonne fichiers locaux).

Le bouton « envoi » permet d’envoyer les fichiers choisis pour un autre utilisateur distant à l’aide d’un serveur.

Le bouton « supprimer » permet de supprimer des fichiers.

Le bouton « quitter » pour sortir de l’application. L’interface serveur :

Outil de mise en place un Réseau Privé Virtuel

Page35

L’interface serveur permet d’afficher tous les actions créer par le serveur et les utilisateurs (démarrage du serveur, réception des messages , affichage des fichiers partagées qui sont transférés via le Protocol VPN qui permet de chiffrer les données avant les retransformés , la déconnexion ….)

Outil de mise en place un Réseau Privé Virtuel

Page36

La réalisation d’un projet est une phase nécessaire pour qu’une formation universitaire soit

complète.

La réalisation de ce projet nous a énormément aidés à développer notre créativité et notre

imagination, et à acquérir l’esprit du travail en groupe. Elle nous a aussi permis de découvrir la

puissance du langage JAVA et la richesse de ces librairies, et l’importance de la sécurisation réseau.

Vous avez donc pu voir qu’il est assez facile de réaliser un réseau privé virtuel. Cependant les

solutions proposée dans notre projet ce sont les plus important mais il reste d’autre solution on n’a

pas traité dans notre projet.

Ce projet a été pour nous une vraie occasion pour mettre en pratique la formation théorique

que nous avons reçue à la Faculté des sciences Ibn Tofail kénitra, qui s’est révélée adaptée aux

compétences souhaitées.

Et pour clore ce modeste travail, nous tenons à renouveler nos sincères reconnaissances, à

toutes personnes ayants participées des prés ou de loin à la bonne réalisation de ce projet.