tunnels et vpn - formation.jussieu.fr€¦ · tunnels (stunnel) stunnel permet l ’utilisation d...
TRANSCRIPT
Tunnels et VPN
Sécurisation des communications
Remplacement ou sécurisation de tous les protocoles ne chiffrant pas l’authentification + éventuellement chiffrement des données Permettre d’éviter les écoutes réseau Permettre l’accès à des services internes depuis
l’extérieur Accès haut débits ( ADSL et le câble ) Accès Modem avec des fournisseurs externes
Quelles sont les solutions ?
Modification d’applications existantes => Problème de compatibilité client-serveur
telnet windows 2000 !!! Sendmail, pop et imap StartTLS (Option négociée)
On veut garder les protocoles sans modifications => créer une connexion chiffrée entre clients et serveurs
Dans ce cadre on parle de tunnels applicatifs, tunnels et VPN
Quelles sont les solutions ?
Le faire au niveau application (couche 7 ) Créer de nouvelles applications intégrant les
fonctions cryptographiques SSH
Le faire au niveau transport ( couche 4 ) Liaison logique entre des programmes qui
chiffrent les communications. SSL (https, pops, imaps …)
Le faire au niveau réseau ( couche 3 ) Le chiffrement est effectué directement au dessus
du support réseau => interface virtuelle
VPN et tunnels
VPN : Virtual private Network faire transiter un protocole par l’intermédiaire d ’un
autre Application dans IP ( port forwarding ) IP dans IP Ethernet, IPX, appletalk … dans IP
Généralisation du concept de tunnel C’est la valise diplomatique de l’informatique avec
tous les dangers que cela comporte Extension du périmètre de sécurité à des machines
externes
Tunnels – SSH
SSH peux être utilisé en tunnel pour des applications
( Port forwarding ) X11 par défaut Pop et SMTP exemple :
eudora+ putty sous windows firefox + openssh sous unix
Mode VPN complet depuis openSSH 5
Tunnels (STUNNEL) Stunnel
Permet l ’utilisation d ’un certain nombre de protocol TCP standard au dessus d’une couche SSL ( http, pop, imap, smtp …)
Il ne gère pas telnet et ftp exemples :
imap démarré au niveau de l ’inetdimaps stream tcp nowait root \/usr/local/sbin/stunnel stunnel -l /usr/sbin/imapd imapd
Désormais beaucoup de services supportent les options SSL sans passer par stunnel (wu-imap,courier-imap,dovecot …) Possibilité d ’activer une connexion PPP à l ’intérieur exemple :(PEU EFFICACE)
Sur le serveur utiliser (-L pour le Pseudo TTY) "stunnel -d 2020 -L /usr/sbin/pppd -- pppd local“ Sur le client pour activer le lien PPP sécurisé
"stunnel -c -r server:2020 -L /usr/sbin/pppd -- pppd local"
Numéro de Ports standards sous SSL https 443/tcp # http protocol over TLS/SSL smtps 465/tcp # smtp protocol over TLS/SSL (was ssmtp) nntps 563/tcp # nntp protocol over TLS/SSL (was snntp) sshell 614/tcp # SSL shell ldaps 636/tcp # ldap protocol over TLS/SSL (was sldap) ftps-data 989/tcp # ftp protocol, data, over TLS/SSL ftps 990/tcp # ftp protocol, control, over TLS/SSL telnets 992/tcp # telnet protocol over TLS/SSL imaps 993/tcp # imap4 protocol over TLS/SSL ircs 994/tcp # irc protocol over TLS/SSL pop3s 995/tcp # pop3 protocol over TLS/SSL (was spop3)
VPN: Types de connexions
Réseau à Réseau Société multisite
=> Routage du VPN sur chacun des sites Machine à Réseau
Utilisateurs itinérants
=> Routage des clients VPN sur le site serveur Machine à Machine
vpn direct entre deux machines
Que doit assurer un VPN ?
Authentification ( de préférence forte ) Intégrité Confidentialité Protection contre le rejeu Eventuellement compression
Vtun (1)
Http://vtun.sourceforge.net/ supporté sous linux, solaris et *bsd simplicité de mise en œuvre et documentation très
bien faite supporte le traffic shapping tunnels IP, Ethernet, PPP, PIPE compression LZO et ZLIB Encryption MD5 BLOWFISH Fonctionne en mode client serveur (serveur sur un port
configurable UDP ou TCP) Défaut: mot de passe en clair dans le fichier de
configuration
Vtun (2) Fichier de config clientoptions { port 5000; # Connect persist yes; # Persist mode timeout 60; # General timeout}# TUN example. Host 'cobra'. cobra { pass XXXXXX; # Password device tun1; # Device tun1 up {
# Connection is Up # Assign IP addresses. ifconfig "%% 10.3.0.2 pointopoint \
10.3.0.1 mtu 1450"; };}
Fichier de config serveuroptions { port 5000; # Listen on this port.}# TUN example. Host 'cobra'.cobra { pass XXXXXX; # Password type tun; # IP tunnel proto udp; # UDP protocol comp lzo:9; # LZO compression
level 9 encr yes; # Encryption up {
# Connection is Up # 10.3.0.1 - local, 10.3.0.2 - remote ifconfig "%% 10.3.0.1 pointopoint \ 10.3.0.2 mtu 1450";
};}
PPTP Protocole Ouvert M$ PPTP ( Point to Point Tunneling Protocol )
RFC 1701, 1702 et 1171 Microsoft authentification MS/CHAP V2 Microsoft chiffrement MPPE (RC4 40 ou 128 bits) PPTP ne fait aucun chiffrement Utilise deux canaux de communication
Port 1723 TCP protocol IP 47 (GRE) pour les données
GRE: Generic Routing Encapsulation établissement d ’une connexion PPP à l ’intérieur
du canal de donnée éventuellement compressé et crypté
Abandonné par Microsoft dans Windows 2000 (L2TP)
A n’utiliser que si c’est la seule solution
IPSec IPSec : est un standard ( pas un logiciel )
Inclus dans IPV6 Il assure :
Authentification ( DSS ou RSA) Intégrité ( MD5 SHA-1 RIPEMD …) Confidentialité (DES RC5 IDEA Blowfish …)
Une Implémentation libre : FreeS/WAN (Linux) Port et protocol utilisé:
UDP port 500 IKE ESP protocol 50 (Encapsulating Security Payload) AH protocol 51 (Authentication Header) IPSEC NAT Traversal UDP 4500
OpenVPN encapsuler dans un tunnel n'importe quel sous-réseau IP ou
adapateur ethernet virtuel, dans un unique port TCP ou UDP; créer une infrastructure de tunnels entre n'importe quel système
d'exploitation supporté par OpenVPN. Sont concernés Linux, Solaris, OpenBSD, FreeBSD, NetBSD, Mac OS X, et Windows 2000/XP/VISTA
utiliser toutes les fonctionnalités de chiffrement, d'authentification et de certification de la librairie OpenSSL afin de protéger le trafic de votre réseau privé lorsqu'il transite par Internet;
utiliser n'importe quel algorithme de chiffrement, taille de clef, ou empreinte HMAC (pour l'authentification des datagrammes) supporté par la bibliothèque OpenSSL,
choisir entre un chiffrement conventionnel basé sur une clef statique, ou un chiffrement par clef publique en se basant sur les certificats,
utiliser les clefs statiques, pré-partagée, ou un échange de clef dynamiques basé sur TLS.
OpenVPN utiliser une compression des flux adaptée en temps-réel, la mise
en forme de trafic pour gérer l'utilisation de la bande-passante du lien,
encapsuler les réseaux dont les extrémités publiques sont dynamiques comme on peut le rencontrer avec DHCP ou avec des clients connectés par modem,
encapsuler le trafic de réseaux grâce aux firewalls effectuant du suivi de sessions, sans nécessairement utiliser des règles de filtrage particulières,
encapsuler le trafic de réseaux avec du NAT (translation d'adresse), et
créer des ponts ethernets sécurisés utilisant les périphériques tap.
VPN Conclusions Eviter les implémentations sur TCP
Problème d’efficacité (c’est parfois la seule solution qui marche )
C’est un outil efficace extrêmement puissant Mais … aussi une arme redoutable
Une anecdote Quelques questions :
Pour quels services ? Ou mettre le point d’entrée dans l’architecture réseau ? Que faut il comme sécurité sur le poste client ?
A n’utiliser que dans le cadre d’une architecture déjà sécurisée
Proxy et reverse proxy
Serveurs mandataires et relais inverses
Proxy et reverse proxy
Qu'est-ce qu'un proxy ? Proxy = mandataire (traduction) Un proxy est un service mandataire pour une
application donnée. C'est à dire qu'il sert d'intermédiaire dans une
connexion entre le client et le serveur pour relayer la requête qui est faite.
Ainsi, le client s'adresse toujours au proxy, et c'est lui qui s'adresse ensuite au serveur.
Permet de casser complètement la connectivité directe à l ’internet des machines internes => possibilité de fermer tous les ports entre les machines internes et l ’internet
Ne peuvent être utilisé que les applications supportées par un relais applicatif
Exemples : telnet ftp vers une machine relais puis vers l’internet cache Web (squid) serveur relais de messagerie existence de relais transparents pour certaines applications socks
Proxy et reverse proxy
Proxy et reverse proxy
Fonctionnement Pour une application donnée, http, ftp, smtp, etc,
il peut donc modifier les informations à envoyer au serveur, ainsi que celles renvoyées par celui-ci.
La contrepartie est qu'il faut un proxy par application.
Cependant, beaucoup de proxy sont en fait des multi-proxy qui sont capables de comprendre la plupart des applications courantes
Internet
Serveurmessagerie R
OUTEUR
2
ProxyWWW
Proxytelnet/ftp
ServeurWWW
ROUTEUR
1
Station 1
Serveurmessagerie
ServeurWWW
195.220.97.3
195.220.97.10
195.220.97.4
195.220.97.5
Réseau adresseofficielle 195.220.97/24
Réseaux adresseprivée 10/8
10.1.2.2
Station 2
10.1.3.2
10.1.2.4
Station 3
Serveurtelnet
Proxy et reverse proxy
Proxy et reverse proxy
Fonctionnalités des serveurs Fonctions de cache Fonction de d'enregistrement Fonction de filtre Fonction de sécurité Autres fonctions
Proxy et reverse proxy
Fonction de cache Le serveur conserve en mémoire toutes les
requêtes effectuées par le client Permet de conserver localement les
informations afin d'être réutilisées ultérieurement Conséquence
le cache accélère les consultations des informations déjà demandée,
le trafic réseau en est diminué Réduit les malveillances
Proxy et reverse proxy
Fonction d'enregistrement Le serveur garde une trace détaillée de toutes les
informations qui le traversent Génère un fichier journal (fichier de log).
enregistre la trace des requêtes effectuées par tous les clients utilisant le proxy. L’identification du client, les dates et heures de connexion, Les URL des ressources consultés, les tailles et temps de téléchargement, etc.
Proxy et reverse proxy
Fonction de filtre Mise en place de filtre au niveau des requêtes
Analyse des paquets qu'il reçoit et agit ainsi en fonction de la politique de sécurité choisie
Fonction de sécurité fonction d'authentification Serveur permettant de protéger les postes
clients d'agressions extérieures Protège des attaques via des accès directs Attention ce n'est pas un firewall !
Proxy et reverse proxy
Autres fonctions Fonction d'anonymat
Les requêtes relayées par un serveur peuvent ne pas contenir d'adresse du client, de manière à protéger leur anonymat
Proxy et reverse proxy
Avantages du proxy Il est capable d'interpréter le trafic et
notamment de cacher les informations. On diminue ainsi le trafic et augmente la bande passante de la même occasion.
On peut aussi autoriser ou non l'accès à certaines partie d'un site, à certaines fonctionnalités, etc.
On a donc un bon contrôle de ce qui transite sur le réseau, et on sait quels protocoles peuvent circuler.
Proxy et reverse proxy
Proxy transparent Le principe :
Le réseau est configuré avec une passerelle par défaut et un serveur DNS.
Chaque requête est automatiquement , et de manière invisible renvoyée vers le proxy par le routeur/firewall.
Le serveur proxy relaye la requete sur le serveur Internet et stocke l'information dans son cache.
Le client croit ainsi dialoguer avec le serveur internet , mais en réalité, elle ne dialogue qu'avec le serveur proxy.
Proxy et reverse proxy
Proxy transparent Fonctions :
Mettre en cache les pages les plus visitées, afin d'éviter de recharger une page qui a déjà été visitée
Forcer les utilisateurs du réseau à utiliser un proxy, qu'ils le veuillent ou non.
Faire utiliser un proxy à toutes les machines d'un réseau sans avoir à configurer chaque application.
Bloquer des applications internet (comme les utilitaires de chat, ou de peer2peer)
sécuriser un réseau qui accède à internet en limitant l'accès à certaines pages.
Proxy et reverse proxy
Proxy socks Socks est un protocole proxy générique pour
TCP/IP Serveur socks linux sur le port 1080/Tcp Permet l'implémentation de proxy dans des applications
(programme java etc..) l'avantage de ce cette méthode c'est que l'on n'a pas besoin
de connaitre le protocole de communication des deux machines donc pas d'intervention sur les paquets qu'ils se transmettent (gain de temps)
Inconvénient nécessite son implémentation dans les applications (clients)
Proxy et reverse proxy Squid
C'est un serveur proxy cache haute performance, qui supporte les protocoles HTTP, FTP
Il prend en compte toutes les requêtes demandées un seul processus qui est non-bloquant.
Il conserve les données génériques et spécialement les objets très demandés en RAM il met en cache les requêtes DNS, Le rôle du cache est de stocker les objets
demandés par les utilisateurs pour la première fois via les protocoles HTTP, FTP
le délais d'accès à un objet devient celui de la recherche de cet objet dans le cache + les temps d'accès réseau
Proxy et reverse proxy
Squid Il supporte
le cryptage SSL, une gestion des accès évolués, une journalisation complète des requêtes
Utilisation du protocole ICP (Internet Cache Protocol) les caches de squid peuvent être référencés :
Par hiérarchie, Par sites visités pour minimiser la bande passante
utilisée
Proxy et reverse proxy
Squid Le packetage squid contient:
un programme principal nommé Squid , un support pour les applications externes (DNS,
ftp) des outils de réecriture de requêtes et
d'authentification, et des outils de gestion.
Utiliser iptables pour utiliser SQUID en tant que proxy transparent
Proxy et reverse proxy
Squid : configuration de squid Options réseau
http_port 3128 : c'est le port sur lequel travaille le cache, 3128 par défaut, certains déplacent ce port en 8080
icp_port 3128 : c'est le port sur lequel le cache peut être interrogé par un autre serveur
udp_incoming/outgoing_adresse : permet de définir sur quelle inteface les requêtes seront reçues
cache_peer hostname type http_port icp_port : définition des serveurs de cache voisins avec lesquels on communique
visible_hostname : c'est le nom du serveur squid depuis les resaux externes
Proxy et reverse proxy
Squid : configuration de squid Configuration principale du cache
cache_mgr [email protected] : c'est le nom de l'administrateur du serveur de cache
cache_mem 64 MB : c'est la mémoire que l'on alloue à un serveur Squid
maximum_object_size/maximum_object_size_in_memory: permet de spécifier la taille maximale des objets stockés dans le cache/mémoire
cache_dir ufs /var/cache 3200 16 256 : indique le répertoire devant accueillir les informations, avec en paramètre la le type, taille disque (Mo), le nombre de répertoires niveau et sous niveau pour le cache
Proxy et reverse proxy Squid : configuration de squid
Configuration user et logs cache_effective_user/goup nobody nobody :
donne des droits à un utilisateur/un groupe pour squid (éviter root) attention aux droits des fichiers de logs
cache_access_log /var/log/squid/access.log : indique à le fichier log des requêtes appelées
cache_log /var/log/squid/cache.log : fichier journal de squid
cache_store_log none : pour ne pas enregistrer dans un fichier de log les écritures et effacements d'informations (très verbeux)
Proxy et reverse proxy Squid : configuration de squid Règles d'accès au service
acl HOST_AUTORISE src 10.1.0.0/255.255.0.0 : on définit les réseaux ou les machines autorisées
http_access allow HOST_AUTORISE : on autorise les accès http aux machines définit dans l'acl HOST_AUTORISE
http_access deny all : on interdit toutes les autres
Règles d'accès à une hiérarchie de cache icp_access allow 192.168.1.10 : on autorise
les accès icp à des machines souhaitées icp_access deny all : on interdit toutes les autres
Proxy et reverse proxy Squid : code des requêtes tcp
TCP_HIT : copie valide dans le cache TCP_IMS_HIT : le client demande une mise à jour, et l'objet est dans le
cache et est récent, le proxy ne forward pas la requête. TCP_IMS_MISS : le client demande une mise à jour, puis le proxy
forwarde la requête TCP_MISS : pas dans le cache TCP_CLIENT_REFRESH : le client envoie une requête avec une
demande de ne pas utiliser le cache, le proxy forward la requête TCP_REFRESH_HIT : objet dans le cache, mais périmé, le proxy
demande une nouvelle version est disponible, réponse : pas de nouvelle version
TCP_REFRESH_MISS : objet dans le cache, mais périmé, demande une mise à jour qu'il reçoit
TCP_REF_FAIL_HIT : objet dans le cache, mais périmé, le proxy demande une mise à jour, mais n'obtient pas de réponse du serveur, renvoie l'ancienne version
Proxy et reverse proxy
Proxy transparent Les utilisateurs doivent paramétrer l'application pour
utiliser le proxy,et donc peuvent contourner la stratégie mise en place.
2 possibilités pour forcer les clients à sortir par le proxy: utilisez un firewall pour bloquer pour les postes clients avec
un accès direct à Internet pour les ports souhaités (http, https...)
rendre le proxy transparent, ce qui veut dire que les clients soient configurés ou non, les requêtes passeront obligatoirement par le proxy. Rediriger en PREROUTING le port 80 vers le port 3128
du proxy (pour squid) via la NAT (iptables)
Proxy et reverse proxy Proxy transparent avec squid
Routeur (iptables) et le proxy (Squid) sur deux machines différentes, et le serveur proxy dans une DMZ Avec un routeur gérant 3 réseaux, deux réseaux locaux
LAN (192.168.216.0) et la DMZ (10.1.0.0), et un accès Internet Soit le serveur proxy avec l'adresse IP 10.1.0.2
La règle iptables s'écrira alors : iptables -t nat -A PREROUTING -s
192.168.216.0/255.255.255.0 -p tcp --dport 80 -j DNAT --to-destination 10.1.0.2:3128
Ne pas oublier de modifier les ACL d'accès dans squid.conf
Proxy et reverse proxy Proxy transparent avec squid
Routeur (iptables) et le proxy (Squid) sur la même machines Avec un routeur gérant son LAN (192.168.216.0) et un
accès Internet, avec le service de proxy embarqué : Soit le serveur proxy avec l'adresse IP 192.168.216.2
La règle iptables s'écrira alors : iptables -t nat -A PREROUTING -s
192.168.216.0/255.255.255.0 -p tcp --dport 80 -j REDIRECT --to-port 3128
Ne pas oublier de vérifierr les ACL d'accès dans squid.conf
Reverse proxy proxy à l'envers
Permettre à des clients externes d'utiliser un service interne achemine des requêtes extérieures vers le serveur du
réseau interne garde les propriétés d'un proxy
Utilise SSL (avec l'accélération hardware) amélioration des performances réseau via les caches
ou/et un load balancing Un serveur web est protégé des attaques directes de
l'extérieur, ce qui renforce la sécurité du réseau interne
Proxy et reverse proxy
Reverse proxy Les caches HTTP, HTTPS réduisent de façon
drastique la charge des serveurs Web, La compression « à la volée » du contenu des
documents retournés avec diminution des temps de réponse,
Multiplexage des sessions HTTP(S) avec possibilité de Keep-Alive "synchrone" ou "asynchrone" vers le Web,
Intégration des cartes d’accélération SSL les plus répandues sur le marché
Proxy et reverse proxy