Controle parental sur passerelle

bonjour,

j’ai monté un vieux netbook en passerelle

NET—BOX—|eth0 PASSERELLE wlan0|—WIFI

sur le netbook j’ai installé un contrôle d’accès pour enfants basé sur Dansguardian et Privoxy

Dansguardian est configuré ainsi

cat /etc/dansguardian/dansguardian.conf
reportinglevel = 3
languagedir = '/etc/dansguardian/languages’
language = 'french’
loglevel = 2
logexceptionhits = 2
logfileformat = 1
filterip =
filterport = 8080
proxyip = 127.0.0.1
proxyport = 8118
accessdeniedaddress = 'http://YOURSERVER.YOURDOMAIN/cgi-bin/dansguardian.pl
nonstandarddelimiter = on
usecustombannedimage = on
custombannedimagefile = '/usr/share/dansguardian/transparent1x1.gif’
filtergroups = 1
filtergroupslist = '/etc/dansguardian/lists/filtergroupslist’
bannediplist = '/etc/dansguardian/lists/bannediplist’
exceptioniplist = '/etc/dansguardian/lists/exceptioniplist’
showweightedfound = on
weightedphrasemode = 2
urlcachenumber = 1000
urlcacheage = 900
scancleancache = on
phrasefiltermode = 2
preservecase = 0
hexdecodecontent = off
forcequicksearch = off
reverseaddresslookups = off
reverseclientiplookups = off
logclienthostnames = off
createlistcachefiles = on
maxuploadsize = -1
maxcontentfiltersize = 256
maxcontentramcachescansize = 2000
maxcontentfilecachescansize = 20000
filecachedir = '/tmp’
deletedownloadedtempfiles = on
initialtrickledelay = 20
trickledelay = 10
downloadmanager = '/etc/dansguardian/downloadmanagers/fancy.conf’
downloadmanager = '/etc/dansguardian/downloadmanagers/default.conf’
contentscannertimeout = 60
contentscanexceptions = off
recheckreplacedurls = off
forwardedfor = off
usexforwardedfor = off
logconnectionhandlingerrors = on
logchildprocesshandling = off
maxchildren = 120
minchildren = 8
minsparechildren = 4
preforkchildren = 6
maxsparechildren = 32
maxagechildren = 500
maxips = 0
ipcfilename = '/tmp/.dguardianipc’
urlipcfilename = '/tmp/.dguardianurlipc’
ipipcfilename = '/tmp/.dguardianipipc’
nodaemon = off
nologger = off
logadblocks = off
loguseragent = off
softrestart = off
mailer = ‘/usr/sbin/sendmail -t’

et privoxy ainsi

cat /etc/privoxy/config
user-manual /usr/share/doc/privoxy/user-manual
confdir /etc/privoxy
logdir /var/log/privoxy
actionsfile match-all.action # Actions that are applied to all sites and maybe overruled later on.
actionsfile default.action # Main actions file
actionsfile user.action # User customizations
filterfile default.filter
filterfile user.filter # User customizations
logfile logfile
listen-address localhost:8118
toggle 1
enable-remote-toggle 0
enable-remote-http-toggle 0
enable-edit-actions 0
enforce-blocks 0
buffer-limit 4096
enable-proxy-authentication-forwarding 0
forwarded-connect-retries 0
accept-intercepted-requests 0
allow-cgi-request-crunching 0
split-large-forms 0
keep-alive-timeout 5
tolerate-pipelining 1
socket-timeout 300

je désire que tout mon réseau interne wlan0 soit filtré par Dansguardian/Privoxy
je n’arrive pas avec iptables à filtrer mon accés web depuis mon réseau interne
quels sont les règles d’iptables permettant de le faire
merci de vos aides

C’est normal que tu n’y arrives pas. On ne peut pas rediriger un paquet de l’extérieur vers une adresse de loopback comme 127.0.0.1 (localhost). La décision de routage d’entrée qui vient ensuite le considèrera comme invalide car aucun paquet provenant de l’extérieur de la machine n’est censée avoir une telle adresse. Fais plutôt écouter tes services sur l’adresse WLAN de la machine.

bonjour et merci du conseil
je vais revoir ma config en conséquence

Hello,

Chez moi il y a quelques années j’avais redirigé les ports 80 et 443 depuis ma box vers mon proxy (également un vieux laptop), du coup pour sortir sur le web il fallait obligatoirement passer par dansguardian.

Pour NetFilter :

## tu définis ton LAN
Acl_Network=L'@IP_de_ton_NetWork/Le_Masque_de_sous_réseau

## Le script invoqué au boot 

