Subversion Repositories ALCASAR

Compare Revisions

No changes between revisions

Ignore whitespace Rev 864 → Rev 865

/conf/sudoers
18,7 → 18,7
Cmnd_Alias RADDB=/usr/bin/radwho,/usr/sbin/chilli_query # pour la gestion des usagers en ligne
Cmnd_Alias SQL=/usr/local/sbin/alcasar-mysql.sh # pour exporter la base mysql
Cmnd_Alias SYSTEM_BACKUP=/usr/local/bin/alcasar-conf.sh # pour générer l'archive de configuration du serveur
Cmnd_Alias EXPORT=/usr/local/bin/alcasar-log-export.sh # pour exporter/sauvegarder les fichiers journaux
Cmnd_Alias EXPORT=/usr/local/bin/alcasar-log.sh # pour exporter/sauvegarder les fichiers journaux
Cmnd_Alias BL=/usr/local/sbin/alcasar-bl.sh,/usr/local/sbin/alcasar-havp.sh,/usr/local/bin/alcasar-file-clean.sh # pour gérer le filtrage WEB (blacklists, whitelist et antivirus)
Cmnd_Alias NF=/usr/local/sbin/alcasar-nf.sh,/usr/local/bin/alcasar-iptables.sh # pour gérer le filtrage réseau
Cmnd_Alias LOGOUT=/usr/local/sbin/alcasar-logout.sh # pour déconnecter les usagers
/CHANGELOG
17,6 → 17,7
- @network and @Host can be blocked by the firewall (conf file : etc/alcasar-ip-blocked). Alacasar Control Center is updated.
- the filtering of LAN betwenne ALCASAR and the Internet GW is no more need.
- DHCP service is more flexible : it can be {off | half | full}
- ACC : admin can now export the curent tracability file
---------------------- 2.5 --------------------
Bugs
- watchdog of Daemons for service's test
/scripts/alcasar-log-clean.sh
File deleted
Property changes:
Deleted: svn:eol-style
-LF
\ No newline at end of property
Deleted: svn:executable
Deleted: svn:keywords
-Id Author Date
\ No newline at end of property
/scripts/alcasar-log-export.sh
File deleted
Property changes:
Deleted: svn:eol-style
-LF
\ No newline at end of property
Deleted: svn:executable
Deleted: svn:keywords
-Id Author Date
\ No newline at end of property
/scripts/alcasar-log.sh
0,0 → 1,79
#!/bin/bash
# $Id: alcasar-log-export.sh 672 2011-07-08 15:34:22Z richard $
 
# alcasar-log-export.sh
# by Franck BOUIJOUX and REXY
# This script is distributed under the Gnu General Public License (GPL)
 
# Script permettant
# - d'exporter des logs des répertoires /var/log/{squid-firewall-httpd} à des fins d'archivages.
# - Une fonction de chiffrement des logs a été implémentée dans ce script. Lisez la documentation d'exploitation pour l'activer.
# - nettoyage des archives supérieures à 1 an (365 jours)
 
# This script allows
# - export log files from folders /var/log/{squid-firewall-httpd} in order to archive them.
# - a cypher fonction allows to protect these files. Read the exploit documentation to enable it.
# - delete backup files older than one year (365 days)
 
TO_SAVE="/var/Save/logs" # répertoire accessible par webs
REP_SAVE="/var/log" # répertoire local des log
REP_SERVICE="squid httpd firewall" # répertoires contenant des logs utiles à exporter
REP_BASE="/var/Save/base" # répertoire de sauvegarde de la base de données usagers
NOW="$(date +%G%m%d-%Hh%M)" # date et heure du moment
DELAY=365 # Nbre de jour avant suppression des fichiers journaux
CHIFFREMENT="0" # chiffrement des logs ( 0=non / 1=oui )
GPG_USER="" # utilisateur autorisé à déchiffrer les logs. Son biclé est inclus dans le portefeuille gnupg de root (/root/.gnupg)
 
usage="Usage: alcasar-log.sh {--clean or -clean} | {--export or -export} | {--live_export or -live_export}"
 
