一次性讲完,用linux编写一个通用的实时在后台监测防止ddos攻击脚本,每20秒钟检测一次(shell变量配置),直接给出完整的案例,无需解释,限制每个ip每秒钟和服务器建立的最大TCP连接数(shell变量配置),并增加日志记录功能,超过最大连接数则要记录时间、攻击者ip、访问端口、协议、携带报文、建立的tcp连接总数等信息保存到/home/ddos目录下(shell变量配置),每个日志文件最大100MB(shell变量配置,自动清理3天以前的日志),超过100MB则要重新生成新文件,以生成时间命名(精确到毫秒),并封禁该ip(已经封禁过的无需再次封禁),保存到/home/ddos/blackIpList.txt(shell变量配置),
时间: 2023-02-07 18:04:18 浏览: 131
一个强大的网络分析shell脚本分享(实时流量、连接统计)
以下是一个示例脚本,注意这仅仅是一个示例,并不能直接使用,需要根据实际情况进行修改:
```
#!/bin/bash
# 配置参数
check_interval=20 # 检测间隔,单位为秒
max_conn=10 # 每秒最大连接数
log_dir="/home/ddos" # 日志目录
log_size=100 # 日志文件大小,单位为MB
ban_time=3600 # 封禁时长,单位为秒
# 循环检测
while :
do
# 获取当前时间
now=`date +%s`
# 获取每个 IP 每秒建立的 TCP 连接数
# -n 指定时间间隔,单位为秒,此处为 1 秒
# -z 指定统计时间粒度,单位为秒,此处为 1 秒
# -s 指定过滤器,此处为 tcp 连接建立
# -v 指定统计值,此处为 ip 数量
# -x 指定过滤器补充信息,此处为端口
# -i 指定网卡
# -o 指定输出格式,此处为 CSV 格式
# 以上命令会输出如下数据:
# 时间戳,端口,IP地址,数量
# 其中时间戳是从 1970-01-01 00:00:00 开始的秒数
conn_data=`tcpdump -n -z 1 -s 0 -v -x -i eth0 -oX - 'tcp[tcpflags] & (tcp-syn) != 0' | awk -F"," '{print $1","$5","$6","$10}'`
# 遍历每个 IP
while read line
阅读全文