补充自动屏蔽攻击ip

上篇的代码感觉还不过瘾,于是又加上了apache中error.log日志的内容。

#!/bin/sh
ufwDeny(){
FILE="/var/log/ufw.log"
#MAX=15 这里的阈值设置的是当天12个小时被防火墙阻拦超过15次的IP
IP=$(sudo awk '{now=strftime("%d");now=now+0;if($2==now)S[$12]++}END{for(k in S)if(S[k]>15)print k}' $FILE|sed 's#SRC=##g')
for j in $IP
do
  sudo ufw deny from $j to any
done

}

accessError(){
  FILE="/var/log/apache2/error.log"
  #MAX=10 这里的阈值设置的是当天12个小时apache访问报错的日志信息中大于10次的ip
  IP=$(sudo awk '{S[$10]++}END{for(k in S)if(S[k]>10)print k}' $FILE|awk -F":" '{print $1}'|uniq)
for j in $IP
do
  sudo ufw deny from $j to any
done
}

main(){
  while true
  do
    ufwDeny
    accessError
    sleep 12h  #你们可以吧sleep的休眠时间设小一点,这样检查就频繁一些。现在是12小时。
  done
}

main 2>&1 &

你可能感兴趣的:(网管笔记)