SlideShare une entreprise Scribd logo
[Date]
ing Manuel Cédric EBODE MBALLA 1
LE VPN CAS
PRATIQUE SUR
WINDOWS ET SUR
LES
DISTRIBUTIONS
LINUX
(OPEN VPN)
Par ingénieur Manuel cédric EBODE MBALLA
[Date]
ing Manuel Cédric EBODE MBALLA 2
INTRODUCTION
A l heure ou le monde deviens un de plus en plus un village planet terre ou la sécuritée la
rapiditée la fiabilitée des echanges et des connexions et cela a des couts assez bas le monde de
l informatique et des télécommunications se trouve ainsi un outil nécéssaire a la réalisation
des divers projet de se fait une technollogie regroupant tous ses avantages a fait son
apparution le VPN ( virtual privat network ) en francais RPV ( réseau privé virtuel )
VPN est un acronyme utilisé pour désigner le tunnel chiffré entre deux équipements à travers
un réseau non sécurisé, typiquement Internet.
Le VPN va regrouper les deux réseaux locaux derrière les équipements VPN et ainsi créer un
unique réseau privé.
Le mot "VPN" peut être utilisé à la fois pour sécuriser des liaisons site à site ou client à
serveur
Pou être considéré comme sécurisé, un VPN doit respecter les concepts de sécurité
suivants: Confidentialité: Les données ne peuvent pas être vues dans un format lisible.
Algorithmes typiques de chiffrement symétrique: DES, 3DES, AES, Blowfish Intégrité:
Les données ne peuvent pas être modifiées.Algorithmes typiques de hachage: sha1, md5
Authentification:Les passerelles VPN s'assurent de l'identité de l'autre.Algorithmes typiques:
RSA, DH c est donc cette technologie qui fera l’objet de mon projet de fin d’année
implémenté grace a OPENVPN une solution open source proposant une prise en main pas très
contraignante perméttant de réaliser un tel réseaux sous différente plate forme ou système d
exploitation linux , windows... dans la suite de se rapport je vais dans un premier temps faire
une présentation grossomodo du VPN puis suivra une présentation d OPENVPN et la création
d un vpn grace a cette aplication. Avent de conclure je ferais une petite étude comparative
entre le vpn et les méthodes traditionelles de connexion et d autre moyen de connexion car
cella a une importance dans le choix de la technologie a utuliser selon les besoins
[Date]
ing Manuel Cédric EBODE MBALLA 3
A : PRESENTATION DU VPN
1 : Définition
Qu’est ce qu’un VPN?
Network :Un VPN permet d’interconnecter des sites distants => Réseau
Private :Un VPN est réservé à un groupe d’usagers déterminés par authentification.Les
données sont échangés de manière masquée au yeux des autres par cryptage => Privé
Virtual :Un VPN repose essentiellement sur des lignes partagés et non dédiées Il n’est pas
réellement déterminé.Il est construit par dessus un réseau public essentiellement.
Il s’agit donc d’un réseau privé sécurisé construit par dessus un réseau public (Internet).
Le schéma ci-dessous fournit le statut de l'état d'un paquet lorsqu'il passe sur le LAN et le
VPN.
2 : Principes et sécurité du vpn
Principes
- Echange d’informations entre réseaux local
- Accès distant aux réseaux locaux
- Informations internes qui circulent
- Informations stratégiques
[Date]
ing Manuel Cédric EBODE MBALLA 4
Tout cela a travers un réseau publique mondial et non sécurisé qui est internet dès lors on se
pose la question de la sécurité d’un tel réseau
Sécurité
Ici il s’agit d’établir un tunnel sécurisé site à site ou site à client via un réseau de transit avec
des méthodes bien définies comme :
- Tunneling
- Authentification
- Chiffrement
- Contrôle de l’intégrité des données
B OPENVPN
1: Présentation
Créé en 2002, Open est un outil open source utilisé pour construire des VPN site à site avec le
protocole SSL/TLS ou avec des clefs partagées. Son rôle est de "tunneliser", de manière
sécurisée, des données sur un seul port TCP/UDP à travers un réseau non sûr comme Internet
et ainsi établir des VPN.
- FACILITÉ
La grande force d'OpenVPN est d'être extrêmement facile à installer et à configurer, ce qui est
rarement le cas pour des outils utilisés pour créer des
VPN -
PORTABILITÉ
OpenVPN peut être installé sur presque toutes les plateformes comme Linux, Microsoft
Windows 2000/XP/Vista, OpenBSD, FreeBSD, NetBSD, Mac OS X et Solaris.
Les systèmes Linux doivent avoir un noyau 2.4 ou supérieur. Le principe de configuration
reste le même quel que soit la plate-forme utilisée
- ARCHITECTURE CLIENT/SERVER
OpenVPN est basé sur une architecture client/serveur. Il doit être installé aux deux extrémités
du VPN, une est désignée comme serveur, l'autre comme client.
- TUNNELLING
OpenVPN crée un tunnel TCP ou UDP et ensuite chiffre les données à l'intérieur de celui-
ci.Le port par défaut utilisé par OpenVPN est le port UDP 1194, basé sur un assignement
officiel de port par l'IANA. Vous pouvez toutefois utiliser n'importe quel autre port et, depuis
[Date]
ing Manuel Cédric EBODE MBALLA 5
la version 2.0, un port unique peut être utilisé pour plusieurs tunnels sur le serveur OpenVPN.
2 : Installation et paramètres D'openvpn
 Sur UBUNTU / DEBIAN
- Pour voir la version d'OpenVPN disponible:
#apt-cache policy openvpn
openvpn:
Installed: (none)
Candidate: 2.0.9-8
Version table:
2.0.9-8 0
500 http://ch.archive.ubuntu.com gutsy/universe Packages
-Pour télécharger et installer OpenVPN:
#apt-get install openvpn
- Pour voir les dépendances d'OpenVPN:
#apt-cache depends openvpn
openvpn
|Depends: debconf
Depends:
cdebconf
debconf
Depends: libc6
Depends: liblzo2-2
Depends: libssl0.9.8
Suggests: openssl
Suggests: resolvconf
 Sur WINDOWS
Bien sûr, il est toujours mieux d'installer OpenVPN sur un système open source
comme Linux mais, dans certaines circonstances, il se peut qu'il soit nécessaire de
l'installer sur du Microsoft Windows ...
L'installation est extrêmement facile, téléchargez le fichier .exe, exécutez-le et cliquez
sur les boutons "next" (ou "suivant") avec le paramétrage par défaut.
Il n'y a pas de pré requis pour installer OpenVPN sur du Windows
[Date]
ing Manuel Cédric EBODE MBALLA 6
- Architecture Client/Server
Parmi les deux boitiers OpenVPN, il est nécessaire d'en déclarer un en tant que
serveur et l'autre en tant que client. Dans certains scenarios, chaque boitier peut être
déclaré comme serveur ou client, mais dans d'autres, il est obligatoire de choisir
spécifiquement un boitier comme serveur et l'autre comme client, nous verrons
quand.
Avant d'établir le VPN SSL, le client essaie d'abord de joindre le serveur sur un port
spécifique, le serveur n'ayant pas besoin d'atteindre le client. Prenons un exemple où
vous êtes dans un environnement professionnel et voulez établir un VPN avec un
équipement directement connecté à Internet, disons un équipement à votre domicile.
Dans ce cas usuel, le client peut atteindre le serveur mais pas le contraire, Ceci est
due au fait que le client est situé dans un réseau local et se connecte à Internet via un
proxy et un Pare-feu qui vont changer son adresse IP source par leur propre adresse IP
ou un autre membre d'un pool.
Bien-sûr, quand le tunnel est créé, le trafic en son intérieur est bidirectionnel.
-Fichier De Configuration
Créez un fichier où vous stockez votre configuration d'OpenVPN.
Dans notre exemple, nous allons appeler ce fichier config.txt and le sauver dans le
dossier /home/user/ ou "C:Program FilesOpenVPNconfig" selon s'il s'agit
d'une machine Linux/Unix ou Microsoft.
Les paramètres de configuration sont présentés dans les paragraphes suivants.
[Date]
ing Manuel Cédric EBODE MBALLA 7
DESIGNATION CLIENT/SERVEUR :
SERVEUR CLIENT
# ADRESSE IP DU SERVEUR
# L'adresse IP WAN du client n'est
pas
# requise
# ADRESSE IP DU SERVEUR
remote 100.0.0.1
#
- mode de tunnel
Vous pouvez choisir entre un tunnel IP (pilote TUN) ou Ethernet (pilote TAP).
Le tunneling IP est également appelé mode de routage tandis que le tunneling Ethernet est
aussi appelé mode pont (bridging).
Préférez le mode tunnel IP (par défaut) à moins que vous n'ayez besoin de faire passer du
trafic ethernet comme du NetBios dans le tunnel.
-port du tunnel
Le port source et destination de tunneling est par défaut le port UDP 1194. Il est possible qu'il
soit nécessaire de le changer pour des raisons d'ouverture de port sur le pare-feu autrement
vous pouvez le garder telle quelle.
Preferez les ports UDP. L'utilisation de TCP peut mener à la dégradation des performances.
Comme la majorité des applications utilisent TCP, si un mode de tunnel TCP est également
choisi, vous allez créer un tunnel TCP sur TCP (TCP over TCP). Ce mode de tunnel n'est pas
recommandé parce qu'en cas de retransmissions de paquets à l'intérieur du tunnel, des
recalcules vont intervenir dans les deux tunnels, ce qui va mener à de
basses performancescomme un temps de réponse élevé. Préférez le protocole UDP pour
tunneliser vos applications parce que UDP ne fournit pas de mecanisme de vérification
d'erreur comme le fait TCP.
[Date]
ing Manuel Cédric EBODE MBALLA 8
SERVEUR ET CLIENT
# TUNNEL TCP OU UDP
# TCP tunnel
proto tcp
# Tunnel UDP est recommandé
proto udp
# Utilisez UDP ou TCP mais pas les
deux
#
# PORT TCP OU UDP
port 1194
-paramétrages du firewall:
Vous devez vérifier que l'adresse IP de votre client OpenVPN peut atteindre l'adresse IP de
votre serveur ainsi que le port TCP/UDP.
Voici un exemple d'une règle de sécurité qui peut être implémenté sur le pare-feu du schéma
ci-dessous.
Grâce à la simplicité des configurations d'OpenVPN, les problèmes pour établir une
connexion proviennent très souvent de restrictions d'adresses IP ou de ports sur le chemin
entre le client et le serveur.
-tunnel ethernet/ip
Vous pouvez choisir de construire soit des VPN Ethernet, soit des VPN IP avec l'aide
respectivement des pilotes TAP et TUN. TAP/TUN sont disponibles sur toutes les plates-
formes et sont déjà présent avec les Linux noyau 2.4 et supérieur.
Préférez TUN (par défaut) à moins que vous avez besoin de faire passer du trafic Ethernet
comme du NetBios à l'intérieur du tunnel.
Pour vérifier que les pilotes TUN/TAP sont chargés:
#lsmod | grep tun
[Date]
ing Manuel Cédric EBODE MBALLA 9
tun 12672 1
Notons que le pilote "tun" est aussi le pilote TAP.
Si vous n'avez aucune réponse, vous pouvez le moduler du noyau de la façon suivante:
#modprobe tun
SERVEUR et CLIENT
# TUNNEL ETHERNET OU IP
# "dev tun" will create a routed IP
tunnel
dev tun
# "dev tap" will create an Ethernet IP
tunnel
dev tap
# use "dev tun" or "dev tap" but not
both
Transparent tunnel:
OpenVPN tunnelise juste les données sans authentification, confidentialité ou intégrité. En
d'autres termes, il n'y a aucune vérification de sécurité et les données peuvent être vues quand
elles transitent dans le tunnel. OpenVPN - Mode transparent
Tunnel transparent:
Il semble évident que le mode transparent d'OpenVPN ne devrait être utilisé seulement pour
des tests à l'intérieur d'un réseau sécurisé.
[Date]
ing Manuel Cédric EBODE MBALLA 10
SERVEUR et CLIENT
# Client AND Server configs
# Pas d'intégrité (algorithme
# de hachage)
auth none
# Pas de chiffrement (algorithme de
chiffrement)
cipher none
Clefs partagées:
Une combinaison secrète et permanente est partagées entre les deux passerelles VPN.
SERVEUR et CLIENT
# CLEFS PARTAGEES
# Système LINUX
static /home/user/openvpn/key.txt
# Système Windows
static "C:Program
FilesOpenVPNconfigkey.txt"
#openvpn /home/teddybear/openvpn/config.txt
>openvpn "C:Program FilesOpenVPNconfigconfig.txt"
SSL/TLS:
Client ou serveur SSL/TLS:
SERVEUR CLIENT
# SERVEUR SSL/TLS
tls-server
# CLIENT SSL/TLS
tls-client
Certificats et clefs publiques:
Chaque équipement doit avoir ses propres clefs privée et publique. La clef publique étant
[Date]
ing Manuel Cédric EBODE MBALLA 11
incluse dans un certificat.
Le certificat de l'autorité de certification (CA) doit aussi être détenu par chaque équipement
OpenVPN.
SERVEUR CLIENT
# CERTIFICATS ET CLEF
PRIVEE
# Certificat de l'autorité (clef
publique du CA)
ca ca.key
# Certificat du server (clef publique
du serveur)
cert server.crt
# Clef privée du serveur
key server.key
# CERTIFICATS AND CLEF
PRIVEE
# Certificat de l'autorité (clef
publique du CA)
ca ca.key
# Certificat du client (clef publique
du serveur)
cert client.crt
# Clef privée du client
key client.key
Paramètres Diffie-Hellmann (DH):
Une fois que les boitiers OpenVPN sont surs de l'identité de l'autre (authenticité), DH peut
être utilisé pour créer une clef secrète partagée pour les algorithmes de fonction de hachage
(intégrité) et de chiffrement (confidentialité).
En combinant une clef DH privée avec la clef DH public de l'autre boitier OpenVPN, il est
possible de calculer une clef partagée secrète que seules les
deux machines OpenVPN connaissent.
Cette clef DH partagée peut être comparée à la clef partagée OpenVPN.
Ces clefs partagées seront utilisées par les algorithmes de chiffrement symétrique et fonctions
de hachage comme montré dans les deux prochains paragraphes.
Algorithme de chiffrement
SERVEUR CLIENT
# Paramètres Diffie-Hellman
dh dh1024.pem
# Aucun paramètre DH sur le client
#
[Date]
ing Manuel Cédric EBODE MBALLA 12
SERVEUR et CLIENT
# ALGORITHME DE
CHIFFREMENT
cipher AES-256-CBC
- La confidentialité est assurée par des algorithmes de chiffrement comme 3DES ou AES pour
empêcher la lecture des données.
L'algorithme OpenVPN par défaut est le Blowfish (signifiant poisson-lune en français).
Pour vérifier les algorithmes disponibles:
#openvpn --show-ciphers
lgorithme De Hachage
- L'intégrité utilise des fonctions de hachage pour protéger l'altération des données.
HMAC est souvent utilisé en addition de SHA1 et MD5.
Les fonctions de hachage par défaut de OpenVPN sont HMAC-SHA1.
Pour vérifier les algorithmes disponibles:
#openvpn --show-digests
SERVEUR et CLIENT
# ALGORITHME DE HACHAGE
auth MD5
NB "openvpn --show-tls" affiche le chiffrement et le code d'authentification du message
(MAC) utilisé durant la négociation SSL/TLS. Ils ne doivent pas être confondus avec le
chiffrement et le MAC utilisé pour sécuriser le tunnel.
-Adresses ip
Choisissez les adresses IP que vous voulez utiliser à l'intérieur du tunnel.
Adresses IP statiques:
En mode routé, deux adresses IP (locale et distante) à l'intérieur d'un masque de sous-réseau
de 30 bits doivent être choisi.
[Date]
ing Manuel Cédric EBODE MBALLA 13
En mode pont (bridged), une adresse pour le boitier local OpenVPN et un masque de sous-
réseau incluant l'adresse IP du serveur sont choisis.
SERVEUR CLIENT
# ADDRESSAGE IP
# Exemple mode IP:
# Serveur IP: 10.8.0.1 ; Client IP:
10.8.0.2
ifconfig 10.8.0.1 10.8.0.2
# Exemple mode pont
# Serveur IP: 10.8.0.1
ifconfig 10.8.0.1 255.255.255.0
# Utilisez le mode IP ou bridge
mais
# pas les deux
# Le client et le serveur doivent
utiliser
# le même mode de tunnel
# ADDRESSAGE IP
# IP Tunnel
# Serveur IP: 10.8.0.1 ; Client IP:
10.8.0.2
ifconfig 10.8.0.2 10.8.0.1
# Exemple mode pont
# Client IP: 10.8.0.2
ifconfig 10.8.0.2 255.255.255.0
# # Utilisez le mode IP ou bridge
mais
# pas les deux
# Le client et le serveur doivent
utiliser
# le même mode de tunnel
Adresses IP dynamiques:
Dans ce cas, le serveur possède une adresse IP statique et fournir des adresses IP aux clients
comme un serveur DHCP.
SERVEUR CLIENT
# PARAMETRES DHCP
# Etendue DHCP
# Le serveur s'attribue la
première
# adresse de l'étendue
server 10.8.0.0 255.255.255.0
# LE CLIENT ACCEPTE LES
OPTIONS
# DU SERVEUR
# Le client devrait accepter les
options
# poussées par le serveur
pull
-Paramètres Optionnels
OpenVPN offre un très large nombre de paramètres.
parametres de journalisation
La verbosité du journal (log) est configuré de 0 (minimal) à 15 (complet). Dans une
[Date]
ing Manuel Cédric EBODE MBALLA 14
utilisation normale, les niveaux verbeux "2" et "4" vont déjà fournir assez de journaux.
# Niveau de verbosité.
# 0 -- Erreurs fatales seulement.
# 1 -- Très silencieux mais affiche des erreurs non-fatales.
# 3 -- Sortie moyenne, idéal pour des opérations moyennes.
# 9 -- verbeux, bon pour un dépannage.
SERVEUR and CLIENT
# VERBOSITE DU JOURNAL
# Paramétrage de la verbosité du journal,
0=min 15=max
verb 3
C : Utilisateur Openvpn
Pour des raisons de sécurité, c'est toujours mieux de faire tourner un logiciel sans les
privilèges root.
Vous pouvez réduire les privilèges du démon OpenVPN après initialisation pour opérer en
tant qu'utilisateur "nobody".
Une autre chose intéressante pour la sécurité est de limiter le droit pour OpenVPN à accéder à
des fichiers après initialisation avec "chroot".
Ces deux paramètres de sécurité sont disponibles sous des systèmes comme Linux ou Unix
mais pas sous Microsoft Windows. Une autre raison de préférer des outils open source comme
les systèmes opérationels Linux ...
SERVEUR and CLIENT
# SECURITE OPENVPN - Linux
seulement
# Utilisateur OpenVPN
user nobody
# Après initialisation, OpenVPN peut
# seulement accéder à un dossier
# Le dossier peut être vide
# Limitation du processus OpenVPN
chroot /etc/openvpn/
[Date]
ing Manuel Cédric EBODE MBALLA 15
D : Lancement D'openvpn
Utilisez la syntaxe suivante pour lancer OpenVPN.
#openvpn chemin-du-fichier-de-configuration
Ci-dessous deux exemples avec Linux et Windows. Le fichier de config est "config.txt": v
#openvpn /home/teddybear/openvpn/config.txt
>openvpn "C:Program FilesOpenVPNconfigconfig.txt"
VERIFICATION DES JOURNAUX:
Le journal devrait se terminer avec la ligne suivante:
Initialization Sequence Completed
Ceci indique que le tunnel OpenVPN a été créé avec succès.
TESTS DE CONNECTIVITES : Ping est un utilitaire commun pour vérifier les connectivités
IP.
Les passerelles VPN devraient pinger l'adresse IP tunnel de l'autre.
Par exemple, dans notre scenario, nous pingons l'adresse IP tunnel du client depuis le serveur:
ping 10.8.0.2
Here are some OpenVPN default values:
PARAMETRE: VALEUR:
port source et dest: UDP 1194
Mode de tunnel: Tunnel IP (mode tun)
Chiffrement symétrique: Blowfish - CBC (128 bits)
Fonctions de hachage: HMAC - SHA1 (160 bits)
Compression: NON
MTU du tunnel: 1500 bytes
mode verbeux: 0
[Date]
ing Manuel Cédric EBODE MBALLA 16
E : Modes de sécurité
Lors de l'utilisation de clefs statiques, les deux passerelles VPN partagent la même clef pour
chiffrer et déchiffrer les données. Dans ce cas, les configurations seront très simples mais le
problème peut venir du fait qu'il est parfois nécessaire de transmettre la clef (à travers un
canal sécurisé bien sûr) à quelqu'un dont vous n’avez pas confiance à l'autre bout du tunnel.
L'infrastructure à clef publique (PKI pour Public Key Infrastructure en anglais) est utilisée
pour résoudre ce problème. Elle est basée sur le fait que chaque partie possède deux clefs, une
clef publique connue de tout le monde et une clef privée tenue secrète. Ce processus est utilisé
par OpenSSL, la version gratuite et open source intégrée à OpenVPN, pour authentifier les
machines VPN avant le chiffrement des données.
les avantages des deux modes:
Mode OpenVPN:
Clefs
partagées
SSL
Mode de
cryptographie:
Symétrique Asymétrique/Symétrique
Implémentation: Plus facile Plus compliquée
Vitesse: Plus rapide Plus lente
Consommation
CPU:
Plus petite Plus grande
Echange des clefs: OUI NON
Renouvellement des
clefs:
NON OUI
Authentification des
passerelles:
NON OUI
Dans la suite, nous allons focaliser nos explications sur OpenVPN en mode SSL
(cryptographie asymétrique) qui est recommandé par rapport au mode en clefs partagées
(cryptographie symétrique).
BRIDGING/ROUTING
Vous pouvez choisir de construire soit un VPN Ethernet (mode Bridge ou Pont en anglais) ou
soit un VPN IP (mode Routage) avec l'aide de respectivement, les pilotes réseaux TAP ou
[Date]
ing Manuel Cédric EBODE MBALLA 17
TUN. TAP/TUN sont disponibles sur toutes les plates-formes et sont déjà incorporé dans les
noyaux Linux 2.4 ou supérieurs.
OPTIONS
Les options d'OpenVPN sont particulièrement importantes. Par exemple le serveur, peut
fournir des routes réseaux au client ou peut être utilisé comme serveur DHCP.
les concepts clefs du réseau et de la sécurité pour mieux comprendre l'outilOpenVPN.
SSL
Pendant plusieurs années, IPSec a été le seul protocole de sécurité disponible pour sécuriser
les VPN site à site ou client à serveur. Par chance, cela a maintenant changé avec la sortie du
protocole SSL. Disponible au début pour sécuriser seulement des protocoles comme HTTP,
SSL est maintenant capable de sécuriser n'importe quelle application et de chiffrer des tunnels
TCP ou UDP pour créer des VPNs site à site ou client à serveur.
Dans ce tutorial, nous allons focaliser notre travail sur des VPN SSL site à site avec l'aide d'un
excellent outil, OpenVPN ...
DESCRIPTION SSL:
SSL (pour Secure Sockets Layers, couche de sockets sécurisée en français) a été créé par
Netscape dans les années 1990. Deux versions SSL sont sorties: v2 (1994) et v3 (1995). Le
brevet a été ensuite racheté et mis à jour par l'IETF en 2001. Par la même occasion, il a été
renommé en TLS qui signifie Transport Layer Security (RFC 2246).
Le mot SSL est communément utilisé pour désigner à la fois les protocoles SSL et TLS. La
dernière version de TLS est la version 1.1.
BUT DE SSL:
Les deux buts principaux de SSL sont les suivants:
- Authentifier le serveur et le client en utilisant la PKI (Public Key Infrastructure).
- Fournir une connexion chiffrée pour le client et le serveur pour échanger des messages.
OpenVPN ET LE MODÈLE OSI:
Où pourrions-nous placer le protocole SSL dans le modèle OSI?
Le modèle standard OSI est composé de sept couches tandis qu'un modèle à quatre couches
correspond mieux à l'architecture TCP/IP utilisée par une large majorité d'applications.
SSL est situé entre la couche application et transport et va chiffrer la couche application.
[Date]
ing Manuel Cédric EBODE MBALLA 18
TYPE DE VPN SSL:
Dans le passé, SSL était un protocole utilisé avec des applications spécifiques comme HTTP.
Heureusement, depuis quelques années, il est maintenant capable de sécuriser les transactions
de n'importe quelles applications à travers Internet et de créer des tunnels sécurisés (VPN)
comme peut le faire IPSec.
Il existe deux types de VPN:
- VPN client à serveur (ou accès distant) où le client a besoin d'un navigateur Internet comme
Firefox.
- VPN site à site où un logiciel spécifique est requis comme OpenVPN
OPENSSL:
OpenVPN utilise une version gratuite et open source de SSL appelée OpenSSL pour les
tâches de chiffrement et d'authentification. OpenSSL est une boite à outils composée de:
- La librairie SSL.
- La librairie de cryptographie.
- L'outil de ligne de commande.
La librairie de cryptographie implémente une large étendue d'algorithmes de cryptographie
comme par exemple:
- Algorithmes symétriques: Blowfish, DES, 3DES, AES, etc...
- Certificats: x509
- fonctions de hachage: HMAC, MD5
OpenVPN - Clefs statiques partagées
Le mode OpenVPN clefs partagées est plus facile à implémenter que le mode SSL/TSL but a
le désavantage de:
- Nécessiter le transport de la clef sur les deux équipements.
[Date]
ing Manuel Cédric EBODE MBALLA 19
- Ne pas bénéficier du renouvellement de la clef partagée.
- Ne pas bénéficier d'authentification des passerelles. Vous pouvez créer un clef partagée très
facilement avec OpenVPN sur n'importe quelle plate-forme. Une fois que vous avez créé une
clef partagée, vous devez la copier sur l'autre boitier OpenVPN.
Vous devriez la transmettre seulement par l'intermédiaire d'un protocole sécurisé comme SSH
ou physiquement avec une disquette ou une clef USB.
Pour créer une clef, procéder comme ceci:
sur Linux:
##openvpn --genkey --secret /home/user/key.txt
Sur Windows:
Ouvrons le fichier de la clef que nous vous de créer:
[Date]
ing Manuel Cédric EBODE MBALLA 20
La clef OpenVPN est composée de caractères hexadécimaux et divisée en quatre parties.
La première partie est utilisée en tant que clef pour chiffrer les données, la seconde pour la
clef de l'algorithme de hachage. Par défaut, la clef pour chiffrer et déchiffrer les données sont
similaires, le principe étant le même pour l'agorythme de hachage.
La troisième et quatrième partie de la clef OpenVPN est utilisée dans le cas où vous voulez
des clefs de chiffrement (1ère partie) et déchiffrement (3ème partie) différentes ainsi que des
clefs de hachage pour le trafic sortant (2ème partie) et rentrant (4ème partie) également
différentes.
Ne pas confondre la clef OpenVPN qui est composée de 512 caractères hexadécimaux et les
clefs utilisées par les algorithmes de chiffrement et de hachage pour sécuriser le
tunnelOpenVPN qui sont composées de caractères hexadécimaux à l'intérieur de la
clef openVPN.
Par défaut, l'algorithme de chiffrement Blowfish (poisson-lune) est utilisé avec une clef de
128 bits (chiffrement et déchiffrement), 160 bits étant utilisé pour l'algorithme de hachage
(trafic sortant et rentrant).
Chaque caractère hexadécimal représente 4 bits de la clef, ceci signifie que 128 ou 160 bits
vont représenter respectivement (128/4) 32 et (160/4) 40 caractères hexadécimaux.
Dans notre exemple (paramétrage par défaut), les caractères hexadécimaux utilisés pour la
clef sont affichés dans les carrés rouges ci-dessus.
Les caractères qui ne sont pas utilisés pour les clefs peuvent être différents sur les deux
fichiers de clef OpenVPN.
[Date]
ing Manuel Cédric EBODE MBALLA 21
CAS PRATIQUES
A : Ethernet IP
Dans ce scénario, nous allons créer un tunnel OpenVPN dans le mode pont ou Ethernet avec
un paramètrage minimum.
Une machine Microsoft Windows est utilisée en tant que client OpenVPN, un système linux
en tant que serveur OpenVPN.
1. PAS DE SECURITÉ
BOITIÉ VPN WINDOWS - CLIENT OPENVPN:
fichier de configuration:
La configuration ci-dessous est stockée dans le fichier "C:Program
FilesOpenVPNconfigclient.txt".
# OpenVPN server
remote 100.0.0.2
# Tunnel mode
dev tap
# IP addresses
ifconfig 10.8.0.2 10.8.0.1
# Cipher mode
cipher none
# Authentification mode
auth none
# Log verbosity
verb 2
[Date]
ing Manuel Cédric EBODE MBALLA 22
Lancement d'OpenVPN
C:Program FilesOpenVPNconfig>openvpn client.txt
Sortie du journal:
1
2
5/6
7
8
9
10
11
12
OpenVPN 2.0.9 Win32-MinGW [SSL] [LZO] built on Oct 1 2006
IMPORTANT: OpenVPN's default port number is now 1194, based on an official
port number assignment by IANA. OpenVPN 2.0-beta16 and earlier used 5000 as the
default port.
******* WARNING *******: all encryption and authentication features disabled -- all
data
will be tunnelled as cleartext
TAP-WIN32 device [Connexion au réseau local 3] opened: .Global{928ACEB1-
D160-420A-ADD6-A72E816FC022}.tap
TAP-Win32 MTU=1500
Notified TAP-Win32 driver to set a DHCP IP/netmask of 10.8.0.2/255.255.255.0 on
interface {928ACEB1-D160-420A-ADD6-A72E816FC022} [DHCP-serv: 10.8.0.1,
lease-time:31536000]
Successful ARP Flush on interface [3] {928ACEB1-D160-420A-ADD6-
A72E816FC022}
Data Channel MTU parms [ L:1500 D:1450 EF:0 EB:4 ET:0 EL:0 ]
Local Options hash (VER=V4): '00f97e1a'
Expected Remote Options hash (VER=V4): '7cef60b0'
UDPv4 link local (bound): [undef]:1194
UDPv4 link remote: 100.0.0.2:1194
Peer Connection Initiated with 100.0.0.2:1194
Initialization Sequence Completed
Légende:
1.
2.
3.
4.
Version OpenVPN
Mode de security
Algorythme de chiffrement
Algorythme de hachage
5.
6.
7.
8.
Pilotes TUN/TAP
MTU du Tunnel
IP locale du Tunnel
IP distante du tunnel
9.
10.
11.
12
Port TCP ou UDP
IP du serveur OpenVPN
Equipement OpenVPN distant
Status OpenVPN
BOITIÉ VPN LINUX - SERVEUR OPENVPN:
La configuration ci-dessous est stockée dans le fichier "/etc/openvpn/server.txt".
[Date]
ing Manuel Cédric EBODE MBALLA 23
# Mode tunnel
dev tap
# Adresses IP
ifconfig 10.8.0.1 10.8.0.2
# Mode de chiffrement
cipher none
# Mode d'authentification
auth none
# Verbosité du journal
verb 2
Lancement d'OpenVPN
/etc/openvpn#openvpn server.txt
Lisez des informations sur l'utilisation des scripts de démarrage OpenVPN.
Sortie du journal:
1
5
7/8
6
9
10
12
OpenVPN 2.0.9 i486-pc-linux-gnu [SSL] [LZO] [EPOLL] built on May 21 2007
IMPORTANT: OpenVPN's default port number is now 1194, based on an official
port number
assignment by IANA. OpenVPN 2.0-beta16 and earlier used 5000 as the default port.
******* WARNING *******: all encryption and authentication features disabled -- all
data
will be tunnelled as cleartext
TUN/TAP device tap0 opened
ifconfig tap0 10.8.0.1 netmask 255.255.255.0 mtu 1500 broadcast 10.8.0.255
Data Channel MTU parms [ L:1500 D:1450 EF:0 EB:4 ET:0 EL:0 ]
Local Options hash (VER=V4): '7cef60b0'
Expected Remote Options hash (VER=V4): '00f97e1a'
UDPv4 link local (bound): [undef]:1194
UDPv4 link remote: [undef]
Peer Connection Initiated with 50.0.0.2:1194
Initialization Sequence Completed
Poursuivez avec les statistiques réseaux
2. CLEFS PARTAGÉES
BOITIÉ VPN WINDOWS - CLIENT OPENVPN:
[Date]
ing Manuel Cédric EBODE MBALLA 24
Fichier de configuration:
La configuration ci-dessous est stockée dans le fichier "C:Program
FilesOpenVPNconfigclient.txt".
# Serveur OpenVPN
remote 100.0.0.2
# Mode tunnel
dev tap
# Adresses IP
ifconfig 10.8.0.2 10.8.0.1
# Clef partagée
secret "C:Program FilesOpenVPNconfigkey.txt"
# Verbosité du journal
verb 2
Lancement d'OpenVPN
C:Program FilesOpenVPNconfig>openvpn client.txt
Log output:
1
2/3
4
5
6
7
8
9
10
OpenVPN 2.0.9 Win32-MinGW [SSL] [LZO] built on Oct 1 2006
IMPORTANT: OpenVPN's default port number is now 1194, based on an official port
num.
assignment by IANA. OpenVPN 2.0-beta16 and earlier used 5000 as the default port.
Static Encrypt: Cipher 'BF-CBC' initialized with 128 bit key
Static Encrypt: Using 160 bit message hash 'SHA1' for HMAC authentication
Static Decrypt: Cipher 'BF-CBC' initialized with 128 bit key
Static Decrypt: Using 160 bit message hash 'SHA1' for HMAC authentication
TAP-WIN32 device [Local Area Connection 5] opened:
.Global{E2D87AAD-28F7-432E-8A00-5E67BE6DD464}.tap
TAP-Win32 MTU=1500
Notified TAP-Win32 driver to set a DHCP IP/netmask of 10.8.0.2/255.255.255.0 on
interface {E2D87AAD-28F7-432E-8A00-5E67BE6DD464} [DHCP-serv: 10.8.0.1,
lease-time: 31536000]
Successful ARP Flush on interface [4] {E2D87AAD-28F7-432E-8A00-
5E67BE6DD464}
Data Channel MTU parms [ L:1544 D:1450 EF:44 EB:4 ET:0 EL:0 ]
Local Options hash (VER=V4): 'd3880969'
Expected Remote Options hash (VER=V4): 'c41bf3b8'
UDPv4 link local (bound): [undef]:1194
[Date]
ing Manuel Cédric EBODE MBALLA 25
12 UDPv4 link remote: 100.0.0.2:1194
Peer Connection Initiated with 100.0.0.2:1194
Initialization Sequence Completed
Légende:
1.
2.
3.
4.
Version OpenVPN
Mode de security
Algorythme de chiffrement
Algorythme de hachage
5.
6.
7.
8.
Pilotes TUN/TAP
MTU du Tunnel
IP locale du Tunnel
IP distante du tunnel
9.
10.
11.
12
Port TCP ou UDP
IP du serveur OpenVPN
Equipement OpenVPN distant
Status OpenVPN
BOITIÉ VPN LINUX - SERVEUR OPENVPN:
La configuration ci-dessous est stockée dans le fichier "/etc/openvpn/server.txt".
# Mode tunnel
dev tap
# Adresses IP
ifconfig 10.8.0.1 10.8.0.2
# Clef partagée
secret /home/user/key.txt
# Verbosité du journal
verb 2
Lancement d'OpenVPN
/etc/openvpn#openvpn server.txt
Lisez des informations sur l'utilisation des scripts de démarrage OpenVPN.
Sortie du journal :
1
2/3
4
5
OpenVPN 2.0.9 i486-pc-linux-gnu [SSL] [LZO] [EPOLL] built on Mar 2 2007
IMPORTANT: OpenVPN's default port number is now 1194, based on an official port
num.
assignment by IANA. OpenVPN 2.0-beta16 and earlier used 5000 as the default port.
WARNING: file '/home/po/key.txt' is group or others accessible
Static Encrypt: Cipher 'BF-CBC' initialized with 128 bit key
Static Encrypt: Using 160 bit message hash 'SHA1' for HMAC authentication
Static Decrypt: Cipher 'BF-CBC' initialized with 128 bit key
Static Decrypt: Using 160 bit message hash 'SHA1' for HMAC authentication
[Date]
ing Manuel Cédric EBODE MBALLA 26
6/7
8
10
11
12
TUN/TAP device tap0 opened
ifconfig tap0 10.8.0.1 netmask 255.255.255.0 mtu 1500 broadcast 10.8.0.255
Data Channel MTU parms [ L:1544 D:1450 EF:44 EB:4 ET:0 EL:0 ]
Local Options hash (VER=V4): 'c41bf3b8'
Expected Remote Options hash (VER=V4): 'd3880969'
UDPv4 link local (bound): [undef]:1194
UDPv4 link remote: [undef]
Peer Connection Initiated with 50.0.0.2:1194
Initialization Sequence Completed
Poursuivez avec les statistiques réseaux
3. SSL
BOITIÉ VPN WINDOWS - CLIENT OPENVPN :
Fichier de configuration:
La configuration ci-dessous est stockée dans le fichoer "C:Program
FilesOpenVPNconfigclient.txt".
# TLS mode - client
tls-client
# openVPN server
remote 100.0.0.2
# Tunnel mode
dev tap
# IP addresses
ifconfig 10.8.0.2 10.8.0.1
# CA certificate
ca "C:Program FilesOpenVPNeasy-rsakeysca.crt"
# client certificate
cert "C:Program FilesOpenVPNeasy-rsakeysserver.crt"
# client private key
key "C:Program FilesOpenVPNeasy-rsakeysserver.key"
# Log verbosity
verb 2
Lancement d'OpenVPN
C:Program FilesOpenVPNconfig>openvpn client.txt
[Date]
ing Manuel Cédric EBODE MBALLA 27
Sortie du journal:
1
5
6
7
8
9
10
15
14
3
4
2
11
12
OpenVPN 2.0.9 Win32-MinGW [SSL] [LZO] built on Oct 1 2006
IMPORTANT: OpenVPN's default port number is now 1194, based on an official port
number assignment by IANA. OpenVPN 2.0-beta16 and earlier used 5000 as the
default
port.
WARNING: No server certificate verification method has been enabled. See
http://openvpn.net/howto.html#mitm for more info.
Control Channel MTU parms [ L:1541 D:138 EF:38 EB:0 ET:0 EL:0 ]
TAP-WIN32 device [Connexion au réseau local 3] opened: .Global{928ACEB1-
D160-420A-ADD6-A72E816FC022}.tap
TAP-Win32 MTU=1500
Notified TAP-Win32 driver to set a DHCP IP/netmask of 10.8.0.2/255.255.255.0 on
interface {928ACEB1-D160-420A-ADD6-A72E816FC022} [DHCP-serv: 10.8.0.1,
lease-time: 31536000]
Successful ARP Flush on interface [3] {928ACEB1-D160-420A-ADD6-
A72E816FC022}
Data Channel MTU parms [ L:1541 D:1450 EF:41 EB:4 ET:0 EL:0 ]
Local Options hash (VER=V4): '4685920e'
Expected Remote Options hash (VER=V4): '2e130e6f'
UDPv4 link local (bound): [undef]:1194
UDPv4 link remote: 100.0.0.2:1194
TLS Error: local/remote TLS keys are out of sync: 100.0.0.2:1194 [0]
VERIFY OK: depth=1, /C=US/ST=CA/L=SanFrancisco/O=OpenManiak/
CN=OpenManiak_CA/emailAddress=me@myhost.mydomain
VERIFY OK: depth=0, /C=US/ST=CA/L=SanFrancisco/O=OpenManiak/
CN=server/emailAddress=me@myhost.mydomain
Data Channel Encrypt: Cipher 'BF-CBC' initialized with 128 bit key
Data Channel Encrypt: Using 160 bit message hash 'SHA1' for HMAC authentication
Data Channel Decrypt: Cipher 'BF-CBC' initialized with 128 bit key
Data Channel Decrypt: Using 160 bit message hash 'SHA1' for HMAC authentication
Control Channel: TLSv1, cipher TLSv1/SSLv3 DHE-RSA-AES256-SHA, 1024 bit RSA
[server] Peer Connection Initiated with 100.0.0.2:1194
Initialization Sequence Completed
Légende:
1.
2.
3.
Version OpenVPN
Mode de security
Algorythme de chiffrement
5.
6.
7.
Pilotes TUN/TAP
MTU du Tunnel
IP locale du Tunnel
9.
10.
11.
Port TCP ou UDP
IP du serveur OpenVPN
Equipement OpenVPN distant
[Date]
ing Manuel Cédric EBODE MBALLA 28
4.Algorythme de hachage 8.IP distante du tunnel 12 Status OpenVPN
13.
14.
15.
Certificat client
Certificat serveur
Certificat du CA
BOITIÉ VPN LINUX - SERVEUR OPENVPN:
La configuration est stockée dans le fichier "/etc/openvpn/server.txt".
# TLS mode - server
tls-server
# Tunnel mode
dev tap
# IP addresses
ifconfig 10.8.0.1 10.8.0.2
# CA certificate
ca ca.crt
# server certificate
cert client.crt
# server private key
key server.key
# Diffie-Hellman Settings
dh dh1024.pem
# Log verbosity
verb 2
Lancement d'OpenVPN
/etc/openvpn#openvpn server.txt
Lisez des informations sur l'utilisation des scripts de démarrage OpenVPN.
Log output:
1
5
6/7
8
OpenVPN 2.0.9 i486-pc-linux-gnu [SSL] [LZO] [EPOLL] built on May 21 2007
IMPORTANT: OpenVPN's default port number is now 1194, based on an official port
number assignment by IANA. OpenVPN 2.0-beta16 and earlier used 5000 as the
default
port.
Control Channel MTU parms [ L:1541 D:138 EF:38 EB:0 ET:0 EL:0 ]
TUN/TAP device tap0 opened
ifconfig tap0 10.8.0.1 netmask 255.255.255.0 mtu 1500 broadcast 10.8.0.255
[Date]
ing Manuel Cédric EBODE MBALLA 29
9
15
13
3
4
2
11
12
Data Channel MTU parms [ L:1541 D:1450 EF:41 EB:4 ET:0 EL:0 ]
Local Options hash (VER=V4): '2e130e6f'
Expected Remote Options hash (VER=V4): '4685920e'
UDPv4 link local (bound): [undef]:1194
UDPv4 link remote: [undef]
VERIFY OK: depth=1, /C=US/ST=CA/L=SanFrancisco/O=OpenManiak/
CN=OpenManiak_CA/emailAddress=me@myhost.mydomain
VERIFY OK: depth=0, /C=US/ST=CA/L=SanFrancisco/O=OpenManiak/
CN=client/emailAddress=me@myhost.mydomain
Data Channel Encrypt: Cipher 'BF-CBC' initialized with 128 bit key
Data Channel Encrypt: Using 160 bit message hash 'SHA1' for HMAC authentication
Data Channel Decrypt: Cipher 'BF-CBC' initialized with 128 bit key
Data Channel Decrypt: Using 160 bit message hash 'SHA1' for HMAC authentication
Control Channel: TLSv1, cipher TLSv1/SSLv3 DHE-RSA-AES256-SHA, 1024 bit
RSA
[client] Peer Connection Initiated with 50.0.0.2:1194
Initialization Sequence Completed
Poursuivez avec les statistiques réseaux
STATISTIQUES RÉSEAUX : (similaires pour les trois études de cas)
INTERFACES:
Client OpenVPN C:>ipconfig
Windows IP Configuration
Ethernet adapter Local Area Connection:
Connection-specific DNS
Suffix .
:
IP Address. . . . . . . . . . . . . . . : 50.0.0.2
Subnet Mask . . . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . . . : 50.0.0.1
[Date]
ing Manuel Cédric EBODE MBALLA 30
Ethernet adapter Local Area Connection 1:
Connection-specific DNS
Suffix .
IP Address. . . . . . . . . . . . . . . : 10.8.0.2
Subnet Mask . . . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . . . :
Serveur OpenVPN
#ifconfig
eth0 Link encap:Ethernet HWaddr 11:22:33:44:55:66
inet adr:100.0.0.2 Bcast:100.0.0.255 Mask:255.255.255.0
adr inet6: fe80::212:3fff:3344:5566/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX Packets:1641 errors:0 :0 overruns:0 frame:0
TX packets:2130 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:186894 (182.5 KiB) Octets transmis:231430 (226.0 KiB)
Interrupt:16
lo Link encap:Local Loopback
inet adr:127.0.0.1 Mask:255.0.0.0
adr inet6: ::1/128 Scope:Host
[Date]
ing Manuel Cédric EBODE MBALLA 31
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX Packets:929 errors:0 :0 overruns:0 frame:0
TX packets:929 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:128263 (125.2 KiB) TX bytes:128263 (125.2 KiB)
tun 0 Link encap:UNSPEC HWaddr 00:FF:11:22:33:44
inet adr:10.8.0.1 Bcast:10.8.0.255 Mask:255.255.255.0
inet6 addr: fe80::2ff:cfff:1122:3344/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX Packets:89 errors:0 :0 overruns:0 frame:0
TX packets:90 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:5340 (5.2 KiB) TX bytes:5424 (5.2 KiB)
TABLE DE ROUTAGE:
Client OpenVPN C:>route print
==============================================================
Interface List
0x1 MS TCP Loopback interface
0x2
00 08 02 94 c1
eb
Intel(R) PRO/100 VM Network Connection - Packet
Scheduler Miniport
0x3 00 ff e2 d8 7a TAP-Win32 Adapter V8 - Packet Scheduler Miniport
[Date]
ing Manuel Cédric EBODE MBALLA 32
ad
===============================================================
===============================================================
Active Routes:
Network
Destination
Netmask Gateway Interface Metric
0.0.0.0 0.0.0.0 50.0.0.1 50.0.0.2 20
10.8.0.0 255.255.255.0 10.8.0.2 10.8.0.2 30
10.8.0.2 255.255.255.255 127.0.0.1 127.0.0.1 30
10.255.255.255 255.255.255.255 10.8.0.2 10.8.0.2 30
50.0.0.0 255.255.255.0 50.0.0.2 50.0.0.2 20
50.0.0.2 255.255.255.255 127.0.0.1 127.0.0.1 20
50.255.255.255 255.255.255.255 50.0.0.2 50.0.0.2 20
127.0.0.0 255.0.0.0 127.0.0.1 127.0.0.1 1
224.0.0.0 240.0.0.0 10.8.0.2 10.8.0.2 30
224.0.0.0 240.0.0.0 50.0.0.2 50.0.0.2 20
255.255.255.255 255.255.255.255 10.8.0.2 10.8.0.2 1
255.255.255.255 255.255.255.255 10.8.0.2 3 1
255.255.255.255 255.255.255.255 50.0.0.2 50.0.0.2 1
Default
Gateway:
50.0.0.1
===============================================================
Persistent Routes:
None
[Date]
ing Manuel Cédric EBODE MBALLA 33
Serveur OpenVPN
#route -n
Kernel Ip routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.8.0.2 0.0.0.0 255.255.255.255 UH 0 0 0 tap0
100.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
0.0.0.0 100.0.0.1 0.0.0.0 UG 0 0 0 eth0
VÉRIFICATION DE CONNÉCTIVITÉ:
OpenVPN client C:>tracert 10.8.0.1
Tracing route to 10.8.0.1 over a maximum of 30 hops
1 <1 ms <1 ms <1 ms 10.8.0.1
Trace complete.
OpenVPN client C:>tracert 100.0.0.2
Tracing route to 100.0.0.2 over a maximum of 30 hops
1 <1 ms <1 ms <1 ms 50.0.0.1
2 <1 ms <1 ms <1 ms 100.0.0.2
Trace complete.
B : VPN IP
Dans ce scénario, nous allons créer un tunnel OpenVPN dans le mode routé ou IP avec un
paramètrage minimum.
Une machine Microsoft Windows est utilisée en tant que client OpenVPN, un système en tant
[Date]
ing Manuel Cédric EBODE MBALLA 34
que serveur OpenVPN.
L'autre mode de tunnel OpenVPN est appelé mode pont (bridge) ou Ethernet. Voir une étude
de cas à propos de ce mode.
1. PAS DE SECURITÉ
BOITIÉ VPN WINDOWS - CLIENT OPENVPN:
fichier de configuration:
La configuration ci-dessous est stockée dans le fichier "C:Program
FilesOpenVPNconfigclient.txt".
# OpenVPN server
remote 100.0.0.2
# Tunnel mode
dev tun
# IP addresses
ifconfig 10.9.0.2 10.9.0.1
# Cipher mode
cipher none
# Authentification mode
auth none
# Log verbosity
verb 2
Lancement d'OpenVPN
C:Program FilesOpenVPNconfig>openvpn client.txt
Sortie du journal:
1 OpenVPN 2.0.9 Win32-MinGW [SSL] [LZO] built on Oct 1 2006
[Date]
ing Manuel Cédric EBODE MBALLA 35
2
5/6
7
8
9
10
11
12
IMPORTANT: OpenVPN's default port number is now 1194, based on an official
port number assignment by IANA. OpenVPN 2.0-beta16 and earlier used 5000 as the
default port.
******* WARNING *******: all encryption and authentication features disabled -- all
data
will be tunnelled as cleartext
TAP-WIN32 device [Connexion au réseau local 3] opened: .Global{928ACEB1-
D160-420A-ADD6-A72E816FC022}.tap
TAP-Win32 MTU=1500
Notified TAP-Win32 driver to set a DHCP IP/netmask of 10.9.0.2/255.255.255.252 on
interface {928ACEB1-D160-420A-ADD6-A72E816FC022} [DHCP-serv: 10.9.0.1,
lease-time:31536000]
Successful ARP Flush on interface [3] {928ACEB1-D160-420A-ADD6-
A72E816FC022}
Data Channel MTU parms [ L:1500 D:1450 EF:0 EB:4 ET:0 EL:0 ]
Local Options hash (VER=V4): '00f97e1a'
Expected Remote Options hash (VER=V4): '7cef60b0'
UDPv4 link local (bound): [undef]:1194
UDPv4 link remote: 100.0.0.2:1194
Peer Connection Initiated with 100.0.0.2:1194
Initialization Sequence Completed
Légende:
1.
2.
3.
4.
Version OpenVPN
Mode de security
Algorythme de chiffrement
Algorythme de hachage
5.
6.
7.
8.
Pilotes TUN/TAP
MTU du Tunnel
IP locale du Tunnel
IP distante du tunnel
9.
10.
11.
12
Port TCP ou UDP
IP du serveur OpenVPN
Equipement OpenVPN distant
Status OpenVPN
BOITIÉ VPN LINUX - SERVEUR OPENVPN:
La configuration ci-dessous est stockée dans le fichier "/etc/openvpn/server.txt".
# Mode tunnel
dev tun
# Adresses IP
ifconfig 10.9.0.1 10.9.0.2
# Mode de chiffrement
cipher none
# Mode d'authentification
auth none
[Date]
ing Manuel Cédric EBODE MBALLA 36
# Verbosité du journal
verb 2
Lancement d'OpenVPN
/etc/openvpn#openvpn server.txt
Lisez des informations sur l'utilisation des scripts de démarrage OpenVPN.
Sortie du journal:
1
5
7/8
6
9
10
12
OpenVPN 2.0.9 i486-pc-linux-gnu [SSL] [LZO] [EPOLL] built on May 21 2007
IMPORTANT: OpenVPN's default port number is now 1194, based on an official
port number
assignment by IANA. OpenVPN 2.0-beta16 and earlier used 5000 as the default port.
******* WARNING *******: all encryption and authentication features disabled -- all
data
will be tunnelled as cleartext
TUN/TAP device tun0 opened
ifconfig tun0 10.9.0.1 pointopoint 10.9.0.2 mtu 1500
Data Channel MTU parms [ L:1500 D:1450 EF:0 EB:4 ET:0 EL:0 ]
Local Options hash (VER=V4): '7cef60b0'
Expected Remote Options hash (VER=V4): '00f97e1a'
UDPv4 link local (bound): [undef]:1194
UDPv4 link remote: [undef]
Peer Connection Initiated with 50.0.0.2:1194
Initialization Sequence Completed
Poursuivez avec les statistiques réseaux
2. CLEFS PARTAGÉES
BOITIÉ VPN WINDOWS - CLIENT OPENVPN:
Fichier de configuration:
La configuration ci-dessous est stockée dans le fichier "C:Program
FilesOpenVPNconfigclient.txt".
# Serveur OpenVPN
remote 100.0.0.2
# Mode tunnel
dev tun
# Adresses IP
[Date]
ing Manuel Cédric EBODE MBALLA 37
ifconfig 10.9.0.2 10.9.0.1
# Clef partagée
secret "C:Program FilesOpenVPNconfigkey.txt"
# Verbosité du journal
verb 2
Lancement d'OpenVPN
C:Program FilesOpenVPNconfig>openvpn client.txt
Log output:
1
2/3
4
5
6
7
8
9
10
12
OpenVPN 2.0.9 Win32-MinGW [SSL] [LZO] built on Oct 1 2006
IMPORTANT: OpenVPN's default port number is now 1194, based on an official port
num.
assignment by IANA. OpenVPN 2.0-beta16 and earlier used 5000 as the default port.
Static Encrypt: Cipher 'BF-CBC' initialized with 128 bit key
Static Encrypt: Using 160 bit message hash 'SHA1' for HMAC authentication
Static Decrypt: Cipher 'BF-CBC' initialized with 128 bit key
Static Decrypt: Using 160 bit message hash 'SHA1' for HMAC authentication
TAP-WIN32 device [Local Area Connection 5] opened:
.Global{E2D87AAD-28F7-432E-8A00-5E67BE6DD464}.tap
TAP-Win32 MTU=1500
Notified TAP-Win32 driver to set a DHCP IP/netmask of 10.9.0.2/255.255.255.252 on
interface {E2D87AAD-28F7-432E-8A00-5E67BE6DD464} [DHCP-serv: 10.9.0.1,
lease-time: 31536000]
Successful ARP Flush on interface [4] {E2D87AAD-28F7-432E-8A00-
5E67BE6DD464}
Data Channel MTU parms [ L:1544 D:1450 EF:44 EB:4 ET:0 EL:0 ]
Local Options hash (VER=V4): 'd3880969'
Expected Remote Options hash (VER=V4): 'c41bf3b8'
UDPv4 link local (bound): [undef]:1194
UDPv4 link remote: 100.0.0.2:1194
Peer Connection Initiated with 100.0.0.2:1194
Initialization Sequence Completed
Légende:
1.
2.
3.
4.
Version OpenVPN
Mode de security
Algorythme de chiffrement
Algorythme de hachage
5.
6.
7.
8.
Pilotes TUN/TAP
MTU du Tunnel
IP locale du Tunnel
IP distante du tunnel
9.
10.
11.
12
Port TCP ou UDP
IP du serveur OpenVPN
Equipement OpenVPN distant
Status OpenVPN
[Date]
ing Manuel Cédric EBODE MBALLA 38
BOITIÉ VPN LINUX - SERVEUR OPENVPN:
La configuration ci-dessous est stockée dans le fichier "/etc/openvpn/server.txt".
# Mode tunnel
dev tun
# Adresses IP
ifconfig 10.9.0.1 10.9.0.2
# Clef partagée
secret /home/user/key.txt
# Verbosité du journal
verb 2
Lancement d'OpenVPN
/etc/openvpn#openvpn server.txt
Lisez des informations sur l'utilisation des scripts de démarrage OpenVPN.
Sortie du journal :
1
2/3
4
5
6/7
8
10
11
12
OpenVPN 2.0.9 i486-pc-linux-gnu [SSL] [LZO] [EPOLL] built on Mar 2 2007
IMPORTANT: OpenVPN's default port number is now 1194, based on an official port
num.
assignment by IANA. OpenVPN 2.0-beta16 and earlier used 5000 as the default port.
WARNING: file '/home/po/key.txt' is group or others accessible
Static Encrypt: Cipher 'BF-CBC' initialized with 128 bit key
Static Encrypt: Using 160 bit message hash 'SHA1' for HMAC authentication
Static Decrypt: Cipher 'BF-CBC' initialized with 128 bit key
Static Decrypt: Using 160 bit message hash 'SHA1' for HMAC authentication
TUN/TAP device tun0 opened
ifconfig tun0 10.9.0.1 pointopoint 10.9.0.2 mtu 1500
Data Channel MTU parms [ L:1544 D:1450 EF:44 EB:4 ET:0 EL:0 ]
Local Options hash (VER=V4): 'c41bf3b8'
Expected Remote Options hash (VER=V4): 'd3880969'
UDPv4 link local (bound): [undef]:1194
UDPv4 link remote: [undef]
Peer Connection Initiated with 50.0.0.2:1194
Initialization Sequence Completed
Poursuivez avec les statistiques réseaux
[Date]
ing Manuel Cédric EBODE MBALLA 39
3. SSL
BOITIÉ VPN WINDOWS - CLIENT OPENVPN :
Fichier de configuration:
La configuration ci-dessous est stockée dans le fichoer "C:Program
FilesOpenVPNconfigclient.txt".
# TLS mode - client
tls-client
# openVPN server
remote 100.0.0.2
# Tunnel mode
dev tun
# IP addresses
ifconfig 10.9.0.2 10.9.0.1
# CA certificate
ca "C:Program FilesOpenVPNeasy-rsakeysca.crt"
# client certificate
cert "C:Program FilesOpenVPNeasy-rsakeysserver.crt"
# client private key
key "C:Program FilesOpenVPNeasy-rsakeysserver.key"
# Log verbosity
verb 2
Lancement d'OpenVPN
C:Program FilesOpenVPNconfig>openvpn client.txt
Sortie du journal:
1
5
6
7
OpenVPN 2.0.9 Win32-MinGW [SSL] [LZO] built on Oct 1 2006
IMPORTANT: OpenVPN's default port number is now 1194, based on an official port
number assignment by IANA. OpenVPN 2.0-beta16 and earlier used 5000 as the
default
port.
WARNING: No server certificate verification method has been enabled. See
http://openvpn.net/howto.html#mitm for more info.
Control Channel MTU parms [ L:1541 D:138 EF:38 EB:0 ET:0 EL:0 ]
TAP-WIN32 device [Connexion au réseau local 3] opened: .Global{928ACEB1-
D160-420A-ADD6-A72E816FC022}.tap
TAP-Win32 MTU=1500
[Date]
ing Manuel Cédric EBODE MBALLA 40
8
9
10
3
4
2
11
12
Notified TAP-Win32 driver to set a DHCP IP/netmask of 10.9.0.2/255.255.255.252 on
interface {928ACEB1-D160-420A-ADD6-A72E816FC022} [DHCP-serv: 10.9.0.1,
lease-time: 31536000]
Successful ARP Flush on interface [3] {928ACEB1-D160-420A-ADD6-
A72E816FC022}
Data Channel MTU parms [ L:1541 D:1450 EF:41 EB:4 ET:0 EL:0 ]
Local Options hash (VER=V4): '4685920e'
Expected Remote Options hash (VER=V4): '2e130e6f'
UDPv4 link local (bound): [undef]:1194
UDPv4 link remote: 100.0.0.2:1194
TLS Error: local/remote TLS keys are out of sync: 100.0.0.2:1194 [0]
VERIFY OK: depth=1,
/C=US/ST=CA/L=SanFrancisco/O=OpenManiak/CN=OpenManiak_CA/emailAddress
=me@myhost.mydomain
VERIFY OK: depth=0,
/C=US/ST=CA/L=SanFrancisco/O=OpenManiak/CN=server/emailAddress=me@
myhost.mydomain
Data Channel Encrypt: Cipher 'BF-CBC' initialized with 128 bit key
Data Channel Encrypt: Using 160 bit message hash 'SHA1' for HMAC authentication
Data Channel Decrypt: Cipher 'BF-CBC' initialized with 128 bit key
Data Channel Decrypt: Using 160 bit message hash 'SHA1' for HMAC authentication
Control Channel: TLSv1, cipher TLSv1/SSLv3 DHE-RSA-AES256-SHA, 1024 bit RSA
[server] Peer Connection Initiated with 100.0.0.2:1194
Initialization Sequence Completed
Légende:
1.
2.
3.
4.
Version OpenVPN
Mode de security
Algorythme de chiffrement
Algorythme de hachage
5.
6.
7.
8.
Pilotes TUN/TAP
MTU du Tunnel
IP locale du Tunnel
IP distante du tunnel
9.
10.
11.
12
Port TCP ou UDP
IP du serveur OpenVPN
Equipement OpenVPN distant
Status OpenVPN
BOITIÉ VPN LINUX - SERVEUR OPENVPN:
La configuration est stockée dans le fichier "/etc/openvpn/server.txt".
# TLS mode - server
tls-server
# Tunnel mode
dev tun
# IP addresses
ifconfig 10.9.0.1 10.9.0.2
[Date]
ing Manuel Cédric EBODE MBALLA 41
# CA certificate
ca ca.crt
# server certificate
cert client.crt
# server private key
key server.key
# Diffie-Hellman Settings
dh dh1024.pem
# Log verbosity
verb 2
Lanceemnt d'OpenVPN
/etc/openvpn#openvpn server.txt
Lisez des informations sur l'utilisation des scripts de démarrage OpenVPN.
Log output:
1
5
6/7
8
9
3
4
2
OpenVPN 2.0.9 i486-pc-linux-gnu [SSL] [LZO] [EPOLL] built on May 21 2007
IMPORTANT: OpenVPN's default port number is now 1194, based on an official port
number assignment by IANA. OpenVPN 2.0-beta16 and earlier used 5000 as the
default
port.
Control Channel MTU parms [ L:1541 D:138 EF:38 EB:0 ET:0 EL:0 ]
TUN/TAP device tun0 opened
ifconfig tun0 10.9.0.1 pointopoint 10.9.0.2 mtu 1500
Data Channel MTU parms [ L:1541 D:1450 EF:41 EB:4 ET:0 EL:0 ]
Local Options hash (VER=V4): '2e130e6f'
Expected Remote Options hash (VER=V4): '4685920e'
UDPv4 link local (bound): [undef]:1194
UDPv4 link remote: [undef]
VERIFY OK: depth=1,
/C=US/ST=CA/L=SanFrancisco/O=OpenManiak/CN=OpenManiak_CA/emailAddress
=me@myhost.mydomain
VERIFY OK: depth=0,
/C=US/ST=CA/L=SanFrancisco/O=OpenManiak/CN=client/emailAddress=me
@myhost.mydomain
Data Channel Encrypt: Cipher 'BF-CBC' initialized with 128 bit key
Data Channel Encrypt: Using 160 bit message hash 'SHA1' for HMAC authentication
Data Channel Decrypt: Cipher 'BF-CBC' initialized with 128 bit key
Data Channel Decrypt: Using 160 bit message hash 'SHA1' for HMAC authentication
[Date]
ing Manuel Cédric EBODE MBALLA 42
11
12
Control Channel: TLSv1, cipher TLSv1/SSLv3 DHE-RSA-AES256-SHA, 1024 bit
RSA
[client] Peer Connection Initiated with 50.0.0.2:1194
Initialization Sequence Completed
Poursuivez avec les statistiques réseaux
STATISTIQUES RÉSEAUX : (similaires pour les trois études de cas)
INTERFACES:
Client OpenVPN C:>ipconfig
Windows IP Configuration
Ethernet adapter Local Area Connection:
Connection-specific DNS
Suffix .
:
IP Address. . . . . . . . . . . . . . . : 50.0.0.2
Subnet Mask . . . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . . . : 50.0.0.1
Ethernet adapter Local Area Connection 1:
Connection-specific DNS
Suffix .
IP Address. . . . . . . . . . . . . . . : 10.9.0.2
Subnet Mask . . . . . . . . . . . . . : 255.255.255.252
Default Gateway . . . . . . . . . . . :
[Date]
ing Manuel Cédric EBODE MBALLA 43
Serveur OpenVPN #ifconfig
eth0 Link encap:Ethernet HWaddr 11:22:33:44:55:66
inet adr:100.0.0.2 Bcast:100.0.0.255 Mask:255.255.255.0
adr inet6: fe80::212:3fff:fe0f:35c7/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX Packets:1641 errors:0 :0 overruns:0 frame:0
TX packets:2130 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:186894 (182.5 KiB) Octets transmis:231430 (226.0 KiB)
Interrupt:16
lo Link encap:Local Loopback
inet adr:127.0.0.1 Mask:255.0.0.0
adr inet6: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX Packets:929 errors:0 :0 overruns:0 frame:0
TX packets:929 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:128263 (125.2 KiB) TX bytes:128263 (125.2 KiB)
tun
0
Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-
00-00-00-00
inet adr:10.9.0.1 P-t-P:10.9.0.2 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500
[Date]
ing Manuel Cédric EBODE MBALLA 44
Metric:1
RX Packets:89 errors:0 :0 overruns:0 frame:0
TX packets:90 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:5340 (5.2 KiB) TX bytes:5424 (5.2 KiB)
TABLE DE ROUTAGE:
Client OpenVPN C:>route print
==============================================================
Interface List
0x1 MS TCP Loopback interface
0x2
00 08 02 94 c1
eb
Intel(R) PRO/100 VM Network Connection - Packet
Scheduler Miniport
0x3
00 ff e2 d8 7a
ad
TAP-Win32 Adapter V8 - Packet Scheduler Miniport
===============================================================
===============================================================
Active Routes:
Network
Destination
Netmask Gateway Interface Metric
0.0.0.0 0.0.0.0 50.0.0.1 50.0.0.2 20
10.9.0.0 255.255.255.252 10.9.0.2 10.9.0.2 30
10.9.0.2 255.255.255.255 127.0.0.1 127.0.0.1 30
10.255.255.255 255.255.255.255 10.9.0.2 10.9.0.2 30
[Date]
ing Manuel Cédric EBODE MBALLA 45
50.0.0.0 255.255.255.0 50.0.0.2 50.0.0.2 20
50.0.0.2 255.255.255.255 127.0.0.1 127.0.0.1 20
50.255.255.255 255.255.255.255 50.0.0.2 50.0.0.2 20
127.0.0.0 255.0.0.0 127.0.0.1 127.0.0.1 1
224.0.0.0 240.0.0.0 10.9.0.2 10.9.0.2 30
224.0.0.0 240.0.0.0 50.0.0.2 50.0.0.2 20
255.255.255.255 255.255.255.255 10.9.0.2 10.9.0.2 1
255.255.255.255 255.255.255.255 10.9.0.2 3 1
255.255.255.255 255.255.255.255 50.0.0.2 50.0.0.2 1
Default
Gateway:
50.0.0.1
===============================================================
Persistent Routes:
None
Serveur OpenVPN #route -n
Kernel Ip routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.9.0.2 0.0.0.0 255.255.255.255 UH 0 0 0 tun0
100.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
0.0.0.0 100.0.0.1 0.0.0.0 UG 0 0 0 eth0
VÉRIFICATION DE CONNÉCTIVITÉ:
OpenVPN client C:>tracert 10.9.0.1
[Date]
ing Manuel Cédric EBODE MBALLA 46
Tracing route to 10.9.0.1 over a maximum of 30 hops
1 <1 ms <1 ms <1 ms 10.9.0.1
Trace complete.
OpenVPN client
C:>tracert 100.0.0.2
Tracing route to 100.0.0.2 over a maximum of 30 hops
1 <1 ms <1 ms <1 ms 50.0.0.1
2 <1 ms <1 ms <1 ms 100.0.0.2
Trace complete.
C : tunnel entre deux réseaux distant
1. PRESENTATION:
Dans cette étude de cas, deux sites sont connectés ensemble au travers d'un
tunnel OpenVPNen mode SSL/TLS avec des paramètres optionnels très utiles.
Les principaux buts de notre étude de cas sont les suivants:
-
-
-
Etablir une connectivité pour tous les protocoles entre les deux réseaux locaux (réseaux
10.0.1.0/24 et 10.0.2.0/24) à travers un tunnel OpenVPN sur des boitiers Linux.
Ceci signifie que les deux réseaux locaux vont se voir comme s'ils étaient dans le même
réseau physique juste séparés par un routeur.
Permettre aux utilisateurs locaux de surfer sur Internet (port TCP 80, HTTP et
443,HTTPS) Une traduction des adresses (NAT) source est requise sur les machines
Linux.
Sécuriser les machines Linux avec Netfilter, le module noyau Pare-feu de Linux.
[Date]
ing Manuel Cédric EBODE MBALLA 47
2. PARAMETRE DES INTERFACES:
La première chose à faire et de configurer les paramètres IP des machines Linux et des postes
de travail (Desktops).
Serveur OpenVPN
Configurez l'adresse IP des interfaces:
#ifconfig eth0 50.0.0.1 netmask 255.255.255.0
#ifconfig eth1 10.0.1.1 netmask 255.255.255.0
Configurez la passerelle par défaut:
#route add default gateway 50.0.0.100
Si vous voulez garder vos paramètres IP lorsque le système redémarre, éditez le ficher
/etc/network/interfaces:
#vim /etc/network/interfaces
[Date]
ing Manuel Cédric EBODE MBALLA 48
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 50.0.0.1
netmask 255.255.255.0
gateway 50.0.0.100
auto eth1
iface eth1 inet static
address 10.0.1.1
netmask 255.255.255.0
Client OpenVPN
Configurez l'adresse IP des interfaces:
#ifconfig eth0 100.0.0.1 netmask 255.255.255.0
#ifconfig eth1 10.0.2.1 netmask 255.255.255.0
Configurez la passerelle par défaut:
#route add default gateway 100.0.0.100
Si vous voulez garder vos paramètres IP lorsque le système redémarre, éditez le ficher
/etc/network/interfaces:
#vim /etc/network/interfaces
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 100.0.0.1
netmask 255.255.255.0
gateway 100.0.0.100
auto eth1
iface eth1 inet static
address 10.0.2.1
netmask 255.255.255.0
[Date]
ing Manuel Cédric EBODE MBALLA 49
Poste de travail du réseau local A
Adresse IP:
Masque:
Passerelle:
10.0.1.100
255.255.255.0
10.0.1.1
Poste de travail du réseau local B
Adresse IP:
Masque:
Passerelle:
10.0.2.100
255.255.255.0
10.0.2.1
3. CONFIGURATIONS:
Les fichiers utilisés par OpenVPN sont localisés dans le dossier /etc/openvpn.
Les machines OpenVPN auront les fichiers suivants:
openvpn.conf - le fichier de configuration d'OpenVPN.
ipp.txt (serveur seulement) - un fichier de réservation IP pour l'assignement dynamique
d'adresses IP.
route.txt (serveur seulement)- script pour ajouter une route sur le serveur quand le tunnel est
monté.
Ci-dessous, les fichiers créés par l'autorité de certification (CA),
ca.crt - le certificat de l'autorité de certification (clef publique du CA).
server.crt or client.crt - le certificat du serveur ou du client (clef publique du serveur ou
duclient).
server.key or client.key - la clef privée du serveur ou du client.
dh1024pem (serveur seulement) - les paramètres Diffie-Hellman (DH).
Fichier openvpn.conf:
SERVEUR CLIENT
# Adresse IP à l'écoute
local 50.0.0.1
# Port Local
lport 2000
# Port distant
rport 2001
# Mode du tunnel
dev tap
# Adresse IP WAN du serveur
remote 50.0.0.1
# Port local
lport 2001
# Port distant
rport 2000
# Mode du tunnel
dev tap
[Date]
ing Manuel Cédric EBODE MBALLA 50
# Certificat du CA
ca ca.crt
# Certificat du serveur
cert server.crt
# Clef privée du serveur
key server.key
# Diffie-Hellman
dh dh1024.pem
# Etendue DHCP, le serveur prends
l'IP
# 10.7.0.1
server 10.7.0.0 255.255.255.248
# fichier de réservation IP
ifconfig-pool-persist ipp.txt
# Route fournie au client
push "route 10.0.1.0
255.255.255.0"
# Chiffrement
ciper AES-256-CBC
# Authentification
auth MD5
# La compression est activée
comp-lzo
# Clients autorisés
max-clients 10
# Réduire les privilèges du démon
# OpenVPN après l'initialisation
# (Linux seulement)
user nobody
# Statistiques OpenVPN
status openvpn-status.log
# Niveau de verbosité
verb 2
# Script lancé quand le tunnel est
monté
# up
up "./route.txt"
# Après
l'initialisation, OpenVPN peut
# accéder à un directoire seulement
# (Linux seulement)
chroot /etc/openvpn/
# Certificat du CA
ca ca.crt
# Clef privée du serveur
cert client.crt
# Clef privée du client
key client.key
# Chiffrement
ciper AES-256-CBC
# Authentification
auth MD5
# La compression est activée
comp-lzo
# Reduire les privilèges du démon
# OpenVPN après l'initialisation
# (Linux seulement)
user nobody
# Statistiques OpenVPN
status openvpn-status.log
# Niveau de verbosité
verb 2
# Après
l'initialisation, OpenVPN peut
# accéder à un directoire seulement
# (Linux seulement)
chroot /etc/openvpn/
# The client accepte les options
# poussées par le serveur
[Date]
ing Manuel Cédric EBODE MBALLA 51
pull
Voici un résumé des fonctionnalités OpenVPN utilisées dans notre tutorial comparées à leur
valeur par défaut.
Paramètres optionnels:
Mode tunnel
Serveur DHCP
Adresses persistantes
Transmission de routes
chiffrement
Authentification
Compression
Port source serveur
Port source serveur
Droits
Utilisateurs max
Script "up"
Assignement IP
Niveau de verbosité
Etude de cas
dev tap
server 10.7.0.0 255.255.255.248
ifconfig-pool-persist ipp.txt
push "10.0.1.0 255.255.255.0"
cipher AES
auth md5
comp-lzo
lport 2000
rport 2001
user nodody
chroot /etc/openvpn
10
up "route.txt"
ifconfig-pool-persist
verb 2
Default settings:
dev tun
-
-
-
cipher BF-CBC
auth sha1
-
lport 1194
rport 1194
user root
-
- (Unlimited)
-
-
verb 0
Soyez attentif de bien ajouter l'extension de fichier ".conf" à votre fichier de configuration.
Ceci est requis pour l'utilisation du script /etc/init.d/openvpn pour
démarrer OpenVPNautomatiquement.
Fichier ipp.txt:
Le fichier /etc/openvpn/ipp.txt est utilisé pour stocker les réservations d'IP quand le
serveurOpenVPN assigne dynamiquement des adresses aux clients.
La syntaxe est la suivante:
nom_du_certificat_client,adresse_IP
Le nom_du_certificat_client est le nom choisi lors de la création du certificat client, Dans
notre étude de cas, nous avons choisi client1 comme nom_du_certificat_client.
client1,10.7.0.6
Fichier route.txt:
[Date]
ing Manuel Cédric EBODE MBALLA 52
Quand le tunnel est monté, le serveur lance le script bash "route.txt" qui va lui ajouter une
route pour atteindre le réseau local du client.
#!/bin/bash
route add -net 10.0.2.0/24 gw 10.7.0.6
La dernière chose à faire est de configurer les permissions sur le dossier
/etc/openvpn directory.
L'utilisateur teddy a les permissions lecture/écriture/exécution. N'importe qui d'autre n'a
aucune permission.
Les fichiers les plus important dans le dossier sont les clefs privées. (server.key or client.key
selon la machine sur laquelle vous vous trouvez). Si la clef privée de votre serveur est
capturée, cela voudra dire que la sécurité de votre architecture OpenVPN est compromise!
#chmod 700 /etc/openvpn/*
L'utilisateur teddy est le propriétaire des fichiers dans le dossier /etc/openvpn.
#chown teddy /etc/openvpn/*
4. DEMARRER OPENVPN
Démarrons OpenVPN sur le client et le serveur et vérifions les journaux:
#openvpn /etc/openvpn/openvpn.conf
Journal du serveur:
1
16
22
21
10
8/11
15
OpenVPN 2.0.9 i486-pc-linux-gnu [SSL] [LZO] [EPOLL] built on Mar 2 2007
WARNING: No server certificate verification method has been enabled.
See http://openvpn.net/howto.html#mitm for more info.
LZO compression initialized
Control Channel MTU parms [ L:1586 D:138 EF:38 EB:0 ET:0 EL:0 ]
Data Channel MTU parms [ L:1586 D:1450 EF:54 EB:135 ET:32 EL:0 AF:3/1 ]
Local Options hash (VER=V4): '579db898'
Expected Remote Options hash (VER=V4): 'a0883d96'
chroot to '/etc/openvpn' and cd to '/' succeeded
UID set to nobody
UDPv4 link local (bound): [undef]:2001
UDPv4 link remote: 50.0.0.1:2000
TLS: Initial packet from 50.0.0.1:2000, sid=100aa16d 662ac586
VERIFY OK: depth=1, /C=US/ST=CA/L=SanFrancisco/O=OpenManiak/
[Date]
ing Manuel Cédric EBODE MBALLA 53
14
3
4
2
17
18
5
6
12
CN=OpenManiak_CA/emailAddress=opensource@openmaniak.com
VERIFY OK: depth=0, /C=US/ST=CA/L=SanFrancisco/O=OpenManiak/
CN=server/emailAddress=opensource@openmaniak.com
Data Channel Encrypt: Cipher 'AES-256-CBC' initialized with 256 bit key
Data Channel Encrypt: Using 128 bit message hash 'MD5' for HMAC authentication
Data Channel Decrypt: Cipher 'AES-256-CBC' initialized with 256 bit key
Data Channel Decrypt: Using 128 bit message hash 'MD5' for HMAC authentication
Control Channel: TLSv1, cipher TLSv1/SSLv3 DHE-RSA-AES256-SHA, 1024 bit
RSA
[server] Peer Connection Initiated with 50.0.0.1:2000
SENT CONTROL [server]: 'PUSH_REQUEST' (status=1)
PUSH: Received control message: 'PUSH_REPLY,route 10.0.1.0 255.255.255.0,
route-gateway 10.7.0.1,ifconfig 10.7.0.6 255.255.255.248'
OPTIONS IMPORT: --ifconfig/up options modified
OPTIONS IMPORT: route options modified
TUN/TAP device tap0 opened
ifconfig tap0 10.7.0.6 netmask 255.255.255.248 mtu 1500 broadcast 10.7.0.7
route add -net 10.0.1.0 netmask 255.255.255.0 gw 10.7.0.1
Initialization Sequence Completed
Légende:
1.
2.
3.
4.
Version OpenVPN
Mode de sécurité
Chiffrement
Hachage
5.
6.
7.
8.
Pilotes TUN/TAP
MTU du tunnel
IP locale du tunnel
Ip distante du tunnel
9.
10.
11.
12.
Serveur OpenVPN
Port Local
Port distant
status OpenVPN
13.
14.
15.
16.
Certificat client
Certificat serveur
Certificat du CA
Compression
17.
18.
19.
Route fournie au client
IP fournie au client
Reservation IP
21.
22.
23
Utilisateur
Limitation du process
Script "up"
Journal du client:
1
5
6/7
23
OpenVPN 2.0.9 i486-pc-linux-gnu [SSL] [LZO] [EPOLL] built on Mar 2 2007
WARNING: --keepalive option is missing from server config
Diffie-Hellman initialized with 1024 bit key
TLS-Auth MTU parms [ L:1586 D:138 EF:38 EB:0 ET:0 EL:0 ]
TUN/TAP device tap0 opened
ifconfig tap0 10.7.0.1 netmask 255.255.255.248 mtu 1500 broadcast 10.7.0.7
./echo.txt tap0 1500 1586 10.7.0.1 255.255.255.248 init
Data Channel MTU parms [ L:1586 D:1450 EF:54 EB:135 ET:32 EL:0 AF:3/1 ]
[Date]
ing Manuel Cédric EBODE MBALLA 54
22
21
9
10
19
12
8
16
11
15
13
3
4
2
17
18
chroot to '/etc/openvpn' and cd to '/' succeeded
UID set to nobody
UDPv4 link local (bound): 50.0.0.1:2000
UDPv4 link remote: [undef]
MULTI: multi_init called, r=256 v=256
IFCONFIG POOL: base=10.7.0.2 size=5
IFCONFIG POOL LIST
client1,10.7.0.6
Initialization Sequence Completed
MULTI: multi_create_instance called
100.0.0.1:2001 Re-using SSL/TLS context
100.0.0.1:2001 LZO compression initialized
100.0.0.1:2001 Control Channel MTU parms [ L:1586 D:138 EF:38 EB:0 ET:0 EL:0 ]
100.0.0.1:2001 Data Channel MTU parms [ L:1586 D:1450 EF:54 EB:135 ET:32 EL:0
AF:3/1 ]
100.0.0.1:2001 Local Options hash (VER=V4): 'a0883d96'
100.0.0.1:2001 Expected Remote Options hash (VER=V4): '579db898'
100.0.0.1:2001 TLS: Initial packet from 100.0.0.1:2001, sid=85abe7b5 a5dcafc0
100.0.0.1:2001 VERIFY OK: depth=1,
/C=US/ST=CA/L=SanFrancisco/O=OpenManiak/
CN=OpenManiak_CA/emailAddress=opensource@openmaniak.com
100.0.0.1:2001 VERIFY OK: depth=0,
/C=US/ST=CA/L=SanFrancisco/O=OpenManiak/
CN=client1/emailAddress=opensource@openmaniak.com
100.0.0.1:2001 Data Channel Encrypt: Cipher 'AES-256-CBC' initialized with 256 bit
key
100.0.0.1:2001 Data Channel Encrypt: Using 128 bit message hash 'MD5' for
HMAC authentication
100.0.0.1:2001 Data Channel Decrypt: Cipher 'AES-256-CBC' initialized with 256 bit
key
100.0.0.1:2001 Data Channel Decrypt: Using 128 bit message hash 'MD5' for
HMAC authentication
100.0.0.1:2001 Control Channel: TLSv1, cipher TLSv1/SSLv3 DHE-RSA-AES256-
SHA,
1024 bit RSA
100.0.0.1:2001 [client1] Peer Connection Initiated with 100.0.0.1:2001
client1/100.0.0.1:2001 PUSH: Received control message: 'PUSH_REQUEST'
client1/100.0.0.1:2001 SENT CONTROL [client1]: 'PUSH_REPLY,route 10.0.1.0
255.255.255.0,route-gateway 10.7.0.1,ifconfig 10.7.0.6 255.255.255.248' (status=1)
client1/100.0.0.1:2001 MULTI: Learn: 12:5a:a3:22:f7:11 -> client1/100.0.0.1:2001
[Date]
ing Manuel Cédric EBODE MBALLA 55
L'utiliatire Ping est très utile pour tester si le tunnel est monté.
Le serveur (10.7.0.1) dervait être capable de pinger le client (10.7.0.6) et vice versa.
serveur#ping 10.7.0.6
Un script init.d est disponible pour démarrer ou arrêter OpenVPN. Soyez attentif, comme
indiqué dans la section de configuration, que vos fichiers de configurations sont localisés dans
le dossier /etc/openvpn et ont une extension de fichier .conf".
#/etc/init.d/openvpn stop
Stopping virtual private network daemon: openvpn.
#/etc/init.d/openvpn start
Starting virtual private network daemon: openvpn.
#/etc/init.d/openvpn restart
Stopping virtual private network daemon: openvpn.
Starting virtual private network daemon: openvpn(OK).
Les journaux sont écris par défaut dans le fichier /var/log/syslog.
Vous pouvez vérifier le status du processus OpenVPN:
#ps -ef | grep openvpn
UID PID PPID CSTIME TTY TIME CMD
nobody 27921 0 09:59 ? 00:00:00
/usr/sbin/openvpn
-- writepid
/var/run/openvpn.conf.pid
--daemon ovpn-conf
--cd /etc/openvpn
--config
/etc/openvpn/openvpn.conf
Vérifiez la table de routage sur le serveur OpenVPN:
#route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
[Date]
ing Manuel Cédric EBODE MBALLA 56
10.7.0.0 0.0.0.0 255.255.255.248 U 0 0 0 tap0
10.0.2.0 10.7.0.6 255.255.255.0 UG 0 0 0 tap0
50.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
0.0.0.0 50.0.0.100 0.0.0.0 UG 0 0 0 eth0
5. PORTS TCP ou UDP OUVERTS:
Vérifions quels sont les ports UDP et TCP ouverts:
Le but est de fermer tous les ports ouverts qui ne sont pas requis pour améliorer la sécurité en
prévenant des attaques potentielles .
Identifions les ports TCP et UDP ouverts sur notre Linux de test qui est une Ubuntu 7.10,
édition poste de travail (Desktop Edition)
Ports UDP:
#netstat -uaen
-u: UDP
-t: TCP
-a: all
-e: étendu
-n: numérique
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State User Inode
udp 0 0 0.0.0.0:1025 0.0.0.0:* 105 15129
udp 0 0 50.0.0.1:2000 0.0.0.0:* 0 17810
udp 0 0 0.0.0.0:5353 0.0.0.0:* 105 15128
Regardons quels sont les utilisateurs ayant les ID "0" et "105".
#cat /etc/passwd
user: status: userid: groupid: description: home_directory: shell
[Date]
ing Manuel Cédric EBODE MBALLA 57
root: x: 0: 0: root: /root: /bin/bash
avahi: x: 105: 105: Avahi mDNS daemon,,,: /var/run/avahi-daemon: /bin/false
Avahi est un démon qui permet à des programmes de publier et découvrir des services et des
hôtes sur un réseau local avec pas de configuration spécifique.
Ce démon n'est pas requis dans notre étude de cas, nous pouvons donc soit le désactiver, soit
de désinstaller.
Veuillez noter que les deux ports Avihi sont déjà fermés sur la version serveur d'Ubuntu.
Stoppez le démon:
#/etc/init.d/avihi-daemon stop
Désactivation de Avihi au démarrage du système:
Dans le fichier /etc/defaut/avahi-daemon, changez la valeur AVAHI_DAEMON_START de
"1" à "0":
AVAHI_DAEMON_START=0
Désinstallation du démon:
#apt-get remove avihi-daemon
Le démon Avihi n'est maintenant plus actif, nous pouvons donc revérifier le statu des ports
UDP et voir que le port OpenVPN est le seul port UDP ouvert.
#netstat -uaen
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State User Inode
udp 0 0 50.0.0.1:2000 0.0.0.0:* 0 17810
Ports TCP:
#netstat -taen
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State User Inode
tcp 0 0 127.0.0.0.1:631 0.0.0.0:* LISTEN 0 15395
[Date]
ing Manuel Cédric EBODE MBALLA 58
tcp 0 0 127.0.0.0.1:2207 0.0.0.0:* LISTEN 108 15469
tcp 0 0 127.0.0.0.1:2208 0.0.0.0:* LISTEN 0 15426
tcp6 0 0 :::22 :::* LISTEN 0 15688
Les ports TCP 631 (cupsys), 2207 et 2208 (hplip) sont des ports d'impression et ne sont pas
requis dans notre étude de cas présente. Nous pouvons donc désinstaller les services associés
et ainsi fermer les ports.
Veuillez noter que les trois ports d'impression sont déjà fermés dans le version serveur
d'Ubuntu.
#apt-get remove hplip
#apt-get remove cupsys
Les démons d'impressions sont maintenant désinstallés, nous pouvons donc vérifier de
nouveau le statu des ports TCP et voir que le port SSH est le seul port ouvert.
#netstat -taen
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State User Inode
tcp6 0 0 :::22 :::* LISTEN 0 15688
6. IPTABLES:
Iptables est un outil utilisé pour configurer Netfilter et doit être lancé en que root.
Netfilter, quant à lui, est un module du noyau disponible depuis la version du noyau 2.4. Il
apporte trois principales fonctionnalités:
- Filtrage de paquets - accepte ou rejette des paquets
- NAT - Change l'adresse IP source ou destination de paquets réseau.
- Modification de paquets - Modifie la structure des paquets
Le but pour nous est d'ouvrir seulement les ports requis et de fermer tous les autres pour
limiter des attaques potentiels sur nos systèmes Linux.
La stratégie de sécurité de note étude de cas est la suivante:
Règles de filtrage:
[Date]
ing Manuel Cédric EBODE MBALLA 59
- Ouverture des ports utilisés par OpenVPN pour générer le tunnel entre les deux Linux.
- Ouverture des 80 et 443 ports vers l'extérieur pour laisser les machines locales surfer sur
Internet.
- Acceptation de tout le trafic à l'intérieur du tunnel.
- Rejet de tout autre trafic.
Configuration du serveur OpenVPN Linux:
- ANNULATION DES PARAMETRES IPTABLES EXISTANT:
#iptables -F
- STRATEGIES PAR DEFAUT:
Configuration des règles pour rejeter par défaut tous les trafics entrant et sortant et accepter le
trafic "Forward" (trafic inter-interface:)
#iptables -P OUTPUT DROP
#iptables -P INPUT DROP
#iptables -P FORWARD ACCEPT
- REGLES OPENVPN:
Autorisation du tunnel OpenVPN:
#iptables -A INPUT -i eth0 -p udp -s 100.0.0.1 -d 50.0.0.1 --sport 2001 --dport 2000 -j
ACCEPT
#iptables -A OUTPUT -o eth0 -p udp -s 50.0.0.1 -d 100.0.0.1 --sport 2000 --dport 2001 -
j ACCEPT
Autosization de tous le trafic à l'intérieur du tunnel:
#iptables -A INPUT -i tap+ -p all -j ACCEPT
#iptables -A OUTPUT -o tap+ -p all -j ACCEPT
--------------------------------------------------------
- INTERFACE LAN
Tous le trafic de et vers l'interface LAN (eth1) est accepté:
#iptables -A INPUT -i eth1 -p all -s 10.0.1.0/24 -j ACCEPT
#iptables -A OUTPUT -o eth1 -p all -d 10.0.1.0/24 -j ACCEPT
--------------------------------------------------------
[Date]
ing Manuel Cédric EBODE MBALLA 60
- ACCES INTERNET:
Règles de NAT:
Les utilisateurs du réseau local A doivent être capable de surfer sur Internet impliquant des
paramètres de NAT.
Par exemple, quand le poste de travail situé sur le site A veux accéder une page web sur
Internet, son adresse IP source est traduite et prend l'adresse IP WAN du serveur OpenVPN.
En d'autres termes, 10.0.1.100 est traduit en 50.0.0.1 et vice versa quand les paquets
reviennent au poste de travail.
Ce type de NAT est appelé "masquerade".
#iptables -t nat -A POSTROUTING -j MASQUERADE
Autorisation de l'accès Internet:
Les utilisateurs LAN sont autorisés à accéder uniquement à des ressources HTTP ou HTTPS:
#iptables -A OUTPUT -p tcp -m multiport --dports 80,443 -o eth0 -m state --state
NEW,ESTABLISHED -j ACCEPT
#iptables -A INPUT -p tcp -m multiport --sports 80,443 -i eth0 -m state --state
ESTABLISHED -j ACCEPT
--------------------------------------------------------
- REGLES FACULTATIVES:
Si vous avez des serveurs SSH sur vos machines OpenVPN, vous pouvez configurer les règles
pour accepter le trafic SSH.
Pour installer un serveur SSH, il suffit d'utiliser les commandes suivantes: "apt-get install
openssh-server"
Règles pour permettre au client SSH local d'accéder à un serveur SSH distant.
#iptables -A OUTPUT -p tcp -o eth0 --dport 22 -s 50.0.0.1 -j ACCEPT
#iptables -A INPUT -p tcp --sport 22 -i eth0 -d 50.0.0.1 -m state --state ESTABLISHED
-j ACCEPT
Règles pour permettre à des clients SSH d'accéder au serveur SSH local.
#iptables -A INPUT -p tcp --dport 22 -i eth0 -d 50.0.0.1 -j ACCEPT
#iptables -A OUTPUT -p tcp --sport 22 -o eth0 -s 50.0.0.1 -m state --state
ESTABLISHED -j ACCEPT
Pour les tests de connectivités, 50.0.0.1 et 100.0.0.1 peuvent se pinger l'un l'autre.
#iptables -A INPUT -p icmp -i eth0 -s 100.0.0.1 -d 50.0.0.1 -j ACCEPT
#iptables -A OUTPUT -p icmp -o eth0 -d 100.0.0.1 -s 50.0.0.1 -j ACCEPT
[Date]
ing Manuel Cédric EBODE MBALLA 61
--------------------------------------------------------
- VERIFICATIONS
Vérifiez la table de routage du Pare-feu:
#iptables -v -L
Chain INPUT (policy DROP 13 packets, 683 bytes)
pkts bytes target prot optin out source destination
0 0 ACCEPT udp -- eth0 * 100.0.0.1 50.0.0.1
udp spt:2001
dpt:2000
4 272 ACCEPT 0 -- tap+ * 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT 0 -- eth0 * 10.0.1.0/24 0.0.0.0/0
0 0 ACCEPT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0
multiport sports
80,443 state
ESTABLISHED
4 336 ACCEPT icmp -- eth0 * 100.0.0.1 50.0.0.1
0 0 ACCEPT tcp -- eth0 * 0.0.0.0/0 50.0.0.1 tcp spt:22 state
ESTABLISHED
157 10884ACCEPT tcp -- eth0 * 0.0.0.0/0 50.0.0.1 tcp dpt:22
Chain FORWARD (policy ACCEPT 5 packets, 217 bytes)
pkts bytes target prot optin out source destination
Chain OUTPUT (policy DROP 339 packets, 110K bytes)
pkts bytes target prot optin out source destination
0 0 ACCEPT udp -- * eth0 50.0.0.1 100.0.0.1
udp spt:2000
dpt:2001
ACCEPT 0 -- * tap+0.0.0.0/0 0.0.0.0/0
[Date]
ing Manuel Cédric EBODE MBALLA 62
0 0 ACCEPT 0 -- * eth0 0.0.0.0/0 10.0.1.0/24
0 0 ACCEPT tcp -- * eth0 0.0.0.0/0 0.0.0.0/0
multiport dports
80,443
4 336 ACCEPT icmp -- * eth0 50.0.0.1 100.0.0.1
0 0 ACCEPT tcp -- * eth0 50.0.0.1 0.0.0.0/0 tcp dpt:22
173 22594ACCEPT tcp -- * eth0 50.0.0.1 0.0.0.0/0 tcp spt:22 state
ESTABLISHED
Vérifiez la table NAT:
#iptables -L -t nat
Chain INPUT (policy DROP 13 packets, 683 bytes)
pkts bytes target prot opt in out source destination
Chain FORWARD (policy ACCEPT 5 packets, 217 bytes)
pkts bytes target prot opt in out source destination
108 9273 MASQUERADE 0 - - any eth0 anywhere
Chain OUTPUT (policy DROP 339 packets, 110K bytes)
pkts bytes target prot opt in out source destination
OpenVPN Client Linux Configuration:
- ANNULATION DES PARAMETRES IPTABLES EXISTANT:
#iptables -F
- STRATEGIES PAR DEFAUT:
Configuration des règles pour rejeter par défaut tout les trafics entrant et sortant et accepter le
trafic "Forward" (trafic inter-interface:)
#iptables -P OUTPUT DROP
#iptables -P INPUT DROP
[Date]
ing Manuel Cédric EBODE MBALLA 63
#iptables -P FORWARD ACCEPT
- REGLES OPENVPN:
Autorisation du tunnel OpenVPN:
#iptables -A INPUT -i eth0 -p udp -s 50.0.0.1 -d 100.0.0.1 --sport 2000 --dport 2001 -j
ACCEPT
#iptables -A OUTPUT -o eth0 -p udp -s 100.0.0.1 -d 50.0.0.1 --sport 2001 --dport 2000 -
j ACCEPT
Autorisation de tous le trafic à l'intérieur du tunnel:
#iptables -A INPUT -i tap+ -p all -j ACCEPT
#iptables -A OUTPUT -o tap+ -p all -j ACCEPT
- INTERFACE LAN
Tous le trafic de et vers l'interface LAN (eth1) est accepté:
#iptables -A INPUT -i eth1 -p all -s 10.0.2.0/24 -j ACCEPT
#iptables -A OUTPUT -o eth1 -p all -d 10.0.2.0/24 -j ACCEPT
- ACCES INTERNET:
Règles de NAT:
Les utilisateurs du réseau local B doivent être capable de surfer sur Internet impliquant des
paramètres de NAT.
Par exemple, quand le poste de travail situé sur le site A veux accéder une page web sur
Internet, son adresse IP source est traduite et prend l'adresse IP WAN du serveur OpenVPN.
En d'autres termes, 10.0.2.100 est traduit en 1000.0.0.1 et vice versa quand les paquets
reviennent au poste de travail.
Ce type de NAT est appelé "masquerade".
#iptables -t nat -A POSTROUTING -j MASQUERADE
Autorisation de l'accès Internet:
Les utilisateurs LAN sont autorisés à accéder uniquement à des ressources HTTP ou HTTPS:
#iptables -A OUTPUT -p tcp -m multiport --dports 80,443 -o eth0 -j ACCEPT
#iptables -A INPUT -p tcp -m multiport --sports 80,443 -i eth0 -m state --state
ESTABLISHED -j ACCEPT
[Date]
ing Manuel Cédric EBODE MBALLA 64
- REGLES FACULTATIVES:
Si vous avez des serveurs SSH sur vos machines OpenVPN, vous pouvez configurer les règles
pour accepter le trafic SSH.
Pour installer un serveur SSH, il suffit d'utiliser les commandes suivantes: "apt-get install
openssh-server"
Règles pour permettre au client SSH local d'accéder à un serveur SSH distant.
#iptables -A OUTPUT -p tcp -o eth0 --dport 22 -s 100.0.0.1 -j ACCEPT
#iptables -A INPUT -p tcp --sport 22 -i eth0 -d 100.0.0.1 -m state --state
ESTABLISHED -j ACCEPT
Règles pour permettre à des clients SSH d'accéder au serveur SSH local.
#iptables -A INPUT -p tcp --dport 22 -i eth0 -d 100.0.0.1 -j ACCEPT
#iptables -A OUTPUT -p tcp --sport 22 -o eth0 -s 100.0.0.1 -m state --state
ESTABLISHED -j ACCEPT
Pour les tests de connectivités, 50.0.0.1 et 100.0.0.1 peuvent se pinger l'un l'autre.
#iptables -A INPUT -p icmp -i eth0 -s 50.0.0.1 -d 100.0.0.1 -j ACCEPT
#iptables -A OUTPUT -p icmp -o eth0 -d 50.0.0.1 -s 100.0.0.1 -j ACCEPT
7. ROUTAGE
Routes réseau
Pour établir le lien entre des machines des LANs du site A et B, les routes suivantes doivent
être ajoutées sur les équipements VPN.
Sur le serveur OpenVPN:
réseau destination 10.0.2.0 masque 255.255.255.0 passerelle 10.7.0.6
Sur le client OpenVPN:
réseau destination 10.0.1.0 masque 255.255.255.0 passerelle 10.7.0.1
Les deux routes sont automatiquement ajoutées avec notre configuration du serveur. En effet,
la route du serveur OpenVPN est ajoutée avec le script "route.txt" et la route du client
OpenVPN est poussée par le serveur OpenVPN.
IP forwarding (Redirection IP)
[Date]
ing Manuel Cédric EBODE MBALLA 65
L'IP forwarding est requis pour transférer des paquets entre les interfaces réseau d'un système
Linux
#echo "1" > /proc/sys/net/ipv4/ip_forward
La commande ci-dessus va ajouter la valeur "1" dans le fichier /proc/sys/net/ipv4/ip_forward
et ainsi activer l'IP forwarding.
Si vous voulez garder l'IP forwarding après un redémarrage:
#echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
8. VERIFICATIONS:
Les clients (10.0.1.100 et 10.0.2.100) devraient être capable de se voir l'un l'autre et accéder à
des ressources HTTP et HTTPS sur Internet.
Test de connectivités LAN à LAN:
Les clients (10.0.1.100 et 10.0.2.100) devraient être capable de se voir l'un l'autre. Les
commandes ping et traceroute peuvent être utilisées à ce propos.
Depuis le client 10.0.1.100 qui est une machine Linux:
#ping 10.0.2.100
#traceroute 10.0.2.100
traceroute to 10.0.2.100 (10.0.2.100), 30 hops max, 40 byte packets
1 10.0.1.1 (10.0.1.1) 0.521 ms 0.848 ms 1.011 ms
2 10.7.0.6 (10.7.0.6) 0.420 ms 0.472 ms 0505 ms
3 10.0.2.100 (10.0.2.100) 0.538 ms * *
Vérification de l'accès Internet HTTP:
Une façon de tester si le Pare-feu IPtables est configuré pour accepter le trafic HTTP (port
TCP 80) et HTTPS (port TCP 443) est d'utiliser un navigateur Internet ou encore plus simple,
la ligne de commande. Celle-ci peut être utilisée pour vérifier que les port TCP 80 ou TCP
443 sont ouverts avec le client telnet.
#telnet 100.0.0.100 80
Trying 100.0.0.100...
Connected to 100.0.0.100.
Escape character is '^]'.
[Date]
ing Manuel Cédric EBODE MBALLA 66
Bien-sûr, nous ne voyons qu'une bannière (Escape character is '^]'.) mais cela est suffisant
pour indiquer que le port est ouvert.
Pour comparer, voici le résultat que vous obtenez si vous testez un port fermé, par exemple le
port FTP TCP 21:
#telnet 100.0.0.100 21
Trying 100.0.0.100...
Table de routage:
Serveur:
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.7.0.0 0.0.0.0 255.255.255.248 U 0 0 0 tap0
10.0.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
10.0.2.0 10.7.0.6 255.255.255.0 UG 0 0 0 tap0
50.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
0.0.0.0 50.0.0.100 0.0.0.0 UG 0 0 0 eth0
Client:
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.7.0.0 0.0.0.0 255.255.255.248 U 0 0 0 tap0
10.0.2.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
10.0.1.0 10.7.0.1 255.255.255.0 UG 0 0 0 tap0
100.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
0.0.0.0 100.0.0.100 0.0.0.0 UG 0 0 0 eth0
[Date]
ing Manuel Cédric EBODE MBALLA 67
TCPdump
TCPdump est utilisé ci-dessous pour vérifier que le trafic à l'intérieur du tunnel OpenVPN
dans le premier exemple and sur le port 2000 de l'interface WAN de Linux dans le second
exemple. Les deux exemples sont effectués sur le serveur OpenVPN.
#tcpdump -i tap0 -n
- n: numeric
- i: interface
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on tap0, link-type EN10MB (Ethernet), capture size 96 bytes
IP 10.7.0.1 > 10.7.0.6: ICMP echo request, id 1824, seq 60, length 64
IP 10.7.0.6 > 10.7.0.1: ICMP echo reply, id 1824, seq 60, length 64
IP 10.7.0.1 > 10.7.0.6: ICMP echo request, id 1824, seq 61, length 64
#tcpdump -i eth0 port 2000 -n
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
IP 50.0.0.1.2000 > 100.0.0.1.2001: UDP, length 145
IP 100.0.0.1.2001 > 50.0.0.1.2000: UDP, length 145
IP 50.0.0.1.2000 > 100.0.0.1.2001: UDP, length 145
IP 100.0.0.1.2001 > 50.0.0.1.2000: UDP, length 145
IP 50.0.0.1.2000 > 100.0.0.1.2001: UDP, length 145
IP 100.0.0.1.2001 > 50.0.0.1.2000: UDP, length 145
9. SCRIPT DE DEMARRAGE
OpenVPN
Le logiciel OpenVPN est configuré pour être lancé automatiquement quand le système
démarre.
Pour configurer manuellement OpenVPN pour être lancé automatiquement au démarrage:
#update-rc.d openvpn defaults
Pour prévenir OpenVPN de démarrer automatiquement au démarrage:
#update-rc.d -f openvpn remove
[Date]
ing Manuel Cédric EBODE MBALLA 68
IPtables
Les commandes IPtables ont besoin d'être ajoutée dans un fichier appelé "iptables.sh" qui sera
exécuté quand le système Linux démarre.
Le fichier étant stocké dans le dossier /root .
Ajoutez une ligne dans le fichier /etc/crontab pour démarrer les commandes IPtables
automatiquement à chaque démarrage:
#vim /etc/crontab
@reboot root /root/iptables.sh >> /dev/null
- Fichier serveur OpenVPN.
/home/root/iptables.sh
# Paramètres IPtables du serveur OpenVPN
#
#ANNULER vos paramètres IPtables:
iptables -F
#
#STRATEGIES PAR DEFAUT:
#
iptables -P OUTPUT DROP
iptables -P INPUT DROP
iptables -P FORWARD ACCEPT
#
#Autorisation du tunnel OpenVPN:
#
iptables -A INPUT -i eth0 -p udp -s 100.0.0.1 -d 50.0.0.1 --sport 2001 --dport
2000 -j ACCEPT
iptables -A OUTPUT -o eth0 -p udp -s 50.0.0.1 -d 100.0.0.1 --sport 2000 --
dport 2001 -j ACCEPT
#
#Autorisation de tout le trafic dans le tunnel:
#
iptables -A INPUT -i tap+ -p all -j ACCEPT
iptables -A OUTPUT -o tap+ -p all -j ACCEPT
#
#Tous le trafic de et vers l'interface LAN (eth1) est acceptée:
#
[Date]
ing Manuel Cédric EBODE MBALLA 69
iptables -A INPUT -i eth1 -p all -s 10.0.1.0/24 -j ACCEPT
iptables -A OUTPUT -o eth1 -p all -d 10.0.1.0/24 -j ACCEPT
#
#Règles de NAT:
#
iptables -t nat -A POSTROUTING -j MASQUERADE
#
#Les utilisateurs du LAN sont autorisés à accéder aux ressources Internet
HTTP et HTTPS seulement:
#
iptables -A OUTPUT -p tcp -m multiport --dports 80,443 -o eth0 -j
ACCEPT
iptables -A INPUT -p tcp -m multiport --sports 80,443 -i eth0 -m state --state
ESTABLISHED -j ACCEPT
#
# REGLES FACULTATIVES:
#
#Règles pour autoriser le client SSH local à accéder à un serveur SSH
distant:
#
iptables -A OUTPUT -p tcp -o eth0 --dport 22 -s 50.0.0.1 -j ACCEPT
iptables -A INPUT -p tcp --sport 22 -i eth0 -d 50.0.0.1 -m state --state
ESTABLISHED -j ACCEPT
#
#Règles pour permettre aux clients SSH distants d'accéder au serveur SSH
local:
#
iptables -A INPUT -p tcp --dport 22 -i eth0 -d 50.0.0.1 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -o eth0 -s 50.0.0.1 -m state --state
ESTABLISHED -j ACCEPT
#
#Pour les tests de connectivités, 50.0.0.1 et 100.0.0.1 peuvent se pinger
mutuellement.
#
iptables -A INPUT -p icmp -i eth0 -s 100.0.0.1 -d 50.0.0.1 -j ACCEPT
iptables -A OUTPUT -p icmp -o eth0 -d 100.0.0.1 -s 50.0.0.1 -j ACCEPT
- OpenVPN client file.
/home/root/iptables.sh
# Paramètres IPtables du client OpenVPN
#
[Date]
ing Manuel Cédric EBODE MBALLA 70
#ANNULER vos paramètres IPtables:
iptables -F
#
#STRATEGIES PAR DEFAUT:
#
iptables -P OUTPUT DROP
iptables -P INPUT DROP
iptables -P FORWARD ACCEPT
#
#Autorisation du tunnel OpenVPN:
#
iptables -A INPUT -i eth0 -p udp -s 50.0.0.1 -d 100.0.0.1 --sport 2000 --dport
2001 -j ACCEPT
iptables -A OUTPUT -o eth0 -p udp -s 100.0.0.1 -d 50.0.0.1 --sport 2001 --
dport 2000 -j ACCEPT
#
#Autorisation de tout le trafic dans le tunnel:
#
iptables -A INPUT -i tap+ -p all -j ACCEPT
iptables -A OUTPUT -o tap+ -p all -j ACCEPT
#
#Tous le trafic de et vers l'interface LAN (eth1) est acceptée:
#
iptables -A INPUT -i eth1 -p all -s 10.0.2.0/24 -j ACCEPT
iptables -A OUTPUT -o eth1 -p all -d 10.0.2.0/24 -j ACCEPT
#
#Règles de NAT:
#
iptables -t nat -A POSTROUTING -j MASQUERADE
#
#Les utilisateurs du LAN sont autorisés à accéder aux ressources Internet
HTTP et HTTPS seulement:
#
iptables -A OUTPUT -p tcp -m multiport --dports 80,443 -o eth0 -j
ACCEPT
iptables -A INPUT -p tcp -m multiport --sports 80,443 -i eth0 -m state --state
ESTABLISHED -j ACCEPT
#
#REGLES FACULTATIVES:
#
#Règles pour autoriser le client SSH local à accéder à un serveur SSH
distant:
[Date]
ing Manuel Cédric EBODE MBALLA 71
#
iptables -A OUTPUT -p tcp -o eth0 --dport 22 -s 100.0.0.1 -j ACCEPT
iptables -A INPUT -p tcp --sport 22 -i eth0 -d 100.0.0.1 -m state --state
ESTABLISHED -j ACCEPT
#
#Règles pour permettre aux clients SSH distants d'accéder au serveur SSH
local:
#
iptables -A INPUT -p tcp --dport 22 -i eth0 -d 100.0.0.1 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -o eth0 -s 100.0.0.1 -m state --state
ESTABLISHED -j ACCEPT
#
#Pour les tests de connectivités, 50.0.0.1 et 100.0.0.1 peuvent se pinger
mutuellement.
#
iptables -A INPUT -p icmp -i eth0 -s 50.0.0.1 -d 100.0.0.1 -j ACCEPT
iptables -A OUTPUT -p icmp -o eth0 -d 50.0.0.1 -s 100.0.0.1 -j ACCEPT
La toute dernière chose à faire est de configurer les permissions du fichier /root/iptables.sh.
L'utilisateur root a les permissions lecture/écriture/exécution. N'importe qui d'autre n'a aucune
permission.
#chmod 700 /root/iptables.sh
L'utilisateur root est le propriétaire du fichier /root/iptables.sh.
#chown root /root/iptables.sh

