Linux sécurité des réseaux - formation.jussieu.fr · cache_mgr [email protected] :...

23
 Linux sécurité des réseaux serveurs mandataires (proxy) [email protected] 2007 - 2008

Transcript of Linux sécurité des réseaux - formation.jussieu.fr · cache_mgr [email protected] :...

   

Linux sécurité des réseaux serveurs mandataires (proxy)

[email protected] ­ 2008

   

Proxy Qu'est­ce qu'un proxy ?Qu'est­ce qu'un proxy ?

Proxy = mandataire (traduction)Proxy = mandataire (traduction) Un proxy est un service mandataire pour une Un proxy est un service mandataire pour une 

application donnée. application donnée.  C'est à dire qu'il sert d'intermédiaire dans une connexion C'est à dire qu'il sert d'intermédiaire dans une connexion 

entre le client et le serveur pour relayer la requête qui entre le client et le serveur pour relayer la requête qui est faite. est faite. 

Ainsi, le client s'adresse toujours au proxy, et c'est lui Ainsi, le client s'adresse toujours au proxy, et c'est lui qui s'adresse ensuite au serveur. qui s'adresse ensuite au serveur. 

   

Proxy Permet de casser complètement la connectivité directe à Permet de casser complètement la connectivité directe à 

l’internet des machines internes => possibilité de fermer l’internet des machines internes => possibilité de fermer tous les ports entre les machines d'un réseau interne et tous les ports entre les machines d'un réseau interne et de l’internetde l’internet

Ne peuvent être utilisées que des applications Ne peuvent être utilisées que des applications supportées par un relais applicatifsupportées par un relais applicatif Exemples : Exemples : 

telnet, ftp vers une machine passerelle puis vers l’internettelnet, ftp vers une machine passerelle puis vers l’internet cache Web (squid)  cache Web (squid)   serveur relai de messagerieserveur relai de messagerie existence de relais transparents pour certaines applicationsexistence de relais transparents pour certaines applications protocoles dédiés  comme socksprotocoles dédiés  comme socks

   

Proxy Fonctionnalités des serveursFonctionnalités des serveurs

Fonctions de cacheFonctions de cache Fonction de d'enregistrementFonction de d'enregistrement Fonction de filtreFonction de filtre Fonction de sécuritéFonction de sécurité Autres fonctionsAutres fonctions

   

Proxy Fonction de cacheFonction de cache

Le client conserve en mémoire toutes les requêtes Le client conserve en mémoire toutes les requêtes effectuées par le clienteffectuées par le client

Permet de conserver localement les informations afin Permet de conserver localement les informations afin d'être réutilisées ultérieurementd'être réutilisées ultérieurement

ConséquenceConséquence le cache accélère les consultations des informations le cache accélère les consultations des informations 

déjà demandées, déjà demandées,  le trafic réseau en est diminuéle trafic réseau en est diminué Réduit les malveillancesRéduit les malveillances

   

Proxy Fonction d'enregistrementFonction d'enregistrement

Le serveur garde une trace détaillée de toutes les Le serveur garde une trace détaillée de toutes les informations qui le traversentinformations qui le traversent

Génère un fichier journal (fichier de log).Génère un fichier journal (fichier de log).   enregistre la trace des requêtes effectuées par tous les enregistre la trace des requêtes effectuées par tous les 

clients utilisant le proxy. clients utilisant le proxy.  L’identification du client,L’identification du client, les dates et heures de connexion, les dates et heures de connexion,  Les URL des ressources consultées, Les URL des ressources consultées,  les tailles et temps de téléchargement, etc. les tailles et temps de téléchargement, etc. 

   

Proxy Fonction de filtreFonction de filtre

Mise en place de filtre au niveau des requêtesMise en place de filtre au niveau des requêtes Analyse des paquets qu'il reçoit et agit ainsi en fonction Analyse des paquets qu'il reçoit et agit ainsi en fonction 

de la politique de sécurité choisiede la politique de sécurité choisie Fonction de sécuritéFonction de sécurité

