linux服务器禁ip策略,Linux服务器自动封禁访问异常的IP脚本(一)

#!/bin/sh

##Author:bbzsxjj

##Email:bbzsxjj@163.com

##Usage:auto deny ip by iptables

##Ver:1.0

timenow=`date +'%H%M00'`

timelast=`date +'%H%M00' -d '-5min'`

lastnum=1000000  ##日志的行数,可以根据自己的业务频率选取

limitnum=3000      ##并发限制,300*10

ipbin=/sbin/iptables

NeedDenyiplist=/opt/sbin/ipdeny.list

NeedPurgeiplist=/opt/sbin/ippurge.list

LogFile=/data/logs/haproxy.log

CreateList(){

if [ -f ${LogFile} ]

then

if [ -f ${NeedDenyiplist} ]

then

mv ${NeedDenyiplist} ${NeedPurgeiplist}

fi

tail -n${lastnum} ${LogFile}|awk '{gsub(/:/,"",$3);if($3>='${timelast}' && $3<='${timenow}'){a[$6]++}}END{for(i in a){if(a[i]>'${limitnum}'){print $6}}}' >>${NeedDenyiplist} ##这里需要根据日志的格式进行处理,具体的需要根据实际情况修改处理方法

if [ `wc -l ${NeedDenyiplist}|awk '{print $1}'` -eq 0 ]

then

rm -rf ${NeedDenyiplist}

fi

fi

}

DenyIP(){

for Dip in `cat ${NeedDenyiplist}|grep -E -v '^$|#'`

do

${ipbin} -I INPUT -s  ${Dip} -p tcp --dport 80 -j DROP

done

}

PurgeIP(){

for Dip in `cat ${NeedPurgeiplist}|grep -E -v '^$|#'`

do

${ipbin} -D INPUT -s  ${Dip} -p tcp --dport 80 -j DROP

done

}

main(){

CreateList

if [ -f ${NeedPurgeiplist} ]

then

PurgeIP

fi

if [ -f ${NeedDenyiplist} ]

then

DenyIP

fi

}

main

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值