0,0 → 1,109 |
#!/bin/bash |
# $Id: alcasar-archive.sh 877 2012-06-02 06:58:50Z franck $ |
|
# alcasar-archive.sh |
# by Franck BOUIJOUX and REXY |
# This script is distributed under the Gnu General Public License (GPL) |
|
# Script permettant |
# - d'exporter les logs de traçabilités et la base des usagers à 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 and user's base 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) |
|
DIR_SAVE="/var/Save" # répertoire accessible par webs |
DIR_LOG="/var/log" # répertoire local des log |
|
#DIR_SERVICE="squid httpd firewall" # répertoires contenant des logs utiles à exporter |
DIR_BASE="/var/Save/base" # répertoire de sauvegarde de la base de données usagers |
DIR_ARCHIVE="$DIR_SAVE/archive" # répertoire de sauvegarde de la base de données usagers |
NOW="$(date +%G%m%d-%Hh%M)" # date et heure du moment |
DIR_TMP="/tmp/archive-$NOW" # Répertoire temporaire d'export |
FILE="archive-$NOW.tar.gz" # Nom du fichier de l'archive |
EXPIRE_DAY=365 # Nbre de jour avant suppression des fichiers journaux |
CRYPT="0" # chiffrement des logs ( 0=non / 1=oui --> Signature = 1(implicite)) |
SIGN="0" # Signature/empreinte des logs ( 0=non / 1=oui ) ATTENTION : nécessite la clé privée !!! |
GPG_USER="OSSI-CIRISI-Lyon" # utilisateur autorisé à déchiffrer les logs. Sa clé publique doit être connu dans le portefeuille gnupg de root (/root/.gnupg) |
|
usage="Usage: alcasar-archive.sh {--clean or -c} | {--now or -n}" |
|
nb_args=$# |
args=$1 |
if [ $nb_args -eq 0 ] |
then |
nb_args=1 |
args="-h" |
fi |
|
|
function cleanup() { |
# Nettoyage des fichiers archives |
cd $DIR_SAVE |
find . \( -mtime +$EXPIRE_DAY \) -a \( -name '*.gz' -o -name '*.sql' -o -name '' -o -name 'gpg' \) -exec rm -f {} \; |
} # end function cleanup |
|
|
function crypt() { |
# Chiffrement des logs dans /var/Save/ |
find . \( -mtime -7 -o -ctime 0 \) -a \( -name '*log-*.gz' \) -exec gpg --output $DIR_ARCHIVE/$file/{}.gpg --encrypt --recipient $GPG_USER {} \; |
} # end function crypt |
|
function archive() { |
mkdir -p $DIR_ARCHIVE |
mkdir -p $DIR_TMP |
cp $(echo $(ls -rt $DIR_LOG/firewall/tracability.log*.gz | tail -n 1 -)) $DIR_TMP/ |
cp $(echo $(ls -rt $DIR_BASE/radius-*.sql | tail -n 1 -)) $DIR_TMP/ |
tar cvzf /tmp/$FILE $DIR_TMP/* |
} # end archive |
|
# Core script |
case $args in |
-\? | -h* | --h*) |
echo "$usage" |
exit 0 |
;; |
--clean | -c) |
cleanup |
;; |
--now | -n) |
cleanup |
archive |
if [ $CRYPT -eq "1" ]; then |
{ |
# 1 ) chiffrement/signature =1 ==> gpg --encrypt avec test de la clé présente |
gpg --output $DIR_ARCHIVE/$FILE-crypt.gpg --armor --encrypt --recipient $GPG_USER /tmp/$FILE |
} |
elif [ $SIGN -eq "1" ]; then |
{ |
# 2) signature = 1 Chiffrement = 0 --> gpg --encrypt idem test de la clé présente |
gpg --output $DIR_ARCHIVE/$FILE-sign.gpg --sign --recipient $GPG_USER /tmp/$FILE |
gpg --output $DIR_ARCHIVE/$FILE-sign.gpg --sign --recipient $GPG_USER --detach-sign /tmp/$FILE |
} |
else |
{ |
# 3) chiffrement/signature = 0 --> cp simple avec suppression des droits d'écriture |
cp /tmp/$FILE $DIR_ARCHIVE/. |
} |
fi |
rm -rf /tmp/archive-* |
chown apache:apache $TO_SAVE/ |
;; |
--update | -u) |
# Mise à niveau de l'architecture d'export/archivage |
[ -d /tmp/save ] || mkdir -p /tmp/save |
[ -d $DIR_ARCHIVE/ ] || mkdir -p $DIR_ARCHIVE/ # utile une seule fois mais crée le répertoire si nécessaire |
# copie de l'archive au cas où ... |
rm -f $(ls *[0-9]) # effacer les fichiers n'ayant pas été compressés |
mv $TO_SAVE/firewall/tracabilite-* $DIR_ARCHIVE/. |
;; |
*) |
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 |