Nota :
Contributeurs, les sont là pour vous aider, supprimez-les une fois le problème corrigé ou le champ rempli !
Pour garder notre système propre, nous n'allons pas installer les serveurs proxy directement sur le système mais dans un conteneur (une sorte de machine virtuel chrooter). Si vous préférez installer cela directement sur votre système, passez au chapitre suivant « Installation des proxy. »
Pour cela, nous aurons besoin des outils de gestion des conteneurs.
apt install lxc bridge-utils libvirt-bin debootstrap
La création du conteneur se fait très simplement :
lxc-create -n proxies -t debian -- -r jessie
A la fin du traitement le système devrait vous afficher
Current default time zone: 'Europe/Paris' Local time is now: Fri Oct 28 09:59:59 CEST 2016. Universal Time is now: Fri Oct 28 07:59:59 UTC 2016. Root password is 'gFM0Urj6', please change !
lxc-start -n proxies
après le démarrage vous devriez voir
Debian GNU/Linux 8 proxies console proxies login :
autre commandes utiles :
Fermer le conteneur
lxc-stop -n proxies
Démarrage silencieux du conteneur :
lxc-start -n proxies -d
Obtention d'un shell (root) dans le conteneur :
lxc-attach -n proxies
Par défaut, le conteneur n'aura aucune conf réseau. Se sera à vous de lui en donner une.
Au menu
Nous ne verrons que le “Pont Simple” dans notre example
Création de l'interface réseaux de pont nommer lxcbr0
brctl addbr br0
On verifie par
ip addr show
On ajoute l'interface a “bridger”
brctl addif br0 eth0
puis on active le pont
ifup lxcbr0
puis on édite /etc/network/interface pour configurer notre pont de manière permanante
# This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). source /etc/network/interfaces.d/* # The loopback network interface auto lo iface lo inet loopback # The primary network interface allow-hotplug eth0 iface eth0 inet dhcp # pont réseau auto lxcbr0 iface lxcbr0 inet dhcp bridge_ports eth0 bridge_stp off bridge_fd 0 bridge_maxwait 0
Dernier point, modifier la configuration de notre conteneur, on edite le fichier /var/lib/lxc/proxies/config pour remplacer la valeur lxc.network.type = none
... lxc.network.type = veth lxc.network.flags = up lxc.network.link = lxcbr0 lxc.network.name = eth0 lxc.network.hwaddr = 00:16:3e:a3:23:1d //l'adresse MAC vous l'inventez bien entendu lxc.network.mtu = 1500 ...
puis rédemarer votre conteneur pour tester si vous avez le réseau
apt install sysvinit
Simple comme Debian
systemctl enable lxc
ensuite éditez le fichier /var/lib/lxc/$containername/config
lxc.start.auto = 1
puis on vérifie par un
lxc-ls --fancy
qui vous renvois ça
NAME STATE IPV4 IPV6 AUTOSTART --------------------------------------- proxies STOPPED - - YES
Pour aider les conteneurs à rester minimaux, on peut désactiver le traitement par APT des recommandations comme des dépendances.
APT::Install-Recommends "false"; APT::Install-Suggests "false";
Par défaut, un conteneur est installé avec un système très épuré. Pour ce qui suis, vous voulez probablement installer quelques outils dans le conteneur. Obtenez un shell root dans le conteneur et saisissez par exemple :
apt install --no-install-recommends vim-nox nano less aptitude
On suppose maintenant que l'on est dans un shell root dans notre LXC (ou sur son système si l'on a choisi de ne pas créer de conteneur.)
Dans un premier temps, nous allons configurer un serveur proxy Squid tout simple.
apt install --no-install-recommends squid3
Ajouter en fin du fichier /etc/squid/squid.conf
les lignes :
via off forwarded_for delete
Rechercher et dé-commenter les deux lignes suivantes
acl localnet src 192.168.0.0/16 # RFC1918 possible internal network […] http_access allow localnet
Vous pouvez adapter la première ligne pour qu'elle corresponde au réseau qui doit avoir accès au serveur proxy, par exemple pour un réseau en « 192.168.42.X » :
acl localnet src 192.168.42.0/24
Vous pouvez également autoriser plusieurs réseaux en rajoutant des lignes similaires :
acl voisinnet src 192.168.17.0/24 http_access allow voisinnet
service squid3 restart
Ça y est. Il suffit maintenant d'indiquer aux navigateurs d'utiliser localhost:3128 comme serveur proxy. Cela peut également se faire en mettant
export http_proxy="http://localhost:3128/"
dans le fichier ~/.bashrc
, ou même dans le fichier /etc/environment
.
Maintenant, si l'on souhaite que les requêtes sortant de Squid soient « nettoyées » ne nos informations personnelles avant d'aller sur internet, il nous faut (en)chaîner squid et privoxy.
apt-get install --no-install-recommends privoxy
Rajouter à la fin :
cache_peer 127.0.0.1 parent 8118 0 no-query never_direct allow all always_direct deny all
Cela indique à squid de passer par le proxy « parent » présent sur 127.0.0.1:8118 (c'est à dire privoxy), et de ne jamais contacter les sites web directement.
service squid restart
Et voilà, vos navigateurs utilisant squid3 envoient maintenant leurs requêtes via privoxy.
apt-get install --no-install-recommends tor
Chercher et dé-commenter la ligne suivante :
forward-socks5 / 127.0.0.1:9050 .
service privoxy restart
…
Vous ne voulez probablement pas utiliser TOR pour vos paquets APT. D'une part cela surcharge le réseau, ce qui est mal. D'autre part, ça n'est pas réellement intéressant d'anonymiser le téléchargement de ses mises à jour…
apt-get install apt-cacher-ng
À faire sur toutes les machines de votre réseau :
Acquire::http::Proxy "http://127.0.0.1:3142";
En remplaçant 127.0.0.1 par l'adresse de votre conteneur le cas échéant.
On suppose ici que l'installation a été faite sur un conteneur ou un serveur dédié à jouer le rôle de proxy.
Si votre serveur proxy est destiné à être utilisé par d'autres utilisateurs que vous, vous pouvez souhaiter changer un peu la configuration. Par exemple, seuls deux ports (deux services) doivent être visibles depuis l'extérieur :
Deux solutions s'offrent à vous pour vous assurer que les autres services soient invisibles de l'extérieur du proxy.