PortBlocking dans dansguardian

La contrib smeserver-dansguardian bloque par défaut les communications vers l'extérieur sur le port utilisé (8080) pour éviter les contournements de filtrage. Il peut cependant s'avérer utile de contacter des hôtes extérieurs sur ce port. Nous allons donc créé un templates-custom qui permet de lister les hôtes (IP fixes) autorisés:

mkdir -p /etc/e-smith/templates-custom/etc/rc.d/init.d/masq/
cp -a /etc/e-smith/templates/etc/rc.d/init.d/masq/90local_chk40networks /etc/e-smith/templates-custom/etc/rc.d/init.d/masq/

Puis il faut modifier le fichier /etc/e-smith/templates-custom/etc/rc.d/init.d/masq/90local_chk40network pour qu'il ressemble à ça:

{
return "" unless ( ($dansguardian{portblocking} || "no") eq 'yes');
my @ExcludesHosts = split(/[,;]/,($dansguardian{PortBlockingExclude} || "$LocalIP"));
my $excludes = "@ExcludesHosts";
my $locals = "@locals";
if (@locals)
{
$OUT .=<<"EOF";
for network in $locals
do
/sbin/iptables -A \$NEW_local_chk -d $LocalIP -p tcp --destination-port $squid{TransparentPort} -j ACCEPT
for exclude in $excludes
do
/sbin/iptables -A \$NEW_local_chk -s \$network -d \$exclude -p tcp --destination-port $squid{TransparentPort} -j ACCEPT
done
/sbin/iptables -A \$NEW_local_chk -s \$network -p tcp --destination-port $squid{TransparentPort} -j DROP
/sbin/iptables -A \$NEW_local_chk -s \$network -p tcp --destination-port $squid{TCPPort} -j DROP
/sbin/iptables -A \$NEW_local_chk -d \$network -p tcp --destination-port $squid{TCPPort} -j DROP
done
EOF
}
}

Il ne reste plus qu'à spécifier la liste des IP autorisées:

db configuration setprop dansguardian PortBlockingExclude 12.13.14.15,16.17.18.19
expand-template /etc/rc.d/init.d/masq
/etc/init.d/masq adjust