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