Linux系统防CC攻击自动拉黑IPShell脚本

  1. 加入到crontab计划任务执行的

  2. 脚本

#!/bin/bash#Author:萧萧一风#Desc:Auto Deny Black_IP Script.#Date:2019-9-28#取得参数$1为并发阈值,若留空则默认允许单IP最大50并发(实际测试发现,2M带宽,十来个并发服务器就已经无法访问了!)if [[ -z $1 ]];thennum=50else num=$1fi#巧妙的进入到脚本工作目录cd $(cd $(dirname $BASH_SOURCE) && pwd)#请求检查、判断及拉黑主功能函数function check(){iplist=`netstat -an |grep ^tcp.*:80|egrep -v 'LISTEN|127.0.0.1'|awk -F"[ ]+|[:]" '{print $6}'|sort|uniq -c|sort -rn|awk -v str=$num '{if ($1>str){print $2}}'`if [[ ! -z $iplist ]];then>./black_ip.txtfor black_ip in $iplistdo#白名单过滤中已取消IP段的判断功能,可根据需要自行修改以下代码(请参考前天写的脚本)#exclude_ip=`echo $black_ip | awk -F"." '{print $1"."$2"."$3}'`#grep -q $exclude_ip ./white_ip.txtgrep -q $black_ip ./white_ip.txtif [[ $? -eq 0 ]];thenecho "$black_ip (white_ip)" >>./black_ip.txtelseecho $black_ip >>./black_ip.txtiptables -nL | grep $black_ip ||(iptables -I INPUT -s $black_ip -j DROP & echo "$black_ip  `date +%Y-%m-%H:%M:%S`">>./deny.log & echo 1 >./sendmail)fidone#存在并发超过阈值的单IP就发送邮件if [[ `cat ./sendmail` == 1 ]];then sendmsg;fifi}#发邮件函数function sendmsg(){netstat -nutlp | grep "sendmail" >/dev/null 2>&1 || /etc/init.d/sendmail start >/dev/null 2>&1echo -e "From: 发邮件地址@qq.com\nTo:收邮件地址@qq.com\nSubject:Someone Attacking your system!!\nIts Ip is" >./messagecat ./black_ip.txt >>./message/usr/sbin/sendmail -f 发邮件地址@qq.com -t 收邮件地址@qq.com -i <./message>./sendmail}#间隔10s无限循环检查函数while truedo check#每隔10s检查一次,时间可根据需要自定义sleep 10done


参考文章:https://zhang.ge/4649.html

标签: shell

作者头像
萧萧一风创始人

做一个积极主动热情的人,为了想要完成的事情和实现的目标,拼命投入力量。

上一篇:Google Adsense 确保您的 ads.txt 文件可被抓取
下一篇:Linux运维基础技能: 接入层与网络基础

发表评论

×
选择打赏方式:

打赏

打赏

打赏

×
选择分享方式: