Script bash pour DROP d'IP
Dernière réponse : dans Le monde de Linux
Bonjour,
J'ai installé un module pour apache assez intéressant : mod_clamav
Sur un apache-2.0.54 sur une Mandriva 2006.0..
Il est intéressant car il affiche une page d'erreur, si un poste visitant l'un des sites que je gère, tente (volontairement ou non) de compromettre le système par hack de virus...
Cela génère un log dans /var/log/httpd/error_log :
[Mon Nov 20 08:25:13 2006] [error] [client 71.199.188.170] [14992] virus daemon connection problem found in request http://login.dcn.yahoo.com/config/login?.done=http://fa..., referer: http://login.dcn.yahoo.com/config/login
Or j'ai remarqué souvent les mêmes entrées avec les mêmes IP... J'en conclu que certains postes infectés scan l' Internet au hasard et recommence indéfiniment !
D'où ma conclusion si une erreur HTTP ne suffit pas, "interdisons ces adresses IP !!!"
Alors j'ai fait un petit script bash qui analyse le log et drop les IP... Mais le seul truc qui ne me conviens pas c'est qu'une adresse IP peut apparaitre plusieurs fois !
Elle sera donc DROPée autant de fois !
Je vous mets mon script :
Tous cela est lancé toutes les 3-4 minutes par un cron !
Des idées !??
Merci
J'ai installé un module pour apache assez intéressant : mod_clamav
Sur un apache-2.0.54 sur une Mandriva 2006.0..
Il est intéressant car il affiche une page d'erreur, si un poste visitant l'un des sites que je gère, tente (volontairement ou non) de compromettre le système par hack de virus...
Cela génère un log dans /var/log/httpd/error_log :
[Mon Nov 20 08:25:13 2006] [error] [client 71.199.188.170] [14992] virus daemon connection problem found in request http://login.dcn.yahoo.com/config/login?.done=http://fa..., referer: http://login.dcn.yahoo.com/config/login
Or j'ai remarqué souvent les mêmes entrées avec les mêmes IP... J'en conclu que certains postes infectés scan l' Internet au hasard et recommence indéfiniment !
D'où ma conclusion si une erreur HTTP ne suffit pas, "interdisons ces adresses IP !!!"
Alors j'ai fait un petit script bash qui analyse le log et drop les IP... Mais le seul truc qui ne me conviens pas c'est qu'une adresse IP peut apparaitre plusieurs fois !
Elle sera donc DROPée autant de fois !
Je vous mets mon script :
#! /bin/sh
# clam-ip-drop.sh
# under GPL2
#
#/***************************************************************************
# * *
# * This program is free software; you can redistribute it and/or modify *
# * it under the terms of the GNU General Public License as published by *
# * the Free Software Foundation; either version 2 of the License, or *
# * (at your option) any later version. *
# * *
# ***************************************************************************/
# Réccupération des adresses IP si il y en a dans les 4 dernière ligne (limite le nombre de doublon)
ip=`tail -n 4 /var/log/httpd/error_log | grep "virus daemon" | grep -v "cannot create" | cut -d " " -f8-8 | cut -d "]" -f1-1`;
date=`date`;
# Boucle qui va faire un DROP de chaque IP
for i in $ip ; do
# On indique dans /var/log/messages que l'on drop une IP
echo $date." Drop de l'IP : "$i >> /var/log/messages;
/sbin/iptables -I INPUT -s $i -j DROP;
done
Tous cela est lancé toutes les 3-4 minutes par un cron !
Des idées !??
Merci
Autres pages sur : script bash drop
Lassé par la pub ? Créez un compte
J'en suis là :
Comme quoi lire ce
tain de manuel est souvent très utile !
# Récupération des adresses IP si il y en a dans les 100 dernières lignes
ip=`tail -n 100 /var/log/httpd/error_log | grep "virus daemon" | grep -v "cannot create" | cut -d " " -f8-8 | cut -d "]" -f1-1 > /tmp/IP-file`;
# La Date
date=`date`;
# Range les IPs
ip1=`sort /tmp/IP-file -o /tmp/IP-file-sort`;
# Récupère les IP de façon unique !
ip2=`uniq /tmp/IP-file-sort | grep -v "already"`
# Boucle qui va faire un DROP de chaque IP
for i in $ip2 ; do
# On indique dans /var/log/messages que l'on drop une IP
echo $date." Drop de l'IP : "$i >> /var/log/messages;
/sbin/iptables -I INPUT -s $i -j DROP;
done
Comme quoi lire ce
tain de manuel est souvent très utile !
Citation :
Je dirais même plus...man uniq
man sort
Rhooo... Tu ne l'as pas lu, le man sort. Allez, recommence, surtout le paragraphe concernant l'option -u.
Ce qui donne :
#!/bin/sh
date=`date`;
for i in `tail -100 /var/log/httpd/error_log |
grep "virus daemon" |
grep -v "cannot create" |
cut -d " " -f8-8 |
cut -d "]" -f1-1 |
sort -u`
do
echo $date." Drop de l'IP : "$i >> /var/log/messages;
/sbin/iptables -I INPUT -s $i -j DROP;
done
date=`date`;
for i in `tail -100 /var/log/httpd/error_log |
grep "virus daemon" |
grep -v "cannot create" |
cut -d " " -f8-8 |
cut -d "]" -f1-1 |
sort -u`
do
echo $date." Drop de l'IP : "$i >> /var/log/messages;
/sbin/iptables -I INPUT -s $i -j DROP;
done
Donc tu maintiens tail ?
Remarque la disposition en colonne du code que je te propose. C'est ma façon de faire (à moi et à d'autres hein !) et je ne t'impose rien, mais la facilité de relecture qu'elle permet mérite qu'on s'y penche.
( Est-ce bien nécessaire de nous donner cette liste d'IPs
) Citation :
Rhooo... Tu ne l'as pas lu, le man sort. Allez, recommence, surtout le paragraphe concernant l'option -u.
Si si mais surement trop en diagonal....
Citation :
....
Remarque la disposition en colonne du code que je te propose. C'est ma façon de faire (à moi et à d'autres hein !) et je ne t'impose rien, mais la facilité de relecture qu'elle permet mérite qu'on s'y penche.
( Est-ce bien nécessaire de nous donner cette liste d'IPs
)La liste à été réduite !
Mais je garde ta remarque du code en colonne.
Lassé par la pub ? Créez un compte
- Contenus similaires :