VPN
VPN
VPN
Sur Ubuntu 3
1. Translation d’adresses
2. Transfert de ports
root@parefeu:/# iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 22 -j DNAT --to-
destination 172.15.4.1
root@parefeu:/#
Connexion réussie !
En claire
Ce genre de configurations permet non seulement d’accroître la sécurité de l’architecture réseau,
mais aussi de rendre accessible depuis l’extérieur les services hébergés en local. Même si nous
l’avons pas souligné, il faut savoir que ce type de configuration permet d’alléger la charge des
serveurs locaux à travers le load balancing.
Dans le cadre plus précis des réseaux informatiques, un proxy est alors un programme servant
d'intermédiaire pour accéder à un autre réseau, généralement Internet. Par extension, on appelle
aussi « proxy » un matériel comme un serveur mis en place pour assurer le fonctionnement de tels
services.
Les Proxy interviennent au niveau de la couche 7 du modèle OSI
Redémarrer le service
# /etc/init.d/squid restart
La configuration sur les clients
Sur le navigateur :
Paramètres > Preferences > Réseau Proxy
Après avoir renseigner les informations ci-dessus, cliquez sur OK pour valider
Les logs d’un proxy Squid, sont enregistrés dans le fichier /var/log/squid/access.log
Place au test
Filtrage de domaines
À cet instant, toutes les requetes WEB passent par le proxy qui, à son tour les relaie vers internet.
Nous allons donc depuis notre proxy, interdire les visites vers certains cites.
On va maintenant créer le fichier bloques.txt dans lequel mettre les noms de domaine à interdire
Redémarrer le proxy
#/etc/init.d/squid3 restart
Pour la connexion à YouTube (l’un des site dont l’accès est interdit)
Pour la connexion à Facebook
Contexte
Ce TP consiste avoir des applications dans le réseau privé qui ne sont pas accessibles depuis
Internet pour de mesure de sécurité et de paramétrer nginx comme proxy de tel sorte que ces
applications deviennent accessibles à travers l’interface externe du proxy nginx dont l’adresse IP est
192.168.1.249/24. Autrement dit c’est la machine nginx (proxy) qui reçoit les requêtes qui viennent
et elle se charge de les rediriger vers les machines qui hébergent les applications.
Sur le serveur-FTP
Installation et configuration du Proxy Nginx
Il faut tout d’abord installer le Proxy Nginx avant de passer à sa configuration.
# apt install nginx
Après installation du paquet, Il faut tout d’abord s’assurer que que le Proxy communique avec les
différents serveurs du réseau privé.
Pour la deuxième
Configuration du Proxy Nginx
Pour la configuration du serveur Nginx, il faudra éditer le fichier /etc/nginx/nginx.conf et déclarer
les adresses IP des serveurs du réseau privé et le port d’écoute des services MySQL et FTP comme
suit :
#Pour les deux serveurs: MySQL et FTP
stream {
upstream 128.29.0.1
{
server 128.29.0.1:3306;
}
upstream 128.29.0.2
{
server 128.29.0.2:21;
}
server
{
listen 3306;
proxy_pass 128.29.0.1;
}
server
{
listen 21;
proxy_pass 128.29.0.2;
}
Redémarrer le service
Permettre aux serveurs du réseau priver d’accéder à internet afin de télécharger les paquets
qui leurs permettrons de mettre en place les services escomptés.
Pour résoudre ce problème, il faudra faire de la translation d’adresses à partir du proxy Nginx. Du
NAT. L’utilitaire iptables nous permet de le faire, il faudra donc l’installer.
Redémarrer le serveur
#
Créer une base de donnée et attribuer ses droits à un utilisateur que nous allons créer
La base de données s’appelle senegal et le compte créé à cet effet est bory qui a un mot de passe
passer
Redémarrer le serveur
Créer un utilisateur avec lequel se connecter à distance
Depuis une autre machine du réseau, on va tenter d’accéder aux services qui sont déployés dans le
réseau privé.
Sur le serveur FTP
On arrive à se connecter, c’est bien !
Nous avons remarqué que nous n’avons installé ni VsFTPD , ni mariadb-server sur le proxy Nginx,
mais nous arrivons quand même à utiliser ces services en envoyant les requêtes vers son adresse IP.
C’est ça le port forwarding !
La zone démilitarisée (DMZ) avec l’utilitaire iptables
En informatique, une zone démilitarisée, ou DMZ est un sous-réseau séparé du réseau local et isolé
de celui-ci et d'Internet (ou d'un autre réseau) par un pare-feu. Ce sous-réseau contient les machines
étant susceptibles d'être accédées depuis Internet, et qui n'ont pas besoin d'accéder au réseau local.
Les services susceptibles d'être accédés depuis Internet seront situés en DMZ, et tous les flux en
provenance d'Internet sont redirigés par défaut vers la DMZ par le firewall. Le pare-feu bloquera
donc les accès au réseau local à partir de la DMZ pour garantir la sécurité. En cas de
compromission d'un des services dans la DMZ, le pirate n'aura accès qu'aux machines de la DMZ et
non au réseau local.
Architecture
Explication de l’architecture
Cette architecture est assez éloquente pour être expliquée en détails. Néanmoins, voici donc ses
fondamentaux :
Sur notre architecture, le Firewall est relié à trois réseaux : DMZ, le LAN et INTERNET.
L’interface enp0s9 est celle qui est connectée à internet avec l’adresse réseau 192.168.0.0/16
L’interface enp0s3 qui est connectée au LAN dont l’adresse réseau est 172.16.0.0/16. Ce
pendant, la passerelle de toutes les machines du LAN est 172.16.0.254/16
L’interface enp0s8 connectée à la DMZ dont l’adresse réseau est 169.10.0.0/16 . Elle est
donc la passerelle des serveurs WEB et Asterisk de la DMZ. Son adresse est
168.18.0.254/16
Présentation des règles qui doivent être fixées sur le firewall
Le réseau (LAN) contient les machines du réseau local. Le firewall
Doit permettre l'accès à Internet des utilisateurs (vers un serveur http).
Doit permettre le ping d'une machine vers une machine d'Internet (message echo request).
Doit accepter en retour la réponse du ping (echo reply).
Ne doit pas autoriser une demande de connexion à partir d'une machine venant d'Internet.
Les machines du LAN ne doivent pas être visibles sur internet.
Les machines du LAN doivent pouvoir accéder au serveur web de l'entreprise localisé dans
la DMZ
Le réseau coté DMZ contient les machines accessibles à la fois depuis internet et depuis le
LAN.
Une machine sur INTERNET doit pouvoir accéder aux serveurs http et Asterisk de l'entreprise se
trouvant dans la DMZ. Pour des raisons de sécurité, on ne souhaite pas que la machine sur
INTERNET accède directement aux différents serveurs, avec son adresse IP.
Pour cela, il faut mettre en place un ré-routage de ports ou port forwarding pour que toute
connexion arrivant sur l'interface externe du Parefeu (firewall), soit redirigée vers le port standard
ou défini du serveur concerné (dans la DMZ) par la requête.
➔ Dans le sens (DMZ) vers (INTERNET) et (LAN) vers (DMZ), une translation d'adresses est
nécessaire et sera réalisée.
Configurations
Configuration du Firewall
➔ Configuration IP
Comme sur l’architecture, l’interface enp0s9 est celle directement connectée au réseau publique, et
nous avons décidé de lui fournir des élément TCP/IP en mode DHCP et elle a une adresse IP
192.168.6.185 /16
En récapitulatif, nous avons :
enp0s3 qui a 172.16.0.254 /16 qui est directement connecté au LAN
enp0s8 qui a 169.18.0.254 /16 qui est directement connecté à la DMZ
enp0s9 qui a 192.168.6.185 /16 qui directement connecté au réseau publique (internet)
Activation du routage
Éditer le fichier /etc/sysctl.conf pour dé-commenter le paramètre suivant comme suit :
Nous remarquons que les machines machines du LAN communiquent avec celles de la DMZ.
Après cette commande sur le firewall, les machines de la DMZ ont accès à internet !
Sur le serveur WEB, on a déjà installé apache2, pour preuve que la machine a accès à internet :
Configuration de Apache2
Créons tout d’abord un site :
Pour de raisons de sécurité, nous allons changer le port d’écoute de notre serveur Web.
D’abord, éditer le fichier /etc/apache2/ports.conf et mettre le port voulu mais supérieur à 1024 et
qui n’est pas utilisé par un autre service de la machine.
Puisque toutes les connexions passent par le firewall, nous appliquons donc les règles à ce niveau.
La règle ci-dessous redirige les requêtes HTTP provenant du LAN vers le serveur WEB de la DMZ
Le site hébergé dans une machine de la DMZ est accessible depuis l’extérieur !
Redirection des requêtes du port 5060 (la téléphonie) sur son serveur adéquat
Dans cette partie, nous allons mettre en place un serveur de téléphonie Asterisk sur la machine
169.18.0.1. Tous les paquets sont déjà installés, puisqu’elle a accès à internet !
Configuration du serveur de téléphonie
# nano /etc/asterisk/sip.conf
# nano /etc/asterisk/extensions.conf
• Redémarrer asterisk
En claire :
• Réaction du serveur
Comme nous l’avons constaté, les connexions arrivent sur l’interface externe du firewall qui sont
ensuite redirigées vers le serveur adéquat. C’est ça le port forwarding.
Les VPN
La principe consiste à utiliser Internet comme support de transmission en utilisant un protocole de
« tunnellisation » , c’est à dire encapsulation les données à transmettre de façon chiffrée. On parle
alors de VPN pour désigner le réseau ainsi artificiellement crée. Ce réseau est dit virtuel car il relie
deux réseaux (physique, réseaux locaux) par une liaison non fiable (internet), et privé car seuls les
ordinateurs des réseaux locaux de part et d’autre du VPN peuvent accéder aux données en clair.
Serveurs VPN
Caractéristiques
Création 2002
Technologie(s) C++ ; C C GO ; C
Créateur(s) James Yonan Andreas Steffen, Jason A. Donenfeld
Martin Willi, Tobias
Brunner
Niveau(x) d’opérabilité 2 et 3 3
Version actuelle 2.3.10 V5.9.0 0.0.20190913
OS compatibles Linux, Android, Android, Linux,
Windows, OS X, MacOS, Windows,...
IOS, ...
Performance Réduit le débit du Aucun effet sur le débit
réseau du réseau
Protocole de transport UDP
Algo cryptographique OpenSSl et SSL/TLS IKEv2 EAP (EAP-SIM, ChaCha20
EAP-AKA, EAP-TLS,
EAP-TTLS, EAP-
PEAP, EAP-
MSCHAPv2, etc.)
Nombre de lignes de 4000
code
Site Web www.openvpn.net www.strongswan.org www.wireguard.org
Clients Strongswan vpn client,
Les VPN
Mise en place d’une implémentation IPsec qui est StrongsWan.
Avant de mettre en place le routeur et de faire sa configuration IP, il faut tout d’abord utiliser le
cloud pour installer les paquets nécessaires sur nos machines strongs. Les paquets à installer sont
les suivants :
# apt install strongswan strongswan-pki libcharon-extra-plugins libstrongswan-extra-plugins
vim net-tools iputils-ping -y
Puisque nous avons fini avec l’installation des paquets, il faudra retirer le cloud afin de mettre en
place notre architecture nécessaire à la mise en place du VPN.
1. Configuration IP du routeur
Interface f0/0
R1(config)# int f0/0
!
R1(config-if)# ip add 192.168.0.254 255.255.255.0
!
R1(config-if)# no sh
!
R1(config-if)# exit
R1(config)#
Interface f0/1
R1(config)# int f0/1
!
R1(config-if)# ip add 192.168.2.254 255.255.255.0
!
Routeur(config-if)# no sh
!
R1(config-if)# exit
R1(config)#
2. Pour chaque machine donner les éléments TCP/IP sur les interfaces externes. Faire de même
pour les interfaces internes du réseau privé.
Voici les éléments de Strongs1
Pour strong2
Pour permettre à une machine Linux d’autoriser le transfert des datagrammes IP d’une de
ses interfaces à une autre de ses interfaces, il faut éditer le fichier /etc/sysctl.conf et mettre
le paramètre : net.ipv4.ip_forward à 1 et en suite le dé-commenter.
Pour le Strongs-1
4. Test de connectivité
Les deux serveurs se voient, c’est bien.
4. Configuration du Strongs-1
Il faudra éditer le fichier /etc/ipsec.conf
# Add connections here.
conn Strongs1-to-Strongs2
left=10.10.10.2
leftsubnet=192.168.2.0/24
right=10.10.10.6
rightsubnet=192.168.3.0/24
ike=aes256-sha2_256-modp1024!
esp=aes256-sha2-256!
keyingtries=0
ikelifetime=1h
lifetime=8h
dpddelay=30
dpdtimeout=120
dpdaction=clear
authby=secret
auto=start
keyexchange=ikev2
type=tunnel
Il faudra ensuite éditer le fichier /etc/ipsec.secrets pour renseigner la clé partagée comme sur la
figure ci-dessous :
.Redémarrer le service
/etc/init.d/ipsec start
Dans les environnements qui ne sont pas de machines dockers, il faudra redémarrer le service
comme suit :
# service strongswan restart
Pour le Strong2
# Add connections here.
conn Strongs1-to-Strongs2
left=10.10.10.6
leftsubnet=192.168.3.0/24
right=10.10.10.2
rightsubnet=192.168.2.0/24
ike=aes256-sha2_256-modp1024!
esp=aes256-sha2-256!
keyingtries=0
ikelifetime=1h
lifetime=8h
dpddelay=30
dpdtimeout=120
dpdaction=clear
authby=secret
auto=start
keyexchange=ikev2
type=tunnel
Le fichier …
Vérification de l’établissement du tunnel
cas…
Activer le routage sur le strong afin qu’il fasse transiter les paquets. Ça se passe dans
/etc/sysctl.conf
Pour que le client Windows se connecte, il faudra mettre en place un serveurs DNS pour une
résolution d’adresses. Les paquets bind9 etbind9utils seront dons installés sur le strongs.
# apt install bind9 bind9utils
Installation de strongwan
# sudo apt-get install strongswan strongswan-pki libcharon- extra-plugins libstrongswan-extra-
plugins
Après avoir créé le certificat de l’autorité on va générer une clé et un certificat pour serveur avec les
commandes ci-après :
Redémarrer le strongswan
# service strongwan restart
Depuis le strongs, nous allons copier le certificat de l’autorité sur la machine cliente comme
suit :
Adapter le DNS de la machine cliente comme suit :
Test du DNS
int f0/1
ip add 174.17.0.1 255.255.0.0
no sh
exit
Au niveau de R3, pas grands choses à faire, juste la configuration IP des interfaces.
.Configuration de R4
. Configuration de R5
!
crypto isakmp policy 10
encr 3des
hash md5
authentication preshare
group 5
lifetime 3600
crypto isakmp key passer123 address 172.16.0.2
!
crypto ipsec securityassociation lifetime seconds 1800
!
crypto ipsec transformset 50 esp3des espmd5hmac
!
crypto map monmap 10 ipsecisakmp
set peer 172.16.0.2
set securityassociation lifetime seconds 900
set transformset 50
match address 101
!
interface Serial1/0
ip address 174.17.0.2 255.255.0.0
crypto map monmap
!
interface FastEthernet 0/0
ip address 192.168.3.254 255.255.255.0
ip route 0.0.0.0 0.0.0.0 174.17.0.1
!
accesslist 101 permit ip 192.168.3.0 0.0.0.255 192.168.2.0 0.0.0.255
end