愿山野浓雾都有路灯风...

服务器防打脚本

相信大家都有一个疑惑,那就是一个小小的博客,天天遭受攻击,于是鄙人就用ChatGPT写了一个防攻击脚本,先来给大家说说原理:

众所周知,网站攻击大多数就是多人同时访问造成服务器拥堵,一时接受不了这个人数,所以写了一个判断访问人数如果超过1000人,那么就有福了,直接关机哈,然后再发邮箱给我就能知道

脚本

先创建一个文件,我这里创建的是ddos_protect.sh,根据个人而定

#!/bin/bash

# --------------------
# DDoS/CC监测+关机+邮件报警脚本
# 作者:ChatGPT @OpenAI
# --------------------

# 设置触发阈值(例如:60秒内建立连接超过1000)
THRESHOLD=1000

# 获取当前连接数量
CONN_COUNT=$(netstat -an | grep :80 | grep ESTABLISHED | wc -l)

# 调试日志
echo "当前连接数:$CONN_COUNT"

if [ "$CONN_COUNT" -gt "$THRESHOLD" ]; then
  echo "检测到疑似攻击,正在发送邮件通知并关机..."

  # 发送邮件脚本(临时生成)
  /usr/bin/python3 <<EOF
import smtplib, ssl
from email.mime.text import MIMEText
from email.utils import formataddr

smtp_server = "smtp.qq.com"
port = 465
sender_email = "***@qq.com"
sender_name = "博客服务器"
receiver_email = "***@qq.com"
password = "***"

subject = "🔥 警报:火山博客服务器遭遇异常访问"
body = '''服务器检测到高频访问,可能遭受CC或DDoS攻击。
当前连接数:${CONN_COUNT}
服务器即将自动关机以保护资源。

请尽快登录查看。'''

msg = MIMEText(body, "plain", "utf-8")
msg["From"] = formataddr((sender_name, sender_email))
msg["To"] = receiver_email
msg["Subject"] = subject

context = ssl.create_default_context()
with smtplib.SMTP_SSL(smtp_server, port, context=context) as server:
    server.login(sender_email, password)
    server.sendmail(sender_email, receiver_email, msg.as_string())
EOF

  # 延迟几秒后关机
  sleep 10
  shutdown -h now
fi

这就是代码,给放到合适的目录,然后用宝塔的兄弟直接去计划任务

再到脚本内容里面写上

chmod +x ddos_protect.sh
/目录/ddos_protect.sh

当然,如果没用宝塔面板的或者不能像这样方便的,还有一计

首先给脚本一个权限

chmod +x /www/ddos/ddos_protect.sh

然后用 crontab 每分钟运行一次脚本

crontab -e

然后再到里面输入下面内容

* * * * * /bin/bash /www/ddos/ddos_protect.sh >> /var/log/ddos_check.log 2>&1

对了,也要记得改路径,然后宝塔面板的看日志就可以看到每一分钟多少人访问,当然,我的博客可能太垃圾了,没多少人看的

消息盒子
# 您需要首次评论以获取消息 #
# 您需要首次评论以获取消息 #

只显示最新10条未读和已读信息