865 |
richard |
1 |
#!/bin/bash
|
|
|
2 |
# $Id: alcasar-log-export.sh 672 2011-07-08 15:34:22Z richard $
|
|
|
3 |
|
|
|
4 |
# alcasar-log-export.sh
|
|
|
5 |
# by Franck BOUIJOUX and REXY
|
|
|
6 |
# This script is distributed under the Gnu General Public License (GPL)
|
|
|
7 |
|
|
|
8 |
# Script permettant
|
|
|
9 |
# - d'exporter des logs des répertoires /var/log/{squid-firewall-httpd} à des fins d'archivages.
|
|
|
10 |
# - Une fonction de chiffrement des logs a été implémentée dans ce script. Lisez la documentation d'exploitation pour l'activer.
|
|
|
11 |
# - nettoyage des archives supérieures à 1 an (365 jours)
|
|
|
12 |
|
|
|
13 |
# This script allows
|
|
|
14 |
# - export log files from folders /var/log/{squid-firewall-httpd} in order to archive them.
|
|
|
15 |
# - a cypher fonction allows to protect these files. Read the exploit documentation to enable it.
|
|
|
16 |
# - delete backup files older than one year (365 days)
|
|
|
17 |
|
|
|
18 |
TO_SAVE="/var/Save/logs" # répertoire accessible par webs
|
|
|
19 |
REP_SAVE="/var/log" # répertoire local des log
|
|
|
20 |
REP_SERVICE="squid httpd firewall" # répertoires contenant des logs utiles à exporter
|
|
|
21 |
REP_BASE="/var/Save/base" # répertoire de sauvegarde de la base de données usagers
|
|
|
22 |
NOW="$(date +%G%m%d-%Hh%M)" # date et heure du moment
|
|
|
23 |
DELAY=365 # Nbre de jour avant suppression des fichiers journaux
|
|
|
24 |
CHIFFREMENT="0" # chiffrement des logs ( 0=non / 1=oui )
|
|
|
25 |
GPG_USER="" # utilisateur autorisé à déchiffrer les logs. Son biclé est inclus dans le portefeuille gnupg de root (/root/.gnupg)
|
|
|
26 |
|
|
|
27 |
usage="Usage: alcasar-log.sh {--clean or -clean} | {--export or -export} | {--live_export or -live_export}"
|
|
|
28 |
|
|
|
29 |
nb_args=$#
|
|
|
30 |
args=$1
|
|
|
31 |
if [ $nb_args -eq 0 ]
|
|
|
32 |
then
|
|
|
33 |
nb_args=1
|
|
|
34 |
args="-h"
|
|
|
35 |
fi
|
|
|
36 |
case $args in
|
|
|
37 |
-\? | -h* | --h*)
|
|
|
38 |
echo "$usage"
|
|
|
39 |
exit 0
|
|
|
40 |
;;
|
|
|
41 |
--clean|-clean)
|
|
|
42 |
for i in $TO_SAVE $REP_SAVE ; do
|
|
|
43 |
for j in $REP_SERVICE ; do
|
|
|
44 |
cd $i/$j
|
|
|
45 |
find . \( -mtime +$DELAY \) -a \( -name '*.gz' -o -name '*.sql' -o -name '' -o -name 'gpg' \) -exec rm -f {} \;
|
|
|
46 |
done
|
|
|
47 |
done
|
|
|
48 |
cd $REP_BASE
|
|
|
49 |
find . \( -mtime +$DELAY \) -a \( -name '*.gz' -o -name '*.sql' -o -name '' -o -name 'gpg' \) -exec rm -f {} \;
|
|
|
50 |
;;
|
|
|
51 |
--export|-export)
|
|
|
52 |
for i in $REP_SERVICE ; do
|
|
|
53 |
[ -d $TO_SAVE/$i ] || mkdir -p $TO_SAVE/$i # utile une seule fois mais crée le répertoire si nécessaire
|
|
|
54 |
cd $REP_SAVE/$i
|
|
|
55 |
if [ $CHIFFREMENT -eq "1" ]
|
|
|
56 |
then
|
|
|
57 |
# chiffrement des logs dans /var/Save/logs/(squid|firewall|httpd)
|
|
|
58 |
find . \( -mtime -7 -o -ctime 0 \) -a \( -name '*log-*.gz' \) -exec gpg --output $TO_SAVE/$i/{}.gpg --encrypt --recipient $GPG_USER {} \;
|
|
|
59 |
else
|
|
|
60 |
# copie simple des logs dans /var/Save/logs/(squid|firewall|httpd)
|
|
|
61 |
find . \( -mtime -7 -o -ctime 0 \) -a \( -name '*log-*.gz' \) -exec cp {} $TO_SAVE/$i/. \;
|
|
|
62 |
fi
|
|
|
63 |
done
|
|
|
64 |
chown -R apache.apache $TO_SAVE
|
|
|
65 |
;;
|
|
|
66 |
--live_export|-live_export)
|
|
|
67 |
cp $REP_SAVE/firewall/tracability.log $TO_SAVE/firewall/
|
|
|
68 |
gzip $TO_SAVE/firewall/tracability.log
|
|
|
69 |
mv $TO_SAVE/firewall/tracability.log.gz $TO_SAVE/firewall/tracability.log-$NOW.gz
|
|
|
70 |
chown apache:apache $TO_SAVE/firewall/tracability.log-$NOW.gz
|
|
|
71 |
;;
|
|
|
72 |
*)
|
|
|
73 |
echo "Unknown argument :$1";
|
|
|
74 |
echo "$usage"
|
|
|
75 |
exit 1
|
|
|
76 |
;;
|
|
|
77 |
esac
|
|
|
78 |
exit 0
|
|
|
79 |
|