自动化防DDoS脚本

news2024/10/7 11:56:51

简介

DDoS (分布式拒绝服务攻击)是一种恶意的网络攻击,旨在通过占用目标系统的资源,使其无法提供正常的服务。在DDoS攻击中,攻击者通常控制大量的被感染的计算机或其他网络设备,同时将它们协调起来向目标系统发起海量的请求,超出其处理能力范围,导致服务不可用。
防DDoS脚本指的是用于识别和阻止DDoS攻击的自动化脚本。这些脚本可以运行在网络设备如防火墙、入侵检测系统(IDS)等中,也可以在服务器上运行。

脚本编写

#!/bin/bash

# 配置参数
LOG_DIR="/var/log/ddos"
ERROR_LOG="$LOG_DIR/error.log"
DETECTION_LOG="$LOG_DIR/detection.log"
PREVENTION_LOG="$LOG_DIR/prevention.log"
THRESHOLD=100   # 定义攻击阈值
BLOCK_TIME=600  # 定义阻止攻击者的时间(秒)
ARCHIVE_DIR="/var/log/ddos/archive"  # 存档目录

# 创建日志目录
mkdir -p "$LOG_DIR"
mkdir -p "$ARCHIVE_DIR"

# 检查是否以root用户运行
if [ "$(id -u)" != "0" ]; then
    echo "This script must be run as root." >&2
    exit 1
fi

# 检查ufw是否可用
if ! command -v ufw &> /dev/null; then
    echo "ufw command not found. Please install ufw." >&2
    exit 1
fi

# 主循环
while true; do
    # 获取当前网络流量
    CURRENT_TRAFFIC=$(netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n | tail -n 1 | awk '{print $1}')

    # 判断是否超过阈值
    if [ "$CURRENT_TRAFFIC" -gt "$THRESHOLD" ]; then
        # 记录攻击信息
        TIMESTAMP=$(date +"%Y-%m-%d %H:%M:%S")
        ATTACKER_IP=$(netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n | tail -n 1 | awk '{print $2}')
        echo "$TIMESTAMP - Detected DDoS attack from $ATTACKER_IP with $CURRENT_TRAFFIC connections" >> "$DETECTION_LOG"

        # 阻止攻击者的IP
        ufw deny from "$ATTACKER_IP"

        # 记录阻止信息
        echo "$TIMESTAMP - Blocked IP: $ATTACKER_IP" >> "$PREVENTION_LOG"

        # 等待一段时间后解封IP
        sleep "$BLOCK_TIME"
        ufw delete deny from "$ATTACKER_IP"
        echo "$TIMESTAMP - Unblocked IP: $ATTACKER_IP" >> "$PREVENTION_LOG"
    fi

    # 每天轮转一次日志
    if [ "$(date '+%H%M')" == "0000" ]; then
        # 将当前日志归档
        ARCHIVE_FILE="$ARCHIVE_DIR/ddos_$(date +'%Y%m%d').log.gz"
        cat "$DETECTION_LOG" "$PREVENTION_LOG" >> "$ARCHIVE_FILE"
        
        # 清空当前日志
        > "$DETECTION_LOG"
        > "$PREVENTION_LOG"
        
        # 压缩存档文件
        gzip "$ARCHIVE_FILE"
    fi

    # 每分钟轮询一次
    sleep 60
done

脚本释义

# 配置参数
LOG_DIR="/var/log/ddos"
ERROR_LOG="$LOG_DIR/error.log"
DETECTION_LOG="$LOG_DIR/detection.log"
PREVENTION_LOG="$LOG_DIR/prevention.log"
THRESHOLD=100   # 定义攻击阈值
BLOCK_TIME=600  # 定义阻止攻击者的时间(秒)
ARCHIVE_DIR="/var/log/ddos/archive"  # 存档目录

这一段定义了脚本中使用的一些配置参数,例如日志目录、日志文件路径、攻击阈值、阻止攻击者的时间、以及存档目录。

# 创建日志目录
mkdir -p "$LOG_DIR"
mkdir -p "$ARCHIVE_DIR"

这里使用 mkdir -p 命令来创建日志目录和存档目录。 -p 参数会确保如果目录不存在的话,也会递归地创建它。

# 检查是否以root用户运行
if [ "$(id -u)" != "0" ]; then
    echo "This script must be run as root." >&2
    exit 1
fi

这个部分检查脚本是否以 root 用户的身份运行。如果不是,脚本会输出错误信息并退出。

# 检查ufw是否可用
if ! command -v ufw &> /dev/null; then
    echo "ufw command not found. Please install ufw." >&2
    exit 1
fi

这个部分检查系统是否安装了 ufw 命令。如果没有安装,脚本会输出错误信息并退出。

# 主循环
while true; do

脚本进入一个无限循环,用于不断地监测网络流量。

    # 获取当前网络流量
    CURRENT_TRAFFIC=$(netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n | tail -n 1 | awk '{print $1}')

