musee:tutoriels:proxy_squid

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
musee:tutoriels:proxy_squid [13/10/2018 00:59] – ↷ Page déplacée de tutoriels:proxy_squid à musee:tutoriels:proxy_squid pnahoummusee:tutoriels:proxy_squid [21/11/2024 17:15] (Version actuelle) alouradou
Ligne 1: Ligne 1:
 +====== Proxy Squid pour les containers ======
  
 +===== Introduction =====
 +
 +Il peut être utile de connecter nos machines virtuelles à internet. De base, celles ci n'y ont pas accès.
 +
 +Dans ce tutoriel, on verra comment mettre en place un proxy afin que nos machine puisse surfer et se mettre à jours. 
 +
 +Nous avons choisi d'utiliser un proxy pour deux raisons :
 +
 +-> le proxy permet de faire du caching et d'économiser de la bande passante, notamment lors des MAJ
 +
 +-> il permet de logger tout le trafic, ce qui peut être utile en cas de hack
 +
 +===== Installer et paramétrer le serveur Squid =====
 +
 +==== Configuration de base ====
 +
 +On va installer le proxy sur Bor. Notez que Bor dispose de l'interface br1 (10.61.15.0/24), et c'est sur cette interface qu'écoutera le proxy, car c'est sur interface qu'est disposée le réseau fermé des LXC
 +
 +On commence par installer squid et par sauver son fichier de config par défaut :
 +
 +  $> sudo apt-get install squid
 +  $> sudo cd /etc/squid
 +  $> sudo mv squid.conf squid.conf.default
 +
 +On crée ensuite un nouveau fichier de configuration :
 +
 +  $> sudo nano squid.conf
 +
 +<file bash /etc/squid/squid.conf>
 +# Squid a besoin de savoir le nom de la machine, notre machine s’appelle ginfo-bor, donc :
 +visible_hostname bor-ginfo
 +
 +# Par défaut le proxy écoute sur ses deux interfaces, pour des soucis de sécurité il faut donc le
 +# restreindre à écouter sur l’interface du réseau local (DMZ)
 +http_port 10.61.15.1:3128
 +http_port 10.61.16.10:3128
 +
 +# Changer la taille du cache de squid, changer la valeur 100 par ce que vous voulez (valeur en Mo)
 +cache_dir ufs /var/spool/squid 1000 16 256
 +
 +#################################### ACL ####################################
 +
 +acl all src all # ACL pour autoriser/refuser tous les réseaux (Source = All) – ACL obligatoire
 +acl lan src 10.61.16.0/24 # ACL pour autoriser/refuser le réseau 10.61.15.0
 +acl lan src 10.61.15.0/24
 +acl Safe_ports port 80 # Port HTTP = Port 'sure'
 +acl Safe_ports port 443 # Port HTTPS = Port 'sure'
 +acl Safe_ports port 21 # Port FTP = Port 'sure'
 +
 +############################################################################
 +##########################
 +
 +
 +# Désactiver tous les protocoles sauf les ports sures
 +http_access deny !Safe_ports
 +
 +# Désactiver l'accès pour tous les réseaux sauf les clients de l'ACL Lan
 +# deny = refuser ; ! = sauf ; lan = nom de l’ACL à laquelle on fait référence.
 +
 +http_access deny !lan
 +
 +
 +# Port utilisé par le Proxy :
 +# Le port indiqué ici, devra être celui qui est précisé dans votre navigateur.
 +http_port 3128
 +
 +# On déclare le programme qui gère l'authentification :
 +auth_param basic program /usr/lib/squid/basic_ncsa_auth /etc/squid/utilisateurs
 +
 +# Grâce à cette ACL, le Proxy demandera une authentification
 +# Cet acl specifie tous les utilisateurs du htpasswd (le required les prends tous)
 +acl utilisateurs proxy_auth REQUIRED
 +
 +# Refuser l'accès à tous les utilisateurs sauf ceux du fichier Utilisateurs
 +http_access deny !utilisateurs
 +
 +#Cette acl est fait pour la limitation de bande passante de lutilisateur LXC
 +#On cree un acl lxcs qui ne contient que lutilisateur lxc
 +acl lxcs proxy_auth lxc
 +delay_pools 1
 +delay_class 1 1
 +delay_parameters 1 320000/1280000
 +delay_access 1 allow lxcs
 +delay_access 1 deny all
 +
 +</file>
 +
 +Squid utilise la méthode htpasswd disponible avec le paquet apache2-utils, il faut donc dans un premier temps installer ce paquet :
 +
 +  $> sudo apt-get install apache2-utils
 +
 +Ensuite, il faut créer un fichier où seront déclarés les utilisateurs et leur mot de passe :
 +
 +  $> sudo nano /etc/squid/utilisateurs
 +
 +On peut désormais déclarer des utilisateurs dans ce fichier grâce à la commande suivante :
 +
 +  $> sudo htpasswd /etc/squid/utilisateurs nom_utilisateur
 +  
 +On crée bien l'utilisateur "lxc" dont la bande passante est limitée.
 +
 +Puis on redémarre le service :
 +
 +  $> sudo service squid restart
 +===== Utiliser et se connecter au proxy =====
 +
 +
 +Pour connecter le LXC au proxy, il suffit de taper dans son shell la commande suivante :
 +
 +  $> export http_proxy=http://utilisateur:password@10.61.15.1:3128
 +  $> export https_proxy=https://utilisateur:password@10.61.15.1:3128
 +
 +(pour le mettre au démarrage du LXC mettre ces lignes dans ''/etc/rc.local'')
 +
 +Normalement, les commandes de type wget et lynx fonctionnent avec cette config.
 +
 +Pour les ''apt-get install'' et autres ''apt-get'' il faut créer le fichier suivant et redémmarer :
 +
 +<file bash /etc/apt/apt.conf.d/95proxies>
 +Acquire::http::proxy "http://utilisateur:motdepasse@10.61.15.1:3128/";
 +Acquire::https::proxy "https://utilisateur: motdepasse@10.61.15.1:3128/";
 +</file>
 +===== Les logs =====
 +
 +En ce qui concerne les logs du serveur Proxy, ils sont enregistrés dans le fichier access.log se trouvant dans /var/log/squid/
 +
 +===== Dépannage =====
 +
 +Si le proxy renvoie des erreurs dans le Wordpress du type :
 +
 +''PHP Fatal error:  Uncaught OAuth2\Exception: Received HTTP code 503 from proxy after CONNECT in /var/www/html/wp-content/plugins/ginfo-oauth-plugin/vendor/adoy/oauth2/src/OAuth2/Client.php:473''
 +
 +Il faut suivre les instructions du démarrage de Bor (c'est à dire retirer puis remettre le réseau ''aaa_internet'' au container squid)
 +
 +[[https://wiki.centrale-med.fr/ginfo/infrastructure:bor:boot#squid]]
 +
 +===== Sources =====
 +Cet article est un copier-coller adapté de la source suivante :
 +[[https://www.it-connect.fr/mise-en-place-et-configuration-dun-proxy-avec-squid/|Mise en place d'un proxy avec Squid]]