SpecialistOff.NET / Вопросы / Статьи / Фрагменты кода / Резюме / Метки / Помощь / Файлы
НазадМетки:
Внимание
Использована утилита GeoIP
Файл:
/etc/bruteauth.sh
#!/bin/sh - tmpbadguys=`mktemp /tmp/badguys_XXXXXXXXXXX` tmpsortuniq=`mktemp /tmp/sortuniq_XXXXXXXXXXX` whitelist="/etc/whiteip.list" blacklist="/etc/blackip.list" countbefore=`wc -l ${blacklist}` # Вычищаем любителей брутфорса ssh less /var/log/auth.log | grep -E -o '[0-9]{1,3}(\.[0-9]{1,3}){3}' | sort -n | uniq > ${tmpbadguys} authfiles=`ls -la /var/log/auth.log.*` if [ `echo $?` == 0 ]; then authfiles=`ls -la /var/log/auth.log.* | awk '{print $9}'` for file in ${authfiles} do # echo ${file} zcat ${file} | grep -E -o '[0-9]{1,3}(\.[0-9]{1,3}){3}' | sort -n | uniq >> ${tmpbadguys} done fi # Вычищаем астериск for ip in `cat /var/log/asterisk/messages` do if [ "$ip" != "0.0.0.0" ]; then country=`geoiplookup ${ip} | awk '{print $4}'` if [ "$country" != "RU," -a "$country" != "IP" ] ; then echo ${ip} >> ${tmpbadguys} fi fi done less ${tmpbadguys} | uniq > ${tmpsortuniq} rm ${tmpbadguys} for ip in `cat $tmpsortuniq` do isgray=`grep ${ip} ${whitelist}` if [ ${isgray} ]; then country=`geoiplookup ${ip} | awk '{print $4}'` if [ "$country" != "RU," -a "$country" != "IP" ] ; then echo ${ip} >> ${blacklist} fi fi done /etc/badguys.sh countafter=`wc -l ${blacklist}` echo "Count before: "${countbefore}" Count after"${countafter} rm ${tmpsortuniq}