这一行使用 netstat 命令获取当前网络连接的信息,然后通过一系列的 awk、cut、sort 等命令进行处理,最终得到当前网络流量的连接数。

    # 判断是否超过阈值
    if [ "$CURRENT_TRAFFIC" -gt "$THRESHOLD" ]; then

这一行判断当前网络流量是否超过了预设的阈值。

        # 记录攻击信息
        TIMESTAMP=$(date +"%Y-%m-%d %H:%M:%S")
        ATTACKER_IP=$(netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n | tail -n 1 | awk '{print $2}')
        echo "$TIMESTAMP - Detected DDoS attack from $ATTACKER_IP with $CURRENT_TRAFFIC connections" >> "$DETECTION_LOG"

如果检测到攻击,脚本会获取当前时间戳和攻击者的IP地址,然后将攻击信息记录到检测日志中。

     # 阻止攻击者的IP
     ufw deny from "$ATTACKER_IP"

使用 ufw 命令阻止攻击者的IP。

        # 记录阻止信息
        echo "$TIMESTAMP - Blocked IP: $ATTACKER_IP" >> "$PREVENTION_LOG"

将阻止信息记录到防攻击日志中。

        # 等待一段时间后解封IP
        sleep "$BLOCK_TIME"
        ufw delete deny from "$ATTACKER_IP"
        echo "$TIMESTAMP - Unblocked IP: $ATTACKER_IP" >> "$PREVENTION_LOG"

脚本会等待一段时间后,解封被阻止的IP,并将解封信息记录到防攻击日志中。

    # 每天轮转一次日志
    if [ "$(date '+%H%M')" == "0000" ]; then

这一段判断是否到了每天的午夜时分(00:00),如果是,则进行日志轮转。

        # 将当前日志归档
        ARCHIVE_FILE="$ARCHIVE_DIR/ddos_$(date +'%Y%m%d').log.gz"
        cat "$DETECTION_LOG" "$PREVENTION_LOG" >> "$ARCHIVE_FILE"

将当前的检测日志和防攻击日志合并,并将合并后的日志归档到指定的存档文件中。

        # 清空当前日志
        > "$DETECTION_LOG"
        > "$PREVENTION_LOG"

清空当前的检测日志和防攻击日志。

        # 压缩存档文件
        gzip "$ARCHIVE_FILE"
    fi

对归档文件进行压缩。

    # 每分钟轮询一次
    sleep 60
done

脚本结束。整个脚本会以每分钟一次的频率运行,不断监测网络流量,处理攻击,进行日志轮转。这是一个简单的示例,实际环境中可能需要根据需求进一步定制和优化。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1411768.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第二百八十七回

文章目录 1. 概念介绍2. 使用方法2.1 实现步骤2.2 具体细节 3. 示例代码4. 内容总结 我们在上一章回中介绍了"如何获取文件类型"相关的内容,本章回中将介绍如何播放视频.闲话休提,让我们一起Talk Flutter吧。 1. 概念介绍 播放视频是我们常用…

解决 [Vue warn]:Avoid mutating a prop directly 警告

错误信息 [Vue warn]: Avoid mutating a prop directly since the value will be overwritten whenever the parent component re-renders. Instead, use a data or computed property based on the prop’s value. Prop being mutated: “xxx” 错误原因 所有的 prop 都使得…

Vue开发之proxy代理的配置(附带uniapp代理配置)

