Subversion Repositories ALCASAR

Compare Revisions

Ignore whitespace Rev 310 → Rev 311

/alcasar.sh
925,18 → 925,9
# on vide la liste des @IP du Lan ne subissant pas le filtrage WEB
[ -e /etc/dansguardian/lists/exceptioniplist.default ] || mv /etc/dansguardian/lists/exceptioniplist /etc/dansguardian/lists/exceptioniplist.default
touch /etc/dansguardian/lists/exceptioniplist
# on configure le filtrage de domaine
[ -e /etc/dansguardian/lists/bannedsitelist.default ] || cp /etc/dansguardian/lists/bannedsitelist /etc/dansguardian/lists/bannedsitelist.default
$SED "s?^[^#]?#&?g" /etc/dansguardian/lists/bannedsitelist # (on commente ce qui ne l'est pas)
# on bloque les sites ne possédant pas de nom de domaine (ex: http://12.13.14.15)
$SED "s?^#\*ip?\*ip?g" /etc/dansguardian/lists/bannedsitelist
# on bloque le ssl sur port 80
$SED "s?^#\*\*s?\*\*s?g" /etc/dansguardian/lists/bannedsitelist
# on configure le filtrage d'url
[ -e /etc/dansguardian/lists/bannedurllist.default ] || cp /etc/dansguardian/lists/bannedurllist /etc/dansguardian/lists/bannedurllist.default
$SED "s?^[^#]?#&?g" /etc/dansguardian/lists/bannedurllist # (on commente ce qui ne l'est pas)
chown -R dansguardian:apache /etc/dansguardian/
chmod -R g+rw /etc/dansguardian
# on garde une copie des fichiers de configuration du filtrage d'URL et de domaine
[ -e /etc/dansguardian/lists/bannedsitelist.default ] || mv /etc/dansguardian/lists/bannedsitelist /etc/dansguardian/lists/bannedsitelist.default
[ -e /etc/dansguardian/lists/bannedurllist.default ] || mv /etc/dansguardian/lists/bannedurllist /etc/dansguardian/lists/bannedurllist.default
} # End of param_dansguardian ()
 
##################################################################
1094,7 → 1085,23
[ -e /etc/dansguardian/lists/exceptionsitelist.default ] || mv /etc/dansguardian/lists/exceptionsitelist /etc/dansguardian/lists/exceptionsitelist.default
[ -e /etc/dansguardian/lists/exceptionurllist.default ] || mv /etc/dansguardian/lists/exceptionurllist /etc/dansguardian/lists/exceptionurllist.default
touch /etc/dansguardian/lists/exceptionsitelist
touch /etc/dansguardian/lists/exceptionurllist
# On crée la configuration de base du filtrage de domaine et d'URL pour Dansguardian
cat <<EOF > /etc/dansguardian/lists/bannedurllist
# Dansguardian filter config for ALCASAR
EOF
cat <<EOF > /etc/dansguardian/lists/bannedsitelist
# Dansguardian domain filter config for ALCASAR
# block all sites except those in the exceptionsitelist --> liste blanche (désactivée)
#**
# block all SSL and CONNECT tunnels
**s
# block all SSL and CONNECT tunnels specified only as an IP
*ips
# block all sites specified only by an IP
*ip
EOF
chown -R dansguardian:apache /etc/dansguardian/
chmod -R g+rw /etc/dansguardian
# On crée la structure du DNS-blackhole :
mkdir /usr/local/etc/{alcasar-dnsfilter-available,alcasar-dnsfilter-enabled}
chown -R 770 /usr/local/etc/{alcasar-dnsfilter-available,alcasar-dnsfilter-enabled}
/scripts/etc/alcasar-bl-categories
File deleted
/scripts/etc/alcasar-bl-categories-default
0,0 → 1,18
adult
agressif
dangerous_material
dating
drogue
gambling
hacking
malware
marketingware
mixed_adult
phishing
redirector
sect
strict_redirector
strong_redirector
tricheur
warez
ossi
/scripts/etc/alcasar-bl-categories-enabled
0,0 → 1,18
adult
agressif
dangerous_material
dating
drogue
gambling
hacking
malware
marketingware
mixed_adult
phishing
redirector
sect
strict_redirector
strong_redirector
tricheur
warez
ossi
/scripts/sbin/alcasar-bl.sh
6,8 → 6,9
 