Contenu connexe

Tendances

mis en place dun vpn site à site
mis en place dun vpn site à site mis en place dun vpn site à site
mis en place dun vpn site à site
Manuel Cédric EBODE MBALLA
 
Mise en place d'un vpn site à site avec pfsense
Mise en place d'un vpn site à site avec pfsenseMise en place d'un vpn site à site avec pfsense
Mise en place d'un vpn site à site avec pfsense
Pape Moussa SONKO
 
Implémentation d'openvpn
Implémentation d'openvpnImplémentation d'openvpn
Implémentation d'openvpn
Dimitri LEMBOKOLO
 
Supervision de réseau informatique - Nagios
Supervision de réseau informatique - NagiosSupervision de réseau informatique - Nagios
Supervision de réseau informatique - Nagios
Aziz Rgd
 
Serveur Zabbix
Serveur ZabbixServeur Zabbix
Serveur Zabbix
Damien Morisseau
 
Vpn
VpnVpn
Vpn
kwabo
 
Active directory Intégration machine
Active directory Intégration machine Active directory Intégration machine
Active directory Intégration machine
Yaya N'Tyeni Sanogo
 
Mise en place de vlan au sein d'un réseau
Mise en place de vlan au sein d'un réseauMise en place de vlan au sein d'un réseau
Mise en place de vlan au sein d'un réseau
Georges Amichia
 
radius
radiusradius
Mise en place d’un système de détection
Mise en place d’un système de détectionMise en place d’un système de détection
Mise en place d’un système de détection
Manassé Achim kpaya
 
MISE EN PLACE D’ UN VPN (SITE-TO-SITE) AU SEIN D’ UNE ENTREPRISE : CAS DE LA ...
MISE EN PLACE D’ UN VPN (SITE-TO-SITE) AU SEIN D’ UNE ENTREPRISE : CAS DE LA ...MISE EN PLACE D’ UN VPN (SITE-TO-SITE) AU SEIN D’ UNE ENTREPRISE : CAS DE LA ...
MISE EN PLACE D’ UN VPN (SITE-TO-SITE) AU SEIN D’ UNE ENTREPRISE : CAS DE LA ...
DENAGNON FRANCK ✔
 
Rapport finiale
Rapport finialeRapport finiale
Rapport finiale
marwenbencheikhali
 
Rapport de stage nagios
Rapport de stage nagiosRapport de stage nagios
Rapport de stage nagios
hindif
 
Pfsense 121202023417-phpapp02
Pfsense 121202023417-phpapp02Pfsense 121202023417-phpapp02
Pfsense 121202023417-phpapp02Mohamed Houssem
 
VPN - Virtual Private Network
VPN - Virtual Private NetworkVPN - Virtual Private Network
VPN - Virtual Private Network
julienlfr
 
Installer et configurer NAGIOS sous linux
Installer et configurer NAGIOS sous linuxInstaller et configurer NAGIOS sous linux
Installer et configurer NAGIOS sous linux
Zakariyaa AIT ELMOUDEN
 
Windows server 2012 r2
Windows server 2012 r2Windows server 2012 r2
Windows server 2012 r2
Ousmane BADJI
 
sécurité informatique
sécurité informatiquesécurité informatique
sécurité informatique
Mohammed Zaoui
 

Tendances (20)

mis en place dun vpn site à site
mis en place dun vpn site à site mis en place dun vpn site à site
mis en place dun vpn site à site
 
Mise en place d'un vpn site à site avec pfsense
Mise en place d'un vpn site à site avec pfsenseMise en place d'un vpn site à site avec pfsense
Mise en place d'un vpn site à site avec pfsense
 
Implémentation d'openvpn
Implémentation d'openvpnImplémentation d'openvpn
Implémentation d'openvpn
 
Tuto pfsense
Tuto pfsenseTuto pfsense
Tuto pfsense
 
Supervision de réseau informatique - Nagios
Supervision de réseau informatique - NagiosSupervision de réseau informatique - Nagios
Supervision de réseau informatique - Nagios
 
Serveur Zabbix
Serveur ZabbixServeur Zabbix
Serveur Zabbix
 
Vpn
VpnVpn
Vpn
 
Active directory Intégration machine
Active directory Intégration machine Active directory Intégration machine
Active directory Intégration machine
 
Mise en place de vlan au sein d'un réseau
Mise en place de vlan au sein d'un réseauMise en place de vlan au sein d'un réseau
Mise en place de vlan au sein d'un réseau
 
radius
radiusradius
radius
 
Mise en place d’un système de détection
Mise en place d’un système de détectionMise en place d’un système de détection
Mise en place d’un système de détection
 
MISE EN PLACE D’ UN VPN (SITE-TO-SITE) AU SEIN D’ UNE ENTREPRISE : CAS DE LA ...
MISE EN PLACE D’ UN VPN (SITE-TO-SITE) AU SEIN D’ UNE ENTREPRISE : CAS DE LA ...MISE EN PLACE D’ UN VPN (SITE-TO-SITE) AU SEIN D’ UNE ENTREPRISE : CAS DE LA ...
MISE EN PLACE D’ UN VPN (SITE-TO-SITE) AU SEIN D’ UNE ENTREPRISE : CAS DE LA ...
 
Rapport finiale
Rapport finialeRapport finiale
Rapport finiale
 
Rapport de stage nagios
Rapport de stage nagiosRapport de stage nagios
Rapport de stage nagios
 
Pfsense 121202023417-phpapp02
Pfsense 121202023417-phpapp02Pfsense 121202023417-phpapp02
Pfsense 121202023417-phpapp02
 
VPN - Virtual Private Network
VPN - Virtual Private NetworkVPN - Virtual Private Network
VPN - Virtual Private Network
 
Installer et configurer NAGIOS sous linux
Installer et configurer NAGIOS sous linuxInstaller et configurer NAGIOS sous linux
Installer et configurer NAGIOS sous linux
 
VPN: SSL vs IPSEC
VPN: SSL vs IPSECVPN: SSL vs IPSEC
VPN: SSL vs IPSEC
 
Windows server 2012 r2
Windows server 2012 r2Windows server 2012 r2
Windows server 2012 r2
 
sécurité informatique
sécurité informatiquesécurité informatique
sécurité informatique
 

Similaire à VPN WINDOWS LINUX OPENVPN

Openvpn avec un client windows
Openvpn avec un client windows Openvpn avec un client windows
Openvpn avec un client windows
Yaya N'Tyeni Sanogo
 
Virtual Private Network Virtual Private Network
Virtual Private Network Virtual Private NetworkVirtual Private Network Virtual Private Network
Virtual Private Network Virtual Private Network
mia884611
 
