Linux sécurité des réseaux serveurs mandataires (proxy) fbongat@ipsl.jussieu.fr 2007 2008
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.
Proxy Permet de casser complètement la connectivité directe à l internet des machines internes => possibilité de fermer tous les ports entre les machines d'un réseau interne et de l internet Ne peuvent être utilisées que des applications supportées par un relais applicatif Exemples : telnet, ftp vers une machine passerelle puis vers l internet cache Web (squid) serveur relai de messagerie existence de relais transparents pour certaines applications protocoles dédiés comme socks
Proxy Fonctionnalités des serveurs Fonctions de cache Fonction de d'enregistrement Fonction de filtre Fonction de sécurité Autres fonctions
Proxy Fonction de cache Le client 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ées, le trafic réseau en est diminué Réduit les malveillances
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ées, les tailles et temps de téléchargement, etc.
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 un proxy n'est pas un firewall!
Proxy 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 Avantages du proxy Il est capable d'interpréter le trafic et notamment de mettre en cache 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 parties 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 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 requête 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 : squid Informations : Logiciel GNU GPL, fonctionne sur Windows/Unix le site : http://www.squid cache.org/ Rôle de proxy web pour les services http, https et ftp Le service squid supporte le cryptage SSL, une gestion des accès évolués, une journalisation complète des requêtes association avec SquidGuard (redirecteur URL + blacklists)
Proxy : squid 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 Le paquetage squid contient: un programme principal nommé squid, un support pour les applications externes (DNS, ftp) des outils de réécriture de requêtes et d'authentification, des outils de gestion. Mode transparent : utiliser Iptables pour configurer SQUID sous linux
Proxy : squid Configuration de squid : fichier squid.conf 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 visible_hostname : c'est le nom du serveur squid depuis les resaux externes icp_port 3128 : c'est le port sur lequel le cache peut être interrogé par un autre serveur cache_peer hostname type http_port icp_port : définition des serveurs de cache voisins avec lesquels on communique Configuration principale du cache cache_mgr admin@formation.jussieu.fr : c'est le nom de l'administrateur du serveur de cache 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 : squid Configuration de squid : fichier squid.conf Configuration user et logs cache_effective_user/group 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 : squid Configuration de squid : fichier squid.conf 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 : squid Configuration de squid : fichier squid.conf Authentification : auth_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 : boîte de dialogue renvoyé à l'utilisateur auth_param basic credentialsttl 4 hours : durée de la session acl USERS proxy_auth REQUIRED : création d'une liste d'accès pour utiliser le proxy. User: liste des utilisateurs autorisés http_access allow USERS : j'autorise la liste http_access deny all : 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)
Proxy : squid Algorithme de gestion du rafraîchissement PERIODE requête du client évolution dans le temps Précédente entrée dans le cache Règles: Nouvelle entrée dans le cache 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 Proxy transparent avec squid Firewall (iptables) et le proxy (squid) sur la même machines Avec un firewall gérant son LAN (192.168.216.0) et un accès Internet, avec le service de proxy embarqué : Soit le firewall/proxy avec l'adresse IP 192.168.216.2 La règle iptables s'écrira pour une redirection http: iptables t nat A PREROUTING \ s s 192.168.216.0/255.255.255.0 \ p tcp m tcp dport 80 j REDIRECT to port 3128 Ne pas oublier de vérifier les ACL d'accès dans squid.conf
Proxy : squid Proxy transparent avec squid Firewall (iptables) et le proxy (squid) sur deux machines différentes, et le serveur proxy dans une DMZ 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 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 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.conf
Reverse Proxy Reverse proxy = proxy à l'envers Permettre à des clients externes d'utiliser un service interne achemine des requêtes extérieures vers le ou les serveurs du réseau interne (ou réseau distribué) évite de trop exposer les serveurs frontaux (web), en les plaçant derrière un serveur sécurisé Un serveur web est protégé des attaques directes de l'extérieur répartie la charge pour encaisser des grosses demandes Dans une architecture où chaque serveur Web possède une fonction bien particulière (applications, gestion des images, gestion des sessions...), le reverse proxy redirige le trafic vers le serveur concerné.
Reverse Proxy Attention devient l'élément sensible de l'architecture implantation dans une DMZ 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 Les caches HTTP, HTTPS réduisent de façon drastique la charge des serveurs Web Multiplexage des sessions HTTP(S) avec possibilité de Keep Alive "synchrone" ou "asynchrone" vers le Web Les reverse proxy peuvent faire office de machines intermédiaires pour la compression de données Quelques reverses proxy: squid, apache, Microsoft ISA
C est fini!!