[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
|
# sa sortie (il enregistre chaque étape dans un fichier indiqué par
|
||||||
# [> fichier]).
|
# [> fichier]).
|
||||||
#####
|
#####
|
||||||
|
# Options :
|
||||||
|
# -h / --help : Affiche les options
|
||||||
|
# --mailto [adresse mail] : Envoie un mail avec le diff
|
||||||
|
#####
|
||||||
# Fonctionnement :
|
# Fonctionnement :
|
||||||
# -Il analyse les logs de Squid à la recherche des requêtes du type :
|
# -Il analyse les logs de Squid à la recherche des requêtes du type :
|
||||||
# GET http://[une ip quelconque]/search?
|
# GET http://[une ip quelconque]/search?
|
||||||
|
@ -42,10 +46,22 @@
|
||||||
#####
|
#####
|
||||||
|
|
||||||
|
|
||||||
# A changer bien sûr selon les cas ...
|
# On affiche l'aide si demandée
|
||||||
if [ "`hostname`" != "sable" ]
|
if [ "$1" == "-h" ] || [ "$1" == "--help" ]
|
||||||
then
|
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
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -53,7 +69,14 @@ fi
|
||||||
# (Par défaut, ces fichiers sont laissés pour ne pas avoir à reexécuter le
|
# (Par défaut, ces fichiers sont laissés pour ne pas avoir à reexécuter le
|
||||||
# script ...)
|
# script ...)
|
||||||
echo " * Initialisation des fichiers ..."
|
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
|
rm -f $FILES
|
||||||
touch $FILES
|
touch $FILES
|
||||||
chmod go-rwx $FILES
|
chmod go-rwx $FILES
|
||||||
|
@ -84,7 +107,7 @@ cat reverse_dns
|
||||||
# On garde les IPs destination n'ayant pas de reverse DNS
|
# On garde les IPs destination n'ayant pas de reverse DNS
|
||||||
# (peut-être est-ce trop restrictif ?)
|
# (peut-être est-ce trop restrictif ?)
|
||||||
echo -n " * Recherche des hôtes compromis ... [> compromised] Lignes : "
|
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
|
do
|
||||||
echo " * $SEARCHIP" >> stats
|
echo " * $SEARCHIP" >> stats
|
||||||
for NEWIP in `grep $SEARCHIP ip_reqip | awk '{print $1}' | sort | uniq`
|
for NEWIP in `grep $SEARCHIP ip_reqip | awk '{print $1}' | sort | uniq`
|
||||||
|
@ -103,3 +126,24 @@ cat compromised
|
||||||
# On affiche les statistiques
|
# On affiche les statistiques
|
||||||
echo " * Statistiques ... [> stats]"
|
echo " * Statistiques ... [> stats]"
|
||||||
cat 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