VPN (3).pptx
VPN (3).pptxVPN (3).pptx
VPN (3).pptx
NabilTouj1
 
Les Vpn
Les VpnLes Vpn
Les Vpn
medalaa
 
Pre sou-edit1
Pre sou-edit1Pre sou-edit1
Pre sou-edit1
Al Ousseynou Gueye
 
chapitre 6 vpn (1).pptx
chapitre 6 vpn (1).pptxchapitre 6 vpn (1).pptx
chapitre 6 vpn (1).pptx
WiemAssadi
 
Vpn site to site avec les équipements JUNIPER
Vpn site to site avec les équipements JUNIPERVpn site to site avec les équipements JUNIPER
Vpn site to site avec les équipements JUNIPER
Hermann Gbilimako
 
présentation sur le vpn
présentation sur le vpn présentation sur le vpn
présentation sur le vpn
Manuel Cédric EBODE MBALLA
 
Hady bah l3
Hady bah l3Hady bah l3
Hady bah l3
MamadouHadyBah
 
Weos tunnel ssl hôte à site
Weos   tunnel ssl hôte à siteWeos   tunnel ssl hôte à site
Weos tunnel ssl hôte à site
Fabian Vandendyck
 
vpn-site-a-site-avec-des-routeurs-cisco
 vpn-site-a-site-avec-des-routeurs-cisco vpn-site-a-site-avec-des-routeurs-cisco
vpn-site-a-site-avec-des-routeurs-cisco
Camara Assane
 
Prise en Main des équipements JUNIPER
Prise en Main des équipements JUNIPERPrise en Main des équipements JUNIPER
Prise en Main des équipements JUNIPER
Hermann GBILIMAKO
 
Etude de la WIFI sur NS2
Etude de la WIFI sur NS2Etude de la WIFI sur NS2
Etude de la WIFI sur NS2
Chiheb Ouaghlani
 
Programmation réseau en JAVA
Programmation réseau en JAVAProgrammation réseau en JAVA
Programmation réseau en JAVA
Bachir Benyammi
 
Socket tcp ip client server on langace c
Socket tcp ip client server on langace c Socket tcp ip client server on langace c
Socket tcp ip client server on langace c
mouad Lousimi
 
Rapport d’installation d’un serveur de messagerie avec le Webmail Roundcube
Rapport d’installation d’un serveur de  messagerie avec le Webmail RoundcubeRapport d’installation d’un serveur de  messagerie avec le Webmail Roundcube
Rapport d’installation d’un serveur de messagerie avec le Webmail Roundcube
Balla Moussa Doumbouya
 

Similaire à VPN WINDOWS LINUX OPENVPN (20)

Openvpn avec un client windows
Openvpn avec un client windows Openvpn avec un client windows
Openvpn avec un client windows
 
Virtual Private Network Virtual Private Network
Virtual Private Network Virtual Private NetworkVirtual Private Network Virtual Private Network
Virtual Private Network Virtual Private Network
 
Pfsense
PfsensePfsense
Pfsense
 
VPN (3).pptx
VPN (3).pptxVPN (3).pptx
VPN (3).pptx
 
Les Vpn
Les VpnLes Vpn
Les Vpn
 
Pre sou-edit1
Pre sou-edit1Pre sou-edit1
Pre sou-edit1
 
chapitre 6 vpn (1).pptx
chapitre 6 vpn (1).pptxchapitre 6 vpn (1).pptx
chapitre 6 vpn (1).pptx
 
Vpn site to site avec les équipements JUNIPER
Vpn site to site avec les équipements JUNIPERVpn site to site avec les équipements JUNIPER
Vpn site to site avec les équipements JUNIPER
 
présentation sur le vpn
présentation sur le vpn présentation sur le vpn
présentation sur le vpn
 
23508212 vpn
23508212 vpn23508212 vpn
23508212 vpn
 
Ccnp securite vpn
Ccnp securite vpnCcnp securite vpn
Ccnp securite vpn
 
Hady bah l3
Hady bah l3Hady bah l3
Hady bah l3
 
Weos tunnel ssl hôte à site
Weos   tunnel ssl hôte à siteWeos   tunnel ssl hôte à site
Weos tunnel ssl hôte à site
 
Vpn
VpnVpn
Vpn
 
vpn-site-a-site-avec-des-routeurs-cisco
 vpn-site-a-site-avec-des-routeurs-cisco vpn-site-a-site-avec-des-routeurs-cisco
vpn-site-a-site-avec-des-routeurs-cisco
 
Prise en Main des équipements JUNIPER
Prise en Main des équipements JUNIPERPrise en Main des équipements JUNIPER
Prise en Main des équipements JUNIPER
 
Etude de la WIFI sur NS2
Etude de la WIFI sur NS2Etude de la WIFI sur NS2
Etude de la WIFI sur NS2
 
Programmation réseau en JAVA
Programmation réseau en JAVAProgrammation réseau en JAVA
Programmation réseau en JAVA
 
Socket tcp ip client server on langace c
Socket tcp ip client server on langace c Socket tcp ip client server on langace c
Socket tcp ip client server on langace c
 
Rapport d’installation d’un serveur de messagerie avec le Webmail Roundcube
Rapport d’installation d’un serveur de  messagerie avec le Webmail RoundcubeRapport d’installation d’un serveur de  messagerie avec le Webmail Roundcube
Rapport d’installation d’un serveur de messagerie avec le Webmail Roundcube
 

Plus de Manuel Cédric EBODE MBALLA

Pres requis pour instalation des clients pour symantion endpoint
Pres requis pour instalation des clients pour symantion endpoint Pres requis pour instalation des clients pour symantion endpoint
Pres requis pour instalation des clients pour symantion endpoint
Manuel Cédric EBODE MBALLA
 
Tutoriel word
Tutoriel wordTutoriel word
Général réseau typologie et architecture
Général réseau typologie et architecture Général réseau typologie et architecture
Général réseau typologie et architecture
Manuel Cédric EBODE MBALLA
 
petit cours sur la sécurité des réseaux informatiques
petit cours sur la sécurité des réseaux informatiques petit cours sur la sécurité des réseaux informatiques
petit cours sur la sécurité des réseaux informatiques
Manuel Cédric EBODE MBALLA
 
mis en place d'une solution multi-tenant pour la supervision
mis en place d'une solution multi-tenant pour la supervisionmis en place d'une solution multi-tenant pour la supervision
mis en place d'une solution multi-tenant pour la supervision
Manuel Cédric EBODE MBALLA
 
Nessus outil d audit
Nessus outil d auditNessus outil d audit
Nessus outil d audit
Manuel Cédric EBODE MBALLA
 
Audit et sécurité des systèmes d'information
Audit et sécurité des systèmes d'informationAudit et sécurité des systèmes d'information
Audit et sécurité des systèmes d'information
Manuel Cédric EBODE MBALLA
 
Introduction informatique
Introduction informatiqueIntroduction informatique
Introduction informatique
Manuel Cédric EBODE MBALLA
 
tutoriel sur la mise en place d'une politique de sécurité informatique
tutoriel sur la mise en place d'une politique de sécurité informatiquetutoriel sur la mise en place d'une politique de sécurité informatique
tutoriel sur la mise en place d'une politique de sécurité informatique
Manuel Cédric EBODE MBALLA
 
politique de sécurité a mettre en place
politique de sécurité a mettre en place politique de sécurité a mettre en place
politique de sécurité a mettre en place
Manuel Cédric EBODE MBALLA
 

Plus de Manuel Cédric EBODE MBALLA (10)

Pres requis pour instalation des clients pour symantion endpoint
Pres requis pour instalation des clients pour symantion endpoint Pres requis pour instalation des clients pour symantion endpoint
Pres requis pour instalation des clients pour symantion endpoint
 
Tutoriel word
Tutoriel wordTutoriel word
Tutoriel word
 
Général réseau typologie et architecture
Général réseau typologie et architecture Général réseau typologie et architecture
Général réseau typologie et architecture
 
petit cours sur la sécurité des réseaux informatiques
petit cours sur la sécurité des réseaux informatiques petit cours sur la sécurité des réseaux informatiques
petit cours sur la sécurité des réseaux informatiques
 
mis en place d'une solution multi-tenant pour la supervision
mis en place d'une solution multi-tenant pour la supervisionmis en place d'une solution multi-tenant pour la supervision
mis en place d'une solution multi-tenant pour la supervision
 
Nessus outil d audit
Nessus outil d auditNessus outil d audit
Nessus outil d audit
 
Audit et sécurité des systèmes d'information
Audit et sécurité des systèmes d'informationAudit et sécurité des systèmes d'information
Audit et sécurité des systèmes d'information
 
Introduction informatique
Introduction informatiqueIntroduction informatique
Introduction informatique
 
tutoriel sur la mise en place d'une politique de sécurité informatique
tutoriel sur la mise en place d'une politique de sécurité informatiquetutoriel sur la mise en place d'une politique de sécurité informatique
tutoriel sur la mise en place d'une politique de sécurité informatique
 
politique de sécurité a mettre en place
politique de sécurité a mettre en place politique de sécurité a mettre en place
politique de sécurité a mettre en place
 

