#1 Le 03/10/2008, à 12:27
- Funix
Proxy transparent avec iptables/squid/squidGuard
'lut,
J'avais mis en place un filtrage parental sur la base de squid et squidGuard basé sur l'authentification utilisateur comme décrit ici http://www.funix.org/fr/linux/main-linux.php?ref=proxy&page=menu#Squid il se trouve que les minots ont découvert maintenant le moyen de le contourner (facile il suffit de configurer le navigateur avec une connexion directe au net). Du coup maintenant je compte maintenant installer un proxy transparent en laissant tomber l'authentification puisque les deux ne sont pas compatibles.
Pour avoir une idée de mon réseau local familial ça donne ça
internet <-> livebox 192.168.1.1 <-> routeur 192.168.2.1 <-> eth1(192.168.2.11) serveur eth0(192.168.26.100) <-> eth0 (192.168.26.50) poste client
le routeur est là pour pallier aux insuffisances de la livebox notamment en terme de wifi. Le serveur a deux cartes réseau, eth1 connecté au routeur avec l’adresse 192.168.2.11 et eth0 connecté au poste client avec l’adresse 192.168.26.100. Par ailleurs j’ai un portable qui se connecte directement au routeur.
Du client le proxy transparent marche nickel, mais pas moyen de le faire fonctionner sur le serveur.
Voilà la mon squid.conf (version 2.6)
http_port 3128 transparent
cache_dir ufs /var/spool/squid 40 16 256
cache_effective_user proxy
cache_effective_group proxy
hierarchy_stoplist cgi-bin ?
acl QUERY urlpath_regex cgi-bin \?
no_cache deny QUERY
access_log /var/log/squid/access.log squid
cache_log /var/log/squid/cache.log
cache_store_log /var/log/squid/store.log
emulate_httpd_log off
dns_timeout 1 minutes
dns_nameservers 80.10.246.1 80.10.246.132
redirect_program /usr/local/bin/squidGuard -c /etc/squid/squidGuard.conf
redirect_children 5
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern . 0 20% 4320
acl allowed_hosts src 192.168.26.0/255.255.255.0
acl allowed_hostsbis src 192.168.2.0/255.255.255.0
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
acl SSL_ports port 443 563
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 22 # ssh
acl Safe_ports port 443 563 # https, snews
acl Safe_ports port 1863 # msn
acl Safe_ports port 1025-65535 # unregistered ports
acl purge method PURGE
acl CONNECT method CONNECT
http_access allow manager localhost
http_access deny manager
http_access allow purge localhost
http_access deny purge
http_access deny !Safe_ports
http_access allow allowed_hosts
http_access allow allowed_hostsbis
http_access allow localhost
# Interdit tout le reste
http_access deny all
# Autorise les réponses pour tout le monde (par défaut)
http_reply_access allow all
# Autorise le protocole icp pour tout le monde (par défaut)
icp_access allow all
coredump_dir /var/spool/squid
et voilà le rc.firewall
#!/bin/bash
iptables -F
iptables -F -t nat
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
modprobe iptable_nat
# Turn on IP forwarding
echo 1 > /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter
iptables -t nat -A PREROUTING -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.26.100:3128
#iptables -t nat -p tcp -A POSTROUTING -s 192.168.2.11 --dport 80 -j SNAT --to 192.168.2.11:3128
#iptables -A PREROUTING -s 192.168.2.0/255.255.255.0 -p tcp --dport 80 -j DNAT --to-destination 192.168.2.11:3128
#iptables -t nat -A PREROUTING -s 192.168.26.0/255.255.255.0 -p tcp --dport 80 -j DNAT --to-destination 192.168.26.100:3128
#iptables -t nat -A PREROUTING -d 192.168.2.1 -p tcp --dport 80 -j REDIRECT --to-ports 3128
#iptables -t nat -A PREROUTING -o eth1 -p tcp --dport 80 -j REDIRECT --to-ports 3128
#iptables -t nat -A PREROUTING -s localhost -p tcp --dport 80 -j REDIRECT --to-port 3128
#iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-ports 3128
#iptables -t nat -A PREROUTING -s 192.168.26.0/255.255.255.0 -p tcp --dport 80 -j REDIRECT --to-ports 3128
#iptables -t nat -A PREROUTING -s localhost -p tcp --dport 80 -j REDIRECT --to-port 3128
#iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128
#iptables -t nat -A PREROUTING -d 192.168.2.1 -p tcp --dport 80 -j REDIRECT --to-port 3128
# In the NAT table (-t nat), Append a rule (-A) after routing (POSTROUTING)
# which says to MASQUERADE the connection (-j MASQUERADE).
iptables -t nat -A POSTROUTING -s 192.168.26.0/24 -j MASQUERADE
# Allows forwarding specifically to our LAN
iptables -A FORWARD -s 192.168.26.0/24 -j ACCEPT
exit 0
En commentaires apparaissent tous mes différents essais. Je sens que le problème vient des règles iptables mais là sérieusement je coince. J'apprécierais si quelqu'un pouvait me dépanner.
Olivier
FUNIX - https://www.funix.org
Mettez un pingouin dans votre PC
Blog - https://olivier.hoarau.org
Hors ligne
#2 Le 23/11/2008, à 12:06
- Fozzy
Re : Proxy transparent avec iptables/squid/squidGuard
en laissant tomber l'authentification puisque les deux ne sont pas compatibles.
comment ça pas compatible ?
c'est vrai ? J'ai justement l'intention d'installer un ubuntu server pour faire un filtrage adapté aux personnes se connectant (soit mes enfants, soit moi)
quelqu'un peut confirmer ?:|
Hors ligne