fonction d'authentificationfonction d'authentification Serveur permettant de protéger les postes clients Serveur permettant de protéger les postes clients 

d'agressions extérieuresd'agressions extérieures Protège des attaques via des accès directsProtège des attaques via des accès directs Attention un proxy n'est pas un firewall !Attention un proxy n'est pas un firewall !

   

Proxy Fonction d'anonymatFonction d'anonymat

Les requêtes relayées par un serveur  peuvent ne pas Les requêtes relayées par un serveur  peuvent ne pas contenir d'adresse du client, de manière à protéger leur contenir d'adresse du client, de manière à protéger leur anonymatanonymat

Avantages du proxyAvantages du proxy Il est capable  d'interpréter le trafic et notamment de mettre Il est capable  d'interpréter le trafic et notamment de mettre 

en cache les informations. On diminue ainsi le trafic et en cache les informations. On diminue ainsi le trafic et augmente la bande passante de la même occasion.augmente la bande passante de la même occasion.

On peut aussi autoriser ou non l'accès à certaines parties On peut aussi autoriser ou non l'accès à certaines parties d'un site, à certaines fonctionnalités, etc.d'un site, à certaines fonctionnalités, etc.

On a donc un bon contrôle de ce qui transite sur le réseau, On a donc un bon contrôle de ce qui transite sur le réseau, et on sait quels protocoles peuvent circuler.et on sait quels protocoles peuvent circuler.

   

Proxy Proxy transparentProxy transparent

Le principe  : Le principe  :  Le réseau est configuré avec une passerelle par défaut et Le réseau est configuré avec une passerelle par défaut et 

un serveur DNS. un serveur DNS.  Chaque requête est automatiquement , et de manière Chaque requête est automatiquement , et de manière 

invisible renvoyée vers le proxy par le routeur/firewall. invisible renvoyée vers le proxy par le routeur/firewall.  Le serveur proxy relaye la requête sur le serveur Internet Le serveur proxy relaye la requête sur le serveur Internet 

et stocke l'information dans son cache. et stocke l'information dans son cache.  Le client croit ainsi dialoguer avec le serveur internet , mais Le client croit ainsi dialoguer avec le serveur internet , mais 

en réalité, elle ne dialogue qu'avec le serveur proxy. en réalité, elle ne dialogue qu'avec le serveur proxy. 

   

Proxy : squid Informations : Informations : 

Logiciel GNU GPL, fonctionne sur Windows/UnixLogiciel GNU GPL, fonctionne sur Windows/Unix le site : le site : http://www.squid­cache.org/http://www.squid­cache.org/ Rôle de proxy web pour les services http, https et ftpRôle de proxy web pour les services http, https et ftp

Le service squid supporteLe service squid supporte   le cryptage SSL, le cryptage SSL,  une gestion des accès évolués,une gestion des accès évolués, une journalisation complète des requêtesune journalisation complète des requêtes association avec SquidGuard (redirecteur URL + blacklists)association avec SquidGuard (redirecteur URL + blacklists)

   

Proxy : squid Utilisation du protocole ICP (Internet Cache Protocol) Utilisation du protocole ICP (Internet Cache Protocol) 

les caches de squid peuvent être référencés : les caches de squid peuvent être référencés :  Par hiérarchie, Par hiérarchie,  Par sites visités pour minimiser la bande passante utiliséePar sites visités pour minimiser la bande passante utilisée

Le paquetage squid contient:Le paquetage squid contient: un programme principal nommé squid , un programme principal nommé squid ,  un support pour les applications externes (DNS, ftp) un support pour les applications externes (DNS, ftp)  des outils de réécriture de requêtes et d'authentification, des outils de réécriture de requêtes et d'authentification,  des outils de gestion.des outils de gestion.

Mode transparent : utiliser Iptables pour configurer Mode transparent : utiliser Iptables pour configurer SQUID sous linuxSQUID sous linux

   

