[surveillance/conficker.sh] Diff, option pour envoyer un mail
darcs-hash:20090403140627-ddb99-5f8594039723dc7544aab79fbeb79830179449e5.gz
This commit is contained in:
parent
6be61e1844
commit
a285026bbd
1 changed files with 49 additions and 5 deletions
|
@ -24,6 +24,10 @@
|
|||
# sa sortie (il enregistre chaque étape dans un fichier indiqué par
|
||||
# [> fichier]).
|
||||
#####
|
||||
# Options :
|
||||
# -h / --help : Affiche les options
|
||||
# --mailto [adresse mail] : Envoie un mail avec le diff
|
||||
#####
|
||||
# Fonctionnement :
|
||||
# -Il analyse les logs de Squid à la recherche des requêtes du type :
|
||||
# GET http://[une ip quelconque]/search?
|
||||
|
@ -42,10 +46,22 @@
|
|||
#####
|
||||
|
||||
|
||||
# A changer bien sûr selon les cas ...
|
||||
if [ "`hostname`" != "sable" ]
|
||||
# On affiche l'aide si demandée
|
||||
if [ "$1" == "-h" ] || [ "$1" == "--help" ]
|
||||
then
|
||||
echo "Vous devez exécuter ce script sur sable !"
|
||||
echo "Script de détection des machines infectées par Conficker"
|
||||
echo "Options :"
|
||||
echo " -h / --help : Affiche les options"
|
||||
echo " --mailto [adresse mail] : Envoie un mail avec le diff, ou les stats"
|
||||
echo " s'il n'y a pas d'anciennes stats"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
|
||||
# A changer bien sûr selon les cas ...
|
||||
if [ "`hostname`" != "sable" ] && [ "`hostname`" != "titanic" ]
|
||||
then
|
||||
echo "Vous devez exécuter ce script sur sable ou sur titanic !"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
@ -53,7 +69,14 @@ fi
|
|||
# (Par défaut, ces fichiers sont laissés pour ne pas avoir à reexécuter le
|
||||
# script ...)
|
||||
echo " * Initialisation des fichiers ..."
|
||||
FILES="base ip_reqip ip_reqip_stats reverse_dns compromised stats"
|
||||
|
||||
# On garde les dernières stats si elles existent ...
|
||||
if [ -f stats ]
|
||||
then
|
||||
mv stats stats.old
|
||||
fi
|
||||
|
||||
FILES="base diff ip_reqip ip_reqip_stats reverse_dns compromised stats"
|
||||
rm -f $FILES
|
||||
touch $FILES
|
||||
chmod go-rwx $FILES
|
||||
|
@ -84,7 +107,7 @@ cat reverse_dns
|
|||
# On garde les IPs destination n'ayant pas de reverse DNS
|
||||
# (peut-être est-ce trop restrictif ?)
|
||||
echo -n " * Recherche des hôtes compromis ... [> compromised] Lignes : "
|
||||
for SEARCHIP in `grep "not found" reverse_dns | awk '{print $1}'`
|
||||
for SEARCHIP in `grep " not " reverse_dns | awk '{print $1}'`
|
||||
do
|
||||
echo " * $SEARCHIP" >> stats
|
||||
for NEWIP in `grep $SEARCHIP ip_reqip | awk '{print $1}' | sort | uniq`
|
||||
|
@ -103,3 +126,24 @@ cat compromised
|
|||
# On affiche les statistiques
|
||||
echo " * Statistiques ... [> stats]"
|
||||
cat stats
|
||||
|
||||
# Si on a d'anciennes stats, on fait le diff
|
||||
if [ -f stats.old ]
|
||||
then
|
||||
echo " * Diff ... [> diff]"
|
||||
diff -uN stats.old stats | tee diff
|
||||
fi
|
||||
|
||||
# Si on a l'option --mail, on envoie un mail avec le diff
|
||||
if [ "$1" == "--mailto" ] && [ -n "$2" ]
|
||||
then
|
||||
if [ -f stats.old ] && [ -s diff ] && [ -s stats ]
|
||||
then
|
||||
# On envoie le diff (à condition qu'il y a des machines infectées)
|
||||
cat diff | mail -s "Détection du virus Conficker sur `hostname`" "$2"
|
||||
elif [ -s stats ]
|
||||
then
|
||||
# S'il n'y avait pas de précédentes stats, on n'envoie les nouvelles directement
|
||||
cat stats | mail -s "Détection du virus Conficker sur `hostname`" "$2"
|
||||
fi
|
||||
fi
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue