#!/bin/bash
# autoban.sshd.sh
LOG=/var/log/syslog
OLDLOG=/tmp/syslog.old
if [ -f $OLDLOG ]; then
ROZMIAR1=`cat $LOG | wc -l`
ROZMIAR2=`cat $OLDLOG | wc -l`
LAN=192.168.1
echo $LAN # debug code
echo $ROZMIAR1 # debug code
echo $ROZMIAR2 # debug code
PLIK=
if [ "$ROZMIAR1" < "$ROZMIAR2" ]; then
echo "rozmiar 1 < rozmiar 2" # debug code
PLIK=/var/tmp/syslog.tmp # syslog zaczal zapisywac w nowym pliku
cat < $LOG.1 > $PLIK # wiec trzeba obrobic 2 pliki
cat < $LOG >> $PLIK # dołaczamy nowy plik
else
echo "rozmiar 1 > rozmiar 2" # debug code
PLIK=/var/log/syslog
fi
echo $PLIK # debug code
cat < $PLIK | grep sshd > /tmp/log.grep.new
cat < $OLDLOG | grep sshd > /tmp/log.grep.old
diff -aB /tmp/log.grep.new /tmp/log.grep.old | grep "Failed" | grep -v "$LAN" > /tmp/autoban.tmp
rm -f /tmp/log.grep.old
rm -f /tmp/log.grep.new
# Pętla
# w ktorej zostaną wyszukane wszystkie powtarzające się w /tmp/aotoban.tmp min 3 razy ip
# nie mam zastrzeżeń żadnych, z plikiem można robic wszystko, to tylko wynik jakichs tam wyliczeń
# IP='TU BRAKUJE TEGO WŁAŚNIE CZEGOŚ :> Trzeba jakoś obrobić /tmp/autoban.tmp w pętli'
#
# iptables -A INPUT -s $IP -j DROP
#
# echo "iptables -A INPUT -s $IP -j DROP" >> /etc/rc.d/rc.local
# ja nie uzywam save i restore dla iptables, ładuje do rc.local, moj prywatny wybor
# altęP
rm -f /tmp/autoban.tmp
if [ "$ROZMIAR1" < "$ROZMIAR2" ]; then
rm -f $PLIK
echo "kasowanie $PLIK" # debug code
fi
rm -f /tmp/syslog.old
echo "kasowanie /tmp/syslog.old" # debug code
fi
cp -f $LOG $OLDLOG
echo "kopiowanie $LOG -> $OLDLOG" # debug code
O co chodzi... Ano doszedlem do tego, że znajduje linijki w ktorych sa ip, chce wyłuskać tylko te ip , ktore powtarzają się min 3 razy, w przeciągu 5 minut. Udalo mi sie wyciąc lana i tak dalej, ale dalej utknałem. To mójpierwszy własnoręcznie pisany skrypt i póki co uwazam, że nie jest najgorszy ;p , może byc lepszy i nie mam nic przeciw poprawkom ;]
z góry dzięki...
// tak wyglada przykładowa linijka w /tmp/autoban.tmp :
< Jan 26 09:54:22 dragonfly sshd[2881]: Failed none for illegal user USERNAME from 66.66.66.66 port 666 ssh2
// jesli ktos napisze, zeby skonfigurowac sshd i zablokować roota, to z gory odpowiadam... zrobioen.. ale chce wyszukac wszystkie ip z ktorych gosć po sieci buraczy zanim zglosze sprawe do abuse.. poki co logi są juz pękate ;p, ale to pewnie jeszcze nie koniec ;] a nie chce mi sie recznie regulek pisac, wrzuci sie do crona i lu :D