Proxy : squid Configuration de squid : Configuration de squid : fichier fichier squid.confsquid.conf

Options réseauOptions réseau http_port 3128http_port 3128 : c'est le port sur lequel travaille le cache, 3128 par  : c'est le port sur lequel travaille le cache, 3128 par 

défaut, certains déplacent ce port en 8080défaut, certains déplacent ce port en 8080 visible_hostnamevisible_hostname : c'est le nom du serveur squid depuis les resaux  : c'est le nom du serveur squid depuis les resaux 

externesexternes icp_port 3128icp_port 3128 : c'est le port sur lequel le cache peut être interrogé  : c'est le port sur lequel le cache peut être interrogé 

par un autre serveurpar un autre serveur cache_peer hostname type http_port icp_portcache_peer hostname type http_port icp_port : définition des  : définition des 

serveurs de cache voisins avec lesquels on communiqueserveurs de cache voisins avec lesquels on communique Configuration principale du cacheConfiguration principale du cache

cache_mgr [email protected]_mgr [email protected] : c'est le nom de  : c'est le nom de l'administrateur du serveur de cachel'administrateur du serveur de cache

cache_dir ufs /var/cache 3200 16 256cache_dir ufs /var/cache 3200 16 256 : indique le répertoire devant  : indique le répertoire devant accueillir les informations, avec en paramètre la le type, taille disque 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(Mo), le nombre de répertoires  niveau et sous niveau pour le cache

   

Proxy : squid Configuration de squid : Configuration de squid : fichier fichier squid.confsquid.conf

Configuration user et logsConfiguration user et logs cache_effective_user/group nobody nobodycache_effective_user/group nobody nobody : donne des  : donne des 

droits à un utilisateur/un groupe pour squid (éviter root)droits à un utilisateur/un groupe pour squid (éviter root) attention aux droits des fichiers de logsattention aux droits des fichiers de logs

cache_access_log /var/log/squid/access.logcache_access_log /var/log/squid/access.log : indique à le  : indique à le fichier log des requêtes appeléesfichier log des requêtes appelées

cache_log /var/log/squid/cache.logcache_log /var/log/squid/cache.log : fichier journal de squid : fichier journal de squid cache_store_log nonecache_store_log none  : pour ne pas enregistrer dans un   : pour ne pas enregistrer dans un 

fichier de log les écritures et effacements d'informations (très fichier de log les écritures et effacements d'informations (très verbeux)verbeux)

   

Proxy : squid Configuration de squid : Configuration de squid : fichier fichier squid.confsquid.conf

Règles d'accès au serviceRègles d'accès au service acl HOST_AUTORISE src 10.1.0.0/255.255.0.0acl HOST_AUTORISE src 10.1.0.0/255.255.0.0 : on définit  : on définit 

les réseaux ou les machines autoriséesles réseaux ou les machines autorisées http_access allow HOST_AUTORISEhttp_access allow HOST_AUTORISE : on autorise les  : on autorise les 

accès http aux machines définit dans l'acl accès http aux machines définit dans l'acl HOST_AUTORISEHOST_AUTORISE

http_access deny allhttp_access deny all : on interdit toutes les autres : on interdit toutes les autres Règles d'accès à une hiérarchie de cache Règles d'accès à une hiérarchie de cache 

icp_access allow 192.168.1.10icp_access allow 192.168.1.10 : on autorise les accès icp  : on autorise les accès icp à des machines souhaitéesà des machines souhaitées

icp_access deny allicp_access deny all : on interdit toutes les autres : on interdit toutes les autres

   

Proxy : squid Configuration de squid : Configuration de squid : fichier fichier squid.confsquid.conf

Authentification :Authentification : auth_param basic program ncsa_auth /etc/squid/users.mdpauth_param basic program ncsa_auth /etc/squid/users.mdp  : 

programme qui gère l'authentification dans squid auth_param basic realm Serveur Proxy de la FP auth_param basic realm Serveur Proxy de la FP : boîte de 

