如何利用Shell脚本在Linux系统中自动增强对CC攻击的防御并拉黑恶意IP?

使用Shell脚本实现Linux系统防CC攻击自动拉黑IP增强版。

Linux系统防CC攻击自动拉黑IP增强版(Shell脚本)是一种用于保护服务器免受CC(Challenge Collapsar)攻击的自动化工具,通过监控并发连接数和请求频率,该脚本能够识别出异常流量并自动将发起攻击的IP地址加入黑名单,从而阻止这些IP地址的进一步访问,这种脚本通常结合了网络监控、数据分析和防火墙规则配置等多种技术手段,以实现对CC攻击的有效防御。

如何利用Shell脚本在Linux系统中自动增强对CC攻击的防御并拉黑恶意IP?

核心功能

1、实时监控:脚本会持续监控服务器的网络连接情况,特别是针对HTTP服务的连接请求。

2、并发分析:通过对连接请求的分析,脚本能够计算出每个IP地址的并发连接数,当某个IP地址的并发连接数超过预设的阈值时,脚本会认为该IP地址可能正在发起CC攻击。

3、自动拉黑:对于被识别为攻击源的IP地址,脚本会自动将其加入防火墙的黑名单中,阻止其后续的所有连接请求。

4、日志记录:脚本会记录所有的操作日志,包括哪些IP地址被拉黑、何时被拉黑以及拉黑的原因等,以便管理员进行后续的审计和分析。

5、灵活配置:脚本允许管理员根据实际需求调整并发阈值、黑名单有效期等参数,以实现更精细化的控制。

实现原理

1、获取并发阈值:脚本首先会检查是否传入了并发阈值参数$1,如果留空则默认允许单IP最大50并发。

如何利用Shell脚本在Linux系统中自动增强对CC攻击的防御并拉黑恶意IP?

2、进入脚本工作目录:使用cd $(cd $(dirname $BASH_SOURCE) && pwd)命令巧妙地进入到脚本所在的工作目录。

3、请求检查、判断及拉黑主功能函数:定义一个名为check的函数,用于执行主要的检查、判断和拉黑操作。

4、发邮件函数:定义一个名为sendmsg的函数,用于在检测到攻击时发送邮件通知管理员。

5、间隔循环检查:使用while true循环不断执行check函数,每次检查间隔10秒(可自定义),以实现实时监控。

6、执行脚本:将脚本保存为deny_blackip.sh后,使用nohup ./deny_blackip.sh 50 &命令后台执行脚本(后面的50表示并发数,可自行调整)。

代码示例

#!/bin/bash
#Author:ZhangGe
#Desc:Auto Deny Black_IP Script.
#Date:20141105
if [[ z $1 ]];then
    num=50
else
    num=$1
fi
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
        > ./iplist/black_ip.txt
        for black_ip in $iplist
        do
            #白名单过滤中已取消IP段的判断功能,可根据需要自行修改以下代码(请参考前天写的脚本)
            #exclude_ip=echo $black_ip | awk F"." '{print $1"."$2"."$3}'
            #grep q $exclude_ip ./white_ip.txt
            grep q $black_ip ./white_ip.txt
            if [[ $? eq 0 ]];then
                echo "$black_ip (white_ip)" >> ./iplist/black_ip.txt
            else
                echo $black_ip >> ./iplist/black_ip.txt
                iptables nL | grep $black_ip || (iptables I INPUT s $black_ip j DROP & echo "$black_ipdate +%Y%m%H:%M:%S">>./iplist/denylog.txt & echo 1 > ./sendmail)
            fi
        done
        if [[cat ./sendmail == 1 ]];then sendmsg;fi
    fi
}
function sendmsg() {
    netstat nutlp | grep "sendmail" >/dev/null 2>&1 || /etc/init.d/sendmail start >/dev/null 2>&1
    echo e "From: 发邮件地址@qq.com
To:收邮件地址@qq.com
Subject:Someone Attacking your system!!
Its Ip is" > ./message
    cat ./iplist/black_ip.txt >> ./message
    /usr/sbin/sendmail f 发邮件地址@qq.com t 收邮件地址@qq.com i < ./message > ./sendmail
}
while true
do
    check
    sleep 10
done

FAQs

问题1:如何调整脚本的并发阈值?

如何利用Shell脚本在Linux系统中自动增强对CC攻击的防御并拉黑恶意IP?

解答:在执行脚本时,可以通过传入参数来调整并发阈值,如果要将并发阈值调整为80,可以使用命令nohup ./deny_blackip.sh 80 &来执行脚本。

问题2:脚本如何实现自动发送邮件通知?

解答:脚本中定义了一个名为sendmsg的函数,用于发送邮件通知,当检测到攻击时(即存在并发超过阈值的单IP),脚本会调用此函数来发送邮件,邮件内容包含攻击者的IP地址等信息,在脚本中,需要将“发邮件地址@qq.com”和“收邮件地址@qq.com”替换为实际的发件人和收件人邮箱地址。

原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1098482.html

(0)
未希的头像未希新媒体运营
上一篇 2024-09-28 22:53
下一篇 2024-09-28 22:54

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

云产品限时秒杀。精选云产品高防服务器,20M大带宽限量抢购  >>点击进入