[gl-como] Script controlla log
Fabio
fabrix.xm@gmail.com
Gio 28 Ago 2014 23:43:36 CEST
script ultima versione
http://hastebin.com/xowamifofa.bash
#!/bin/bash
# Script per il controllo degli accessi ad un server web
# Lo script si aspetta che il log di apache sia nel formato standard
(con IP
# sorgente nella prima colonna). Se il log è in formato differente,
cazzi.
indirizzo_mail="mail@dominio.com"
connessioni_al_giorno=150;
file_di_log="/var/log/apache2/access.log"
file_ip_bloccati="/var/cache/controllalog/ip_bloccati"
giorni_di_blocco=7
file_ip_conosciuti="/etc/ip_conosciuti"
# carica opzioni da file di configurazione (se esiste)
[[ -f /etc/controllaip ]] && source /etc/controllaip
# crea la directori dove salva $file_ip_bloccati se non esiste
[[ -d `dirname $file_ip_bloccati` ]] || mkdir --parents `dirname
$file_ip_bloccati`
[[ -f $file_ip_bloccati ]] || touch $file_ip_bloccati
#Ripulisco gli IP dopo il tempo prestabilito
oggi=`date +%s`
giorni_di_blocco=$(($giorni_di_blocco * 24 * 60 * 60))
temp_ip_bloccati=`mktemp`
cp $file_ip_bloccati $temp_ip_bloccati
rm $file_ip_bloccati
while read ip_bloccato giorno_di_blocco
do
{
if [ $oggi -lt $(($giorno_di_blocco+$giorni_di_blocco)) ]
then
echo $ip_bloccato $giorno_di_blocco >> $file_ip_bloccati
else
#rimuovo la regola da iptables
echo "Doh!"
#iptables -D INPUT -s $ip_bloccato -p tcp --dport 80 -j DROP
#iptables -D INPUT -s $ip_bloccato -p udp --dport 80 -j DROP
#iptables -D INPUT -s $ip_bloccato -p tcp --dport 443 -j DROP
#iptables -D INPUT -s $ip_bloccato -p udp --dport 443 -j DROP
fi
}
done < $temp_ip_bloccati
#Crea la regexp per grep per escludere gli ip conosciuti dal log di
apache
while read ip_conosciuto
do
{
ip_conosciuti=$ip_conosciuti"|"$ip_conosciuto
}
done < $file_ip_conosciuti
#Qua parte il gioco
testo_mail=`mktemp`
file_temp=`mktemp`
mando_la_mail=0
echo "Controllo dei log di apache" > $testo_mail
grep -q -v [\'$ip_conosciuti\'] $file_di_log | awk ' { print $1}' |
sort | uniq -c | sort -n --key=1,8 > $file_temp
while read volte ip
do
{
if [ $volte -gt $connessioni_al_giorno ]
then
if grep -q $ip $file_ip_bloccati
then
#echo $ip " e' gia' inserito in $file_ip_bloccati" >>
./testo_mail
echo "Duh!"
else
mando_la_mail = $(($mando_la_mail+1))
echo $ip " Inserisco un nuovo ip da bloccare per " $volte
"connessioni">> $testo_mail
#iptables -I INPUT -s $ip -p tcp --dport 80 -j DROP
#iptables -I INPUT -s $ip -p udp --dport 80 -j DROP
#iptables -I INPUT -s $ip -p tcp --dport 443 -j DROP
#iptables -I INPUT -s $ip -p udp --dport 443 -j DROP
echo $ip $oggi >> $file_ip_bloccati;
fi
fi
}
done < $file_temp
if [ $mando_la_mail -gt 0 ]
then
mutt -s "Connessioni giornaliere" -- $indirizzo_email < $testo_mail
fi
rm $temp_ip_bloccati
rm $file_temp
rm $testo_mail
Maggiori informazioni sulla lista
gl-como