dialogue renvoyé à l'utilisateur auth_param basic credentialsttl 4 hours auth_param basic credentialsttl 4 hours : durée de la session acl USERS proxy_auth REQUIREDacl USERS proxy_auth REQUIRED   : création d'une liste d'accès  : création d'une liste d'accès 

pour utiliser le proxy. User: liste des utilisateurs autoriséspour utiliser le proxy. User: liste des utilisateurs autorisés http_access allow USERShttp_access allow USERS   :  j'autorise la liste :  j'autorise la liste http_access deny allhttp_access deny all  : je refuse les autres  : je refuse les autres

   

Proxy : squid Validité et rafraîchissement du cache

Via deux directives : le proxy jugera quant à la façon dont il doit soit recharger la page demandée depuis le site original, soit fournir directement la page de son cache. La directive reload_into_ims à on 

permet de passer directement la page à un client sans la recharger même si celui­ci le demande explicitement, à la condition toutefois que la page dans le cache soit à jour. 

Le mandataire vérifie la validité de cette condition en passant une requête au serveur distant avec l'argument if­modified­since. 

La directive refresh_pattern Utilisation d'un algorithme de gestion du rafraîchissement de 

Squid pour contrôler la validité des informations.

   

Proxy : squid Algorithme de gestion du rafraîchissement

Squid utilise trois types de variables dans sa détermination : des variables correspondant à l'objet enregistré, une variable fournie par le client et des variables paramétrées dans le fichier de configuration  Un objet déclaré « frais » est fourni directement au client.  S'il est « périmé », alors une requête if­modified­since est envoyée au 

serveur distant Algorithme

 refresh_pattern [­i] <url_regexp> MIN_AGE PERCENT MAX_AGE <options> Les variables qui permettent de régler le comportement du cache sont 

MAX_AGE, PERCENT et MIN_AGE  refresh_pattern ^http 1440 10% 10080  : 1440 est le temps minimum de 

rafraîchissement (min), 10% la différence entre le temps de la dernière modification de l'objet et l'heure actuelle, 10080 le temps maximum de rafraîchissement (min)

Algorithme de gestion du rafraîchissement

Règles: Si PERIODE max (fournie par le client) est défini et que PERIODE y 

est supérieur, l'objet est déclaré périmé Si PERIODE est inférieur ou égal à PERIODE min(configuration du 

serveur),  l'objet est déclaré frais Si le serveur envoi un ordre de rafraîchissement (défini et 

dépassé), l'objet est déclaré périmé Si PERIODE est supérieur à PERIODE max, l'objet est déclaré 

périmé Si le rapport entre AGE et la durée de la période de l'entrée 

précédente est inférieure au %, l'objet est déclaré frais Aucune autre règle n'ayant abouti dans la détermination de la 

fraîcheur de l'objet, celui­ci est déclaré périmé 

Proxy : squid

Nouvelle entrée dans le cache

requête du clientPERIODE

évolution dans le tempsPrécédente entrée dans le cache

   

Proxy : squid Proxy transparent avec squidProxy transparent avec squid

Firewall (iptables) et le proxy (squid) sur la même Firewall (iptables) et le proxy (squid) sur la même machinesmachines Avec un firewall gérant son LAN (192.168.216.0) et un Avec un firewall gérant son LAN (192.168.216.0) et un 

accès Internet, avec le service de proxy embarqué :accès Internet, avec le service de proxy embarqué : Soit le firewall/proxy avec l'adresse IP 192.168.216.2Soit le firewall/proxy avec l'adresse IP 192.168.216.2

La règle La règle iptables iptables s'écrira pour une redirection http:s'écrira pour une redirection http: iptables ­t nat ­A PREROUTING \iptables ­t nat ­A PREROUTING \

––s 192.168.216.0/255.255.255.0 \s 192.168.216.0/255.255.255.0 \­p tcp ­m tcp ­­dport 80 ­j REDIRECT ­­to­port 3128­p tcp ­m tcp ­­dport 80 ­j REDIRECT ­­to­port 3128

