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 ’inetd
imaps 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 client
options {
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 serveur
options {
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
Serveur
messagerie R O U T E U R 2
Proxy WWW
Proxy telnet/ftp Serveur
WWW
R O U T E U R 1
Station 1 Serveur
messagerie
Serveur WWW
195.220.97.3 195.220.97.10
195.220.97.4
195.220.97.5
Réseau adresse officielle 195.220.97/24
Réseaux adresse privée 10/8
10.1.2.2
Station 2
10.1.3.2 10.1.2.4
Station 3 Serveur
telnet
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 : c onfiguration 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 : c onfiguration de squid
Configuration principale du cache
cache_mgr admin@formation.jussieu.fr : 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_me mory: 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 : c onfiguration 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 : c onfiguration 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,