nb_args=$#
args=$1
if [ $nb_args -eq 0 ]
then
nb_args=1
args="-h"
fi
case $args in
-\? | -h* | --h*)
echo "$usage"
exit 0
;;
--clean|-clean)
for i in $TO_SAVE $REP_SAVE ; do
for j in $REP_SERVICE ; do
cd $i/$j
find . \( -mtime +$DELAY \) -a \( -name '*.gz' -o -name '*.sql' -o -name '' -o -name 'gpg' \) -exec rm -f {} \;
done
done
cd $REP_BASE
find . \( -mtime +$DELAY \) -a \( -name '*.gz' -o -name '*.sql' -o -name '' -o -name 'gpg' \) -exec rm -f {} \;
;;
--export|-export)
for i in $REP_SERVICE ; do
[ -d $TO_SAVE/$i ] || mkdir -p $TO_SAVE/$i # utile une seule fois mais crée le répertoire si nécessaire
cd $REP_SAVE/$i
if [ $CHIFFREMENT -eq "1" ]
then
# chiffrement des logs dans /var/Save/logs/(squid|firewall|httpd)
find . \( -mtime -7 -o -ctime 0 \) -a \( -name '*log-*.gz' \) -exec gpg --output $TO_SAVE/$i/{}.gpg --encrypt --recipient $GPG_USER {} \;
else
# copie simple des logs dans /var/Save/logs/(squid|firewall|httpd)
find . \( -mtime -7 -o -ctime 0 \) -a \( -name '*log-*.gz' \) -exec cp {} $TO_SAVE/$i/. \;
fi
done
chown -R apache.apache $TO_SAVE
;;
--live_export|-live_export)
cp $REP_SAVE/firewall/tracability.log $TO_SAVE/firewall/
gzip $TO_SAVE/firewall/tracability.log
mv $TO_SAVE/firewall/tracability.log.gz $TO_SAVE/firewall/tracability.log-$NOW.gz
chown apache:apache $TO_SAVE/firewall/tracability.log-$NOW.gz
;;
*)
echo "Unknown argument :$1";
echo "$usage"
exit 1
;;
esac
exit 0
 
Property changes:
Added: svn:eol-style
+native
\ No newline at end of property
Added: svn:executable
+*
\ No newline at end of property
/scripts/alcasar-conf.sh
2,7 → 2,7
# $Id$
 
# alcasar-conf.sh
# by Richard REY
# by REXY
# This script is distributed under the Gnu General Public License (GPL)
 
# Ce script permet la mise à jour ALCASAR
12,7 → 12,7
# - create and load the configuration files backup (/tmp/alcasar-conf.tar.gz)
# - apply ALCASAR central configuration file (/usr/local/etc/alcasar.conf)
 
new="$(date +%F-%Hh%M)" # date et heure des fichiers
new="$(date +%G%m%d-%Hh%M)" # date et heure des fichiers
fichier="alcasar-conf-$new.tar.gz" # nom du fichier de sauvegarde
DIR_UPDATE="/tmp/conf" # répertoire de stockage des fichier de conf pour une mise à jour
DIR_WEB="/var/www/html" # répertoire du centre de gestion
42,7 → 42,7
PRIVATE_NETWORK_SHORT=`echo $PRIVATE_NETWORK | cut -d"." -f1-$classe`. # @ compatible hosts.allow et hosts.deny (ex.: 192.168.182.)
}
 
usage="Usage: alcasar-conf.sh --create | --load | --apply"
usage="Usage: alcasar-conf.sh {--create ou -create} | {--load or -load} | {--apply or -apply}"
nb_args=$#
args=$1
if [ $nb_args -eq 0 ]
/scripts/sbin/alcasar-mysql.sh
13,7 → 13,7
DB_RADIUS="db_radius"
DB_USER="db_user"
radiuspwd="radius_pwd"
new="$(date +%F-%Hh%M)" # date et heure des fichiers
new="$(date +%G%m%d-%Hh%M)" # date et heure des fichiers
fichier="$DB_RADIUS-$new.$ext" # nom du fichier de sauvegarde
 