VPN WINDOWS LINUX OPENVPN

  • 1. [Date] ing Manuel Cédric EBODE MBALLA 1 LE VPN CAS PRATIQUE SUR WINDOWS ET SUR LES DISTRIBUTIONS LINUX (OPEN VPN) Par ingénieur Manuel cédric EBODE MBALLA
  • 2. [Date] ing Manuel Cédric EBODE MBALLA 2 INTRODUCTION A l heure ou le monde deviens un de plus en plus un village planet terre ou la sécuritée la rapiditée la fiabilitée des echanges et des connexions et cela a des couts assez bas le monde de l informatique et des télécommunications se trouve ainsi un outil nécéssaire a la réalisation des divers projet de se fait une technollogie regroupant tous ses avantages a fait son apparution le VPN ( virtual privat network ) en francais RPV ( réseau privé virtuel ) VPN est un acronyme utilisé pour désigner le tunnel chiffré entre deux équipements à travers un réseau non sécurisé, typiquement Internet. Le VPN va regrouper les deux réseaux locaux derrière les équipements VPN et ainsi créer un unique réseau privé. Le mot "VPN" peut être utilisé à la fois pour sécuriser des liaisons site à site ou client à serveur Pou être considéré comme sécurisé, un VPN doit respecter les concepts de sécurité suivants: Confidentialité: Les données ne peuvent pas être vues dans un format lisible. Algorithmes typiques de chiffrement symétrique: DES, 3DES, AES, Blowfish Intégrité: Les données ne peuvent pas être modifiées.Algorithmes typiques de hachage: sha1, md5 Authentification:Les passerelles VPN s'assurent de l'identité de l'autre.Algorithmes typiques: RSA, DH c est donc cette technologie qui fera l’objet de mon projet de fin d’année implémenté grace a OPENVPN une solution open source proposant une prise en main pas très contraignante perméttant de réaliser un tel réseaux sous différente plate forme ou système d exploitation linux , windows... dans la suite de se rapport je vais dans un premier temps faire une présentation grossomodo du VPN puis suivra une présentation d OPENVPN et la création d un vpn grace a cette aplication. Avent de conclure je ferais une petite étude comparative entre le vpn et les méthodes traditionelles de connexion et d autre moyen de connexion car cella a une importance dans le choix de la technologie a utuliser selon les besoins
  • 3. [Date] ing Manuel Cédric EBODE MBALLA 3 A : PRESENTATION DU VPN 1 : Définition Qu’est ce qu’un VPN? Network :Un VPN permet d’interconnecter des sites distants => Réseau Private :Un VPN est réservé à un groupe d’usagers déterminés par authentification.Les données sont échangés de manière masquée au yeux des autres par cryptage => Privé Virtual :Un VPN repose essentiellement sur des lignes partagés et non dédiées Il n’est pas réellement déterminé.Il est construit par dessus un réseau public essentiellement. Il s’agit donc d’un réseau privé sécurisé construit par dessus un réseau public (Internet). Le schéma ci-dessous fournit le statut de l'état d'un paquet lorsqu'il passe sur le LAN et le VPN. 2 : Principes et sécurité du vpn Principes - Echange d’informations entre réseaux local - Accès distant aux réseaux locaux - Informations internes qui circulent - Informations stratégiques
  • 4. [Date] ing Manuel Cédric EBODE MBALLA 4 Tout cela a travers un réseau publique mondial et non sécurisé qui est internet dès lors on se pose la question de la sécurité d’un tel réseau Sécurité Ici il s’agit d’établir un tunnel sécurisé site à site ou site à client via un réseau de transit avec des méthodes bien définies comme : - Tunneling - Authentification - Chiffrement - Contrôle de l’intégrité des données B OPENVPN 1: Présentation Créé en 2002, Open est un outil open source utilisé pour construire des VPN site à site avec le protocole SSL/TLS ou avec des clefs partagées. Son rôle est de "tunneliser", de manière sécurisée, des données sur un seul port TCP/UDP à travers un réseau non sûr comme Internet et ainsi établir des VPN. - FACILITÉ La grande force d'OpenVPN est d'être extrêmement facile à installer et à configurer, ce qui est rarement le cas pour des outils utilisés pour créer des VPN - PORTABILITÉ OpenVPN peut être installé sur presque toutes les plateformes comme Linux, Microsoft Windows 2000/XP/Vista, OpenBSD, FreeBSD, NetBSD, Mac OS X et Solaris. Les systèmes Linux doivent avoir un noyau 2.4 ou supérieur. Le principe de configuration reste le même quel que soit la plate-forme utilisée - ARCHITECTURE CLIENT/SERVER OpenVPN est basé sur une architecture client/serveur. Il doit être installé aux deux extrémités du VPN, une est désignée comme serveur, l'autre comme client. - TUNNELLING OpenVPN crée un tunnel TCP ou UDP et ensuite chiffre les données à l'intérieur de celui- ci.Le port par défaut utilisé par OpenVPN est le port UDP 1194, basé sur un assignement officiel de port par l'IANA. Vous pouvez toutefois utiliser n'importe quel autre port et, depuis
  • 5. [Date] ing Manuel Cédric EBODE MBALLA 5 la version 2.0, un port unique peut être utilisé pour plusieurs tunnels sur le serveur OpenVPN. 2 : Installation et paramètres D'openvpn  Sur UBUNTU / DEBIAN - Pour voir la version d'OpenVPN disponible: #apt-cache policy openvpn openvpn: Installed: (none) Candidate: 2.0.9-8 Version table: 2.0.9-8 0 500 http://ch.archive.ubuntu.com gutsy/universe Packages -Pour télécharger et installer OpenVPN: #apt-get install openvpn - Pour voir les dépendances d'OpenVPN: #apt-cache depends openvpn openvpn |Depends: debconf Depends: cdebconf debconf Depends: libc6 Depends: liblzo2-2 Depends: libssl0.9.8 Suggests: openssl Suggests: resolvconf  Sur WINDOWS Bien sûr, il est toujours mieux d'installer OpenVPN sur un système open source comme Linux mais, dans certaines circonstances, il se peut qu'il soit nécessaire de l'installer sur du Microsoft Windows ... L'installation est extrêmement facile, téléchargez le fichier .exe, exécutez-le et cliquez sur les boutons "next" (ou "suivant") avec le paramétrage par défaut. Il n'y a pas de pré requis pour installer OpenVPN sur du Windows
  • 6. [Date] ing Manuel Cédric EBODE MBALLA 6 - Architecture Client/Server Parmi les deux boitiers OpenVPN, il est nécessaire d'en déclarer un en tant que serveur et l'autre en tant que client. Dans certains scenarios, chaque boitier peut être déclaré comme serveur ou client, mais dans d'autres, il est obligatoire de choisir spécifiquement un boitier comme serveur et l'autre comme client, nous verrons quand. Avant d'établir le VPN SSL, le client essaie d'abord de joindre le serveur sur un port spécifique, le serveur n'ayant pas besoin d'atteindre le client. Prenons un exemple où vous êtes dans un environnement professionnel et voulez établir un VPN avec un équipement directement connecté à Internet, disons un équipement à votre domicile. Dans ce cas usuel, le client peut atteindre le serveur mais pas le contraire, Ceci est due au fait que le client est situé dans un réseau local et se connecte à Internet via un proxy et un Pare-feu qui vont changer son adresse IP source par leur propre adresse IP ou un autre membre d'un pool. Bien-sûr, quand le tunnel est créé, le trafic en son intérieur est bidirectionnel. -Fichier De Configuration Créez un fichier où vous stockez votre configuration d'OpenVPN. Dans notre exemple, nous allons appeler ce fichier config.txt and le sauver dans le dossier /home/user/ ou "C:Program FilesOpenVPNconfig" selon s'il s'agit d'une machine Linux/Unix ou Microsoft. Les paramètres de configuration sont présentés dans les paragraphes suivants.
  • 7. [Date] ing Manuel Cédric EBODE MBALLA 7 DESIGNATION CLIENT/SERVEUR : SERVEUR CLIENT # ADRESSE IP DU SERVEUR # L'adresse IP WAN du client n'est pas # requise # ADRESSE IP DU SERVEUR remote 100.0.0.1 # - mode de tunnel Vous pouvez choisir entre un tunnel IP (pilote TUN) ou Ethernet (pilote TAP). Le tunneling IP est également appelé mode de routage tandis que le tunneling Ethernet est aussi appelé mode pont (bridging). Préférez le mode tunnel IP (par défaut) à moins que vous n'ayez besoin de faire passer du trafic ethernet comme du NetBios dans le tunnel. -port du tunnel Le port source et destination de tunneling est par défaut le port UDP 1194. Il est possible qu'il soit nécessaire de le changer pour des raisons d'ouverture de port sur le pare-feu autrement vous pouvez le garder telle quelle. Preferez les ports UDP. L'utilisation de TCP peut mener à la dégradation des performances. Comme la majorité des applications utilisent TCP, si un mode de tunnel TCP est également choisi, vous allez créer un tunnel TCP sur TCP (TCP over TCP). Ce mode de tunnel n'est pas recommandé parce qu'en cas de retransmissions de paquets à l'intérieur du tunnel, des recalcules vont intervenir dans les deux tunnels, ce qui va mener à de basses performancescomme un temps de réponse élevé. Préférez le protocole UDP pour tunneliser vos applications parce que UDP ne fournit pas de mecanisme de vérification d'erreur comme le fait TCP.
  • 8. [Date] ing Manuel Cédric EBODE MBALLA 8 SERVEUR ET CLIENT # TUNNEL TCP OU UDP # TCP tunnel proto tcp # Tunnel UDP est recommandé proto udp # Utilisez UDP ou TCP mais pas les deux # # PORT TCP OU UDP port 1194 -paramétrages du firewall: Vous devez vérifier que l'adresse IP de votre client OpenVPN peut atteindre l'adresse IP de votre serveur ainsi que le port TCP/UDP. Voici un exemple d'une règle de sécurité qui peut être implémenté sur le pare-feu du schéma ci-dessous. Grâce à la simplicité des configurations d'OpenVPN, les problèmes pour établir une connexion proviennent très souvent de restrictions d'adresses IP ou de ports sur le chemin entre le client et le serveur. -tunnel ethernet/ip Vous pouvez choisir de construire soit des VPN Ethernet, soit des VPN IP avec l'aide respectivement des pilotes TAP et TUN. TAP/TUN sont disponibles sur toutes les plates- formes et sont déjà présent avec les Linux noyau 2.4 et supérieur. Préférez TUN (par défaut) à moins que vous avez besoin de faire passer du trafic Ethernet comme du NetBios à l'intérieur du tunnel. Pour vérifier que les pilotes TUN/TAP sont chargés: #lsmod | grep tun
  • 9. [Date] ing Manuel Cédric EBODE MBALLA 9 tun 12672 1 Notons que le pilote "tun" est aussi le pilote TAP. Si vous n'avez aucune réponse, vous pouvez le moduler du noyau de la façon suivante: #modprobe tun SERVEUR et CLIENT # TUNNEL ETHERNET OU IP # "dev tun" will create a routed IP tunnel dev tun # "dev tap" will create an Ethernet IP tunnel dev tap # use "dev tun" or "dev tap" but not both Transparent tunnel: OpenVPN tunnelise juste les données sans authentification, confidentialité ou intégrité. En d'autres termes, il n'y a aucune vérification de sécurité et les données peuvent être vues quand elles transitent dans le tunnel. OpenVPN - Mode transparent Tunnel transparent: Il semble évident que le mode transparent d'OpenVPN ne devrait être utilisé seulement pour des tests à l'intérieur d'un réseau sécurisé.
  • 10. [Date] ing Manuel Cédric EBODE MBALLA 10 SERVEUR et CLIENT # Client AND Server configs # Pas d'intégrité (algorithme # de hachage) auth none # Pas de chiffrement (algorithme de chiffrement) cipher none Clefs partagées: Une combinaison secrète et permanente est partagées entre les deux passerelles VPN. SERVEUR et CLIENT # CLEFS PARTAGEES # Système LINUX static /home/user/openvpn/key.txt # Système Windows static "C:Program FilesOpenVPNconfigkey.txt" #openvpn /home/teddybear/openvpn/config.txt >openvpn "C:Program FilesOpenVPNconfigconfig.txt" SSL/TLS: Client ou serveur SSL/TLS: SERVEUR CLIENT # SERVEUR SSL/TLS tls-server # CLIENT SSL/TLS tls-client Certificats et clefs publiques: Chaque équipement doit avoir ses propres clefs privée et publique. La clef publique étant
  • 11. [Date] ing Manuel Cédric EBODE MBALLA 11 incluse dans un certificat. Le certificat de l'autorité de certification (CA) doit aussi être détenu par chaque équipement OpenVPN. SERVEUR CLIENT # CERTIFICATS ET CLEF PRIVEE # Certificat de l'autorité (clef publique du CA) ca ca.key # Certificat du server (clef publique du serveur) cert server.crt # Clef privée du serveur key server.key # CERTIFICATS AND CLEF PRIVEE # Certificat de l'autorité (clef publique du CA) ca ca.key # Certificat du client (clef publique du serveur) cert client.crt # Clef privée du client key client.key Paramètres Diffie-Hellmann (DH): Une fois que les boitiers OpenVPN sont surs de l'identité de l'autre (authenticité), DH peut être utilisé pour créer une clef secrète partagée pour les algorithmes de fonction de hachage (intégrité) et de chiffrement (confidentialité). En combinant une clef DH privée avec la clef DH public de l'autre boitier OpenVPN, il est possible de calculer une clef partagée secrète que seules les deux machines OpenVPN connaissent. Cette clef DH partagée peut être comparée à la clef partagée OpenVPN. Ces clefs partagées seront utilisées par les algorithmes de chiffrement symétrique et fonctions de hachage comme montré dans les deux prochains paragraphes. Algorithme de chiffrement SERVEUR CLIENT # Paramètres Diffie-Hellman dh dh1024.pem # Aucun paramètre DH sur le client #
  • 12. [Date] ing Manuel Cédric EBODE MBALLA 12 SERVEUR et CLIENT # ALGORITHME DE CHIFFREMENT cipher AES-256-CBC - La confidentialité est assurée par des algorithmes de chiffrement comme 3DES ou AES pour empêcher la lecture des données. L'algorithme OpenVPN par défaut est le Blowfish (signifiant poisson-lune en français). Pour vérifier les algorithmes disponibles: #openvpn --show-ciphers lgorithme De Hachage - L'intégrité utilise des fonctions de hachage pour protéger l'altération des données. HMAC est souvent utilisé en addition de SHA1 et MD5. Les fonctions de hachage par défaut de OpenVPN sont HMAC-SHA1. Pour vérifier les algorithmes disponibles: #openvpn --show-digests SERVEUR et CLIENT # ALGORITHME DE HACHAGE auth MD5 NB "openvpn --show-tls" affiche le chiffrement et le code d'authentification du message (MAC) utilisé durant la négociation SSL/TLS. Ils ne doivent pas être confondus avec le chiffrement et le MAC utilisé pour sécuriser le tunnel. -Adresses ip Choisissez les adresses IP que vous voulez utiliser à l'intérieur du tunnel. Adresses IP statiques: En mode routé, deux adresses IP (locale et distante) à l'intérieur d'un masque de sous-réseau de 30 bits doivent être choisi.
  • 13. [Date] ing Manuel Cédric EBODE MBALLA 13 En mode pont (bridged), une adresse pour le boitier local OpenVPN et un masque de sous- réseau incluant l'adresse IP du serveur sont choisis. SERVEUR CLIENT # ADDRESSAGE IP # Exemple mode IP: # Serveur IP: 10.8.0.1 ; Client IP: 10.8.0.2 ifconfig 10.8.0.1 10.8.0.2 # Exemple mode pont # Serveur IP: 10.8.0.1 ifconfig 10.8.0.1 255.255.255.0 # Utilisez le mode IP ou bridge mais # pas les deux # Le client et le serveur doivent utiliser # le même mode de tunnel # ADDRESSAGE IP # IP Tunnel # Serveur IP: 10.8.0.1 ; Client IP: 10.8.0.2 ifconfig 10.8.0.2 10.8.0.1 # Exemple mode pont # Client IP: 10.8.0.2 ifconfig 10.8.0.2 255.255.255.0 # # Utilisez le mode IP ou bridge mais # pas les deux # Le client et le serveur doivent utiliser # le même mode de tunnel Adresses IP dynamiques: Dans ce cas, le serveur possède une adresse IP statique et fournir des adresses IP aux clients comme un serveur DHCP. SERVEUR CLIENT # PARAMETRES DHCP # Etendue DHCP # Le serveur s'attribue la première # adresse de l'étendue server 10.8.0.0 255.255.255.0 # LE CLIENT ACCEPTE LES OPTIONS # DU SERVEUR # Le client devrait accepter les options # poussées par le serveur pull -Paramètres Optionnels OpenVPN offre un très large nombre de paramètres. parametres de journalisation La verbosité du journal (log) est configuré de 0 (minimal) à 15 (complet). Dans une
  • 14. [Date] ing Manuel Cédric EBODE MBALLA 14 utilisation normale, les niveaux verbeux "2" et "4" vont déjà fournir assez de journaux. # Niveau de verbosité. # 0 -- Erreurs fatales seulement. # 1 -- Très silencieux mais affiche des erreurs non-fatales. # 3 -- Sortie moyenne, idéal pour des opérations moyennes. # 9 -- verbeux, bon pour un dépannage. SERVEUR and CLIENT # VERBOSITE DU JOURNAL # Paramétrage de la verbosité du journal, 0=min 15=max verb 3 C : Utilisateur Openvpn Pour des raisons de sécurité, c'est toujours mieux de faire tourner un logiciel sans les privilèges root. Vous pouvez réduire les privilèges du démon OpenVPN après initialisation pour opérer en tant qu'utilisateur "nobody". Une autre chose intéressante pour la sécurité est de limiter le droit pour OpenVPN à accéder à des fichiers après initialisation avec "chroot". Ces deux paramètres de sécurité sont disponibles sous des systèmes comme Linux ou Unix mais pas sous Microsoft Windows. Une autre raison de préférer des outils open source comme les systèmes opérationels Linux ... SERVEUR and CLIENT # SECURITE OPENVPN - Linux seulement # Utilisateur OpenVPN user nobody # Après initialisation, OpenVPN peut # seulement accéder à un dossier # Le dossier peut être vide # Limitation du processus OpenVPN chroot /etc/openvpn/
  • 15. [Date] ing Manuel Cédric EBODE MBALLA 15 D : Lancement D'openvpn Utilisez la syntaxe suivante pour lancer OpenVPN. #openvpn chemin-du-fichier-de-configuration Ci-dessous deux exemples avec Linux et Windows. Le fichier de config est "config.txt": v #openvpn /home/teddybear/openvpn/config.txt >openvpn "C:Program FilesOpenVPNconfigconfig.txt" VERIFICATION DES JOURNAUX: Le journal devrait se terminer avec la ligne suivante: Initialization Sequence Completed Ceci indique que le tunnel OpenVPN a été créé avec succès. TESTS DE CONNECTIVITES : Ping est un utilitaire commun pour vérifier les connectivités IP. Les passerelles VPN devraient pinger l'adresse IP tunnel de l'autre. Par exemple, dans notre scenario, nous pingons l'adresse IP tunnel du client depuis le serveur: ping 10.8.0.2 Here are some OpenVPN default values: PARAMETRE: VALEUR: port source et dest: UDP 1194 Mode de tunnel: Tunnel IP (mode tun) Chiffrement symétrique: Blowfish - CBC (128 bits) Fonctions de hachage: HMAC - SHA1 (160 bits) Compression: NON MTU du tunnel: 1500 bytes mode verbeux: 0
  • 16. [Date] ing Manuel Cédric EBODE MBALLA 16 E : Modes de sécurité Lors de l'utilisation de clefs statiques, les deux passerelles VPN partagent la même clef pour chiffrer et déchiffrer les données. Dans ce cas, les configurations seront très simples mais le problème peut venir du fait qu'il est parfois nécessaire de transmettre la clef (à travers un canal sécurisé bien sûr) à quelqu'un dont vous n’avez pas confiance à l'autre bout du tunnel. L'infrastructure à clef publique (PKI pour Public Key Infrastructure en anglais) est utilisée pour résoudre ce problème. Elle est basée sur le fait que chaque partie possède deux clefs, une clef publique connue de tout le monde et une clef privée tenue secrète. Ce processus est utilisé par OpenSSL, la version gratuite et open source intégrée à OpenVPN, pour authentifier les machines VPN avant le chiffrement des données. les avantages des deux modes: Mode OpenVPN: Clefs partagées SSL Mode de cryptographie: Symétrique Asymétrique/Symétrique Implémentation: Plus facile Plus compliquée Vitesse: Plus rapide Plus lente Consommation CPU: Plus petite Plus grande Echange des clefs: OUI NON Renouvellement des clefs: NON OUI Authentification des passerelles: NON OUI Dans la suite, nous allons focaliser nos explications sur OpenVPN en mode SSL (cryptographie asymétrique) qui est recommandé par rapport au mode en clefs partagées (cryptographie symétrique). BRIDGING/ROUTING Vous pouvez choisir de construire soit un VPN Ethernet (mode Bridge ou Pont en anglais) ou soit un VPN IP (mode Routage) avec l'aide de respectivement, les pilotes réseaux TAP ou
  • 17. [Date] ing Manuel Cédric EBODE MBALLA 17 TUN. TAP/TUN sont disponibles sur toutes les plates-formes et sont déjà incorporé dans les noyaux Linux 2.4 ou supérieurs. OPTIONS Les options d'OpenVPN sont particulièrement importantes. Par exemple le serveur, peut fournir des routes réseaux au client ou peut être utilisé comme serveur DHCP. les concepts clefs du réseau et de la sécurité pour mieux comprendre l'outilOpenVPN. SSL Pendant plusieurs années, IPSec a été le seul protocole de sécurité disponible pour sécuriser les VPN site à site ou client à serveur. Par chance, cela a maintenant changé avec la sortie du protocole SSL. Disponible au début pour sécuriser seulement des protocoles comme HTTP, SSL est maintenant capable de sécuriser n'importe quelle application et de chiffrer des tunnels TCP ou UDP pour créer des VPNs site à site ou client à serveur. Dans ce tutorial, nous allons focaliser notre travail sur des VPN SSL site à site avec l'aide d'un excellent outil, OpenVPN ... DESCRIPTION SSL: SSL (pour Secure Sockets Layers, couche de sockets sécurisée en français) a été créé par Netscape dans les années 1990. Deux versions SSL sont sorties: v2 (1994) et v3 (1995). Le brevet a été ensuite racheté et mis à jour par l'IETF en 2001. Par la même occasion, il a été renommé en TLS qui signifie Transport Layer Security (RFC 2246). Le mot SSL est communément utilisé pour désigner à la fois les protocoles SSL et TLS. La dernière version de TLS est la version 1.1. BUT DE SSL: Les deux buts principaux de SSL sont les suivants: - Authentifier le serveur et le client en utilisant la PKI (Public Key Infrastructure). - Fournir une connexion chiffrée pour le client et le serveur pour échanger des messages. OpenVPN ET LE MODÈLE OSI: Où pourrions-nous placer le protocole SSL dans le modèle OSI? Le modèle standard OSI est composé de sept couches tandis qu'un modèle à quatre couches correspond mieux à l'architecture TCP/IP utilisée par une large majorité d'applications. SSL est situé entre la couche application et transport et va chiffrer la couche application.
  • 18. [Date] ing Manuel Cédric EBODE MBALLA 18 TYPE DE VPN SSL: Dans le passé, SSL était un protocole utilisé avec des applications spécifiques comme HTTP. Heureusement, depuis quelques années, il est maintenant capable de sécuriser les transactions de n'importe quelles applications à travers Internet et de créer des tunnels sécurisés (VPN) comme peut le faire IPSec. Il existe deux types de VPN: - VPN client à serveur (ou accès distant) où le client a besoin d'un navigateur Internet comme Firefox. - VPN site à site où un logiciel spécifique est requis comme OpenVPN OPENSSL: OpenVPN utilise une version gratuite et open source de SSL appelée OpenSSL pour les tâches de chiffrement et d'authentification. OpenSSL est une boite à outils composée de: - La librairie SSL. - La librairie de cryptographie. - L'outil de ligne de commande. La librairie de cryptographie implémente une large étendue d'algorithmes de cryptographie comme par exemple: - Algorithmes symétriques: Blowfish, DES, 3DES, AES, etc... - Certificats: x509 - fonctions de hachage: HMAC, MD5 OpenVPN - Clefs statiques partagées Le mode OpenVPN clefs partagées est plus facile à implémenter que le mode SSL/TSL but a le désavantage de: - Nécessiter le transport de la clef sur les deux équipements.
  • 19. [Date] ing Manuel Cédric EBODE MBALLA 19 - Ne pas bénéficier du renouvellement de la clef partagée. - Ne pas bénéficier d'authentification des passerelles. Vous pouvez créer un clef partagée très facilement avec OpenVPN sur n'importe quelle plate-forme. Une fois que vous avez créé une clef partagée, vous devez la copier sur l'autre boitier OpenVPN. Vous devriez la transmettre seulement par l'intermédiaire d'un protocole sécurisé comme SSH ou physiquement avec une disquette ou une clef USB. Pour créer une clef, procéder comme ceci: sur Linux: ##openvpn --genkey --secret /home/user/key.txt Sur Windows: Ouvrons le fichier de la clef que nous vous de créer:
  • 20. [Date] ing Manuel Cédric EBODE MBALLA 20 La clef OpenVPN est composée de caractères hexadécimaux et divisée en quatre parties. La première partie est utilisée en tant que clef pour chiffrer les données, la seconde pour la clef de l'algorithme de hachage. Par défaut, la clef pour chiffrer et déchiffrer les données sont similaires, le principe étant le même pour l'agorythme de hachage. La troisième et quatrième partie de la clef OpenVPN est utilisée dans le cas où vous voulez des clefs de chiffrement (1ère partie) et déchiffrement (3ème partie) différentes ainsi que des clefs de hachage pour le trafic sortant (2ème partie) et rentrant (4ème partie) également différentes. Ne pas confondre la clef OpenVPN qui est composée de 512 caractères hexadécimaux et les clefs utilisées par les algorithmes de chiffrement et de hachage pour sécuriser le tunnelOpenVPN qui sont composées de caractères hexadécimaux à l'intérieur de la clef openVPN. Par défaut, l'algorithme de chiffrement Blowfish (poisson-lune) est utilisé avec une clef de 128 bits (chiffrement et déchiffrement), 160 bits étant utilisé pour l'algorithme de hachage (trafic sortant et rentrant). Chaque caractère hexadécimal représente 4 bits de la clef, ceci signifie que 128 ou 160 bits vont représenter respectivement (128/4) 32 et (160/4) 40 caractères hexadécimaux. Dans notre exemple (paramétrage par défaut), les caractères hexadécimaux utilisés pour la clef sont affichés dans les carrés rouges ci-dessus. Les caractères qui ne sont pas utilisés pour les clefs peuvent être différents sur les deux fichiers de clef OpenVPN.
  • 21. [Date] ing Manuel Cédric EBODE MBALLA 21 CAS PRATIQUES A : Ethernet IP Dans ce scénario, nous allons créer un tunnel OpenVPN dans le mode pont ou Ethernet avec un paramètrage minimum. Une machine Microsoft Windows est utilisée en tant que client OpenVPN, un système linux en tant que serveur OpenVPN. 1. PAS DE SECURITÉ BOITIÉ VPN WINDOWS - CLIENT OPENVPN: fichier de configuration: La configuration ci-dessous est stockée dans le fichier "C:Program FilesOpenVPNconfigclient.txt". # OpenVPN server remote 100.0.0.2 # Tunnel mode dev tap # IP addresses ifconfig 10.8.0.2 10.8.0.1 # Cipher mode cipher none # Authentification mode auth none # Log verbosity verb 2
  • 22. [Date] ing Manuel Cédric EBODE MBALLA 22 Lancement d'OpenVPN C:Program FilesOpenVPNconfig>openvpn client.txt Sortie du journal: 1 2 5/6 7 8 9 10 11 12 OpenVPN 2.0.9 Win32-MinGW [SSL] [LZO] built on Oct 1 2006 IMPORTANT: OpenVPN's default port number is now 1194, based on an official port number assignment by IANA. OpenVPN 2.0-beta16 and earlier used 5000 as the default port. ******* WARNING *******: all encryption and authentication features disabled -- all data will be tunnelled as cleartext TAP-WIN32 device [Connexion au réseau local 3] opened: .Global{928ACEB1- D160-420A-ADD6-A72E816FC022}.tap TAP-Win32 MTU=1500 Notified TAP-Win32 driver to set a DHCP IP/netmask of 10.8.0.2/255.255.255.0 on interface {928ACEB1-D160-420A-ADD6-A72E816FC022} [DHCP-serv: 10.8.0.1, lease-time:31536000] Successful ARP Flush on interface [3] {928ACEB1-D160-420A-ADD6- A72E816FC022} Data Channel MTU parms [ L:1500 D:1450 EF:0 EB:4 ET:0 EL:0 ] Local Options hash (VER=V4): '00f97e1a' Expected Remote Options hash (VER=V4): '7cef60b0' UDPv4 link local (bound): [undef]:1194 UDPv4 link remote: 100.0.0.2:1194 Peer Connection Initiated with 100.0.0.2:1194 Initialization Sequence Completed Légende: 1. 2. 3. 4. Version OpenVPN Mode de security Algorythme de chiffrement Algorythme de hachage 5. 6. 7. 8. Pilotes TUN/TAP MTU du Tunnel IP locale du Tunnel IP distante du tunnel 9. 10. 11. 12 Port TCP ou UDP IP du serveur OpenVPN Equipement OpenVPN distant Status OpenVPN BOITIÉ VPN LINUX - SERVEUR OPENVPN: La configuration ci-dessous est stockée dans le fichier "/etc/openvpn/server.txt".
  • 23. [Date] ing Manuel Cédric EBODE MBALLA 23 # Mode tunnel dev tap # Adresses IP ifconfig 10.8.0.1 10.8.0.2 # Mode de chiffrement cipher none # Mode d'authentification auth none # Verbosité du journal verb 2 Lancement d'OpenVPN /etc/openvpn#openvpn server.txt Lisez des informations sur l'utilisation des scripts de démarrage OpenVPN. Sortie du journal: 1 5 7/8 6 9 10 12 OpenVPN 2.0.9 i486-pc-linux-gnu [SSL] [LZO] [EPOLL] built on May 21 2007 IMPORTANT: OpenVPN's default port number is now 1194, based on an official port number assignment by IANA. OpenVPN 2.0-beta16 and earlier used 5000 as the default port. ******* WARNING *******: all encryption and authentication features disabled -- all data will be tunnelled as cleartext TUN/TAP device tap0 opened ifconfig tap0 10.8.0.1 netmask 255.255.255.0 mtu 1500 broadcast 10.8.0.255 Data Channel MTU parms [ L:1500 D:1450 EF:0 EB:4 ET:0 EL:0 ] Local Options hash (VER=V4): '7cef60b0' Expected Remote Options hash (VER=V4): '00f97e1a' UDPv4 link local (bound): [undef]:1194 UDPv4 link remote: [undef] Peer Connection Initiated with 50.0.0.2:1194 Initialization Sequence Completed Poursuivez avec les statistiques réseaux 2. CLEFS PARTAGÉES BOITIÉ VPN WINDOWS - CLIENT OPENVPN:
  • 24. [Date] ing Manuel Cédric EBODE MBALLA 24 Fichier de configuration: La configuration ci-dessous est stockée dans le fichier "C:Program FilesOpenVPNconfigclient.txt". # Serveur OpenVPN remote 100.0.0.2 # Mode tunnel dev tap # Adresses IP ifconfig 10.8.0.2 10.8.0.1 # Clef partagée secret "C:Program FilesOpenVPNconfigkey.txt" # Verbosité du journal verb 2 Lancement d'OpenVPN C:Program FilesOpenVPNconfig>openvpn client.txt Log output: 1 2/3 4 5 6 7 8 9 10 OpenVPN 2.0.9 Win32-MinGW [SSL] [LZO] built on Oct 1 2006 IMPORTANT: OpenVPN's default port number is now 1194, based on an official port num. assignment by IANA. OpenVPN 2.0-beta16 and earlier used 5000 as the default port. Static Encrypt: Cipher 'BF-CBC' initialized with 128 bit key Static Encrypt: Using 160 bit message hash 'SHA1' for HMAC authentication Static Decrypt: Cipher 'BF-CBC' initialized with 128 bit key Static Decrypt: Using 160 bit message hash 'SHA1' for HMAC authentication TAP-WIN32 device [Local Area Connection 5] opened: .Global{E2D87AAD-28F7-432E-8A00-5E67BE6DD464}.tap TAP-Win32 MTU=1500 Notified TAP-Win32 driver to set a DHCP IP/netmask of 10.8.0.2/255.255.255.0 on interface {E2D87AAD-28F7-432E-8A00-5E67BE6DD464} [DHCP-serv: 10.8.0.1, lease-time: 31536000] Successful ARP Flush on interface [4] {E2D87AAD-28F7-432E-8A00- 5E67BE6DD464} Data Channel MTU parms [ L:1544 D:1450 EF:44 EB:4 ET:0 EL:0 ] Local Options hash (VER=V4): 'd3880969' Expected Remote Options hash (VER=V4): 'c41bf3b8' UDPv4 link local (bound): [undef]:1194
  • 25. [Date] ing Manuel Cédric EBODE MBALLA 25 12 UDPv4 link remote: 100.0.0.2:1194 Peer Connection Initiated with 100.0.0.2:1194 Initialization Sequence Completed Légende: 1. 2. 3. 4. Version OpenVPN Mode de security Algorythme de chiffrement Algorythme de hachage 5. 6. 7. 8. Pilotes TUN/TAP MTU du Tunnel IP locale du Tunnel IP distante du tunnel 9. 10. 11. 12 Port TCP ou UDP IP du serveur OpenVPN Equipement OpenVPN distant Status OpenVPN BOITIÉ VPN LINUX - SERVEUR OPENVPN: La configuration ci-dessous est stockée dans le fichier "/etc/openvpn/server.txt". # Mode tunnel dev tap # Adresses IP ifconfig 10.8.0.1 10.8.0.2 # Clef partagée secret /home/user/key.txt # Verbosité du journal verb 2 Lancement d'OpenVPN /etc/openvpn#openvpn server.txt Lisez des informations sur l'utilisation des scripts de démarrage OpenVPN. Sortie du journal : 1 2/3 4 5 OpenVPN 2.0.9 i486-pc-linux-gnu [SSL] [LZO] [EPOLL] built on Mar 2 2007 IMPORTANT: OpenVPN's default port number is now 1194, based on an official port num. assignment by IANA. OpenVPN 2.0-beta16 and earlier used 5000 as the default port. WARNING: file '/home/po/key.txt' is group or others accessible Static Encrypt: Cipher 'BF-CBC' initialized with 128 bit key Static Encrypt: Using 160 bit message hash 'SHA1' for HMAC authentication Static Decrypt: Cipher 'BF-CBC' initialized with 128 bit key Static Decrypt: Using 160 bit message hash 'SHA1' for HMAC authentication
  • 26. [Date] ing Manuel Cédric EBODE MBALLA 26 6/7 8 10 11 12 TUN/TAP device tap0 opened ifconfig tap0 10.8.0.1 netmask 255.255.255.0 mtu 1500 broadcast 10.8.0.255 Data Channel MTU parms [ L:1544 D:1450 EF:44 EB:4 ET:0 EL:0 ] Local Options hash (VER=V4): 'c41bf3b8' Expected Remote Options hash (VER=V4): 'd3880969' UDPv4 link local (bound): [undef]:1194 UDPv4 link remote: [undef] Peer Connection Initiated with 50.0.0.2:1194 Initialization Sequence Completed Poursuivez avec les statistiques réseaux 3. SSL BOITIÉ VPN WINDOWS - CLIENT OPENVPN : Fichier de configuration: La configuration ci-dessous est stockée dans le fichoer "C:Program FilesOpenVPNconfigclient.txt". # TLS mode - client tls-client # openVPN server remote 100.0.0.2 # Tunnel mode dev tap # IP addresses ifconfig 10.8.0.2 10.8.0.1 # CA certificate ca "C:Program FilesOpenVPNeasy-rsakeysca.crt" # client certificate cert "C:Program FilesOpenVPNeasy-rsakeysserver.crt" # client private key key "C:Program FilesOpenVPNeasy-rsakeysserver.key" # Log verbosity verb 2 Lancement d'OpenVPN C:Program FilesOpenVPNconfig>openvpn client.txt
  • 27. [Date] ing Manuel Cédric EBODE MBALLA 27 Sortie du journal: 1 5 6 7 8 9 10 15 14 3 4 2 11 12 OpenVPN 2.0.9 Win32-MinGW [SSL] [LZO] built on Oct 1 2006 IMPORTANT: OpenVPN's default port number is now 1194, based on an official port number assignment by IANA. OpenVPN 2.0-beta16 and earlier used 5000 as the default port. WARNING: No server certificate verification method has been enabled. See http://openvpn.net/howto.html#mitm for more info. Control Channel MTU parms [ L:1541 D:138 EF:38 EB:0 ET:0 EL:0 ] TAP-WIN32 device [Connexion au réseau local 3] opened: .Global{928ACEB1- D160-420A-ADD6-A72E816FC022}.tap TAP-Win32 MTU=1500 Notified TAP-Win32 driver to set a DHCP IP/netmask of 10.8.0.2/255.255.255.0 on interface {928ACEB1-D160-420A-ADD6-A72E816FC022} [DHCP-serv: 10.8.0.1, lease-time: 31536000] Successful ARP Flush on interface [3] {928ACEB1-D160-420A-ADD6- A72E816FC022} Data Channel MTU parms [ L:1541 D:1450 EF:41 EB:4 ET:0 EL:0 ] Local Options hash (VER=V4): '4685920e' Expected Remote Options hash (VER=V4): '2e130e6f' UDPv4 link local (bound): [undef]:1194 UDPv4 link remote: 100.0.0.2:1194 TLS Error: local/remote TLS keys are out of sync: 100.0.0.2:1194 [0] VERIFY OK: depth=1, /C=US/ST=CA/L=SanFrancisco/O=OpenManiak/ CN=OpenManiak_CA/emailAddress=me@myhost.mydomain VERIFY OK: depth=0, /C=US/ST=CA/L=SanFrancisco/O=OpenManiak/ CN=server/emailAddress=me@myhost.mydomain Data Channel Encrypt: Cipher 'BF-CBC' initialized with 128 bit key Data Channel Encrypt: Using 160 bit message hash 'SHA1' for HMAC authentication Data Channel Decrypt: Cipher 'BF-CBC' initialized with 128 bit key Data Channel Decrypt: Using 160 bit message hash 'SHA1' for HMAC authentication Control Channel: TLSv1, cipher TLSv1/SSLv3 DHE-RSA-AES256-SHA, 1024 bit RSA [server] Peer Connection Initiated with 100.0.0.2:1194 Initialization Sequence Completed Légende: 1. 2. 3. Version OpenVPN Mode de security Algorythme de chiffrement 5. 6. 7. Pilotes TUN/TAP MTU du Tunnel IP locale du Tunnel 9. 10. 11. Port TCP ou UDP IP du serveur OpenVPN Equipement OpenVPN distant
  • 28. [Date] ing Manuel Cédric EBODE MBALLA 28 4.Algorythme de hachage 8.IP distante du tunnel 12 Status OpenVPN 13. 14. 15. Certificat client Certificat serveur Certificat du CA BOITIÉ VPN LINUX - SERVEUR OPENVPN: La configuration est stockée dans le fichier "/etc/openvpn/server.txt". # TLS mode - server tls-server # Tunnel mode dev tap # IP addresses ifconfig 10.8.0.1 10.8.0.2 # CA certificate ca ca.crt # server certificate cert client.crt # server private key key server.key # Diffie-Hellman Settings dh dh1024.pem # Log verbosity verb 2 Lancement d'OpenVPN /etc/openvpn#openvpn server.txt Lisez des informations sur l'utilisation des scripts de démarrage OpenVPN. Log output: 1 5 6/7 8 OpenVPN 2.0.9 i486-pc-linux-gnu [SSL] [LZO] [EPOLL] built on May 21 2007 IMPORTANT: OpenVPN's default port number is now 1194, based on an official port number assignment by IANA. OpenVPN 2.0-beta16 and earlier used 5000 as the default port. Control Channel MTU parms [ L:1541 D:138 EF:38 EB:0 ET:0 EL:0 ] TUN/TAP device tap0 opened ifconfig tap0 10.8.0.1 netmask 255.255.255.0 mtu 1500 broadcast 10.8.0.255
  • 29. [Date] ing Manuel Cédric EBODE MBALLA 29 9 15 13 3 4 2 11 12 Data Channel MTU parms [ L:1541 D:1450 EF:41 EB:4 ET:0 EL:0 ] Local Options hash (VER=V4): '2e130e6f' Expected Remote Options hash (VER=V4): '4685920e' UDPv4 link local (bound): [undef]:1194 UDPv4 link remote: [undef] VERIFY OK: depth=1, /C=US/ST=CA/L=SanFrancisco/O=OpenManiak/ CN=OpenManiak_CA/emailAddress=me@myhost.mydomain VERIFY OK: depth=0, /C=US/ST=CA/L=SanFrancisco/O=OpenManiak/ CN=client/emailAddress=me@myhost.mydomain Data Channel Encrypt: Cipher 'BF-CBC' initialized with 128 bit key Data Channel Encrypt: Using 160 bit message hash 'SHA1' for HMAC authentication Data Channel Decrypt: Cipher 'BF-CBC' initialized with 128 bit key Data Channel Decrypt: Using 160 bit message hash 'SHA1' for HMAC authentication Control Channel: TLSv1, cipher TLSv1/SSLv3 DHE-RSA-AES256-SHA, 1024 bit RSA [client] Peer Connection Initiated with 50.0.0.2:1194 Initialization Sequence Completed Poursuivez avec les statistiques réseaux STATISTIQUES RÉSEAUX : (similaires pour les trois études de cas) INTERFACES: Client OpenVPN C:>ipconfig Windows IP Configuration Ethernet adapter Local Area Connection: Connection-specific DNS Suffix . : IP Address. . . . . . . . . . . . . . . : 50.0.0.2 Subnet Mask . . . . . . . . . . . . . : 255.255.255.0 Default Gateway . . . . . . . . . . . : 50.0.0.1
  • 30. [Date] ing Manuel Cédric EBODE MBALLA 30 Ethernet adapter Local Area Connection 1: Connection-specific DNS Suffix . IP Address. . . . . . . . . . . . . . . : 10.8.0.2 Subnet Mask . . . . . . . . . . . . . : 255.255.255.0 Default Gateway . . . . . . . . . . . : Serveur OpenVPN #ifconfig eth0 Link encap:Ethernet HWaddr 11:22:33:44:55:66 inet adr:100.0.0.2 Bcast:100.0.0.255 Mask:255.255.255.0 adr inet6: fe80::212:3fff:3344:5566/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX Packets:1641 errors:0 :0 overruns:0 frame:0 TX packets:2130 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:186894 (182.5 KiB) Octets transmis:231430 (226.0 KiB) Interrupt:16 lo Link encap:Local Loopback inet adr:127.0.0.1 Mask:255.0.0.0 adr inet6: ::1/128 Scope:Host
  • 31. [Date] ing Manuel Cédric EBODE MBALLA 31 UP LOOPBACK RUNNING MTU:16436 Metric:1 RX Packets:929 errors:0 :0 overruns:0 frame:0 TX packets:929 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:128263 (125.2 KiB) TX bytes:128263 (125.2 KiB) tun 0 Link encap:UNSPEC HWaddr 00:FF:11:22:33:44 inet adr:10.8.0.1 Bcast:10.8.0.255 Mask:255.255.255.0 inet6 addr: fe80::2ff:cfff:1122:3344/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX Packets:89 errors:0 :0 overruns:0 frame:0 TX packets:90 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 RX bytes:5340 (5.2 KiB) TX bytes:5424 (5.2 KiB) TABLE DE ROUTAGE: Client OpenVPN C:>route print ============================================================== Interface List 0x1 MS TCP Loopback interface 0x2 00 08 02 94 c1 eb Intel(R) PRO/100 VM Network Connection - Packet Scheduler Miniport 0x3 00 ff e2 d8 7a TAP-Win32 Adapter V8 - Packet Scheduler Miniport
  • 32. [Date] ing Manuel Cédric EBODE MBALLA 32 ad =============================================================== =============================================================== Active Routes: Network Destination Netmask Gateway Interface Metric 0.0.0.0 0.0.0.0 50.0.0.1 50.0.0.2 20 10.8.0.0 255.255.255.0 10.8.0.2 10.8.0.2 30 10.8.0.2 255.255.255.255 127.0.0.1 127.0.0.1 30 10.255.255.255 255.255.255.255 10.8.0.2 10.8.0.2 30 50.0.0.0 255.255.255.0 50.0.0.2 50.0.0.2 20 50.0.0.2 255.255.255.255 127.0.0.1 127.0.0.1 20 50.255.255.255 255.255.255.255 50.0.0.2 50.0.0.2 20 127.0.0.0 255.0.0.0 127.0.0.1 127.0.0.1 1 224.0.0.0 240.0.0.0 10.8.0.2 10.8.0.2 30 224.0.0.0 240.0.0.0 50.0.0.2 50.0.0.2 20 255.255.255.255 255.255.255.255 10.8.0.2 10.8.0.2 1 255.255.255.255 255.255.255.255 10.8.0.2 3 1 255.255.255.255 255.255.255.255 50.0.0.2 50.0.0.2 1 Default Gateway: 50.0.0.1 =============================================================== Persistent Routes: None
  • 33. [Date] ing Manuel Cédric EBODE MBALLA 33 Serveur OpenVPN #route -n Kernel Ip routing table Destination Gateway Genmask Flags Metric Ref Use Iface 10.8.0.2 0.0.0.0 255.255.255.255 UH 0 0 0 tap0 100.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 0.0.0.0 100.0.0.1 0.0.0.0 UG 0 0 0 eth0 VÉRIFICATION DE CONNÉCTIVITÉ: OpenVPN client C:>tracert 10.8.0.1 Tracing route to 10.8.0.1 over a maximum of 30 hops 1 <1 ms <1 ms <1 ms 10.8.0.1 Trace complete. OpenVPN client C:>tracert 100.0.0.2 Tracing route to 100.0.0.2 over a maximum of 30 hops 1 <1 ms <1 ms <1 ms 50.0.0.1 2 <1 ms <1 ms <1 ms 100.0.0.2 Trace complete. B : VPN IP Dans ce scénario, nous allons créer un tunnel OpenVPN dans le mode routé ou IP avec un paramètrage minimum. Une machine Microsoft Windows est utilisée en tant que client OpenVPN, un système en tant
  • 34. [Date] ing Manuel Cédric EBODE MBALLA 34 que serveur OpenVPN. L'autre mode de tunnel OpenVPN est appelé mode pont (bridge) ou Ethernet. Voir une étude de cas à propos de ce mode. 1. PAS DE SECURITÉ BOITIÉ VPN WINDOWS - CLIENT OPENVPN: fichier de configuration: La configuration ci-dessous est stockée dans le fichier "C:Program FilesOpenVPNconfigclient.txt". # OpenVPN server remote 100.0.0.2 # Tunnel mode dev tun # IP addresses ifconfig 10.9.0.2 10.9.0.1 # Cipher mode cipher none # Authentification mode auth none # Log verbosity verb 2 Lancement d'OpenVPN C:Program FilesOpenVPNconfig>openvpn client.txt Sortie du journal: 1 OpenVPN 2.0.9 Win32-MinGW [SSL] [LZO] built on Oct 1 2006
  • 35. [Date] ing Manuel Cédric EBODE MBALLA 35 2 5/6 7 8 9 10 11 12 IMPORTANT: OpenVPN's default port number is now 1194, based on an official port number assignment by IANA. OpenVPN 2.0-beta16 and earlier used 5000 as the default port. ******* WARNING *******: all encryption and authentication features disabled -- all data will be tunnelled as cleartext TAP-WIN32 device [Connexion au réseau local 3] opened: .Global{928ACEB1- D160-420A-ADD6-A72E816FC022}.tap TAP-Win32 MTU=1500 Notified TAP-Win32 driver to set a DHCP IP/netmask of 10.9.0.2/255.255.255.252 on interface {928ACEB1-D160-420A-ADD6-A72E816FC022} [DHCP-serv: 10.9.0.1, lease-time:31536000] Successful ARP Flush on interface [3] {928ACEB1-D160-420A-ADD6- A72E816FC022} Data Channel MTU parms [ L:1500 D:1450 EF:0 EB:4 ET:0 EL:0 ] Local Options hash (VER=V4): '00f97e1a' Expected Remote Options hash (VER=V4): '7cef60b0' UDPv4 link local (bound): [undef]:1194 UDPv4 link remote: 100.0.0.2:1194 Peer Connection Initiated with 100.0.0.2:1194 Initialization Sequence Completed Légende: 1. 2. 3. 4. Version OpenVPN Mode de security Algorythme de chiffrement Algorythme de hachage 5. 6. 7. 8. Pilotes TUN/TAP MTU du Tunnel IP locale du Tunnel IP distante du tunnel 9. 10. 11. 12 Port TCP ou UDP IP du serveur OpenVPN Equipement OpenVPN distant Status OpenVPN BOITIÉ VPN LINUX - SERVEUR OPENVPN: La configuration ci-dessous est stockée dans le fichier "/etc/openvpn/server.txt". # Mode tunnel dev tun # Adresses IP ifconfig 10.9.0.1 10.9.0.2 # Mode de chiffrement cipher none # Mode d'authentification auth none
  • 36. [Date] ing Manuel Cédric EBODE MBALLA 36 # Verbosité du journal verb 2 Lancement d'OpenVPN /etc/openvpn#openvpn server.txt Lisez des informations sur l'utilisation des scripts de démarrage OpenVPN. Sortie du journal: 1 5 7/8 6 9 10 12 OpenVPN 2.0.9 i486-pc-linux-gnu [SSL] [LZO] [EPOLL] built on May 21 2007 IMPORTANT: OpenVPN's default port number is now 1194, based on an official port number assignment by IANA. OpenVPN 2.0-beta16 and earlier used 5000 as the default port. ******* WARNING *******: all encryption and authentication features disabled -- all data will be tunnelled as cleartext TUN/TAP device tun0 opened ifconfig tun0 10.9.0.1 pointopoint 10.9.0.2 mtu 1500 Data Channel MTU parms [ L:1500 D:1450 EF:0 EB:4 ET:0 EL:0 ] Local Options hash (VER=V4): '7cef60b0' Expected Remote Options hash (VER=V4): '00f97e1a' UDPv4 link local (bound): [undef]:1194 UDPv4 link remote: [undef] Peer Connection Initiated with 50.0.0.2:1194 Initialization Sequence Completed Poursuivez avec les statistiques réseaux 2. CLEFS PARTAGÉES BOITIÉ VPN WINDOWS - CLIENT OPENVPN: Fichier de configuration: La configuration ci-dessous est stockée dans le fichier "C:Program FilesOpenVPNconfigclient.txt". # Serveur OpenVPN remote 100.0.0.2 # Mode tunnel dev tun # Adresses IP
  • 37. [Date] ing Manuel Cédric EBODE MBALLA 37 ifconfig 10.9.0.2 10.9.0.1 # Clef partagée secret "C:Program FilesOpenVPNconfigkey.txt" # Verbosité du journal verb 2 Lancement d'OpenVPN C:Program FilesOpenVPNconfig>openvpn client.txt Log output: 1 2/3 4 5 6 7 8 9 10 12 OpenVPN 2.0.9 Win32-MinGW [SSL] [LZO] built on Oct 1 2006 IMPORTANT: OpenVPN's default port number is now 1194, based on an official port num. assignment by IANA. OpenVPN 2.0-beta16 and earlier used 5000 as the default port. Static Encrypt: Cipher 'BF-CBC' initialized with 128 bit key Static Encrypt: Using 160 bit message hash 'SHA1' for HMAC authentication Static Decrypt: Cipher 'BF-CBC' initialized with 128 bit key Static Decrypt: Using 160 bit message hash 'SHA1' for HMAC authentication TAP-WIN32 device [Local Area Connection 5] opened: .Global{E2D87AAD-28F7-432E-8A00-5E67BE6DD464}.tap TAP-Win32 MTU=1500 Notified TAP-Win32 driver to set a DHCP IP/netmask of 10.9.0.2/255.255.255.252 on interface {E2D87AAD-28F7-432E-8A00-5E67BE6DD464} [DHCP-serv: 10.9.0.1, lease-time: 31536000] Successful ARP Flush on interface [4] {E2D87AAD-28F7-432E-8A00- 5E67BE6DD464} Data Channel MTU parms [ L:1544 D:1450 EF:44 EB:4 ET:0 EL:0 ] Local Options hash (VER=V4): 'd3880969' Expected Remote Options hash (VER=V4): 'c41bf3b8' UDPv4 link local (bound): [undef]:1194 UDPv4 link remote: 100.0.0.2:1194 Peer Connection Initiated with 100.0.0.2:1194 Initialization Sequence Completed Légende: 1. 2. 3. 4. Version OpenVPN Mode de security Algorythme de chiffrement Algorythme de hachage 5. 6. 7. 8. Pilotes TUN/TAP MTU du Tunnel IP locale du Tunnel IP distante du tunnel 9. 10. 11. 12 Port TCP ou UDP IP du serveur OpenVPN Equipement OpenVPN distant Status OpenVPN
  • 38. [Date] ing Manuel Cédric EBODE MBALLA 38 BOITIÉ VPN LINUX - SERVEUR OPENVPN: La configuration ci-dessous est stockée dans le fichier "/etc/openvpn/server.txt". # Mode tunnel dev tun # Adresses IP ifconfig 10.9.0.1 10.9.0.2 # Clef partagée secret /home/user/key.txt # Verbosité du journal verb 2 Lancement d'OpenVPN /etc/openvpn#openvpn server.txt Lisez des informations sur l'utilisation des scripts de démarrage OpenVPN. Sortie du journal : 1 2/3 4 5 6/7 8 10 11 12 OpenVPN 2.0.9 i486-pc-linux-gnu [SSL] [LZO] [EPOLL] built on Mar 2 2007 IMPORTANT: OpenVPN's default port number is now 1194, based on an official port num. assignment by IANA. OpenVPN 2.0-beta16 and earlier used 5000 as the default port. WARNING: file '/home/po/key.txt' is group or others accessible Static Encrypt: Cipher 'BF-CBC' initialized with 128 bit key Static Encrypt: Using 160 bit message hash 'SHA1' for HMAC authentication Static Decrypt: Cipher 'BF-CBC' initialized with 128 bit key Static Decrypt: Using 160 bit message hash 'SHA1' for HMAC authentication TUN/TAP device tun0 opened ifconfig tun0 10.9.0.1 pointopoint 10.9.0.2 mtu 1500 Data Channel MTU parms [ L:1544 D:1450 EF:44 EB:4 ET:0 EL:0 ] Local Options hash (VER=V4): 'c41bf3b8' Expected Remote Options hash (VER=V4): 'd3880969' UDPv4 link local (bound): [undef]:1194 UDPv4 link remote: [undef] Peer Connection Initiated with 50.0.0.2:1194 Initialization Sequence Completed Poursuivez avec les statistiques réseaux
  • 39. [Date] ing Manuel Cédric EBODE MBALLA 39 3. SSL BOITIÉ VPN WINDOWS - CLIENT OPENVPN : Fichier de configuration: La configuration ci-dessous est stockée dans le fichoer "C:Program FilesOpenVPNconfigclient.txt". # TLS mode - client tls-client # openVPN server remote 100.0.0.2 # Tunnel mode dev tun # IP addresses ifconfig 10.9.0.2 10.9.0.1 # CA certificate ca "C:Program FilesOpenVPNeasy-rsakeysca.crt" # client certificate cert "C:Program FilesOpenVPNeasy-rsakeysserver.crt" # client private key key "C:Program FilesOpenVPNeasy-rsakeysserver.key" # Log verbosity verb 2 Lancement d'OpenVPN C:Program FilesOpenVPNconfig>openvpn client.txt Sortie du journal: 1 5 6 7 OpenVPN 2.0.9 Win32-MinGW [SSL] [LZO] built on Oct 1 2006 IMPORTANT: OpenVPN's default port number is now 1194, based on an official port number assignment by IANA. OpenVPN 2.0-beta16 and earlier used 5000 as the default port. WARNING: No server certificate verification method has been enabled. See http://openvpn.net/howto.html#mitm for more info. Control Channel MTU parms [ L:1541 D:138 EF:38 EB:0 ET:0 EL:0 ] TAP-WIN32 device [Connexion au réseau local 3] opened: .Global{928ACEB1- D160-420A-ADD6-A72E816FC022}.tap TAP-Win32 MTU=1500
  • 40. [Date] ing Manuel Cédric EBODE MBALLA 40 8 9 10 3 4 2 11 12 Notified TAP-Win32 driver to set a DHCP IP/netmask of 10.9.0.2/255.255.255.252 on interface {928ACEB1-D160-420A-ADD6-A72E816FC022} [DHCP-serv: 10.9.0.1, lease-time: 31536000] Successful ARP Flush on interface [3] {928ACEB1-D160-420A-ADD6- A72E816FC022} Data Channel MTU parms [ L:1541 D:1450 EF:41 EB:4 ET:0 EL:0 ] Local Options hash (VER=V4): '4685920e' Expected Remote Options hash (VER=V4): '2e130e6f' UDPv4 link local (bound): [undef]:1194 UDPv4 link remote: 100.0.0.2:1194 TLS Error: local/remote TLS keys are out of sync: 100.0.0.2:1194 [0] VERIFY OK: depth=1, /C=US/ST=CA/L=SanFrancisco/O=OpenManiak/CN=OpenManiak_CA/emailAddress =me@myhost.mydomain VERIFY OK: depth=0, /C=US/ST=CA/L=SanFrancisco/O=OpenManiak/CN=server/emailAddress=me@ myhost.mydomain Data Channel Encrypt: Cipher 'BF-CBC' initialized with 128 bit key Data Channel Encrypt: Using 160 bit message hash 'SHA1' for HMAC authentication Data Channel Decrypt: Cipher 'BF-CBC' initialized with 128 bit key Data Channel Decrypt: Using 160 bit message hash 'SHA1' for HMAC authentication Control Channel: TLSv1, cipher TLSv1/SSLv3 DHE-RSA-AES256-SHA, 1024 bit RSA [server] Peer Connection Initiated with 100.0.0.2:1194 Initialization Sequence Completed Légende: 1. 2. 3. 4. Version OpenVPN Mode de security Algorythme de chiffrement Algorythme de hachage 5. 6. 7. 8. Pilotes TUN/TAP MTU du Tunnel IP locale du Tunnel IP distante du tunnel 9. 10. 11. 12 Port TCP ou UDP IP du serveur OpenVPN Equipement OpenVPN distant Status OpenVPN BOITIÉ VPN LINUX - SERVEUR OPENVPN: La configuration est stockée dans le fichier "/etc/openvpn/server.txt". # TLS mode - server tls-server # Tunnel mode dev tun # IP addresses ifconfig 10.9.0.1 10.9.0.2
  • 41. [Date] ing Manuel Cédric EBODE MBALLA 41 # CA certificate ca ca.crt # server certificate cert client.crt # server private key key server.key # Diffie-Hellman Settings dh dh1024.pem # Log verbosity verb 2 Lanceemnt d'OpenVPN /etc/openvpn#openvpn server.txt Lisez des informations sur l'utilisation des scripts de démarrage OpenVPN. Log output: 1 5 6/7 8 9 3 4 2 OpenVPN 2.0.9 i486-pc-linux-gnu [SSL] [LZO] [EPOLL] built on May 21 2007 IMPORTANT: OpenVPN's default port number is now 1194, based on an official port number assignment by IANA. OpenVPN 2.0-beta16 and earlier used 5000 as the default port. Control Channel MTU parms [ L:1541 D:138 EF:38 EB:0 ET:0 EL:0 ] TUN/TAP device tun0 opened ifconfig tun0 10.9.0.1 pointopoint 10.9.0.2 mtu 1500 Data Channel MTU parms [ L:1541 D:1450 EF:41 EB:4 ET:0 EL:0 ] Local Options hash (VER=V4): '2e130e6f' Expected Remote Options hash (VER=V4): '4685920e' UDPv4 link local (bound): [undef]:1194 UDPv4 link remote: [undef] VERIFY OK: depth=1, /C=US/ST=CA/L=SanFrancisco/O=OpenManiak/CN=OpenManiak_CA/emailAddress =me@myhost.mydomain VERIFY OK: depth=0, /C=US/ST=CA/L=SanFrancisco/O=OpenManiak/CN=client/emailAddress=me @myhost.mydomain Data Channel Encrypt: Cipher 'BF-CBC' initialized with 128 bit key Data Channel Encrypt: Using 160 bit message hash 'SHA1' for HMAC authentication Data Channel Decrypt: Cipher 'BF-CBC' initialized with 128 bit key Data Channel Decrypt: Using 160 bit message hash 'SHA1' for HMAC authentication
  • 42. [Date] ing Manuel Cédric EBODE MBALLA 42 11 12 Control Channel: TLSv1, cipher TLSv1/SSLv3 DHE-RSA-AES256-SHA, 1024 bit RSA [client] Peer Connection Initiated with 50.0.0.2:1194 Initialization Sequence Completed Poursuivez avec les statistiques réseaux STATISTIQUES RÉSEAUX : (similaires pour les trois études de cas) INTERFACES: Client OpenVPN C:>ipconfig Windows IP Configuration Ethernet adapter Local Area Connection: Connection-specific DNS Suffix . : IP Address. . . . . . . . . . . . . . . : 50.0.0.2 Subnet Mask . . . . . . . . . . . . . : 255.255.255.0 Default Gateway . . . . . . . . . . . : 50.0.0.1 Ethernet adapter Local Area Connection 1: Connection-specific DNS Suffix . IP Address. . . . . . . . . . . . . . . : 10.9.0.2 Subnet Mask . . . . . . . . . . . . . : 255.255.255.252 Default Gateway . . . . . . . . . . . :
  • 43. [Date] ing Manuel Cédric EBODE MBALLA 43 Serveur OpenVPN #ifconfig eth0 Link encap:Ethernet HWaddr 11:22:33:44:55:66 inet adr:100.0.0.2 Bcast:100.0.0.255 Mask:255.255.255.0 adr inet6: fe80::212:3fff:fe0f:35c7/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX Packets:1641 errors:0 :0 overruns:0 frame:0 TX packets:2130 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:186894 (182.5 KiB) Octets transmis:231430 (226.0 KiB) Interrupt:16 lo Link encap:Local Loopback inet adr:127.0.0.1 Mask:255.0.0.0 adr inet6: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX Packets:929 errors:0 :0 overruns:0 frame:0 TX packets:929 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:128263 (125.2 KiB) TX bytes:128263 (125.2 KiB) tun 0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00- 00-00-00-00 inet adr:10.9.0.1 P-t-P:10.9.0.2 Mask:255.255.255.255 UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500
  • 44. [Date] ing Manuel Cédric EBODE MBALLA 44 Metric:1 RX Packets:89 errors:0 :0 overruns:0 frame:0 TX packets:90 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 RX bytes:5340 (5.2 KiB) TX bytes:5424 (5.2 KiB) TABLE DE ROUTAGE: Client OpenVPN C:>route print ============================================================== Interface List 0x1 MS TCP Loopback interface 0x2 00 08 02 94 c1 eb Intel(R) PRO/100 VM Network Connection - Packet Scheduler Miniport 0x3 00 ff e2 d8 7a ad TAP-Win32 Adapter V8 - Packet Scheduler Miniport =============================================================== =============================================================== Active Routes: Network Destination Netmask Gateway Interface Metric 0.0.0.0 0.0.0.0 50.0.0.1 50.0.0.2 20 10.9.0.0 255.255.255.252 10.9.0.2 10.9.0.2 30 10.9.0.2 255.255.255.255 127.0.0.1 127.0.0.1 30 10.255.255.255 255.255.255.255 10.9.0.2 10.9.0.2 30
  • 45. [Date] ing Manuel Cédric EBODE MBALLA 45 50.0.0.0 255.255.255.0 50.0.0.2 50.0.0.2 20 50.0.0.2 255.255.255.255 127.0.0.1 127.0.0.1 20 50.255.255.255 255.255.255.255 50.0.0.2 50.0.0.2 20 127.0.0.0 255.0.0.0 127.0.0.1 127.0.0.1 1 224.0.0.0 240.0.0.0 10.9.0.2 10.9.0.2 30 224.0.0.0 240.0.0.0 50.0.0.2 50.0.0.2 20 255.255.255.255 255.255.255.255 10.9.0.2 10.9.0.2 1 255.255.255.255 255.255.255.255 10.9.0.2 3 1 255.255.255.255 255.255.255.255 50.0.0.2 50.0.0.2 1 Default Gateway: 50.0.0.1 =============================================================== Persistent Routes: None Serveur OpenVPN #route -n Kernel Ip routing table Destination Gateway Genmask Flags Metric Ref Use Iface 10.9.0.2 0.0.0.0 255.255.255.255 UH 0 0 0 tun0 100.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 0.0.0.0 100.0.0.1 0.0.0.0 UG 0 0 0 eth0 VÉRIFICATION DE CONNÉCTIVITÉ: OpenVPN client C:>tracert 10.9.0.1
  • 46. [Date] ing Manuel Cédric EBODE MBALLA 46 Tracing route to 10.9.0.1 over a maximum of 30 hops 1 <1 ms <1 ms <1 ms 10.9.0.1 Trace complete. OpenVPN client C:>tracert 100.0.0.2 Tracing route to 100.0.0.2 over a maximum of 30 hops 1 <1 ms <1 ms <1 ms 50.0.0.1 2 <1 ms <1 ms <1 ms 100.0.0.2 Trace complete. C : tunnel entre deux réseaux distant 1. PRESENTATION: Dans cette étude de cas, deux sites sont connectés ensemble au travers d'un tunnel OpenVPNen mode SSL/TLS avec des paramètres optionnels très utiles. Les principaux buts de notre étude de cas sont les suivants: - - - Etablir une connectivité pour tous les protocoles entre les deux réseaux locaux (réseaux 10.0.1.0/24 et 10.0.2.0/24) à travers un tunnel OpenVPN sur des boitiers Linux. Ceci signifie que les deux réseaux locaux vont se voir comme s'ils étaient dans le même réseau physique juste séparés par un routeur. Permettre aux utilisateurs locaux de surfer sur Internet (port TCP 80, HTTP et 443,HTTPS) Une traduction des adresses (NAT) source est requise sur les machines Linux. Sécuriser les machines Linux avec Netfilter, le module noyau Pare-feu de Linux.
  • 47. [Date] ing Manuel Cédric EBODE MBALLA 47 2. PARAMETRE DES INTERFACES: La première chose à faire et de configurer les paramètres IP des machines Linux et des postes de travail (Desktops). Serveur OpenVPN Configurez l'adresse IP des interfaces: #ifconfig eth0 50.0.0.1 netmask 255.255.255.0 #ifconfig eth1 10.0.1.1 netmask 255.255.255.0 Configurez la passerelle par défaut: #route add default gateway 50.0.0.100 Si vous voulez garder vos paramètres IP lorsque le système redémarre, éditez le ficher /etc/network/interfaces: #vim /etc/network/interfaces
  • 48. [Date] ing Manuel Cédric EBODE MBALLA 48 auto lo iface lo inet loopback auto eth0 iface eth0 inet static address 50.0.0.1 netmask 255.255.255.0 gateway 50.0.0.100 auto eth1 iface eth1 inet static address 10.0.1.1 netmask 255.255.255.0 Client OpenVPN Configurez l'adresse IP des interfaces: #ifconfig eth0 100.0.0.1 netmask 255.255.255.0 #ifconfig eth1 10.0.2.1 netmask 255.255.255.0 Configurez la passerelle par défaut: #route add default gateway 100.0.0.100 Si vous voulez garder vos paramètres IP lorsque le système redémarre, éditez le ficher /etc/network/interfaces: #vim /etc/network/interfaces auto lo iface lo inet loopback auto eth0 iface eth0 inet static address 100.0.0.1 netmask 255.255.255.0 gateway 100.0.0.100 auto eth1 iface eth1 inet static address 10.0.2.1 netmask 255.255.255.0
  • 49. [Date] ing Manuel Cédric EBODE MBALLA 49 Poste de travail du réseau local A Adresse IP: Masque: Passerelle: 10.0.1.100 255.255.255.0 10.0.1.1 Poste de travail du réseau local B Adresse IP: Masque: Passerelle: 10.0.2.100 255.255.255.0 10.0.2.1 3. CONFIGURATIONS: Les fichiers utilisés par OpenVPN sont localisés dans le dossier /etc/openvpn. Les machines OpenVPN auront les fichiers suivants: openvpn.conf - le fichier de configuration d'OpenVPN. ipp.txt (serveur seulement) - un fichier de réservation IP pour l'assignement dynamique d'adresses IP. route.txt (serveur seulement)- script pour ajouter une route sur le serveur quand le tunnel est monté. Ci-dessous, les fichiers créés par l'autorité de certification (CA), ca.crt - le certificat de l'autorité de certification (clef publique du CA). server.crt or client.crt - le certificat du serveur ou du client (clef publique du serveur ou duclient). server.key or client.key - la clef privée du serveur ou du client. dh1024pem (serveur seulement) - les paramètres Diffie-Hellman (DH). Fichier openvpn.conf: SERVEUR CLIENT # Adresse IP à l'écoute local 50.0.0.1 # Port Local lport 2000 # Port distant rport 2001 # Mode du tunnel dev tap # Adresse IP WAN du serveur remote 50.0.0.1 # Port local lport 2001 # Port distant rport 2000 # Mode du tunnel dev tap
  • 50. [Date] ing Manuel Cédric EBODE MBALLA 50 # Certificat du CA ca ca.crt # Certificat du serveur cert server.crt # Clef privée du serveur key server.key # Diffie-Hellman dh dh1024.pem # Etendue DHCP, le serveur prends l'IP # 10.7.0.1 server 10.7.0.0 255.255.255.248 # fichier de réservation IP ifconfig-pool-persist ipp.txt # Route fournie au client push "route 10.0.1.0 255.255.255.0" # Chiffrement ciper AES-256-CBC # Authentification auth MD5 # La compression est activée comp-lzo # Clients autorisés max-clients 10 # Réduire les privilèges du démon # OpenVPN après l'initialisation # (Linux seulement) user nobody # Statistiques OpenVPN status openvpn-status.log # Niveau de verbosité verb 2 # Script lancé quand le tunnel est monté # up up "./route.txt" # Après l'initialisation, OpenVPN peut # accéder à un directoire seulement # (Linux seulement) chroot /etc/openvpn/ # Certificat du CA ca ca.crt # Clef privée du serveur cert client.crt # Clef privée du client key client.key # Chiffrement ciper AES-256-CBC # Authentification auth MD5 # La compression est activée comp-lzo # Reduire les privilèges du démon # OpenVPN après l'initialisation # (Linux seulement) user nobody # Statistiques OpenVPN status openvpn-status.log # Niveau de verbosité verb 2 # Après l'initialisation, OpenVPN peut # accéder à un directoire seulement # (Linux seulement) chroot /etc/openvpn/ # The client accepte les options # poussées par le serveur
  • 51. [Date] ing Manuel Cédric EBODE MBALLA 51 pull Voici un résumé des fonctionnalités OpenVPN utilisées dans notre tutorial comparées à leur valeur par défaut. Paramètres optionnels: Mode tunnel Serveur DHCP Adresses persistantes Transmission de routes chiffrement Authentification Compression Port source serveur Port source serveur Droits Utilisateurs max Script "up" Assignement IP Niveau de verbosité Etude de cas dev tap server 10.7.0.0 255.255.255.248 ifconfig-pool-persist ipp.txt push "10.0.1.0 255.255.255.0" cipher AES auth md5 comp-lzo lport 2000 rport 2001 user nodody chroot /etc/openvpn 10 up "route.txt" ifconfig-pool-persist verb 2 Default settings: dev tun - - - cipher BF-CBC auth sha1 - lport 1194 rport 1194 user root - - (Unlimited) - - verb 0 Soyez attentif de bien ajouter l'extension de fichier ".conf" à votre fichier de configuration. Ceci est requis pour l'utilisation du script /etc/init.d/openvpn pour démarrer OpenVPNautomatiquement. Fichier ipp.txt: Le fichier /etc/openvpn/ipp.txt est utilisé pour stocker les réservations d'IP quand le serveurOpenVPN assigne dynamiquement des adresses aux clients. La syntaxe est la suivante: nom_du_certificat_client,adresse_IP Le nom_du_certificat_client est le nom choisi lors de la création du certificat client, Dans notre étude de cas, nous avons choisi client1 comme nom_du_certificat_client. client1,10.7.0.6 Fichier route.txt:
  • 52. [Date] ing Manuel Cédric EBODE MBALLA 52 Quand le tunnel est monté, le serveur lance le script bash "route.txt" qui va lui ajouter une route pour atteindre le réseau local du client. #!/bin/bash route add -net 10.0.2.0/24 gw 10.7.0.6 La dernière chose à faire est de configurer les permissions sur le dossier /etc/openvpn directory. L'utilisateur teddy a les permissions lecture/écriture/exécution. N'importe qui d'autre n'a aucune permission. Les fichiers les plus important dans le dossier sont les clefs privées. (server.key or client.key selon la machine sur laquelle vous vous trouvez). Si la clef privée de votre serveur est capturée, cela voudra dire que la sécurité de votre architecture OpenVPN est compromise! #chmod 700 /etc/openvpn/* L'utilisateur teddy est le propriétaire des fichiers dans le dossier /etc/openvpn. #chown teddy /etc/openvpn/* 4. DEMARRER OPENVPN Démarrons OpenVPN sur le client et le serveur et vérifions les journaux: #openvpn /etc/openvpn/openvpn.conf Journal du serveur: 1 16 22 21 10 8/11 15 OpenVPN 2.0.9 i486-pc-linux-gnu [SSL] [LZO] [EPOLL] built on Mar 2 2007 WARNING: No server certificate verification method has been enabled. See http://openvpn.net/howto.html#mitm for more info. LZO compression initialized Control Channel MTU parms [ L:1586 D:138 EF:38 EB:0 ET:0 EL:0 ] Data Channel MTU parms [ L:1586 D:1450 EF:54 EB:135 ET:32 EL:0 AF:3/1 ] Local Options hash (VER=V4): '579db898' Expected Remote Options hash (VER=V4): 'a0883d96' chroot to '/etc/openvpn' and cd to '/' succeeded UID set to nobody UDPv4 link local (bound): [undef]:2001 UDPv4 link remote: 50.0.0.1:2000 TLS: Initial packet from 50.0.0.1:2000, sid=100aa16d 662ac586 VERIFY OK: depth=1, /C=US/ST=CA/L=SanFrancisco/O=OpenManiak/
  • 53. [Date] ing Manuel Cédric EBODE MBALLA 53 14 3 4 2 17 18 5 6 12 CN=OpenManiak_CA/emailAddress=opensource@openmaniak.com VERIFY OK: depth=0, /C=US/ST=CA/L=SanFrancisco/O=OpenManiak/ CN=server/emailAddress=opensource@openmaniak.com Data Channel Encrypt: Cipher 'AES-256-CBC' initialized with 256 bit key Data Channel Encrypt: Using 128 bit message hash 'MD5' for HMAC authentication Data Channel Decrypt: Cipher 'AES-256-CBC' initialized with 256 bit key Data Channel Decrypt: Using 128 bit message hash 'MD5' for HMAC authentication Control Channel: TLSv1, cipher TLSv1/SSLv3 DHE-RSA-AES256-SHA, 1024 bit RSA [server] Peer Connection Initiated with 50.0.0.1:2000 SENT CONTROL [server]: 'PUSH_REQUEST' (status=1) PUSH: Received control message: 'PUSH_REPLY,route 10.0.1.0 255.255.255.0, route-gateway 10.7.0.1,ifconfig 10.7.0.6 255.255.255.248' OPTIONS IMPORT: --ifconfig/up options modified OPTIONS IMPORT: route options modified TUN/TAP device tap0 opened ifconfig tap0 10.7.0.6 netmask 255.255.255.248 mtu 1500 broadcast 10.7.0.7 route add -net 10.0.1.0 netmask 255.255.255.0 gw 10.7.0.1 Initialization Sequence Completed Légende: 1. 2. 3. 4. Version OpenVPN Mode de sécurité Chiffrement Hachage 5. 6. 7. 8. Pilotes TUN/TAP MTU du tunnel IP locale du tunnel Ip distante du tunnel 9. 10. 11. 12. Serveur OpenVPN Port Local Port distant status OpenVPN 13. 14. 15. 16. Certificat client Certificat serveur Certificat du CA Compression 17. 18. 19. Route fournie au client IP fournie au client Reservation IP 21. 22. 23 Utilisateur Limitation du process Script "up" Journal du client: 1 5 6/7 23 OpenVPN 2.0.9 i486-pc-linux-gnu [SSL] [LZO] [EPOLL] built on Mar 2 2007 WARNING: --keepalive option is missing from server config Diffie-Hellman initialized with 1024 bit key TLS-Auth MTU parms [ L:1586 D:138 EF:38 EB:0 ET:0 EL:0 ] TUN/TAP device tap0 opened ifconfig tap0 10.7.0.1 netmask 255.255.255.248 mtu 1500 broadcast 10.7.0.7 ./echo.txt tap0 1500 1586 10.7.0.1 255.255.255.248 init Data Channel MTU parms [ L:1586 D:1450 EF:54 EB:135 ET:32 EL:0 AF:3/1 ]
  • 54. [Date] ing Manuel Cédric EBODE MBALLA 54 22 21 9 10 19 12 8 16 11 15 13 3 4 2 17 18 chroot to '/etc/openvpn' and cd to '/' succeeded UID set to nobody UDPv4 link local (bound): 50.0.0.1:2000 UDPv4 link remote: [undef] MULTI: multi_init called, r=256 v=256 IFCONFIG POOL: base=10.7.0.2 size=5 IFCONFIG POOL LIST client1,10.7.0.6 Initialization Sequence Completed MULTI: multi_create_instance called 100.0.0.1:2001 Re-using SSL/TLS context 100.0.0.1:2001 LZO compression initialized 100.0.0.1:2001 Control Channel MTU parms [ L:1586 D:138 EF:38 EB:0 ET:0 EL:0 ] 100.0.0.1:2001 Data Channel MTU parms [ L:1586 D:1450 EF:54 EB:135 ET:32 EL:0 AF:3/1 ] 100.0.0.1:2001 Local Options hash (VER=V4): 'a0883d96' 100.0.0.1:2001 Expected Remote Options hash (VER=V4): '579db898' 100.0.0.1:2001 TLS: Initial packet from 100.0.0.1:2001, sid=85abe7b5 a5dcafc0 100.0.0.1:2001 VERIFY OK: depth=1, /C=US/ST=CA/L=SanFrancisco/O=OpenManiak/ CN=OpenManiak_CA/emailAddress=opensource@openmaniak.com 100.0.0.1:2001 VERIFY OK: depth=0, /C=US/ST=CA/L=SanFrancisco/O=OpenManiak/ CN=client1/emailAddress=opensource@openmaniak.com 100.0.0.1:2001 Data Channel Encrypt: Cipher 'AES-256-CBC' initialized with 256 bit key 100.0.0.1:2001 Data Channel Encrypt: Using 128 bit message hash 'MD5' for HMAC authentication 100.0.0.1:2001 Data Channel Decrypt: Cipher 'AES-256-CBC' initialized with 256 bit key 100.0.0.1:2001 Data Channel Decrypt: Using 128 bit message hash 'MD5' for HMAC authentication 100.0.0.1:2001 Control Channel: TLSv1, cipher TLSv1/SSLv3 DHE-RSA-AES256- SHA, 1024 bit RSA 100.0.0.1:2001 [client1] Peer Connection Initiated with 100.0.0.1:2001 client1/100.0.0.1:2001 PUSH: Received control message: 'PUSH_REQUEST' client1/100.0.0.1:2001 SENT CONTROL [client1]: 'PUSH_REPLY,route 10.0.1.0 255.255.255.0,route-gateway 10.7.0.1,ifconfig 10.7.0.6 255.255.255.248' (status=1) client1/100.0.0.1:2001 MULTI: Learn: 12:5a:a3:22:f7:11 -> client1/100.0.0.1:2001
  • 55. [Date] ing Manuel Cédric EBODE MBALLA 55 L'utiliatire Ping est très utile pour tester si le tunnel est monté. Le serveur (10.7.0.1) dervait être capable de pinger le client (10.7.0.6) et vice versa. serveur#ping 10.7.0.6 Un script init.d est disponible pour démarrer ou arrêter OpenVPN. Soyez attentif, comme indiqué dans la section de configuration, que vos fichiers de configurations sont localisés dans le dossier /etc/openvpn et ont une extension de fichier .conf". #/etc/init.d/openvpn stop Stopping virtual private network daemon: openvpn. #/etc/init.d/openvpn start Starting virtual private network daemon: openvpn. #/etc/init.d/openvpn restart Stopping virtual private network daemon: openvpn. Starting virtual private network daemon: openvpn(OK). Les journaux sont écris par défaut dans le fichier /var/log/syslog. Vous pouvez vérifier le status du processus OpenVPN: #ps -ef | grep openvpn UID PID PPID CSTIME TTY TIME CMD nobody 27921 0 09:59 ? 00:00:00 /usr/sbin/openvpn -- writepid /var/run/openvpn.conf.pid --daemon ovpn-conf --cd /etc/openvpn --config /etc/openvpn/openvpn.conf Vérifiez la table de routage sur le serveur OpenVPN: #route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface
  • 56. [Date] ing Manuel Cédric EBODE MBALLA 56 10.7.0.0 0.0.0.0 255.255.255.248 U 0 0 0 tap0 10.0.2.0 10.7.0.6 255.255.255.0 UG 0 0 0 tap0 50.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 0.0.0.0 50.0.0.100 0.0.0.0 UG 0 0 0 eth0 5. PORTS TCP ou UDP OUVERTS: Vérifions quels sont les ports UDP et TCP ouverts: Le but est de fermer tous les ports ouverts qui ne sont pas requis pour améliorer la sécurité en prévenant des attaques potentielles . Identifions les ports TCP et UDP ouverts sur notre Linux de test qui est une Ubuntu 7.10, édition poste de travail (Desktop Edition) Ports UDP: #netstat -uaen -u: UDP -t: TCP -a: all -e: étendu -n: numérique Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State User Inode udp 0 0 0.0.0.0:1025 0.0.0.0:* 105 15129 udp 0 0 50.0.0.1:2000 0.0.0.0:* 0 17810 udp 0 0 0.0.0.0:5353 0.0.0.0:* 105 15128 Regardons quels sont les utilisateurs ayant les ID "0" et "105". #cat /etc/passwd user: status: userid: groupid: description: home_directory: shell
  • 57. [Date] ing Manuel Cédric EBODE MBALLA 57 root: x: 0: 0: root: /root: /bin/bash avahi: x: 105: 105: Avahi mDNS daemon,,,: /var/run/avahi-daemon: /bin/false Avahi est un démon qui permet à des programmes de publier et découvrir des services et des hôtes sur un réseau local avec pas de configuration spécifique. Ce démon n'est pas requis dans notre étude de cas, nous pouvons donc soit le désactiver, soit de désinstaller. Veuillez noter que les deux ports Avihi sont déjà fermés sur la version serveur d'Ubuntu. Stoppez le démon: #/etc/init.d/avihi-daemon stop Désactivation de Avihi au démarrage du système: Dans le fichier /etc/defaut/avahi-daemon, changez la valeur AVAHI_DAEMON_START de "1" à "0": AVAHI_DAEMON_START=0 Désinstallation du démon: #apt-get remove avihi-daemon Le démon Avihi n'est maintenant plus actif, nous pouvons donc revérifier le statu des ports UDP et voir que le port OpenVPN est le seul port UDP ouvert. #netstat -uaen Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State User Inode udp 0 0 50.0.0.1:2000 0.0.0.0:* 0 17810 Ports TCP: #netstat -taen Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State User Inode tcp 0 0 127.0.0.0.1:631 0.0.0.0:* LISTEN 0 15395
  • 58. [Date] ing Manuel Cédric EBODE MBALLA 58 tcp 0 0 127.0.0.0.1:2207 0.0.0.0:* LISTEN 108 15469 tcp 0 0 127.0.0.0.1:2208 0.0.0.0:* LISTEN 0 15426 tcp6 0 0 :::22 :::* LISTEN 0 15688 Les ports TCP 631 (cupsys), 2207 et 2208 (hplip) sont des ports d'impression et ne sont pas requis dans notre étude de cas présente. Nous pouvons donc désinstaller les services associés et ainsi fermer les ports. Veuillez noter que les trois ports d'impression sont déjà fermés dans le version serveur d'Ubuntu. #apt-get remove hplip #apt-get remove cupsys Les démons d'impressions sont maintenant désinstallés, nous pouvons donc vérifier de nouveau le statu des ports TCP et voir que le port SSH est le seul port ouvert. #netstat -taen Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State User Inode tcp6 0 0 :::22 :::* LISTEN 0 15688 6. IPTABLES: Iptables est un outil utilisé pour configurer Netfilter et doit être lancé en que root. Netfilter, quant à lui, est un module du noyau disponible depuis la version du noyau 2.4. Il apporte trois principales fonctionnalités: - Filtrage de paquets - accepte ou rejette des paquets - NAT - Change l'adresse IP source ou destination de paquets réseau. - Modification de paquets - Modifie la structure des paquets Le but pour nous est d'ouvrir seulement les ports requis et de fermer tous les autres pour limiter des attaques potentiels sur nos systèmes Linux. La stratégie de sécurité de note étude de cas est la suivante: Règles de filtrage:
  • 59. [Date] ing Manuel Cédric EBODE MBALLA 59 - Ouverture des ports utilisés par OpenVPN pour générer le tunnel entre les deux Linux. - Ouverture des 80 et 443 ports vers l'extérieur pour laisser les machines locales surfer sur Internet. - Acceptation de tout le trafic à l'intérieur du tunnel. - Rejet de tout autre trafic. Configuration du serveur OpenVPN Linux: - ANNULATION DES PARAMETRES IPTABLES EXISTANT: #iptables -F - STRATEGIES PAR DEFAUT: Configuration des règles pour rejeter par défaut tous les trafics entrant et sortant et accepter le trafic "Forward" (trafic inter-interface:) #iptables -P OUTPUT DROP #iptables -P INPUT DROP #iptables -P FORWARD ACCEPT - REGLES OPENVPN: Autorisation du tunnel OpenVPN: #iptables -A INPUT -i eth0 -p udp -s 100.0.0.1 -d 50.0.0.1 --sport 2001 --dport 2000 -j ACCEPT #iptables -A OUTPUT -o eth0 -p udp -s 50.0.0.1 -d 100.0.0.1 --sport 2000 --dport 2001 - j ACCEPT Autosization de tous le trafic à l'intérieur du tunnel: #iptables -A INPUT -i tap+ -p all -j ACCEPT #iptables -A OUTPUT -o tap+ -p all -j ACCEPT -------------------------------------------------------- - INTERFACE LAN Tous le trafic de et vers l'interface LAN (eth1) est accepté: #iptables -A INPUT -i eth1 -p all -s 10.0.1.0/24 -j ACCEPT #iptables -A OUTPUT -o eth1 -p all -d 10.0.1.0/24 -j ACCEPT --------------------------------------------------------
  • 60. [Date] ing Manuel Cédric EBODE MBALLA 60 - ACCES INTERNET: Règles de NAT: Les utilisateurs du réseau local A doivent être capable de surfer sur Internet impliquant des paramètres de NAT. Par exemple, quand le poste de travail situé sur le site A veux accéder une page web sur Internet, son adresse IP source est traduite et prend l'adresse IP WAN du serveur OpenVPN. En d'autres termes, 10.0.1.100 est traduit en 50.0.0.1 et vice versa quand les paquets reviennent au poste de travail. Ce type de NAT est appelé "masquerade". #iptables -t nat -A POSTROUTING -j MASQUERADE Autorisation de l'accès Internet: Les utilisateurs LAN sont autorisés à accéder uniquement à des ressources HTTP ou HTTPS: #iptables -A OUTPUT -p tcp -m multiport --dports 80,443 -o eth0 -m state --state NEW,ESTABLISHED -j ACCEPT #iptables -A INPUT -p tcp -m multiport --sports 80,443 -i eth0 -m state --state ESTABLISHED -j ACCEPT -------------------------------------------------------- - REGLES FACULTATIVES: Si vous avez des serveurs SSH sur vos machines OpenVPN, vous pouvez configurer les règles pour accepter le trafic SSH. Pour installer un serveur SSH, il suffit d'utiliser les commandes suivantes: "apt-get install openssh-server" Règles pour permettre au client SSH local d'accéder à un serveur SSH distant. #iptables -A OUTPUT -p tcp -o eth0 --dport 22 -s 50.0.0.1 -j ACCEPT #iptables -A INPUT -p tcp --sport 22 -i eth0 -d 50.0.0.1 -m state --state ESTABLISHED -j ACCEPT Règles pour permettre à des clients SSH d'accéder au serveur SSH local. #iptables -A INPUT -p tcp --dport 22 -i eth0 -d 50.0.0.1 -j ACCEPT #iptables -A OUTPUT -p tcp --sport 22 -o eth0 -s 50.0.0.1 -m state --state ESTABLISHED -j ACCEPT Pour les tests de connectivités, 50.0.0.1 et 100.0.0.1 peuvent se pinger l'un l'autre. #iptables -A INPUT -p icmp -i eth0 -s 100.0.0.1 -d 50.0.0.1 -j ACCEPT #iptables -A OUTPUT -p icmp -o eth0 -d 100.0.0.1 -s 50.0.0.1 -j ACCEPT
  • 61. [Date] ing Manuel Cédric EBODE MBALLA 61 -------------------------------------------------------- - VERIFICATIONS Vérifiez la table de routage du Pare-feu: #iptables -v -L Chain INPUT (policy DROP 13 packets, 683 bytes) pkts bytes target prot optin out source destination 0 0 ACCEPT udp -- eth0 * 100.0.0.1 50.0.0.1 udp spt:2001 dpt:2000 4 272 ACCEPT 0 -- tap+ * 0.0.0.0/0 0.0.0.0/0 0 0 ACCEPT 0 -- eth0 * 10.0.1.0/24 0.0.0.0/0 0 0 ACCEPT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 multiport sports 80,443 state ESTABLISHED 4 336 ACCEPT icmp -- eth0 * 100.0.0.1 50.0.0.1 0 0 ACCEPT tcp -- eth0 * 0.0.0.0/0 50.0.0.1 tcp spt:22 state ESTABLISHED 157 10884ACCEPT tcp -- eth0 * 0.0.0.0/0 50.0.0.1 tcp dpt:22 Chain FORWARD (policy ACCEPT 5 packets, 217 bytes) pkts bytes target prot optin out source destination Chain OUTPUT (policy DROP 339 packets, 110K bytes) pkts bytes target prot optin out source destination 0 0 ACCEPT udp -- * eth0 50.0.0.1 100.0.0.1 udp spt:2000 dpt:2001 ACCEPT 0 -- * tap+0.0.0.0/0 0.0.0.0/0
  • 62. [Date] ing Manuel Cédric EBODE MBALLA 62 0 0 ACCEPT 0 -- * eth0 0.0.0.0/0 10.0.1.0/24 0 0 ACCEPT tcp -- * eth0 0.0.0.0/0 0.0.0.0/0 multiport dports 80,443 4 336 ACCEPT icmp -- * eth0 50.0.0.1 100.0.0.1 0 0 ACCEPT tcp -- * eth0 50.0.0.1 0.0.0.0/0 tcp dpt:22 173 22594ACCEPT tcp -- * eth0 50.0.0.1 0.0.0.0/0 tcp spt:22 state ESTABLISHED Vérifiez la table NAT: #iptables -L -t nat Chain INPUT (policy DROP 13 packets, 683 bytes) pkts bytes target prot opt in out source destination Chain FORWARD (policy ACCEPT 5 packets, 217 bytes) pkts bytes target prot opt in out source destination 108 9273 MASQUERADE 0 - - any eth0 anywhere Chain OUTPUT (policy DROP 339 packets, 110K bytes) pkts bytes target prot opt in out source destination OpenVPN Client Linux Configuration: - ANNULATION DES PARAMETRES IPTABLES EXISTANT: #iptables -F - STRATEGIES PAR DEFAUT: Configuration des règles pour rejeter par défaut tout les trafics entrant et sortant et accepter le trafic "Forward" (trafic inter-interface:) #iptables -P OUTPUT DROP #iptables -P INPUT DROP
  • 63. [Date] ing Manuel Cédric EBODE MBALLA 63 #iptables -P FORWARD ACCEPT - REGLES OPENVPN: Autorisation du tunnel OpenVPN: #iptables -A INPUT -i eth0 -p udp -s 50.0.0.1 -d 100.0.0.1 --sport 2000 --dport 2001 -j ACCEPT #iptables -A OUTPUT -o eth0 -p udp -s 100.0.0.1 -d 50.0.0.1 --sport 2001 --dport 2000 - j ACCEPT Autorisation de tous le trafic à l'intérieur du tunnel: #iptables -A INPUT -i tap+ -p all -j ACCEPT #iptables -A OUTPUT -o tap+ -p all -j ACCEPT - INTERFACE LAN Tous le trafic de et vers l'interface LAN (eth1) est accepté: #iptables -A INPUT -i eth1 -p all -s 10.0.2.0/24 -j ACCEPT #iptables -A OUTPUT -o eth1 -p all -d 10.0.2.0/24 -j ACCEPT - ACCES INTERNET: Règles de NAT: Les utilisateurs du réseau local B doivent être capable de surfer sur Internet impliquant des paramètres de NAT. Par exemple, quand le poste de travail situé sur le site A veux accéder une page web sur Internet, son adresse IP source est traduite et prend l'adresse IP WAN du serveur OpenVPN. En d'autres termes, 10.0.2.100 est traduit en 1000.0.0.1 et vice versa quand les paquets reviennent au poste de travail. Ce type de NAT est appelé "masquerade". #iptables -t nat -A POSTROUTING -j MASQUERADE Autorisation de l'accès Internet: Les utilisateurs LAN sont autorisés à accéder uniquement à des ressources HTTP ou HTTPS: #iptables -A OUTPUT -p tcp -m multiport --dports 80,443 -o eth0 -j ACCEPT #iptables -A INPUT -p tcp -m multiport --sports 80,443 -i eth0 -m state --state ESTABLISHED -j ACCEPT
  • 64. [Date] ing Manuel Cédric EBODE MBALLA 64 - REGLES FACULTATIVES: Si vous avez des serveurs SSH sur vos machines OpenVPN, vous pouvez configurer les règles pour accepter le trafic SSH. Pour installer un serveur SSH, il suffit d'utiliser les commandes suivantes: "apt-get install openssh-server" Règles pour permettre au client SSH local d'accéder à un serveur SSH distant. #iptables -A OUTPUT -p tcp -o eth0 --dport 22 -s 100.0.0.1 -j ACCEPT #iptables -A INPUT -p tcp --sport 22 -i eth0 -d 100.0.0.1 -m state --state ESTABLISHED -j ACCEPT Règles pour permettre à des clients SSH d'accéder au serveur SSH local. #iptables -A INPUT -p tcp --dport 22 -i eth0 -d 100.0.0.1 -j ACCEPT #iptables -A OUTPUT -p tcp --sport 22 -o eth0 -s 100.0.0.1 -m state --state ESTABLISHED -j ACCEPT Pour les tests de connectivités, 50.0.0.1 et 100.0.0.1 peuvent se pinger l'un l'autre. #iptables -A INPUT -p icmp -i eth0 -s 50.0.0.1 -d 100.0.0.1 -j ACCEPT #iptables -A OUTPUT -p icmp -o eth0 -d 50.0.0.1 -s 100.0.0.1 -j ACCEPT 7. ROUTAGE Routes réseau Pour établir le lien entre des machines des LANs du site A et B, les routes suivantes doivent être ajoutées sur les équipements VPN. Sur le serveur OpenVPN: réseau destination 10.0.2.0 masque 255.255.255.0 passerelle 10.7.0.6 Sur le client OpenVPN: réseau destination 10.0.1.0 masque 255.255.255.0 passerelle 10.7.0.1 Les deux routes sont automatiquement ajoutées avec notre configuration du serveur. En effet, la route du serveur OpenVPN est ajoutée avec le script "route.txt" et la route du client OpenVPN est poussée par le serveur OpenVPN. IP forwarding (Redirection IP)
  • 65. [Date] ing Manuel Cédric EBODE MBALLA 65 L'IP forwarding est requis pour transférer des paquets entre les interfaces réseau d'un système Linux #echo "1" > /proc/sys/net/ipv4/ip_forward La commande ci-dessus va ajouter la valeur "1" dans le fichier /proc/sys/net/ipv4/ip_forward et ainsi activer l'IP forwarding. Si vous voulez garder l'IP forwarding après un redémarrage: #echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf 8. VERIFICATIONS: Les clients (10.0.1.100 et 10.0.2.100) devraient être capable de se voir l'un l'autre et accéder à des ressources HTTP et HTTPS sur Internet. Test de connectivités LAN à LAN: Les clients (10.0.1.100 et 10.0.2.100) devraient être capable de se voir l'un l'autre. Les commandes ping et traceroute peuvent être utilisées à ce propos. Depuis le client 10.0.1.100 qui est une machine Linux: #ping 10.0.2.100 #traceroute 10.0.2.100 traceroute to 10.0.2.100 (10.0.2.100), 30 hops max, 40 byte packets 1 10.0.1.1 (10.0.1.1) 0.521 ms 0.848 ms 1.011 ms 2 10.7.0.6 (10.7.0.6) 0.420 ms 0.472 ms 0505 ms 3 10.0.2.100 (10.0.2.100) 0.538 ms * * Vérification de l'accès Internet HTTP: Une façon de tester si le Pare-feu IPtables est configuré pour accepter le trafic HTTP (port TCP 80) et HTTPS (port TCP 443) est d'utiliser un navigateur Internet ou encore plus simple, la ligne de commande. Celle-ci peut être utilisée pour vérifier que les port TCP 80 ou TCP 443 sont ouverts avec le client telnet. #telnet 100.0.0.100 80 Trying 100.0.0.100... Connected to 100.0.0.100. Escape character is '^]'.
  • 66. [Date] ing Manuel Cédric EBODE MBALLA 66 Bien-sûr, nous ne voyons qu'une bannière (Escape character is '^]'.) mais cela est suffisant pour indiquer que le port est ouvert. Pour comparer, voici le résultat que vous obtenez si vous testez un port fermé, par exemple le port FTP TCP 21: #telnet 100.0.0.100 21 Trying 100.0.0.100... Table de routage: Serveur: Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 10.7.0.0 0.0.0.0 255.255.255.248 U 0 0 0 tap0 10.0.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1 10.0.2.0 10.7.0.6 255.255.255.0 UG 0 0 0 tap0 50.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 0.0.0.0 50.0.0.100 0.0.0.0 UG 0 0 0 eth0 Client: Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 10.7.0.0 0.0.0.0 255.255.255.248 U 0 0 0 tap0 10.0.2.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1 10.0.1.0 10.7.0.1 255.255.255.0 UG 0 0 0 tap0 100.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 0.0.0.0 100.0.0.100 0.0.0.0 UG 0 0 0 eth0
  • 67. [Date] ing Manuel Cédric EBODE MBALLA 67 TCPdump TCPdump est utilisé ci-dessous pour vérifier que le trafic à l'intérieur du tunnel OpenVPN dans le premier exemple and sur le port 2000 de l'interface WAN de Linux dans le second exemple. Les deux exemples sont effectués sur le serveur OpenVPN. #tcpdump -i tap0 -n - n: numeric - i: interface tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on tap0, link-type EN10MB (Ethernet), capture size 96 bytes IP 10.7.0.1 > 10.7.0.6: ICMP echo request, id 1824, seq 60, length 64 IP 10.7.0.6 > 10.7.0.1: ICMP echo reply, id 1824, seq 60, length 64 IP 10.7.0.1 > 10.7.0.6: ICMP echo request, id 1824, seq 61, length 64 #tcpdump -i eth0 port 2000 -n tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes IP 50.0.0.1.2000 > 100.0.0.1.2001: UDP, length 145 IP 100.0.0.1.2001 > 50.0.0.1.2000: UDP, length 145 IP 50.0.0.1.2000 > 100.0.0.1.2001: UDP, length 145 IP 100.0.0.1.2001 > 50.0.0.1.2000: UDP, length 145 IP 50.0.0.1.2000 > 100.0.0.1.2001: UDP, length 145 IP 100.0.0.1.2001 > 50.0.0.1.2000: UDP, length 145 9. SCRIPT DE DEMARRAGE OpenVPN Le logiciel OpenVPN est configuré pour être lancé automatiquement quand le système démarre. Pour configurer manuellement OpenVPN pour être lancé automatiquement au démarrage: #update-rc.d openvpn defaults Pour prévenir OpenVPN de démarrer automatiquement au démarrage: #update-rc.d -f openvpn remove
  • 68. [Date] ing Manuel Cédric EBODE MBALLA 68 IPtables Les commandes IPtables ont besoin d'être ajoutée dans un fichier appelé "iptables.sh" qui sera exécuté quand le système Linux démarre. Le fichier étant stocké dans le dossier /root . Ajoutez une ligne dans le fichier /etc/crontab pour démarrer les commandes IPtables automatiquement à chaque démarrage: #vim /etc/crontab @reboot root /root/iptables.sh >> /dev/null - Fichier serveur OpenVPN. /home/root/iptables.sh # Paramètres IPtables du serveur OpenVPN # #ANNULER vos paramètres IPtables: iptables -F # #STRATEGIES PAR DEFAUT: # iptables -P OUTPUT DROP iptables -P INPUT DROP iptables -P FORWARD ACCEPT # #Autorisation du tunnel OpenVPN: # iptables -A INPUT -i eth0 -p udp -s 100.0.0.1 -d 50.0.0.1 --sport 2001 --dport 2000 -j ACCEPT iptables -A OUTPUT -o eth0 -p udp -s 50.0.0.1 -d 100.0.0.1 --sport 2000 -- dport 2001 -j ACCEPT # #Autorisation de tout le trafic dans le tunnel: # iptables -A INPUT -i tap+ -p all -j ACCEPT iptables -A OUTPUT -o tap+ -p all -j ACCEPT # #Tous le trafic de et vers l'interface LAN (eth1) est acceptée: #
  • 69. [Date] ing Manuel Cédric EBODE MBALLA 69 iptables -A INPUT -i eth1 -p all -s 10.0.1.0/24 -j ACCEPT iptables -A OUTPUT -o eth1 -p all -d 10.0.1.0/24 -j ACCEPT # #Règles de NAT: # iptables -t nat -A POSTROUTING -j MASQUERADE # #Les utilisateurs du LAN sont autorisés à accéder aux ressources Internet HTTP et HTTPS seulement: # iptables -A OUTPUT -p tcp -m multiport --dports 80,443 -o eth0 -j ACCEPT iptables -A INPUT -p tcp -m multiport --sports 80,443 -i eth0 -m state --state ESTABLISHED -j ACCEPT # # REGLES FACULTATIVES: # #Règles pour autoriser le client SSH local à accéder à un serveur SSH distant: # iptables -A OUTPUT -p tcp -o eth0 --dport 22 -s 50.0.0.1 -j ACCEPT iptables -A INPUT -p tcp --sport 22 -i eth0 -d 50.0.0.1 -m state --state ESTABLISHED -j ACCEPT # #Règles pour permettre aux clients SSH distants d'accéder au serveur SSH local: # iptables -A INPUT -p tcp --dport 22 -i eth0 -d 50.0.0.1 -j ACCEPT iptables -A OUTPUT -p tcp --sport 22 -o eth0 -s 50.0.0.1 -m state --state ESTABLISHED -j ACCEPT # #Pour les tests de connectivités, 50.0.0.1 et 100.0.0.1 peuvent se pinger mutuellement. # iptables -A INPUT -p icmp -i eth0 -s 100.0.0.1 -d 50.0.0.1 -j ACCEPT iptables -A OUTPUT -p icmp -o eth0 -d 100.0.0.1 -s 50.0.0.1 -j ACCEPT - OpenVPN client file. /home/root/iptables.sh # Paramètres IPtables du client OpenVPN #
  • 70. [Date] ing Manuel Cédric EBODE MBALLA 70 #ANNULER vos paramètres IPtables: iptables -F # #STRATEGIES PAR DEFAUT: # iptables -P OUTPUT DROP iptables -P INPUT DROP iptables -P FORWARD ACCEPT # #Autorisation du tunnel OpenVPN: # iptables -A INPUT -i eth0 -p udp -s 50.0.0.1 -d 100.0.0.1 --sport 2000 --dport 2001 -j ACCEPT iptables -A OUTPUT -o eth0 -p udp -s 100.0.0.1 -d 50.0.0.1 --sport 2001 -- dport 2000 -j ACCEPT # #Autorisation de tout le trafic dans le tunnel: # iptables -A INPUT -i tap+ -p all -j ACCEPT iptables -A OUTPUT -o tap+ -p all -j ACCEPT # #Tous le trafic de et vers l'interface LAN (eth1) est acceptée: # iptables -A INPUT -i eth1 -p all -s 10.0.2.0/24 -j ACCEPT iptables -A OUTPUT -o eth1 -p all -d 10.0.2.0/24 -j ACCEPT # #Règles de NAT: # iptables -t nat -A POSTROUTING -j MASQUERADE # #Les utilisateurs du LAN sont autorisés à accéder aux ressources Internet HTTP et HTTPS seulement: # iptables -A OUTPUT -p tcp -m multiport --dports 80,443 -o eth0 -j ACCEPT iptables -A INPUT -p tcp -m multiport --sports 80,443 -i eth0 -m state --state ESTABLISHED -j ACCEPT # #REGLES FACULTATIVES: # #Règles pour autoriser le client SSH local à accéder à un serveur SSH distant:
  • 71. [Date] ing Manuel Cédric EBODE MBALLA 71 # iptables -A OUTPUT -p tcp -o eth0 --dport 22 -s 100.0.0.1 -j ACCEPT iptables -A INPUT -p tcp --sport 22 -i eth0 -d 100.0.0.1 -m state --state ESTABLISHED -j ACCEPT # #Règles pour permettre aux clients SSH distants d'accéder au serveur SSH local: # iptables -A INPUT -p tcp --dport 22 -i eth0 -d 100.0.0.1 -j ACCEPT iptables -A OUTPUT -p tcp --sport 22 -o eth0 -s 100.0.0.1 -m state --state ESTABLISHED -j ACCEPT # #Pour les tests de connectivités, 50.0.0.1 et 100.0.0.1 peuvent se pinger mutuellement. # iptables -A INPUT -p icmp -i eth0 -s 50.0.0.1 -d 100.0.0.1 -j ACCEPT iptables -A OUTPUT -p icmp -o eth0 -d 50.0.0.1 -s 100.0.0.1 -j ACCEPT La toute dernière chose à faire est de configurer les permissions du fichier /root/iptables.sh. L'utilisateur root a les permissions lecture/écriture/exécution. N'importe qui d'autre n'a aucune permission. #chmod 700 /root/iptables.sh L'utilisateur root est le propriétaire du fichier /root/iptables.sh. #chown root /root/iptables.sh