SlideShare une entreprise Scribd logo

VPN WINDOWS LINUX OPENVPN

CECI EST UN TUTORIEL DE PRESENTATION PLUS UN CAS PRATIQUE DU VPN ( BROUILLON TRES COMPLET)

1  sur  71
[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.
Publicité

Recommandé

05 01 open-vpn
05 01 open-vpn05 01 open-vpn
05 01 open-vpnNoël
 
Authentification TLS/SSL sous OpenVPN
Authentification TLS/SSL sous OpenVPNAuthentification TLS/SSL sous OpenVPN
Authentification TLS/SSL sous OpenVPNIsmail Rachdaoui
 
Rapport mise en place d'un sevrer VPN .
   Rapport mise en place d'un sevrer VPN .   Rapport mise en place d'un sevrer VPN .
Rapport mise en place d'un sevrer VPN .Mouad Lousimi
 
Etude et mise en place d’un VPN
Etude et mise en place d’un VPNEtude et mise en place d’un VPN
Etude et mise en place d’un VPNCharif Khrichfa
 
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 pfsensePape Moussa SONKO
 
VPN - Virtual Private Network
VPN - Virtual Private NetworkVPN - Virtual Private Network
VPN - Virtual Private Networkjulienlfr
 

Contenu connexe

Tendances

Installation et Configuration de Pfsense
Installation et Configuration de PfsenseInstallation et Configuration de Pfsense
Installation et Configuration de PfsenseIsmail Rachdaoui
 
Trunk VoiP Asterisk strongsawn openvpn
Trunk VoiP Asterisk strongsawn openvpnTrunk VoiP Asterisk strongsawn openvpn
Trunk VoiP Asterisk strongsawn openvpnYaya N'Tyeni Sanogo
 
Mise en place d'un système de messagerie sous debian avec: postfix, dovecot, ...
Mise en place d'un système de messagerie sous debian avec: postfix, dovecot, ...Mise en place d'un système de messagerie sous debian avec: postfix, dovecot, ...
Mise en place d'un système de messagerie sous debian avec: postfix, dovecot, ...Manassé Achim kpaya
 
Pfsense 121202023417-phpapp02
Pfsense 121202023417-phpapp02Pfsense 121202023417-phpapp02
Pfsense 121202023417-phpapp02Mohamed Houssem
 
Etude et mise en place d’une solution open source de gestion de la sécurité d...
Etude et mise en place d’une solution open source de gestion de la sécurité d...Etude et mise en place d’une solution open source de gestion de la sécurité d...
Etude et mise en place d’une solution open source de gestion de la sécurité d...Mohammed LAAZIZLI
 
Mise En Place d'une Solution de Supervision Réseau
Mise En Place d'une Solution de Supervision Réseau Mise En Place d'une Solution de Supervision Réseau
Mise En Place d'une Solution de Supervision Réseau Yaya N'Tyeni Sanogo
 
mémoire de projet de fin d'études
mémoire de projet de fin d'études mémoire de projet de fin d'études
mémoire de projet de fin d'études MortadhaBouallagui
 
Sécurité Réseau à Base d'un Firewall Matériel (fortigate)
Sécurité Réseau à Base d'un Firewall Matériel (fortigate)Sécurité Réseau à Base d'un Firewall Matériel (fortigate)
Sécurité Réseau à Base d'un Firewall Matériel (fortigate)Sakka Mustapha
 
Mise en place de la solution d’authentification Radius sous réseau LAN câblé
Mise en place de la solution d’authentification Radius sous réseau LAN câbléMise en place de la solution d’authentification Radius sous réseau LAN câblé
Mise en place de la solution d’authentification Radius sous réseau LAN câbléCharif Khrichfa
 
Rapport PFE ingénieur réseaux marwen SAADAOUI ( Juin 2018 )
Rapport PFE ingénieur réseaux marwen SAADAOUI ( Juin 2018 )Rapport PFE ingénieur réseaux marwen SAADAOUI ( Juin 2018 )
Rapport PFE ingénieur réseaux marwen SAADAOUI ( Juin 2018 )Saadaoui Marwen
 
VPN site-to-site.pdf
VPN site-to-site.pdfVPN site-to-site.pdf
VPN site-to-site.pdfgorguindiaye
 
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 JUNIPERHermann Gbilimako
 

Tendances (20)

Rapport finiale
Rapport finialeRapport finiale
Rapport finiale
 
Vpn
VpnVpn
Vpn
 
Installation et Configuration de Pfsense
Installation et Configuration de PfsenseInstallation et Configuration de Pfsense
Installation et Configuration de Pfsense
 
Trunk VoiP Asterisk strongsawn openvpn
Trunk VoiP Asterisk strongsawn openvpnTrunk VoiP Asterisk strongsawn openvpn
Trunk VoiP Asterisk strongsawn openvpn
 
vpn
vpnvpn
vpn
 
Mise en place d'un système de messagerie sous debian avec: postfix, dovecot, ...
Mise en place d'un système de messagerie sous debian avec: postfix, dovecot, ...Mise en place d'un système de messagerie sous debian avec: postfix, dovecot, ...
Mise en place d'un système de messagerie sous debian avec: postfix, dovecot, ...
 
Pfsense 121202023417-phpapp02
Pfsense 121202023417-phpapp02Pfsense 121202023417-phpapp02
Pfsense 121202023417-phpapp02
 
Tuto VP IPSEC Site-to-site
Tuto VP IPSEC Site-to-siteTuto VP IPSEC Site-to-site
Tuto VP IPSEC Site-to-site
 
Etude et mise en place d’une solution open source de gestion de la sécurité d...
Etude et mise en place d’une solution open source de gestion de la sécurité d...Etude et mise en place d’une solution open source de gestion de la sécurité d...
Etude et mise en place d’une solution open source de gestion de la sécurité d...
 
Mise En Place d'une Solution de Supervision Réseau
Mise En Place d'une Solution de Supervision Réseau Mise En Place d'une Solution de Supervision Réseau
Mise En Place d'une Solution de Supervision Réseau
 
mémoire de projet de fin d'études
mémoire de projet de fin d'études mémoire de projet de fin d'études
mémoire de projet de fin d'études
 
Sécurité Réseau à Base d'un Firewall Matériel (fortigate)
Sécurité Réseau à Base d'un Firewall Matériel (fortigate)Sécurité Réseau à Base d'un Firewall Matériel (fortigate)
Sécurité Réseau à Base d'un Firewall Matériel (fortigate)
 
projet fin d'étude IWAN
projet fin d'étude IWANprojet fin d'étude IWAN
projet fin d'étude IWAN
 
GNS3, VoIP, ToIP
GNS3, VoIP, ToIPGNS3, VoIP, ToIP
GNS3, VoIP, ToIP
 
Mise en place de la solution d’authentification Radius sous réseau LAN câblé
Mise en place de la solution d’authentification Radius sous réseau LAN câbléMise en place de la solution d’authentification Radius sous réseau LAN câblé
Mise en place de la solution d’authentification Radius sous réseau LAN câblé
 
présentation sur le vpn
présentation sur le vpn présentation sur le vpn
présentation sur le vpn
 
Rapport PFE ingénieur réseaux marwen SAADAOUI ( Juin 2018 )
Rapport PFE ingénieur réseaux marwen SAADAOUI ( Juin 2018 )Rapport PFE ingénieur réseaux marwen SAADAOUI ( Juin 2018 )
Rapport PFE ingénieur réseaux marwen SAADAOUI ( Juin 2018 )
 
VPN site-to-site.pdf
VPN site-to-site.pdfVPN site-to-site.pdf
VPN site-to-site.pdf
 
Vpn
VpnVpn
Vpn
 
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
 

Similaire à VPN WINDOWS LINUX OPENVPN

chapitre 6 vpn (1).pptx
chapitre 6 vpn (1).pptxchapitre 6 vpn (1).pptx
chapitre 6 vpn (1).pptxWiemAssadi
 
Weos tunnel ssl hôte à site
Weos   tunnel ssl hôte à siteWeos   tunnel ssl hôte à site
Weos tunnel ssl hôte à siteFabian 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-ciscoCamara Assane
 
Prise en Main des équipements JUNIPER
Prise en Main des équipements JUNIPERPrise en Main des équipements JUNIPER
Prise en Main des équipements JUNIPERHermann GBILIMAKO
 
Programmation réseau en JAVA
Programmation réseau en JAVAProgrammation réseau en JAVA
Programmation réseau en JAVABachir 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 RoundcubeBalla Moussa Doumbouya
 
Acces distant VPN (mode client) pour la domotique
Acces distant VPN (mode client) pour la domotiqueAcces distant VPN (mode client) pour la domotique
Acces distant VPN (mode client) pour la domotiqueBenoît VAN DEN BULCKE
 
Reseau entreprise
Reseau entrepriseReseau entreprise
Reseau entrepriseSAIDRAISS2
 

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
 
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
 
Implémentation d'openvpn
Implémentation d'openvpnImplémentation d'openvpn
Implémentation d'openvpn
 
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
 
Acces distant VPN (mode client) pour la domotique
Acces distant VPN (mode client) pour la domotiqueAcces distant VPN (mode client) pour la domotique
Acces distant VPN (mode client) pour la domotique
 
Reseau entreprise
Reseau entrepriseReseau entreprise
Reseau entreprise
 

Plus de Manuel Cédric EBODE MBALLA

Plus de Manuel Cédric EBODE MBALLA (11)

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