DIR_tmp="/tmp/blacklists"
FILE_tmp="/tmp/fileFilter.txt"
BL_CATEGORIES="/usr/local/etc/alcasar-bl-categories"
DIR_DANSGUARDIAN="/etc/dansguardian/lists/"
DIR_DANSGUARDIAN="/etc/dansguardian/lists"
BL_CATEGORIES_AVAILABLE="/usr/local/etc/alcasar-bl-categories-available"
BL_CATEGORIES_DEFAULT="/usr/local/etc/alcasar-bl-categories-default"
DIR_DNS_FILTER_AVAILABLE="/usr/local/etc/alcasar-dnsfilter-available"
DIR_DNS_FILTER_ENABLED="/usr/local/etc/alcasar-dnsfilter-enabled"
IP_RETOUR="192.168.182.1"
24,7 → 25,7
function install () {
[ -d $DIR_DANSGUARDIAN ] || mkdir -p $DIR_DANSGUARDIAN
[ -d $DIR_DANSGUARDIAN/blacklists/ossi ] && mv -f $DIR_DANSGUARDIAN/blacklists/ossi $DIR_tmp
tar zxf $DIR_tmp/blacklists.tar.gz --directory=$DIR_DANSGUARDIAN
tar zxf $DIR_tmp/blacklists.tar.gz --directory=$DIR_DANSGUARDIAN/
[ -d $DIR_tmp/ossi ] && mv -f $DIR_tmp/ossi $DIR_DANSGUARDIAN/blacklists/
cd /root
rm -rf $DIR_tmp
32,37 → 33,47
 
# Adaptation de la BL Toulouse à la structure Dnsmasq
function adapt () {
# On récupère le nom des répertoire (catégories)
find $DIR_DANSGUARDIAN -type f -name domains > $FILE_tmp
# On supprime le suffice "/domains"
$SED "s?\/domains??g" $FILE_tmp
rm -f $DIR_DNS_FILTER_AVAILABLE/*
echo -n "Adaptation de la BL Toulouse. Veuillez patienter : "
# On copie les fichiers de domaine pour chaque catégorie
for PATH_FILE in `cat $FILE_tmp`
do
DOMAINE=`basename $PATH_FILE`
echo -n "."
# suppression des @IP, des lignes commentées et des caractères bizarres comme les ô et û ö ü
# cela supprime quelques domaines ... qui restent filtrés par dansguardian
egrep -v "([0-9]{1,3}\.){3}[0-9]{1,3}" $PATH_FILE/domains > /tmp/dnsmasq-bl.tmp
$SED "/[äâëêïîöôüû]/d" /tmp/dnsmasq-bl.tmp
$SED "/^#.*/d" /tmp/dnsmasq-bl.tmp
# Mise en forme dnsmasq
$SED "s?.*?address=/&/$IP_RETOUR?g" /tmp/dnsmasq-bl.tmp
mv /tmp/dnsmasq-bl.tmp $DIR_DNS_FILTER_AVAILABLE/$DOMAINE.conf
done
rm -f $FILE_tmp
echo
# On récupère le nom des répertoire (catégories)
find $DIR_DANSGUARDIAN -type f -name domains > $BL_CATEGORIES_AVAILABLE
# On supprime le suffice "/domains"
$SED "s?\/domains??g" $BL_CATEGORIES_AVAILABLE
rm -f $DIR_DNS_FILTER_AVAILABLE/*
echo -n "Adaptation de la BL Toulouse. Veuillez patienter : "
# On copie les fichiers de domaine pour chaque catégorie
for PATH_FILE in `cat $BL_CATEGORIES_AVAILABLE`
do
DOMAINE=`basename $PATH_FILE`
echo -n "."
# suppression des @IP, des lignes commentées et des caractères bizarres comme les ô et û ö ü
egrep -v "([0-9]{1,3}\.){3}[0-9]{1,3}" $PATH_FILE/domains > /tmp/dnsmasq-bl.tmp
$SED "/[äâëêïîöôüû]/d" /tmp/dnsmasq-bl.tmp
$SED "/^#.*/d" /tmp/dnsmasq-bl.tmp
# Mise en forme dnsmasq
$SED "s?.*?address=/&/$IP_RETOUR?g" /tmp/dnsmasq-bl.tmp
mv /tmp/dnsmasq-bl.tmp $DIR_DNS_FILTER_AVAILABLE/$DOMAINE.conf
done
# on adapte le fichier $BL_CATEGORIES_AVAILABLE au choix de catégorie par défaut
$SED "s?^[^#]?#&?g" $BL_CATEGORIES_AVAILABLE # on commente ce qui ne l'est pas
for ENABLE_CATEGORIE in `cat $BL_CATEGORIES_DEFAULT`
do
$SED "/^.*$ENABLE_CATEGORIE/d" $BL_CATEGORIES_AVAILABLE
$SED "1i\/etc\/dansguardian\/lists\/blacklist\/$ENABLE_CATEGORIE" $BL_CATEGORIES_AVAILABLE
done
echo
}
 
# Permet d'activer/désactiver les catégories de la BL
function cat_choice (){
rm -rf $DIR_DNS_FILTER_ENABLED/*
for i in `cat $BL_CATEGORIES`
do
ln -s $DIR_DNS_FILTER_AVAILABLE/$i.conf $DIR_DNS_FILTER_ENABLED/$i
done
# un peu de ménage
rm -rf $DIR_DNS_FILTER_ENABLED/*
$SED "/\.Include/d" $DIR_DANSGUARDIAN/bannedsitelist $DIR_DANSGUARDIAN/bannedurllist
# on affecte les catégories
for i in `cat $BL_CATEGORIES_DEFAULT`
do
ln -s $DIR_DNS_FILTER_AVAILABLE/$i.conf $DIR_DNS_FILTER_ENABLED/$i
# echo ".Include<$DIR_DANSGUARDIAN/blacklists/$i/domains>" >> $DIR_DANSGUARDIAN/bannedsitelist
echo ".Include<$DIR_DANSGUARDIAN/blacklists/$i/urls>" >> $DIR_DANSGUARDIAN/bannedurllist
done
}
usage="Usage: alcasar-bl.sh -on | -off | -download| -reload"
nb_args=$#
79,20 → 90,16
;;
# activation du filtrage
-on)
# pour dansguardian
cat_choice
$SED "s/^reportinglevel =.*/reportinglevel = 3/g" /etc/dansguardian/dansguardian.conf
service dansguardian reload
# pour dnsmasq
cat_choice
service dansguardian restart
service dnsmasq restart
;;
# désactivation du filtrage
-off)
# pour dansguardian
rm -rf $DIR_DNS_FILTER_ENABLED/*
$SED "s/^reportinglevel =.*/reportinglevel = -1/g" /etc/dansguardian/dansguardian.conf
service dansguardian reload
# pour dnsmasq
rm -rf $DIR_DNS_FILTER_ENABLED/*
service dnsmasq restart
;;
# Mise a jour de la blacklist 'Toulouse' et adaptation à dansguardian et dnsmasq
113,14 → 120,21
fi
adapt
;;
# regénération suite à modification de la BL OSSI/RSSI
# regénération suite à modification de la BL secondaire
-reload)
# pour Dansguardian
chown -R dansguardian:apache $DIR_DANSGUARDIAN/blacklists/ossi
chmod -R g+w $DIR_DANSGUARDIAN/blacklists/ossi
cat_choice
service dansguardian reload
# pour dnsmasq
cp $DIR_DANSGUARDIAN/blacklists/ossi/domains $DIR_DNS_FILTER_AVAILABLE/ossi.conf
# pour dnsmasq (noms de domaine réhabilités)
if [ `wc -w $DIR_DANSGUARDIAN/exceptionsitelist|cut -d " " -f1` != "0" ]
then
for i in `cat $DIR_DANSGUARDIAN/exceptionsitelist`
do
$SED "/$i/d" $DIR_DNS_FILTER_AVAILABLE/sect.conf
done
fi
$SED "s?.*?address=/&/$IP_RETOUR?g" $DIR_DNS_FILTER_AVAILABLE/ossi.conf
service dnsmasq reload
;;
/gestion/admin/dns_filter.php
14,25 → 14,53
$Language = strtolower(substr(chop($Langue[0]),0,2)); }
if($Language == 'fr'){
$l_title1 = "Filtrage de noms de domaine et d'URL";
$l_error_open_file="Erreur d'ouverture du fichier";
$l_dnsfilter_on="Le filtrage de noms de domaine et d'URL est actuellement activé";
$l_dnsfilter_off="Le filtrage de noms de domaine et d'URL est actuellement désactivé";
$l_switch_filtering_on="Activer le filtrage";
$l_switch_filtering_off="Désactiver le filtrage";
$l_main_bl="Liste noire principale (version actuelle : ";
$l_main_bl="Liste noire principale";
$l_bl_version="Version actuelle :";
$l_bl_categories="Choix des catégories à filtrer";
$l_download="Télécharger la dernière version";
$l_warning="<B>Attention</B> : ce téléchargement peut durer plusieurs minutes.";
$l_secondary_bl="Liste noire et liste blanche secondaires";
$l_forbidden_dns="Noms de domaine filtrés";
$l_forbidden_dns_explain="Entrez un nom de domaine par ligne (exemple : domaine.org)";
$l_one_dns="Entrez un nom de domaine par ligne (exemple : domaine.org)";
$l_rehabilitated_dns="Noms de domaine réhabilités";
$l_rehabilitated_dns_explain="Entrez ici des noms de domaine bloqués par la liste noire principale <BR> que vous désirez réhabiliter.";
$l_forbidden_url="URL filtrés";
$l_forbidden_url_explain="Entrez une URL par ligne (exemple : domaine.org/perso.index.htm)";
$l_rehabilitated_url="URL réhabilités";
$l_rehabilitated_url_explain="Entrez ici des URL bloquées par la liste noire principale <BR> que vous désirez réhabiliter.";
$l_one_url="Entrez une URL par ligne (exemple : domaine.org/perso.index.htm)";
$l_record="Enregistrer les modifications";
}
else {
$l_title1 = "Domain names and URL filtering";
$l_error_open_file="Error opening the file";
$l_dnsfilter_on="Actually, the Domain name and URL filter is on";
$l_dnsfilter_off="Actually, the Domain name and URL filter is off";
$l_switch_filtering_on="Switch the Filter on";
$l_switch_filtering_off="Switch the Filter off";
$l_main_bl="Main blacklist (current version : ";
$l_main_bl="Main blacklist";
$l_bl_version="Current version : ";
$l_bl_categories="Choice of filtered categories";
$l_download="Download the last version";
$l_warning="<B>Be carefull</B> : this download is estimate to fiew minutes.";
$l_secondary_bl="Secondary blacklist and whitelist";
$l_forbidden_dns="Filtered domain names";
$l_forbidden_dns_explain="Enter one domain name per row (exemple : domain.org)";
$l_one_dns="Enter one domain name per row (exemple : domain.org)";
$l_rehabilitated_dns="Rehabilitated domain names";
$l_rehabilitated_dns_explain="Enter here domain names that are blocked by the main blacklist <BR> and which you want to rehabilitate.";
$l_forbidden_url="Filtered URL";
$l_forbidden_url_explain="Enter one URL per row (exemple : www.domaine.org/perso/index.htm)";
$l_rehabilitated_url="Rehabilitated URL";
$l_rehabilitated_url_explain="Enter here URL that are blocked by the main blacklist <BR> and which you want to rehabilitate.";
$l_one_url="Enter one URL per row (exemple : www.domaine.org/perso/index.htm)";
$l_record="Save changes";
}
if (isset($_POST['choix'])){ $choix=$_POST['choix']; } else { $choix=""; }
switch ($choix)
45,6 → 73,7
break;
case 'MAJ_bl' :
exec ("sudo /usr/local/sbin/alcasar-bl.sh -download");
exec ("sudo /usr/local/sbin/alcasar-bl.sh -reload");
break;
case 'MAJ_OSSI' :
$fichier=fopen("/etc/dansguardian/lists/blacklists/ossi/domains","w+");
/gestion/admin/dns_filter2.php
13,74 → 13,98
}
else
{
echo "erreur d'ouverture du fichier $filename";
echo "$l_error_openfile $filename";
}
}
?>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr><th><?php echo $l_main_bl; ?></th></tr>
<tr bgcolor="#FFCC66"><td><img src="/images/pix.gif" width="1" height="2"></td></tr>
</table>
<TABLE width="100%" border=1 cellspacing=0 cellpadding=1>
<tr><td valign="middle" align="left">
<tr><td valign="middle" align="left" colspan=10>
<FORM action='/admin/dns_filter.php' method=POST>
<input type='hidden' name='choix' value='MAJ_bl'>
<?php
echo "<center>$l_main_bl";
echo "<center>$l_bl_version";
echo_file ("/var/www/html/VERSION-BL");
echo ")</center><BR>";
echo "</center><BR>";
echo "<input type='submit' value='$l_download'>";
echo " ($l_warning)";
?>
</FORM>
</td></tr>
<tr><td valign="middle" align="left" colspan=10>
<FORM action='/admin/dns_filter.php' method=POST>
<input type='hidden' name='choix' value='MAJ_OSSI'>
<?php
echo "<center>$l_bl_categories</center></td></tr>";
//on lit et on interprete le fichier de catégories
$cols=1; $filename="/usr/local/etc/alcasar-bl-categories-available";
if (file_exists($filename))
{
$pointeur=fopen($filename,"r");
while (!feof ($pointeur))
{
$ligne=fgets($pointeur, 4096);
if ($ligne)
{
if ($cols == 1) { echo "<tr>";}
$categorie=trim(basename($ligne));
echo "<td>$categorie<br>";
echo "<input type='checkbox' name='chk-$categorie'";
// si la ligne est commentée -> categorie non selectionnée
if (preg_match('/^#/',$ligne, $r)) {
echo ">";}
else {
echo "checked>";}
echo "</td>";
 
}
$cols++;
if ($cols > 10){
echo "</tr>";
$cols=1;
}
}
fclose($pointeur);
echo "<tr><td colspan=10><input type='submit' value='$l_record'>";
}
else {
echo "$l_error_open_file $filename";
}
?>
</FORM>
</td></tr>
</TABLE>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr><th><?php echo $l_secondary_bl; ?></th></tr>
<tr bgcolor="#FFCC66"><td><img src="/images/pix.gif" width="1" height="2"></td></tr>
</table>
<TABLE width="100%" border=1 cellspacing=0 cellpadding=1>
<tr><td valign="middle" align="left">
<?echo "<center>$l_secondary_bl</center></td></tr>";?>
<FORM action='/admin/dns_filter.php' method='POST'>
<TABLE cellspacing=2 cellpadding=3 border=1>
<tr><td width=50% height=100% align=center>
<H3>Liste des noms de domaine interdits</H3>
Entrez ici des noms de domaine inconnus de la liste noire principale<BR>
et que vous d&eacute;sirez bloquer<BR>
Entrez un nom de domaine par ligne (exemple : domaine.org)
<textarea name='OSSI_bl_domains' rows=5 cols=40>
<?php
<tr><td width=50% align=center>
<?php echo "<H3>$l_forbidden_dns</H3>$l_forbidden_dns_explain";
echo "<textarea name='OSSI_bl_domains' rows=5 cols=40>";
echo_file ("/etc/dansguardian/lists/blacklists/ossi/domains");
?>
</textarea>
</td><td width=50% height=100% align=center>
<H3>Liste des noms de domaine r&eacute;abilit&eacute;s</H3>
Entrez ici des noms de domaine bloqu&eacute;s par la liste noire principale<BR>
que vous d&eacute;sirez r&eacute;habiliter<BR>
Entrez un nom de domaine par ligne (exemple : domaine2.org)
<textarea name='OSSI_wl_domains' rows=5 cols=40>
<?php
echo "</textarea></td><td width=50% align=center>";
echo "<H3>$l_rehabilitated_dns</H3>$l_rehabilitated_dns_explain<BR>$l_one_dns";
echo "<textarea name='OSSI_wl_domains' rows=5 cols=40>";
echo_file ("/etc/dansguardian/lists/exceptionsitelist");
?>
</textarea>
</td></tr>
<tr><td width=50% height=100% align=center>
<H3>Liste des URLs interdites</H3>
Entrez ici des URLs inconnues de la liste noire principale<BR>
que vous d&eacute;sirez bloquer<BR>
Entrez une URL par ligne (exemple : www.domaine.org/perso/index.htm)
<textarea name='OSSI_bl_urls' rows=5 cols=40>
<?php
echo "</textarea></td></tr><tr><td width=50% align=center>";
echo "<H3>$l_forbidden_url</H3>$l_forbidden_url_explain";
echo "<textarea name='OSSI_bl_urls' rows=5 cols=40>";
echo_file ("/etc/dansguardian/lists/blacklists/ossi/urls");
?>
</textarea>
</td><td width=50% height=100% align=center>
<H3>Liste des URLs r&eacute;abilit&eacute;s</H3>
Entrez ici des URLs bloqu&eacute;es par la liste noire principale<BR>
que vous d&eacute;sirez r&eacute;habiliter<BR>
Entrez une URL par ligne (exemple : www.domaine2.org/perso/index.htm)
<textarea name='OSSI_wl_urls' rows=5 cols=40>
<?php
echo "</textarea></td><td width=50% align=center>";
echo "<H3>$l_rehabilitated_url</H3>$l_rehabilitated_url_explain<BR>$l_one_url";
echo "<textarea name='OSSI_wl_urls' rows=5 cols=40>";
echo_file ("/etc/dansguardian/lists/exceptionurllist");
?>
</textarea>
</td></tr>
</TABLE>
<tr><td colspan=2>
<input type='hidden' name='choix' value='MAJ_OSSI'>
<input type='submit' value='Enregistrer les modifications'>
<input type='submit' value='<?php echo "$l_record"; ?>'>
</FORM>
</td></tr>
</TABLE>
/gestion/admin/net_filter2.php
8,10 → 8,10
<table cellspacing=2 cellpadding=3 border=1>
<?
echo "<tr><th>$l_proto / port<th>$l_enabled<th>$l_delete</tr>";
// On ouvre le fichier de filtrage de protocoles
$pointeur=fopen($services_list,"r");
if ($pointeur)
// On lit et on interprète le fichier de filtrage de protocoles
if (file_exists($services_list))
{
$pointeur=fopen($services_list,"r");
while (!feof ($pointeur))
{
$ligne=fgets($pointeur, 4096);
30,11 → 30,11
echo "</tr>";
}
}
fclose($pointeur);
}
else {
echo "$l_error_open_file $services_list";
}
fclose($pointeur);
?>
</table>
<input type='hidden' name='choix' value='change'>
/gestion/admin/filter_exceptions.php
15,12 → 15,12
if($Language == 'fr'){
$l_exception_IP = "Exception au filtrage";
$l_exception_txt="Entrez ici les adresses IP des stations du réseau de consultation ne subissant ni filtrage WEB ni filtrage réseau<BR>Entrez une adresse IP par ligne";
$l_submit = "Enregistrer";
$l_record="Enregistrer les modifications";
}
else {
$l_exception_IP = "Network filtering exceptions";
$l_exception_txt="Put here the stations IP address that won't be neither WEB filtered nor network filtered<BR>Put one IP per row";
$l_submit = "Submit";
$l_exception_txt="Put here the stations IP address that won't be neither WEB filtered nor network filtered<BR>Put one IP adress per row";
$l_record="Save changes";
}
if (isset($_POST['choix'])){
switch ($_POST['choix'])
89,7 → 89,6
</TABLE>
<TABLE width="100%" border=1 cellspacing=0 cellpadding=1>
<tr><td valign="middle" align="left">
<TABLE width=70% border=0>
<?php
echo "<form action='$_SERVER[PHP_SELF]' method='POST'>";
echo " $l_exception_txt";
112,7 → 111,7
echo "</textarea><BR>";
?>
<input type='hidden' name='choix' value='IP_exceptions'>
<input type='submit' value='Enregistrer les modifications'></CENTER>
<input type='submit' value='<?php echo "$l_record"; ?>'>
</FORM>
</td></tr>
</TABLE>