cat > /etc/init.d/iptables.sh << EOF
#!/bin/bash
#
### BEGIN INIT INFO
# Provides:				IPTABLES_boot_script
# Required-start:		\$remote_fs \$syslog
# Required-stop:		\$remote_fs \$syslog
# Sould-start:			\$network \$time
# Sould-stop:			\$network \$time
# Default-start:		2 3 4 5
# Default-stop:			0 1 6
# Short-Description:	Starts the IPTABLE script when the system starts.
#						Closes every ports but the ones which are required 
#						by the services running on the system.
### END INIT INFO
#
## Règles iptables.
## On flush iptables.
iptables -F
iptables --delete-chain
# On accepte tout le traffic sortant et on interdit le forwarding
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
## On supprime toutes les chaînes utilisateurs.
/sbin/iptables -X
## On drop tout le trafic entrant.
iptables -P INPUT DROP
## On accepte le traffic entrant connecté et pour le ssh
iptables -t filter -A INPUT -p tcp -i eth0 -s $Acl_Network --dport ssh -j ACCEPT
iptables -A INPUT -m state --state "ESTABLISHED,RELATED" -j ACCEPT

#web
iptables -A INPUT -m state --state NEW -i eth0 -p TCP -d ftp.fr.debian.org --dport 80 -j ACCEPT
iptables -A INPUT -m state --state NEW -i eth0 -p TCP -d security.debian.org --dport 80 -j ACCEPT
# ftp

## iptables -A INPUT -m state --state NEW -i eth0 -p TCP --dport 21 -j ACCEPT 
## On autorise le traffic de la boucle locale
iptables -I INPUT 2 -i lo -j ACCEPT
## On log les paquets en entrée.
iptables -A INPUT -j LOG
## On log les paquets forward.
iptables -A FORWARD -j LOG 
exit 0
EOF

## le script pour start/stop/reboot le script précédent

cat > /etc/init.d/firewall << EOF
#!/bin/bash
#
### BEGIN INIT INFO
# Provides:			IPTABLES_command_script
# Required-start:		\$remote_fs $syslog
# Required-stop:		\$remote_fs $syslog
# Should-start:			\$network $time
# Should-stop:			\$network $time
# Default-start:		2 3 4 5
# Default-stop:			0 1 6
# Short-Description:	start, stop, restart Netfilter.
### END INIT INFO
#

case "\$1" in
start)
	/etc/init.d/iptables.sh
	echo "Les règles Netfilter ont été appliquées"
	;;
   
stop)
	iptables -P INPUT ACCEPT
	iptables -P OUTPUT ACCEPT
	iptables -P FORWARD ACCEPT
	iptables -X
	iptables -F
	echo "Les règles Netfilter ont été supprimées"
	;;
	
status)
	clear screen
	iptables -L -v --line-numbers
	;;	
	
restart)
	iptables -P INPUT ACCEPT
	iptables -P OUTPUT ACCEPT
	iptables -P FORWARD ACCEPT
	iptables -X
	iptables -F
	/etc/init.d/iptables.sh
	echo "Les règles Netfilter ont été réinitialisées"
	;;
*)
        echo "Usage: \$0 {start|stop|restart|status}"
        exit 1
    ;;
	
esac
EOF

##on redirige les logs vers un fichier à part
grep ":msg,contains,\"PROTO=\"" /etc/rsyslog.conf
if [ $? = 1 ]
	then
		sed -i "57i:msg,contains,\"PROTO=\" /var/log/iptables" /etc/rsyslog.conf
		sed -i "58i& ~" /etc/rsyslog.conf
fi

## un fichier de log pour fliquer c'est + pratique
touch /var/log/iptables

## rendre le script exécutable :
chmod 555 /etc/init.d/iptables.sh
chmod 555 /etc/init.d/firewall

## Lancer le script à chaque démarrage :
update-rc.d iptables.sh defaults
update-rc.d firewall defaults

## Les règles pour le proxy (papa voudra peut-être un accès non filtré)

echo "iptables -t filter -A INPUT -s $Acl_Network -p tcp -i eth0 --dport 3128 -j ACCEPT" >> /etc/init.d/iptables.sh
echo "iptables -t nat -A PREROUTING -i eth0 -s $Acl_Network -p tcp --dport 80 -j REDIRECT --to-port 3128
iptables -t nat -A PREROUTING -i eth0 -s $Acl_Network -p tcp --dport 443 -j REDIRECT --to-port 3128" >> /etc/init.d/iptables.sh

## Les règles pour le filtrage (pour tes enfants)

echo "iptables -t filter -A INPUT -s $Acl_Network -p tcp -i eth0 --dport 8080 -j ACCEPT" >> /etc/init.d/iptables.sh
echo "iptables -t nat -A PREROUTING -i eth0 -s $Acl_Network -p tcp --dport 80 -j REDIRECT --to-port 8080
iptables -t nat -A PREROUTING -i eth0 -s $Acl_Network -p tcp --dport 443 -j REDIRECT --to-port 8080" >> /etc/init.d/iptables.sh
echo "exit 0" >> /etc/init.d/iptables.sh
chmod 555 /etc/init.d/iptables.sh
## Mise à jour du script
iptables -F
iptables -X
update-rc.d iptables.sh defaults
/etc/init.d/iptables.sh save

Tu appelles tes règles avec :
/etc/init.d/firewall start

J’ai fait un petit script pour voir qui est allé surfer où et quand en fonction de l’IP ou de l’@ MAC mais surveiller les autres c’est mal alors celui-là je le garde.
Squid3 est top avec Dansguardian surtout si tu as un SSD pour le cache, mais comme tu veux.

Bonne soirée.