vue 1.在vue.config.js中添加 devServer 属性中配置 proxy 属性 module.exports {productionSourceMap: false,publicPath: /,devServer: {port: 8085,proxy: {/api/admin: {target: http://10.58.104.70:6111,changeOrigin: true,pathRewrite: {/api/: /}},/api: {target: …

白酒:品控标准与产品质量的关系

品控标准是确保产品质量的关键要素,它涉及到产品的原料、生产工艺、包装、储存和运输等各个环节。在酿酒行业中,品控标准尤为重要,因为酒的品质与其原材料、生产环境、酿造工艺等密切相关。云仓酒庄的豪迈白酒在品控方面制定了严格的标准&…

中移(苏州)软件技术有限公司面试问题与解答(4)—— virtio所创建的设备1

接前一篇文章:中移(苏州)软件技术有限公司面试问题与解答(0)—— 面试感悟与问题记录 本文参考以下文章: VirtIO实现原理——PCI基础 VirtIO实现原理——virtblk设备初始化 特此致谢! 本文对…

React复习记录

1、Outlet的作用 <Outlet /> 是一种在 React 路由器中使用的特殊组件&#xff0c;它用于渲染当前路由的子路由。在一些情况下&#xff0c;我们可能只想渲染子路由&#xff0c;而不需要使用上下文传递任何参数。这种情况下&#xff0c;可以直接使用 <Outlet /> 组件…

java servlet果蔬产业监管系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 java Web果蔬产业监管系统是一套完善的java web信息管理系统 serlvetdaobean mvc 模式开发 &#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主 要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5…

Maven(上):Maven介绍、安装配置及工程构建

1. Maven介绍 Maven 是一款为 Java 项目管理构建、依赖管理的工具&#xff08;软件&#xff09;&#xff0c;使用 Maven 可以自动化构建、测试、打包和发布项目&#xff0c;大大提高了开发效率和质量。 Maven就是一个软件&#xff0c;掌握安装、配置、以及基本功能 &#xff…

国密算法:定义、应用与重要性

国密算法是指由中国国家密码管理局发布的密码算法标准&#xff0c;旨在保障国家信息安全。目前&#xff0c;国家密码管理局已发布了一系列国产商用密码标准算法&#xff0c;包括SM1&#xff08;SCB2&#xff09;、SM2、SM3、SM4、SM7、SM9以及祖冲之密码算法&#xff08;ZUC)等…

MIT_线性代数笔记:线性代数常用计算公式

目录 1.矩阵的加法和数乘2.矩阵的乘法3.转置 Transposes 相关运算 1.矩阵的加法和数乘 2.矩阵的乘法 1)标准方法&#xff08;行乘以列&#xff09; 矩阵乘法的标准计算方法是通过矩阵 A 第 i 行的行向量和矩阵 B 第 j 列的列向量点积得到 cij。即我们常说的点积&#xff0c;也…

用Excel辅助做数独

做数独游戏的时候&#xff0c;画在纸上很容易弄花眼&#xff0c;所以我考虑用Excel辅助做一个。 界面如下&#xff1a; 按下初始化表格区域按钮&#xff0c;会在所有单元格中填充“123456789”。如下图&#xff1a; 当某个单元格删除得只剩一个数字时&#xff0c;会将同一行、…

安利一款抢票软件堪称“业界良心”,全网好评!

马上就到了春运了&#xff0c;有不少网友反映12306买票太难了。 有粉丝在后台留言问有没有抢票软件&#xff1f; 知名公司开发的抢票软件&#xff0c;需要助力、需要用钱买加速包&#xff0c;这对于需要白嫖的朋友来说无疑是“雪上加霜”&#xff01; 这里从解决实际问题的角度…

RocketMQ源码安装

RocketMQ源码安装 1.官方下载地址 http://rocketmq.apache.org/dowloading/releases/ 2.环境要求 1.Linux64位系统 2.JDK1.8(64位) 3.Maven 3.2.x以上 3.IntelliJ IDEA导入 导入后执行Maven命令install mvn install -Dmaven.test.skiptrue 4.调试RocketMQ源码 4.1启动…

5JS语句

表达式在JavaScript中是短语&#xff0c;那么语句&#xff08;statement&#xff09;就是JavaScript整句或命令。 表达式计算出一个值&#xff0c;但语句用来执行以使某件事发生。诸如赋值和函数调用这些有副作用的表达式&#xff0c;是可以作为单独的语句的&#xff0c;这种把…

gitlab设置/修改克隆clone地址端口

最近由于公司要停测试库云服务器? 什么?要停测试库服务器??? 是的! 你没听错。 真是醉了,多大的集团,为了省钱,也真是拼了, 作为开发人员,没有测试服务器,犹如断臂之人。 所以,在之前搭建环境的时候都没有写文档,今天算是弥补上,以后都可以作为参考了, …

vue3 根据点击位置,实现一个用户头像弹框定位

vue3 根据点击位置&#xff0c;实现一个用户头像弹框定位 需求背景 最近在做直播后台&#xff0c;涉及到对用户的一些操作&#xff0c;比如关注/取关/禁言/踢出直播间。多个地方都要用&#xff0c;需要封装一个弹框组件 效果图 实现过程分析 根据点击元素&#xff0c;获取元…

在游戏里开公司!基于ERNIE SDK的多智能体游戏应用

在虚拟世界有一座神奇的办公室&#xff0c;当你输入你的创业方向&#xff0c;办公室的智慧打工人们将团结合作&#xff0c;为你的项目勤劳奔走&#xff0c;并在过程中&#xff0c;把日报周报都写好&#xff0c;让你随时掌握项目进度和最终成果&#xff01;该项目基于ERNIE SDK开…

频率的高低与辐射强度有关系吗?

频率的高低和辐射强度之间存在一定的关系。 一般而言&#xff0c;频率越高&#xff0c;辐射强度越大&#xff0c;即电磁辐射的能量越大。这是因为电磁波的能量与其频率成正比。在电磁波谱中&#xff0c;如X光和伽玛射线具有高频率和强辐射强度&#xff0c;可以破坏构成人体组织…

Python静态web服务器实战

准备html页面&#xff0c;包含两个页面(index.html, index2.html)和一个404(404html)页面&#xff0c;目录示意&#xff1a; 1.返回固定页面 with open("website/index.html","r") as file: import socket# # 返回固定的页面 website/index.html if __na…

怎么将word转换成pdf?一步到位,轻松搞定!

怎么将word转换成pdf&#xff1f;在数字时代&#xff0c;我们经常需要将文档转换为PDF格式&#xff0c;以便在不同的设备和平台上共享和查看。然而&#xff0c;许多人对如何将Word转换成PDF感到困惑。本文将为你详细介绍将Word转换成PDF的步骤&#xff0c;让你轻松掌握这一技能…