ddos攻击防御脚本

脚本文件

vim ddosdefense.sh
#!/bin/bash
#定义脚本按照目录
AccordingToTheCatalogue=/sh/ddos
#加载环境变量
source $AccordingToTheCatalogue/conf/ddosdefense.conf
#判断防火墙状态
JudgeFirewall=`systemctl status firewalld.service | grep 'active (running)'`
if [ -z "$JudgeFirewall" ]; then
	echo "您当前机器firewalld防火墙未开启本程序无法运行" > $AccordingToTheCatalogue/log/TheListOfAttackers`date +"%Y-%m-%d"`.log
        exit    1
fi  

for AttackInformation in `netstat -ntu | awk '{print $4 " " $5}' | awk -F':' '{print $1":"$2}' | awk '{print "被攻击目标["$1"]" "---" "攻击人["$2"]"}' | awk '{a[$1]++} END {for(b in a) print b "---" "攻击次数["a[b]"]"}'`
do
	#获取攻击次数
	NumberOfAttacks=`echo "$AttackInformation" | awk -F'---' '{print $NF}' | awk -F'[' '{print $NF}' | awk -F']' '{print $NR}'`
	if [ $NumberOfAttacks -ge $NumberOfAttacksIsBlack ]; then
		#获取攻击人ip
		GetAttackerIP=`echo $AttackInformation | awk -F'---' '{print $2}' | awk -F'[' '{print $NF}' | awk -F']' '{print $NR}'`
		#判断攻击人ip是否在白名单列表
		JudgeGetAttackerIP=`cat $AccordingToTheCatalogue/conf/ddosdefense.conf | grep WhiteList | grep $GetAttackerIP`
		if [ -z $JudgeGetAttackerIP ]; then
			#把攻击人员信息写入日志中
			if [ -d $AccordingToTheCatalogue/log/TheListOfAttackers`date +"%Y-%m-%d"`.log ]; then
				echo $AttackInformation >> $AccordingToTheCatalogue/log/TheListOfAttackers`date +"%Y-%m-%d"`.log
			else
				touch $AccordingToTheCatalogue/log/TheListOfAttackers`date +"%Y-%m-%d"`.log
				echo $AttackInformation >> $AccordingToTheCatalogue/log/TheListOfAttackers`date +"%Y-%m-%d"`.log
			fi		
			#拉黑攻击人员
			/usr/bin/firewall-cmd --permanent --zone=drop --add-source=$GetAttackerIP
			/usr/bin/firewall-cmd  --reload
		fi
	
	fi
done
#清除30天前的日志
find $AccordingToTheCatalogue/log/ -type f -name '*.log' -mtime +30 -exec rm -rf {} \;

配置文件

vim  ddosdefense.conf
#攻击多少次的ip拉入黑名单
NumberOfAttacksIsBlack=1000
#白名单列表
WhiteList1=192.168.66.240

日志展示
在这里插入图片描述

喜欢的亲可以关注点赞评论哦!以后每天都会更新的哦!本文为小编原创文章; 文章中用到的文件、安装包等可以加小编联系方式获得;
欢迎来交流小编联系方式VX:CXKLittleBrother 进入运维交流群

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

含义小哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值