outil de mise en place un réseau privé...
TRANSCRIPT
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
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
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
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
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.