Ne pas oublier de vérifier les ACL d'accès dans Ne pas oublier de vérifier les ACL d'accès dans squid.confsquid.conf

   

Proxy : squid Proxy transparent avec squidProxy transparent avec squid

Firewall (iptables) et le proxy (squid) sur deux machines Firewall (iptables) et le proxy (squid) sur deux machines différentes, et le serveur proxy dans une DMZdifférentes, et le serveur proxy dans une DMZ Avec un firewall associé à 3 réseaux,  un réseau local  LAN Avec un firewall associé à 3 réseaux,  un réseau local  LAN 

(192.168.216.0), une DMZ (10.1.0.0), et un accès Internet(192.168.216.0), une DMZ (10.1.0.0), et un accès Internet Soit le serveur proxy avec l'adresse IP 10.1.0.2Soit le serveur proxy avec l'adresse IP 10.1.0.2

La règle La règle iptables iptables s'écrira alors :s'écrira alors : iptables ­t nat ­A PREROUTING ­s 192.168.216.0/255.255.255.0 \ iptables ­t nat ­A PREROUTING ­s 192.168.216.0/255.255.255.0 \ 

­p tcp ­m tcp ­­dport 80 ­j DNAT ­­to­destination 10.1.0.2:3128­p tcp ­m tcp ­­dport 80 ­j DNAT ­­to­destination 10.1.0.2:3128 Ne pas oublier de modifier les ACL d'accès dans squid.confNe pas oublier de modifier les ACL d'accès dans squid.conf

   

Reverse Proxy Reverse proxy = proxy à l'enversReverse proxy = proxy à l'envers

Permettre à des clients externes d'utiliser un service Permettre à des clients externes d'utiliser un service interneinterne achemine des requêtes extérieures vers le ou les serveurs du achemine des requêtes extérieures vers le ou les serveurs du 

réseau interne (ou réseau distribué)réseau interne (ou réseau distribué) évite de trop exposer les serveurs frontaux (web), en les évite de trop exposer les serveurs frontaux (web), en les 

plaçant derrière un serveur sécuriséplaçant derrière un serveur sécurisé Un serveur web est protégé des attaques directes de l'extérieurUn serveur web est protégé des attaques directes de l'extérieur

répartie la charge pour encaisser des grosses demandesrépartie la charge pour encaisser des grosses demandes Dans une architecture où chaque serveur Web possède une Dans une architecture où chaque serveur Web possède une 

fonction bien particulière (applications, gestion des images, fonction bien particulière (applications, gestion des images, gestion des sessions...), le reverse proxy redirige le trafic vers gestion des sessions...), le reverse proxy redirige le trafic vers le serveur concerné.le serveur concerné.

   

Reverse Proxy Attention devient l'élément sensible de l'architectureAttention devient l'élément sensible de l'architecture

implantation dans une DMZimplantation dans une DMZ garde les propriétés d'un proxygarde les propriétés d'un proxy

Utilise SSL (avec l'accélération hardware)Utilise SSL (avec l'accélération hardware) amélioration des performances réseau via les caches ou/et un amélioration des performances réseau via les caches ou/et un 

load balancingload balancing Les caches HTTP, HTTPS réduisent de façon drastique la Les caches HTTP, HTTPS réduisent de façon drastique la 

charge des serveurs Webcharge des serveurs Web Multiplexage des sessions HTTP(S) avec possibilité de Keep­Multiplexage des sessions HTTP(S) avec possibilité de Keep­

Alive "synchrone" ou "asynchrone" vers le WebAlive "synchrone" ou "asynchrone" vers le Web Les reverse proxy peuvent faire office de machines Les reverse proxy peuvent faire office de machines 

intermédiaires pour la compression de donnéesintermédiaires pour la compression de données Quelques reverses proxy: squid, apache, Microsoft ISAQuelques reverses proxy: squid, apache, Microsoft ISA

   

C’est fini !!