Skip to content


Mettre en oeuvre Squid transparent HTTPS sous Debian

Introduction

J'avais fait un article sur l'installation et la configuration de Squid, il y a deux ans environ, mais j'avais très peu traité le sujet d'un serveur proxy transparent (intercept).

C'est ce que je me propose de faire aujourd'hui.

Nous allons tout d'abord traiter des pré-requis :

  • Il faut une machine avec deux pattes sur deux réseaux au moins, un routeur...
  • Récupérer les sources de Squid (en effet le paquet fourni par Debian n'intègre pas --enable-ssl).
  • Reconstruire le .deb avec le SSL et installer celui-ci
  • Configurer Squid puis configurer le prerouting.

Transformer la machine en routeur

Pour cela si l'on fait confiance aux scripts de démarrage réseau, les routes doivent être ok. (il faudra tout de même vérifier) mettre en place l'IP Forwarding.

Une vieille méthode consiste à fixer la valeur à un du fichier suivant : /proc/sys/net/ipv4/ip_forwarding :

echo 1 > /proc/sys/net/ipv4/ip_forward

La bonne méthode est de mettre la valeur 1 dans le fichier /etc/sysctl.conf

net.ipv4.ip_forward=1

D'appliquer les modifications

sysctl -p

Voilà votre machine est un routeur...

Récupération des sources de Squid

Nous allons ajouter deux entrées dans le fichier /etc/apt/sources.list

echo "deb-src http://ftp.de.debian.org/debian lenny main contrib non-free
 
deb-src http://backports.debian.org/debian-backports lenny-backports main contrib non-free
 
" >> /etc/apt/sources.list

Suite à cet ajout de dépots il faut mettre à jour la base apt.

apt-get update

Suite à la mise à jour des dépots nous allons compiler les paquets. (Vous pouvez les compiler sur une autre machine plus rapide ce qui vous permettra d'avoir un gain de temps)

cd /usr/src
apt-get source squid
apt-get -y build-dep squid openssh openssl
apt-get -y install devscripts build-essential fakeroot

Pour reconstruire les .deb nous nous plaçons dans le répertoire de squid

cd squid*

Puis nous modifions les options de compilation en ajoutant --enable-ssl

sed -i -e "s/--enable-esi/--enable-esi --enable-ssl/g" debian/rules

Nous préparons la compilation

./configure
 
[...]
 
checking for size_t... yes
configure: creating ./config.status
config.status: creating Makefile
config.status: creating include/Makefile
config.status: creating src/Makefile
config.status: creating test/Makefile
config.status: creating config.h
config.status: config.h is unchanged
config.status: executing depfiles commands

Nous construisons les paquets

dpkg-buildpackage -rfakeroot -D -us -uc -b
 
[...]
 
/usr/bin/install -c -m 644 ./hu/ERR_FTP_PUT_ERROR /usr/src/squid3-3.1.6/debian/tmp//usr/share/squid3/errors/hu
/usr/bin/install -c -m 644 ./hu/ERR_FTP_PUT_MODIFIED /usr/src/squid3-3.1.6/debian/tmp//usr/share/squid3/errors/hu
/usr/bin/install -c -m 644 ./hu/ERR_FTP_UNAVAILABLE /usr/src/squid3-3.1.6/debian/tmp//usr/share/squid3/errors/hu
/usr/bin/install -c -m 644 ./hu/ERR_ICAP_FAILURE /usr/src/squid3-3.1.6/debian/tmp//usr/share/squid3/errors/hu
/usr/bin/install -c -m 644 ./hu/ERR_INVALID_REQ /usr/src/squid3-3.1.6/debian/tmp//usr/share/squid3/errors/hu
/usr/bin/install -c -m 644 ./hu/ERR_INVALID_RESP /usr/src/squid3-3.1.6/debian/tmp//usr/share/squid3/errors/hu
/usr/bin/install -c -m 644 ./hu/ERR_INVALID_URL /usr/src/squid3-3.1.6/debian/tmp//usr/share/squid3/errors/hu
 
[...]
dh_md5sums -psquid3 
dh_builddeb -psquid3 
dpkg-deb : construction du paquet « squid3 » dans « ../squid3_3.1.6-1.2+squeeze3_amd64.deb ».
dh_gencontrol -psquid3-dbg  
dh_md5sums -psquid3-dbg 
dh_builddeb -psquid3-dbg 
dpkg-deb : construction du paquet « squid3-dbg » dans « ../squid3-dbg_3.1.6-1.2+squeeze3_amd64.deb ».
dh_gencontrol -psquidclient  
dh_md5sums -psquidclient 
dh_builddeb -psquidclient 
dpkg-deb : construction du paquet « squidclient » dans « ../squidclient_3.1.6-1.2+squeeze3_amd64.deb ».
dh_gencontrol -psquid-cgi  
dh_md5sums -psquid-cgi 
dh_builddeb -psquid-cgi 
dpkg-deb : construction du paquet « squid-cgi » dans « ../squid-cgi_3.1.6-1.2+squeeze3_amd64.deb ».
 dpkg-genchanges -b >../squid3_3.1.6-1.2+squeeze3_amd64.changes
dpkg-genchanges: envoi d'un binaire - aucune inclusion de code source
 dpkg-source --after-build squid3-3.1.6
dpkg-buildpackage: envoi d'un binaire seulement (aucune inclusion de code source)

Voilà nos paquets sont créés !

  • squidclient_3.1.6-1.2+squeeze3_amd64.deb
  • squid-cgi_3.1.6-1.2+squeeze3_amd64.deb
  • squid3-dbg_3.1.6-1.2+squeeze3_amd64.deb
  • squid3-common_3.1.6-1.2+squeeze3_all.deb
  • squid3_3.1.6-1.2+squeeze3_amd64.deb

Nous allons les installer....

dpkg -i squid3_3.1.6-1.2+squeeze3_amd64.deb squid3-common_3.1.6-1.2+squeeze3_all.deb squid3-dbg_3.1.6-1.2+squeeze3_amd64.deb squid-cgi_3.1.6-1.2+squeeze3_amd64.deb squidclient_3.1.6-1.2+squeeze3_amd64.deb

Configuration de Squid

nano /etc/squid3/squid.conf

http_port 3128 transparent
 
# Nous avons besoin de certificats afin de les envoyer au clients
 
# générés par : openssl req -new -newkey rsa:1024 -days 365 -nodes -x509 -keyout  /etc/pki/squid/proxy.key -out /etc/pki/squid/proxy.pem
https_port 3129 transparent cert=/etc/pki/squid/proxy.pem key=/etc/pki/squid/proxy.key
 
# Attention si vous modifiez les valeurs de la ligne suivante : lancez squid3 -f /etc/squid3/squid.conf -z pour reconstruire le cache !
cache_dir ufs /var/spool/squid3 1024 256 256
 
# Les journaux
cache_access_log /var/log/squid3/access.log common
cache_log /var/log/squid3/cache.log
cache_store_log /var/log/squid3/store.log
cache_swap_log /var/log/squid3/cache_swap.log
emulate_httpd_log on
 
# Configuration minimum recommandée
#acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/32
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 563 # https, snews
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl CONNECT method CONNECT
 
# Définition des réseaux
acl mon_reseaueth src 10.0.0.0/24
 
# Les accès ou non
http_access allow mon_reseaueth
http_access deny all
 
# La redirection sur squidguard pour le contrôle
# redirect_program /usr/bin/squidGuard -c /etc/squid3/squidGuard.conf
redirect_children 5
 
# On renseigne le nom de machine qui fait serveur
visible_hostname Squid3-Debian

Génération des certificats

mkdir /etc/pki/squid/ -p
 
openssl req -new -newkey rsa:1024 -days 365 -nodes -x509 -keyout  /etc/pki/squid/proxy.key -out /etc/pki/squid/proxy.pem
Generating a 1024 bit RSA private key
..................................................................++++++
............++++++
writing new private key to '/etc/pki/squid/proxy.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:FR
State or Province Name (full name) [Some-State]:France
Locality Name (eg, city) []:Lyon
Organization Name (eg, company) [Internet Widgits Pty Ltd]:SLN
Organizational Unit Name (eg, section) []:SLN
Common Name (eg, YOUR name) []:debian
Email Address []:

On lance squid

service squid3 restart
Restarting Squid HTTP Proxy 3.x: squid3 Waiting.....................done.

Voilà squid est en place, il ne reste plus qu'a configurer le pre et postrouting....

Configurer iptables

Nous allons utiliser le processus if-up.d pour mettre les règles de iptables.

Pour cela nous allons créer des règles et les indiquer dans un fichier /etc/firewall.conf puis créer un script lançant iptables-restore dans /etc/network/if-up.d .

Ma machine à une patte sur le réseau eth0(192.168.1.31) 192.168.1.0/24 (freebox) et une patte sur le réseau eth1(10.0.0.1) 10.0.0.0/24 réseau privé

nano /etc/firewall.conf

# Generated by iptables-save v1.4.8 on Sat Mar 16 21:11:54 2013
*nat
: PREROUTING ACCEPT [0:0]
: POSTROUTING ACCEPT [0:0]
: OUTPUT ACCEPT [0:0]
-A PREROUTING -i eth1 -p tcp -m multiport --dports 80,21,70,210,1025:65535,280,488,591,777,443 -j LOG --log-prefix "PREROUTING for proxy : "
-A PREROUTING -i eth1 -p tcp -m multiport --dports 80,21,70,210,1025:65535,280,488,591,777 -j REDIRECT --to-ports 3128
-A PREROUTING -i eth1 -p tcp -m multiport --dports 443 -j REDIRECT --to-ports 3129

-A POSTROUTING -o eth0 -j LOG --log-prefix "MASQUERADE for proxy : "
-A POSTROUTING -o eth0 -j MASQUERADE
COMMIT
# Completed on Sat Mar 16 21:11:54 2013

 

Le script /etc/network/if-up.d/firewall

#!/bin/sh
iptables-restore < /etc/firewall.conf
chmod +x /etc/network/if-up.d/firewall

Appliquons les règles

sh /etc/network/if-up.d/firewall

Voilà tout est près !

Configuration des postes clients

Rien à faire ou presque, il suffit que ceux-ci aient la machine squid en passerelle : 10.0.0.1

Par ailleurs dans les log syslog on constate au démarrage d'un poste client :

Mar 23 10:48:10 routeur-squid3 kernel: [ 4847.524364] MASQUERADE for proxy : IN= OUT=eth0 SRC=10.0.0.2 DST=192.168.1.254 LEN=53 TOS=0x00 PREC=0x00 TTL=63 ID=62551 DF PROTO=UDP SPT=45459 DPT=53 LEN=33
Mar 23 10:48:10 routeur-squid3 kernel: [ 4847.887236] MASQUERADE for proxy : IN= OUT=eth0 SRC=10.0.0.2 DST=192.168.1.254 LEN=53 TOS=0x00 PREC=0x00 TTL=63 ID=62642 DF PROTO=UDP SPT=33619 DPT=53 LEN=33
Mar 23 10:48:10 routeur-squid3 kernel: [ 4848.016562] MASQUERADE for proxy : IN= OUT=eth0 SRC=10.0.0.2 DST=192.168.1.254 LEN=53 TOS=0x00 PREC=0x00 TTL=63 ID=62675 DF PROTO=UDP SPT=58277 DPT=53 LEN=33
Mar 23 10:48:11 routeur-squid3 kernel: [ 4848.239138] MASQUERADE for proxy : IN= OUT=eth0 SRC=10.0.0.2 DST=192.168.1.254 LEN=53 TOS=0x00 PREC=0x00 TTL=63 ID=62731 DF PROTO=UDP SPT=51013 DPT=53 LEN=33

Puis le lancement d'un navigateur

Mar 23 10:49:33 routeur-squid3 kernel: [ 4930.846334] PREROUTING for proxy : IN=eth1 OUT= MAC=08:00:27:d9:f5:77:08:00:27:02:e6:b7:08:00 SRC=10.0.0.2 DST=173.194.34.24 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=49619 DF PROTO=TCP SPT=51291 DPT=80 WINDOW=5840 RES=0x00 SYN URGP=0
Mar 23 10:49:34 routeur-squid3 kernel: [ 4931.228092] MASQUERADE for proxy : IN= OUT=eth0 SRC=192.168.1.31 DST=192.168.1.254 LEN=59 TOS=0x00 PREC=0x00 TTL=64 ID=0 DF PROTO=UDP SPT=38001 DPT=53 LEN=39
Mar 23 10:49:34 routeur-squid3 kernel: [ 4931.229893] MASQUERADE for proxy : IN= OUT=eth0 SRC=192.168.1.31 DST=173.194.34.23 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=37231 DF PROTO=TCP SPT=41416 DPT=80 WINDOW=5840 RES=0x00 SYN URGP=0
Mar 23 10:49:34 routeur-squid3 kernel: [ 4931.762093] MASQUERADE for proxy : IN= OUT=eth0 SRC=10.0.0.2 DST=192.168.1.254 LEN=61 TOS=0x00 PREC=0x00 TTL=63 ID=18086 DF PROTO=UDP SPT=46022 DPT=53 LEN=41
Mar 23 10:49:34 routeur-squid3 kernel: [ 4931.762093] MASQUERADE for proxy : IN= OUT=eth0 SRC=10.0.0.2 DST=192.168.1.254 LEN=60 TOS=0x00 PREC=0x00 TTL=63 ID=18086 DF PROTO=UDP SPT=48021 DPT=53 LEN=40
Mar 23 10:49:34 routeur-squid3 kernel: [ 4931.762093] MASQUERADE for proxy : IN= OUT=eth0 SRC=10.0.0.2 DST=192.168.1.254 LEN=61 TOS=0x00 PREC=0x00 TTL=63 ID=18086 DF PROTO=UDP SPT=39948 DPT=53 LEN=41
Mar 23 10:49:34 routeur-squid3 kernel: [ 4931.764044] MASQUERADE for proxy : IN= OUT=eth0 SRC=10.0.0.2 DST=192.168.1.254 LEN=61 TOS=0x00 PREC=0x00 TTL=63 ID=18086 DF PROTO=UDP SPT=49894 DPT=53 LEN=41
Mar 23 10:49:34 routeur-squid3 kernel: [ 4931.764044] MASQUERADE for proxy : IN= OUT=eth0 SRC=10.0.0.2 DST=192.168.1.254 LEN=60 TOS=0x00 PREC=0x00 TTL=63 ID=18086 DF PROTO=UDP SPT=37473 DPT=53 LEN=40
Mar 23 10:49:34 routeur-squid3 kernel: [ 4931.764044] MASQUERADE for proxy : IN= OUT=eth0 SRC=10.0.0.2 DST=192.168.1.254 LEN=61 TOS=0x00 PREC=0x00 TTL=63 ID=18087 DF PROTO=UDP SPT=34009 DPT=53 LEN=41
Mar 23 10:49:34 routeur-squid3 kernel: [ 4931.768042] MASQUERADE for proxy : IN= OUT=eth0 SRC=10.0.0.2 DST=192.168.1.254 LEN=62 TOS=0x00 PREC=0x00 TTL=63 ID=18088 DF PROTO=UDP SPT=51097 DPT=53 LEN=42
Mar 23 10:49:34 routeur-squid3 kernel: [ 4931.768042] MASQUERADE for proxy : IN= OUT=eth0 SRC=10.0.0.2 DST=192.168.1.254 LEN=60 TOS=0x00 PREC=0x00 TTL=63 ID=18088 DF PROTO=UDP SPT=50717 DPT=53 LEN=40
Mar 23 10:49:34 routeur-squid3 kernel: [ 4931.771816] MASQUERADE for proxy : IN= OUT=eth0 SRC=10.0.0.2 DST=192.168.1.254 LEN=65 TOS=0x00 PREC=0x00 TTL=63 ID=18088 DF PROTO=UDP SPT=33781 DPT=53 LEN=45
Mar 23 10:49:34 routeur-squid3 kernel: [ 4931.771816] MASQUERADE for proxy : IN= OUT=eth0 SRC=10.0.0.2 DST=192.168.1.254 LEN=61 TOS=0x00 PREC=0x00 TTL=63 ID=18088 DF PROTO=UDP SPT=47531 DPT=53 LEN=41
Mar 23 10:49:34 routeur-squid3 kernel: [ 4931.771816] MASQUERADE for proxy : IN= OUT=eth0 SRC=10.0.0.2 DST=192.168.1.254 LEN=61 TOS=0x00 PREC=0x00 TTL=63 ID=18088 DF PROTO=UDP SPT=50246 DPT=53 LEN=41
Mar 23 10:49:34 routeur-squid3 kernel: [ 4931.771816] MASQUERADE for proxy : IN= OUT=eth0 SRC=10.0.0.2 DST=192.168.1.254 LEN=61 TOS=0x00 PREC=0x00 TTL=63 ID=18089 DF PROTO=UDP SPT=56123 DPT=53 LEN=41
Mar 23 10:49:34 routeur-squid3 kernel: [ 4931.771816] MASQUERADE for proxy : IN= OUT=eth0 SRC=10.0.0.2 DST=192.168.1.254 LEN=65 TOS=0x00 PREC=0x00 TTL=63 ID=18089 DF PROTO=UDP SPT=46162 DPT=53 LEN=45
Mar 23 10:49:34 routeur-squid3 kernel: [ 4931.780049] MASQUERADE for proxy : IN= OUT=eth0 SRC=10.0.0.2 DST=192.168.1.254 LEN=65 TOS=0x00 PREC=0x00 TTL=63 ID=18091 DF PROTO=UDP SPT=43632 DPT=53 LEN=45
Mar 23 10:49:34 routeur-squid3 kernel: [ 4931.892838] PREROUTING for proxy : IN=eth1 OUT= MAC=08:00:27:d9:f5:77:08:00:27:02:e6:b7:08:00 SRC=10.0.0.2 DST=173.194.34.24 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=65026 DF PROTO=TCP SPT=51292 DPT=80 WINDOW=5840 RES=0x00 SYN URGP=0
Mar 23 10:49:34 routeur-squid3 kernel: [ 4931.892838] PREROUTING for proxy : IN=eth1 OUT= MAC=08:00:27:d9:f5:77:08:00:27:02:e6:b7:08:00 SRC=10.0.0.2 DST=173.194.34.24 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=55079 DF PROTO=TCP SPT=51293 DPT=80 WINDOW=5840 RES=0x00 SYN URGP=0
Mar 23 10:49:34 routeur-squid3 kernel: [ 4931.892838] PREROUTING for proxy : IN=eth1 OUT= MAC=08:00:27:d9:f5:77:08:00:27:02:e6:b7:08:00 SRC=10.0.0.2 DST=173.194.34.24 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=32098 DF PROTO=TCP SPT=51294 DPT=80 WINDOW=5840 RES=0x00 SYN URGP=0
Mar 23 10:49:34 routeur-squid3 kernel: [ 4931.912260] PREROUTING for proxy : IN=eth1 OUT= MAC=08:00:27:d9:f5:77:08:00:27:02:e6:b7:08:00 SRC=10.0.0.2 DST=173.194.34.24 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=19140 DF PROTO=TCP SPT=51295 DPT=80 WINDOW=5840 RES=0x00 SYN URGP=0
Mar 23 10:49:34 routeur-squid3 kernel: [ 4931.967336] MASQUERADE for proxy : IN= OUT=eth0 SRC=192.168.1.31 DST=173.194.34.23 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=60884 DF PROTO=TCP SPT=42617 DPT=80 WINDOW=5840 RES=0x00 SYN URGP=0
Mar 23 10:49:34 routeur-squid3 kernel: [ 4931.967336] MASQUERADE for proxy : IN= OUT=eth0 SRC=192.168.1.31 DST=173.194.34.23 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=4612 DF PROTO=TCP SPT=42618 DPT=80 WINDOW=5840 RES=0x00 SYN URGP=0
Mar 23 10:49:35 routeur-squid3 kernel: [ 4932.996197] PREROUTING for proxy : IN=eth1 OUT= MAC=08:00:27:d9:f5:77:08:00:27:02:e6:b7:08:00 SRC=10.0.0.2 DST=173.194.34.24 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=32604 DF PROTO=TCP SPT=51296 DPT=80 WINDOW=5840 RES=0x00 SYN URGP=0
Mar 23 10:49:35 routeur-squid3 kernel: [ 4932.996197] PREROUTING for proxy : IN=eth1 OUT= MAC=08:00:27:d9:f5:77:08:00:27:02:e6:b7:08:00 SRC=10.0.0.2 DST=173.194.34.24 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=37817 DF PROTO=TCP SPT=51297 DPT=80 WINDOW=5840 RES=0x00 SYN URGP=0
Mar 23 10:49:35 routeur-squid3 kernel: [ 4932.996197] PREROUTING for proxy : IN=eth1 OUT= MAC=08:00:27:d9:f5:77:08:00:27:02:e6:b7:08:00 SRC=10.0.0.2 DST=173.194.34.24 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=9058 DF PROTO=TCP SPT=51298 DPT=80 WINDOW=5840 RES=0x00 SYN URGP=0
Mar 23 10:49:35 routeur-squid3 kernel: [ 4933.009844] PREROUTING for proxy : IN=eth1 OUT= MAC=08:00:27:d9:f5:77:08:00:27:02:e6:b7:08:00 SRC=10.0.0.2 DST=173.194.34.24 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=5306 DF PROTO=TCP SPT=51299 DPT=80 WINDOW=5840 RES=0x00 SYN URGP=0
Mar 23 10:49:35 routeur-squid3 kernel: [ 4933.009844] PREROUTING for proxy : IN=eth1 OUT= MAC=08:00:27:d9:f5:77:08:00:27:02:e6:b7:08:00 SRC=10.0.0.2 DST=74.125.132.105 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=39860 DF PROTO=TCP SPT=41261 DPT=80 WINDOW=5840 RES=0x00 SYN URGP=0
Mar 23 10:49:35 routeur-squid3 kernel: [ 4933.009844] PREROUTING for proxy : IN=eth1 OUT= MAC=08:00:27:d9:f5:77:08:00:27:02:e6:b7:08:00 SRC=10.0.0.2 DST=173.194.34.24 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=53151 DF PROTO=TCP SPT=51301 DPT=80 WINDOW=5840 RES=0x00 SYN URGP=0
Mar 23 10:49:35 routeur-squid3 kernel: [ 4933.025538] MASQUERADE for proxy : IN= OUT=eth0 SRC=10.0.0.2 DST=192.168.1.254 LEN=61 TOS=0x00 PREC=0x00 TTL=63 ID=18402 DF PROTO=UDP SPT=55956 DPT=53 LEN=41
Mar 23 10:49:35 routeur-squid3 kernel: [ 4933.054018] PREROUTING for proxy : IN=eth1 OUT= MAC=08:00:27:d9:f5:77:08:00:27:02:e6:b7:08:00 SRC=10.0.0.2 DST=173.194.34.47 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=15228 DF PROTO=TCP SPT=33053 DPT=80 WINDOW=5840 RES=0x00 SYN URGP=0
Mar 23 10:49:36 routeur-squid3 kernel: [ 4933.152615] MASQUERADE for proxy : IN= OUT=eth0 SRC=192.168.1.31 DST=173.194.34.23 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=4366 DF PROTO=TCP SPT=42619 DPT=80 WINDOW=5840 RES=0x00 SYN URGP=0
Mar 23 10:49:36 routeur-squid3 kernel: [ 4933.156615] MASQUERADE for proxy : IN= OUT=eth0 SRC=192.168.1.31 DST=173.194.34.23 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=15264 DF PROTO=TCP SPT=42620 DPT=80 WINDOW=5840 RES=0x00 SYN URGP=0
Mar 23 10:49:36 routeur-squid3 kernel: [ 4933.160132] MASQUERADE for proxy : IN= OUT=eth0 SRC=192.168.1.31 DST=173.194.34.23 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=50596 DF PROTO=TCP SPT=42621 DPT=80 WINDOW=5840 RES=0x00 SYN URGP=0
Mar 23 10:49:36 routeur-squid3 kernel: [ 4933.389618] MASQUERADE for proxy : IN= OUT=eth0 SRC=192.168.1.31 DST=173.194.34.47 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=32492 DF PROTO=TCP SPT=43035 DPT=80 WINDOW=5840 RES=0x00 SYN URGP=0
Mar 23 10:49:36 routeur-squid3 kernel: [ 4933.389618] MASQUERADE for proxy : IN= OUT=eth0 SRC=192.168.1.31 DST=74.125.132.106 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=49329 DF PROTO=TCP SPT=51033 DPT=80 WINDOW=5840 RES=0x00 SYN URGP=0

Et dans les log de squid

10.0.0.2 - - [23/Mar/2013:10:49:34 +0100] "GET http://www.google.fr/images/srpr/logo4w.png HTTP/1.1" 200 20427 TCP_MISS:DIRECT
10.0.0.2 - - [23/Mar/2013:10:49:34 +0100] "GET http://www.google.fr/images/icons/product/chrome-48.png HTTP/1.1" 200 2389 TCP_REFRESH_UNMODIFIED:DIRECT
10.0.0.2 - - [23/Mar/2013:10:49:35 +0100] "GET http://www.google.fr/xjs/_/js/s/c,sb,cr,cdos,vm,tbui,mb,wobnm,abd,klc,kat,bihu,kp,lu,m,tnv,amcl,erh,hv,lc,ob,r,rsn,sf,sfa,shb,tbpr,hsm,j,p,pcc,csi/rt=j/ver=V7Ny-OUsbvw.en_US./am=CA/d=1/sv=1/rs=AItRSTNTQEkMjnw5NEaDowS7vIR7ajYYrw HTTP/1.1" 200 177006 TCP_MISS:DIRECT
10.0.0.2 - - [23/Mar/2013:10:49:36 +0100] "GET http://www.google.fr/favicon.ico HTTP/1.1" 200 1586 TCP_REFRESH_UNMODIFIED:DIRECT
10.0.0.2 - - [23/Mar/2013:10:49:36 +0100] "GET http://www.google.fr/xjs/_/js/s/sy9,gf/rt=j/ver=V7Ny-OUsbvw.en_US./am=CA/d=0/sv=1/rs=AItRSTNTQEkMjnw5NEaDowS7vIR7ajYYrw HTTP/1.1" 200 1467 TCP_MISS:DIRECT
10.0.0.2 - - [23/Mar/2013:10:49:36 +0100] "GET http://www.google.fr/extern_chrome/b20a5cc4f9dbb792.js? HTTP/1.1" 200 21853 TCP_MISS:DIRECT
10.0.0.2 - - [23/Mar/2013:10:49:36 +0100] "GET http://www.google.fr/csi? HTTP/1.1" 204 398 TCP_MISS:DIRECT
10.0.0.2 - - [23/Mar/2013:10:49:36 +0100] "GET http://www.google.fr/images/nav_logo117.png HTTP/1.1" 200 25501 TCP_MISS:DIRECT
10.0.0.2 - - [23/Mar/2013:10:49:36 +0100] "GET http://ssl.gstatic.com/gb/js/sem_33f46747f3f9067241e0d10ffc5ee821.js HTTP/1.1" 200 19346 TCP_REFRESH_UNMODIFIED:DIRECT
10.0.0.2 - - [23/Mar/2013:10:49:36 +0100] "GET http://www.google.com/textinputassistant/tia.png HTTP/1.1" 200 941 TCP_REFRESH_UNMODIFIED:DIRECT

Vérifions tout de même l'accès HTTPS : https://www.google.fr

10.0.0.2 - - [23/Mar/2013:10:52:51 +0100] "GET https://www.google.fr/ HTTP/1.1" 200 28649 TCP_MISS:DIRECT
10.0.0.2 - - [23/Mar/2013:10:52:52 +0100] "GET https://www.google.fr/blank.html HTTP/1.1" 200 551 TCP_HIT:NONE
10.0.0.2 - - [23/Mar/2013:10:52:52 +0100] "GET https://www.google.fr/images/icons/product/chrome-48.png HTTP/1.1" 200 2291 TCP_MISS:DIRECT
10.0.0.2 - - [23/Mar/2013:10:52:52 +0100] "GET https://www.google.fr/images/srpr/logo4w.png HTTP/1.1" 200 20427 TCP_MISS:DIRECT
10.0.0.2 - - [23/Mar/2013:10:52:52 +0100] "GET https://www.google.fr/xjs/_/js/s/c,sb,cr,cdos,vm,tbui,mb,wobnm,abd,klc,kat,bihu,kp,lu,m,tnv,amcl,erh,hv,lc,ob,r,rsn,sf,sfa,shb,tbpr,hsm,j,p,pcc,csi/rt=j/ver=V7Ny-OUsbvw.en_US./am=CA/d=1/sv=1/rs=AItRSTNTQEkMjnw5NEaDowS7vIR7ajYYrw HTTP/1.1" 200 177006 TCP_MISS:DIRECT
10.0.0.2 - - [23/Mar/2013:10:52:53 +0100] "GET https://www.google.fr/favicon.ico HTTP/1.1" 200 1488 TCP_MISS:DIRECT
10.0.0.2 - - [23/Mar/2013:10:52:53 +0100] "GET https://www.google.fr/images/nav_logo117.png HTTP/1.1" 200 25501 TCP_MISS:DIRECT
10.0.0.2 - - [23/Mar/2013:10:52:53 +0100] "GET https://www.google.fr/extern_chrome/b20a5cc4f9dbb792.js? HTTP/1.1" 200 21853 TCP_MISS:DIRECT
10.0.0.2 - - [23/Mar/2013:10:52:53 +0100] "GET https://www.google.fr/xjs/_/js/s/sy9,gf/rt=j/ver=V7Ny-OUsbvw.en_US./am=CA/d=0/sv=1/rs=AItRSTNTQEkMjnw5NEaDowS7vIR7ajYYrw HTTP/1.1" 200 1467 TCP_MISS:DIRECT
10.0.0.2 - - [23/Mar/2013:10:52:53 +0100] "GET https://www.google.fr/csi? HTTP/1.1" 204 398 TCP_MISS:DIRECT
10.0.0.2 - - [23/Mar/2013:10:52:53 +0100] "GET https://www.google.com/textinputassistant/tia.png HTTP/1.1" 200 843 TCP_MISS:DIRECT
10.0.0.2 - - [23/Mar/2013:10:52:54 +0100] "GET https://ssl.gstatic.com/gb/js/sem_33f46747f3f9067241e0d10ffc5ee821.js HTTP/1.1" 200 19248 TCP_MISS:DIRECT

Si le client regarde de plus près le certificat, voilà ce qu'il constate

certif-01

Ce n'est pas le certificat de google, mais celui d'un élément tiers actif entre lui et google... une sorte de man in the middle....

Ok 🙂

Print Friendly, PDF & Email

Posted in Debian, Important, Linux, Sécurité, Technique, Toutes. Tagged with , , , , , .

21 Responses

Stay in touch with the conversation, subscribe to the RSS feed for comments on this post.

  1. Rien à faire sur les postes clients ... hum. Installer le certificat de la PKI sur les postes (/etc/pki/squid/proxy.pem dans le tuto) permettrait de ne pas avoir le message d'erreur SSL que tu as sur les clients (et qui n'est pas précisé dans le tuto).

  2. lolotux said

    Oui tout à fait mais quand certains sites autosignent leurs certificats... Le même message apparait !

    Cependant j'avais fait un article sur les certificats :
    http://monblog.system-linux.net/blog/2009/02/20/creation-dune-petite-infrastructure-de-gestion-de-certificats-sous-linux/

    Qui peut servir à faire confiance au certificat du proxy....

  3. sngo said

    Bonjour,
    j'ai un nouveau serveur sous Wheezy et j'aimerais utiliser cette méthode.
    Je n'arrive pas à faire l'update des dépôts:
    " W: Impossible de récupérer http://backports.debian.org/debian-backports/dists/lenny-backports/contrib/source/Sources 404 Not Found [IP : 206.12.19.9 80]"

    merci

  4. Bonjour,

    j'ai suivis ton tuto à la lettre (accessoirement il y a une erreur dans ton fichier de conf firewall: il manque les ":" et des lettres ligne 3 et 4).

    Le HTTP fonctionne très bien. Néanmoins, lorsque je vais sur https://google.fr le navigateur demande un certificat.

    J'ai installé le certificat dans "Autorité de certification racine de confiance" (IE et firefox). Mais cela ne fonctionne toujours pas.

    Je n'ai aucune traces dans le access.log de squid3.

    Peux -tu m'éclairer à ce sujet la.

    Merci

  5. adrien said

    Chez moi il n'y a que https://www.google.fr/ qui fonctionne, Gmail, Facebook... non.

  6. lolotux said

    Réponse du berger à la bergère, chez moi si !

    Des log ?

  7. adrien said

    Dans mes logs, les sites https apparaissent http...

    192.0.0.10 - - [22/May/2013:11:45:54 +0200] "GET http://fr-fr.facebook.com/ HTTP/1.1" 301 346 TCP_MISS:DIRECT
    192.0.0.10 - - [22/May/2013:11:46:12 +0200] "GET http://www.google.fr/ HTTP/1.1" 200 33793 TCP_MISS:DIRECT

  8. adrien said

    Quels logs exactement ?

  9. lolotux said

    Peut-être le navigateur !
    puis /var/log/squid*/*

    etc.

  10. adrien said

    Bon finalement je ne vais pas utiliser cette méthode, niveau sécurité c'est pas terrible. Merci en tout cas.

  11. Vaneck said

    Bonjour.
    stp faut préciser la plate forme que tu utilise à chaque fois: debian lenny, squeeze, wheeze? et aussi les liens à entrer dans le fichier /etc/apt/sources.list pour faire le mise à jour système.

  12. lolotux said

    Bonjour,

    Oui et non, puisque souvent j'oublie moi-même d'indiquer Squeeze, Wheezy, etc.
    mon sources.list :
    #
    deb http://ftp.fr.debian.org/debian/ wheezy main contrib non-free
    deb-src http://ftp.fr.debian.org/debian/ wheezy main contrib non-free

    deb http://security.debian.org/ wheezy/updates main contrib non-free
    deb-src http://security.debian.org/ wheezy/updates main contrib non-free

    deb http://ftp.fr.debian.org/debian/ wheezy-updates main
    deb-src http://ftp.fr.debian.org/debian/ wheezy-updates main

    deb http://ftp.fr.debian.org/debian/ wheezy-proposed-updates contrib non-free main
    deb-src http://ftp.fr.debian.org/debian/ wheezy-proposed-updates contrib non-free main

    deb http://deb-multimedia.org stable main non-free
    # deb http://mirror.home-dn.net/debian-multimedia stable main

    deb http://debian.yacy.net ./
    deb http://www.symfony-project.org/get debian/

    # deb http://www.geexbox.org/debian/ unstable main

    ## freeDiameter APT repository
    deb http://www.freediameter.net/packages/debian wheezy contrib

    deb-src http://ftp.fr.debian.org/debian wheezy main contrib non-free

    A+

  13. Letouane said

    Salut !
    Question bête (peut-être) à laquelle j'aimerai avoir une réponse pas bête 🙂

    --> Lors d'une connexion à un site bancaire n'y aura t'il pas un souci relatif aux certificats (comme par exemple si le poste doit fournir un certificat client) ?

    --> Faut-il alors whitelister ce site pour que le trafic ne soit pas intercepté ?

    Merci.

  14. lolotux said

    Bonjour,

    Moi j'aime bien les questions bêtes ou idiotes. J'ai l'habitude de dire "j'ai une question idiote"
    Pour répondre je ne pense pas qu'il y ait plus de soucis avec un site bancaire sécurisé en https qu'avec un autre. Cependant celui (le client) voyant non pas le certificat de sa banque mais de son entreprise est légitimement amené à penser à arrêter la transaction.
    En revanche n'oublions pas que les proxy transparents sont mis en place au sein des entreprise qui peuvent légitimement estimer que les ressources de celles-ci doivent servir à autre chose que des transactions bancaires personnelles...
    C'est un point d'achoppement dans le choix de la stratégie de régulation (filtrage !?) 🙂
    Et comme tu le fais remarquer, on peut aussi mettre des règles plus fines ne dirigeant pas les requêtes vers le proxy en fonction des adresses IP de destinations.....

    Merci de ta question plus intéressante que bête ! 😉

  15. Letouane said

    Bonjour Lolo,

    Merci de ta réponse à mes questions. J'apporte juste une petite précision, une nuance, à ta réponse.
    J'ai utilisé l'exemple du site bancaire parce que justement certains de mes clients en ont l'usage par leur fonction (DAF, comptables...) et aussi à impots.gouv.fr (TVA, tout ça...).

    Mon usage futur n'est pas tant relatif à la régulation des sites visités (bien que...) mais plus de protéger le surf des utilisateurs par ClamAV.

    D'ailleurs, à ce sujet, le filtrage antivirus du surf est-il performant (pas en temps de calcul mais en sécurité) ? Dois-je adjoindre un autre antivirus ? en sus ?

  16. MaK said

    Salut,

    C'est pas plutôt : echo 1 > /proc/sys/net/ipv4/ip_forward au lieu de forwarding ?

  17. lolotux said

    Bonjour,

    En effet.... Correction apportée à l'article !

    Merci

  18. Aashan said

    Bonjour, je rencontre actuellement un problème concernant squid https, je suppose que l'erreur vienne de mon certificat cependant j'ai recommencer plusieurs fois. J'ai donc l'erreur ci-dessous, pensez vous pouvoir m'aider je sature...

    L'erreur suivante a été rencontrée en essayant d'accéder à l'URL : https://www.google.fr/

    Échec lors de l'établissement d'une connexion sécurisée vers 173.194.67.94

    Le système a retourné : (71) Protocol error

    Ce proxy et l'hôte distant n'ont pu négocier mutuellement des paramètres de sécurité satisfaisants pour le traitement de votre requête. Il est possible que l'hôte distant ne supporte pas les connexions sécurisées, ou que le proxy n'est pas satisfait des droits de l'hôte.

    Votre administrateur de cache est webmaster.

    Cordialement

  19. Jean Bonnot said

    le proxy https transparent paraissait une bonne idée mais c'est vrai que cela pose de gros problèmes de confidentialité/piratage. Si la chaîne de confiance est brisée 1 fois (par cette solution), impossible de savoir si elle ne va pas être encore brisée de la même manière mais par un hacker entre le proxy et le site véritable... Autant ne pas utiliser de https ou laisser un proxy non transparent pour ce type de trafic.

  20. jey said

    Bjr.
    J'essaie depuis plusieurs jours de le mettre en place sur openwrt mais ça ne marche pas, soit je n'ai aucune connexion,soit ça fonctionne mais les sites en https ne sont pas "filtrés" par le proxy, auriez-vous une solution?

  21. lolotux said

    Bonjour,
    Quel est le rapport entre openwrt et le proxy squid ?
    Manque d'information, ou qlq chose m'échappe !

    🙂

Some HTML is OK

(required)

(required, but never shared)

or, reply to this post via trackback.

Time limit is exhausted. Please reload CAPTCHA.


/* */
Creative Commons License
Cette création par Laurent Besson est mise à disposition selon les termes de la licence Creative Commons Paternité-Partage des Conditions Initiales à l'Identique 2.0 France.