====== AIDE ======
Advanced Intrusion Detection Environment je souborový a adresářový integrity checker, který si dle své konfigurace vytvoří databázi obsahující informace o souborovém systému, proti které následně detekuje změny na tomto souborovém systému. Poté je možná indikace změny při případném proniknutí do systému. Konfigurace se provádí v souboru /etc/aide.conf, který umožňuje velké množství intuitivního nastavení. Při prvním spuštění vytvoříme snapshot přepínačem -i. Pro následné automatické spouštění použijeme přepínač -C.
== Commandline spušťení: ==
/usr/sbin/aide -c /path/aide.conf -i
/usr/sbin/aide -c /path/aide.conf -C
== Skript k opakovanému spouštění cronem: ==
#!/bin/bash
TEMP_FILE=`mktemp`
LOG_FILE="/var/log/aide/my_aide.log"
DB_FILE="/var/lib/aide/aide.db.gz"
NEW_DB_FILE="/var/lib/aide/aide.db.new.gz"
EMAIL_SUB="!!! AIDE zmena na FS serveru `uname -n` !!!"
EMAIL_SUB_ALERT="!!! ALERT AIDE na serveru `uname -n` !!!"
EMAIL_ADDR="vlk@oksystem.cz"
MY_DATE=`date +%Y%m%d-%H%M%S`
AIDE="/usr/sbin/aide"
ECHO="/bin/echo"
RM="/bin/rm"
MV="/bin/mv"
CP="/bin/cp"
DATE="/bin/date"
LS="/bin/ls"
MKDIR="/bin/mkdir"
CAT="/bin/cat"
MAIL="/bin/mailx"
NICE="/bin/nice"
EXISTS="$AIDE $ECHO $RM $MV $CP $DATE $LS $MKDIR $CAT $MAIL $NICE"
#-----------------------------------------------------------------------------
test_binaries() {
for COMMAND in `echo $EXISTS`; do
if [ ! -x $COMMAND ] ; then
send_alert "Prikaz "$COMMAND" neni v systemu nainstalovan, nebo nelze spustit. => Koncim"
exit 1
fi
done
}
#-----------------------------------------------------------------------------
send_alert() {
$ECHO "<> "$1
log "$1"
$ECHO -e $1 | $MAIL -s "$EMAIL_SUB_ALERT" $EMAIL_ADDR
}
#-----------------------------------------------------------------------------
log() {
$ECHO "["`$DATE +%Y\ %m\.%d\.\ %H\:%M\:%S`"] --- "$1 >> $LOG_FILE
}
#-----------------------------------------------------------------------------
test_binaries
if [ -f $TEMP_FILE ] ; then
rm -f $TEMP_FILE
fi
echo [$MY_DATE] BEGIN AIDE > $TEMP_FILE
if [ ! -f $DB_FILE ] ; then
send_alert "DB $DB_FILE nenalezena => vytvarim novou."
$NICE -n 19 $AIDE -i >> $TEMP_FILE 2>&1
$CP $NEW_DB_FILE $DB_FILE
MY_DATE=`date +%Y%m%d-%H%M%S`
$ECHO [$MY_DATE] END AIDE >> $TEMP_FILE
$CAT $TEMP_FILE >> $LOG_FILE
if [ -f $TEMP_FILE ] ; then
rm -f $TEMP_FILE
fi
exit 1
fi
$NICE -n 19 $AIDE -C >> $TEMP_FILE 2>&1
RETVAL_CHECK=$?
if [ "$RETVAL_CHECK" -ne "0" ] ; then
$NICE -n 19 $AIDE -i >> $TEMP_FILE 2>&1
RETVAL_INIT=$?
$CP $NEW_DB_FILE $DB_FILE
$ECHO -e "RETVAL_CHECK=$RETVAL_CHECK\nRETVAL_INIT=$RETVAL_INIT" >> $TEMP_FILE 2>&1
MY_DATE=`date +%Y%m%d-%H%M%S`
$ECHO [$MY_DATE] END AIDE >> $TEMP_FILE
$CAT $TEMP_FILE >> $LOG_FILE
$CAT $TEMP_FILE | $MAIL -s "$EMAIL_SUB" $EMAIL_ADDR
fi
if [ -f $TEMP_FILE ] ; then
rm -f $TEMP_FILE
fi
exit 0