stop_acct ()
/web/acc/backup/sauvegarde.php
13,7 → 13,8
$Language = strtolower(substr(chop($Langue[0]),0,2));}
if ($Language == 'fr'){
$l_backups = "Sauvegarde";
$l_create_user_db_backup = "Sauvegarder la base des usagers";
$l_create_user_db_backup = "Sauvegarder la base active des usagers";
$l_tracability_backup = "Sauvegarder le fichier actif de traces";
$l_create_system_backup = "Créer une archive système";
$l_execute = "Exécuter";
$l_backup_files = "Fichiers disponibles pour archivage";
24,7 → 25,8
}
else {
$l_backups = "Backups";
$l_create_user_db_backup = "Save the users database";
$l_create_user_db_backup = "Save the active users database";
$l_tracability_backup = "Save the active tracability file";
$l_create_system_backup = "Create a system backup";
$l_execute = "Execute";
$l_backup_files = "Archive backup files";
54,6 → 56,7
<tr><td valign="middle" align="left">
<FORM action="sauvegarde.php" method=POST><b>
<select name='choix'></b>
<option value="tracability_backup"><?echo "$l_tracability_backup";?>
<option value="user_DB_backup"><?echo "$l_create_user_db_backup";?>
<option value="system_backup"><?echo "$l_create_system_backup";?>
</select>
77,8 → 80,8
case 'user_DB_backup' :
exec ("sudo /usr/local/sbin/alcasar-mysql.sh --dump");
break;
case 'archivage_logs' :
exec ("sudo /usr/local/bin/alcasar-log-export.sh");
case 'tracability_backup' :
exec ("sudo /usr/local/bin/alcasar-log.sh --live_export");
break;
case 'system_backup' :
exec ("sudo /usr/local/bin/alcasar-conf.sh --create");
92,7 → 95,7
$nb=count($dir);
while ($j != $nb)
{
echo "<TD>";
echo "<TD valign='top'>";
$rep = opendir("/var/Save/".$dir[$j]);
$i=0; unset ($liste_f);
while ( $file = readdir($rep) )
/alcasar.sh
259,7 → 259,7
echo "$secretradius" >> $PASSWD_FILE
chmod 640 $PASSWD_FILE
# On installe les scripts et fichiers de configuration d'ALCASAR
# - dans /usr/local/bin : alcasar-{CA.sh,conf.sh,import-clean.sh,iptables-bypass.sh,iptables.sh,log-clean.sh,log-export.sh,watchdog.sh}
# - dans /usr/local/bin : alcasar-{CA.sh,conf.sh,import-clean.sh,iptables-bypass.sh,iptables.sh,log.sh,watchdog.sh}
cp -f $DIR_SCRIPTS/alcasar* $DIR_DEST_BIN/. ; chown root:root $DIR_DEST_BIN/alcasar* ; chmod 740 $DIR_DEST_BIN/alcasar*
# - dans /usr/local/sbin : alcasar-{bl.sh,bypass.sh,dateLog.sh,havp.sh,logout.sh,mysql.sh,nf.sh,profil.sh,uninstall.sh,version-list.sh,load-balancing.sh}
cp -f $DIR_SCRIPTS/sbin/alcasar* $DIR_DEST_SBIN/. ; chown root:root $DIR_DEST_SBIN/alcasar* ; chmod 740 $DIR_DEST_SBIN/alcasar*
346,20 → 346,6
PRIVATE_FIRST_IP=`echo $PRIVATE_NETWORK | cut -d"." -f1-3`"."`expr $private_network_ending + 1` # First network address (ex.: 192.168.182.1)
PRIVATE_LAST_IP=`echo $PRIVATE_BROADCAST | cut -d"." -f1-3`"."`expr $private_broadcast_ending - 1` # last network address (ex.: 192.168.182.254)
 
# Predefine DHCP parameters (LAN side)
tmp_mask=`echo $PRIVATE_NETWORK_MASK|cut -d"/" -f2`; half_mask=`expr $tmp_mask + 1` # masque du 1/2 réseau de consultation (ex.: 25)
PRIVATE_STAT_IP=$PRIVATE_NETWORK/$half_mask # plage des adresses statiques (ex.: 192.168.182.0/25)
private_network_ending=`echo $PRIVATE_NETWORK | cut -d"." -f$classe_sup` # dernier octet de l'@ de réseau
private_broadcast_ending=`echo $PRIVATE_BROADCAST | cut -d"." -f$classe_sup` # dernier octet de l'@ de broadcast
private_plage=`expr $private_broadcast_ending - $private_network_ending + 1`
private_half_plage=`expr $private_plage / 2`
private_dyn=`expr $private_half_plage + $private_network_ending`
private_dyn_ip_network=`echo $PRIVATE_NETWORK | cut -d"." -f1-$classe`"."$private_dyn"."`echo $PRIVATE_NETWORK | cut -d"." -f$classe_sup_sup-5`
PRIVATE_DYN_IP=`echo $private_dyn_ip_network | cut -d"." -f1-4`/$half_mask # @ réseau (CIDR) de la plage des adresses dynamiques (ex.: 192.168.182.128/25)
private_dyn_ip_ending=`echo $private_dyn_ip_network | cut -d"." -f4`
PRIVATE_DYN_FIRST_IP=`echo $private_dyn_ip_network | cut -d"." -f1-3`"."`expr $private_dyn_ip_ending + 1` # 1ère adresse de la plage dynamique (ex.: 192.168.182.129)
PRIVATE_DYN_LAST_IP=`echo $PRIVATE_BROADCAST | cut -d"." -f1-3`"."`expr $private_broadcast_ending - 1` # dernière adresse de la plage dynamique (ex.: 192.168.182.254)
 
# Define Internet parameters
[ -e /etc/sysconfig/network-scripts/default-ifcfg-$EXTIF ] || cp /etc/sysconfig/network-scripts/ifcfg-$EXTIF /etc/sysconfig/network-scripts/default-ifcfg-$EXTIF
DNS1=`grep DNS1 /etc/sysconfig/network-scripts/default-ifcfg-$EXTIF|cut -d"=" -f2` # @ip 1er DNS
941,8 → 927,8
dhcpif $INTIF
ethers $DIR_DEST_ETC/alcasar-ethers
#nodynip
statip $PRIVATE_STAT_IP
dynip $PRIVATE_DYN_IP
#statip
dynip $PRIVATE_NETWORK_MASK
domain localdomain
dns1 $PRIVATE_IP
dns2 $PRIVATE_IP
1230,7 → 1216,7
server=$DNS1
server=$DNS2
# le servive DHCP est configuré mais n'est exploité que pour le "bypass"
dhcp-range=$PRIVATE_DYN_FIRST_IP,$PRIVATE_DYN_LAST_IP,$PRIVATE_NETMASK,12h
dhcp-range=$PRIVATE_FIRST_IP,$PRIVATE_LAST_IP,$PRIVATE_NETMASK,12h
dhcp-option=option:router,$PRIVATE_IP
#dhcp-option=option:ntp-server,192.168.0.4,10.10.0.5
 
1342,7 → 1328,7
EOF
cat <<EOF > /etc/cron.d/alcasar-clean_log
# suppression des fichiers de logs de plus d'un an (tous les lundi à 4h30)
30 4 * * 1 root $DIR_DEST_BIN/alcasar-log-clean.sh
30 4 * * 1 root $DIR_DEST_BIN/alcasar-log.sh --clean
EOF
cat <<EOF > /etc/cron.d/alcasar-mysql
# export de la base des usagers (tous les lundi à 4h45)
1350,7 → 1336,7
EOF
cat <<EOF > /etc/cron.d/alcasar-export_log
# export des log squid, firewall et apache (tous les lundi à 5h00)
00 5 * * 1 root $DIR_DEST_BIN/alcasar-log-export.sh
00 5 * * 1 root $DIR_DEST_BIN/alcasar-log.sh --export
EOF
cat << EOF > /etc/cron.d/awstats
# mise à jour des stats de consultation WEB toutes les 30'
1450,7 → 1436,7
find /var/log/$dir -type f -name *.log-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9] -exec gzip {} \;
done
# export des logs en 'retard' dans /var/Save/logs
/usr/local/bin/alcasar-log-export.sh
/usr/local/bin/alcasar-log.sh --export
# processus lancés par défaut au démarrage
for i in ntpd iptables ulogd dnsmasq squid chilli httpd radiusd netfs mysqld dansguardian havp freshclam
do