本文共 657 字,大约阅读时间需要 2 分钟。
上篇的代码感觉还不过瘾,于是又加上了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 &
转载地址:http://rsrci.baihongyu.com/