# Controle parental sur passerelle

**URL:** <https://www.debian-fr.org/t/controle-parental-sur-passerelle/67481>\
**Category:** Programmation\
**Created:** [Février 21, 2016, 10:04 UTC](https://www.debian-fr.org/t/controle-parental-sur-passerelle/67481 "2016-02-21T22:04:05Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![coucou91700](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/c/b19c9b/32.png) [@coucou91700](https://www.debian-fr.org/u/coucou91700)\
**Post date:** [Février 21, 2016, 10:04 UTC](https://www.debian-fr.org/t/controle-parental-sur-passerelle/67481/1 "2016-02-21T22:04:05Z")

</div>

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](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

---

<div class="post-metadata">

**Author:** ![PascalHambourg](https://www.debian-fr.org/user_avatar/www.debian-fr.org/pascalhambourg/32/5837_2.png) [@PascalHambourg](https://www.debian-fr.org/u/PascalHambourg)\
**Post date:** [Février 21, 2016, 10:04 UTC](https://www.debian-fr.org/t/controle-parental-sur-passerelle/67481/2 "2016-02-21T22:04:41Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![coucou91700](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/c/b19c9b/32.png) [@coucou91700](https://www.debian-fr.org/u/coucou91700)\
**Post date:** [Février 21, 2016, 10:04 UTC](https://www.debian-fr.org/t/controle-parental-sur-passerelle/67481/3 "2016-02-21T22:04:43Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![vincentsan](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/v/b38774/32.png) [@vincentsan](https://www.debian-fr.org/u/vincentsan)\
**Post date:** [Février 21, 2016, 10:12 UTC](https://www.debian-fr.org/t/controle-parental-sur-passerelle/67481/4 "2016-02-21T22:12:41Z")

</div>

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 :

```auto
## 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.
