terça-feira, setembro 26, 2006

Rotacioanamento de Log's em um Argus Server.

Todos sabemos o quanto critico e primordial para uma instituição é ter
armazenado em meio seguro, dump's de acesso a Internet.

Uma ferramenta comumentemente usada para esse processo é o Argus Server,

todavia essa ferramenta é incapaz de gerir a função de rotacionamento.

Após configurar o servidor Argus logo você dará conta que uma rede de

pelo menos 32Mbps, gera a quantidade de:

+/- 1.2 Giga de logs binarios por dia * +/- 30 dias

Temos a incrível conta de 30 Gigas de dumps de acesso, em nível de camada 4

Para poder rotacional os logs a cada 30 dias, eu fiz um script em Shell SH

[ricardo@ricardo(8:11pm)] /ftp> cat /root/scripts/arg-rotate.sh
#!/bin/sh
ARGUS_ARCHIVE_PATH="/ftp2/argus/archive"
DATE=`date '+%Y/%m'`
LAST_DATE=`date -v-1m '+%Y/%m'`
ARGUS_MAXDAYS=`cal |egrep . | tail -1 | awk '{ print $(NF) }'`
if [ -d $ARGUS_ARCHIVE_PATH/$LAST_DATE ];then
        LAST_DATE_SIZE=`du -ks  $ARGUS_ARCHIVE_PATH/$LAST_DATE | awk '{ print $1 }' 2>/dev/null`
        if [ $LAST_DATE_SIZE -eq 2 ];then
                rm -rf $ARGUS_ARCHIVE_PATH/$LAST_DATE
        fi
fi
if  [ -d $ARGUS_ARCHIVE_PATH/$LAST_DATE ];then
        ARGUS_ACTDAYS=`ls -1 $ARGUS_ARCHIVE_PATH/$DATE |wc -l`
        ARGUS_ACTDAYS_2=`ls -1 $ARGUS_ARCHIVE_PATH/$LAST_DATE |wc -l`
        NDAYS=`expr $ARGUS_ACTDAYS + $ARGUS_ACTDAYS_2`
        if   [ $NDAYS -ge $ARGUS_MAXDAYS ];then
                DEL_NDAYS=`expr $ARGUS_MAXDAYS - $NDAYS`
                DAYS_TO_DEL=`ls -1 $ARGUS_ARCHIVE_PATH/$LAST_DATE | head $DEL_NDAYS`
                cd $ARGUS_ARCHIVE_PATH/$LAST_DATE ; rm -rf $DAYS_TO_DEL
        fi
else
        ARGUS_ACTDAYS=`ls -1 $ARGUS_ARCHIVE_PATH/$DATE |wc -l`
        if [  $ARGUS_ACTDAYS -ge $ARGUS_MAXDAYS ]; then
                DEL_NDAYS=`expr $ARGUS_MAXDAYS - $ARGUS_ACTDAYS`
                DAYS_TO_DEL=`ls -1 $ARGUS_ARCHIVE_PATH/$DATE | head $DEL_NDAYS`
                cd $ARGUS_ARCHIVE_PATH/$DATE ; rm -rf $DAYS_TO_DEL
        fi
fi

A variável que controla a periodicidade do rotacionalmento e dinâmica no caso de rotacionalmento mensal,
para um intervalo superior a um mes é preciso modificar a variável $ARGUS_MAXDAYS.

Tambem é preciso modificar a variável $ARGUS_ARCHIVE_PATH para o mesmo caminho configurado,
na ferramenta de compactação incluida no Argus Server chamada de argusarchive.

Para adicionar ao cron no FreeBSD, basta adicionar no final do /etc/crontab

#ArgusServer Rotate Mensal
0 0 * * *   root /root/scripts/arg-rotate.sh   >/tmp/arg-rotate.sh 2>&1