服务器被 DDoS 攻击,低配置服务器自救方案

低配置服务器被 DDoS 攻击?这套自救方案零基础也能用

服务器刚被 DDoS 攻击时,很多新手第一反应是“完了,要花钱升级配置”。
其实只要攻击流量没超过带宽上限(例如 1Gbps 以下),多数情况下可以通过系统自带的工具扛住几个小时,争取申请更高防护的时间。
本文按零基础能照做的顺序展开,所有命令都能直接复制执行。

准备:快速判断攻击类型

先登录服务器,跑两条命令看当前负载和连接状态:

# 查看 CPU 和内存占用
top -bn1 | head -5

# 查看实时网络连接数(留意 SYN_RECV 状态数量)
ss -ant | awk '{print $1}' | sort | uniq -c | sort -rn

如果 SYN_RECV 连接数远超 ESTAB,说明是 SYN Flood 攻击;
如果网卡流量跑满但连接数正常,则是带宽型攻击。
低配置机器更怕连接耗尽型攻击,因为 CPU 和内存会被并发连接拖死。
接下来按照下面三步操作,多数情况下能让服务恢复响应。

第一步:用 iptables 限速,立刻释放 CPU

对于连接耗尽型攻击,最有效的办法是限制每秒新连接数量。
执行以下命令(以 SSH 为例,不要直接关闭自己的连接):

# 设置默认策略为接受(避免误拒绝 SSH)
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT

# 限制来自每 IP 的 TCP 新连接数为 20/秒,突发 50
iptables -A INPUT -p tcp --syn -m limit --limit 20/s --limit-burst 50 -j ACCEPT
iptables -A INPUT -p tcp --syn -j DROP

如果攻击源 IP 比较固定,可以更精准地封禁:

# 假设攻击 IP 段为 123.45.67.0/24
iptables -A INPUT -s 123.45.67.0/24 -j DROP

注意:执行完 iptables -L -n 确认规则已生效。
如果系统重启后规则丢失,需要安装 iptables-persistent。
对于 CentOS/Rocky Linux:

yum install -y iptables-services
systemctl enable iptables
service iptables save

第二步:宝塔面板用户直接添加防火墙规则

如果你用的是宝塔面板,操作路径更直观:登录面板 → 安全 → 左侧 防火墙 → 点击 全局设置,开启 防火墙增强模式
然后在 系统防火墙 中添加规则:

  • 协议:TCP
  • 端口:80,443(只针对 Web 服务)
  • 策略:限制
  • 每 IP 连接数:20
  • 每秒请求数:5

保存后立刻生效。
此时页面提示“已成功添加规则”。
如果攻击集中在某个端口(如 80),也可以直接屏蔽该端口所有外部访问,然后在 CDN 层面做代理转发。

第三步:利用 Cloudflare 免费 CDN 隐藏源 IP

如果攻击源直接打到源站 IP,光靠限速不够,最好把域名接入 Cloudflare。
免费套餐也能过滤大量应用层攻击。
操作流程:

  1. 在 Cloudflare 添加域名,把 DNS 记录改成 Proxied(橙色云)
  2. 在服务器上修改 Web 配置,只允许 Cloudflare 回源 IP 访问 80/443 端口。下载 官方 IP 列表 后,用 iptables 限制:
curl -s https://www.cloudflare.com/ips-v4 > /tmp/cf_ip.txt
for ip in $(cat /tmp/cf_ip.txt); do
    iptables -A INPUT -p tcp --dport 80,443 -s $ip -j ACCEPT
done
iptables -A INPUT -p tcp --dport 80,443 -j DROP

完成后,攻击流量会先经过 Cloudflare 清洗,服务器压力骤降。

常见问题与避坑说明

Q:限速后自己打不开网站了?
A:检查 iptables 规则中是否放行了白名单 IP(比如你自己的办公公网 IP)。可以用 iptables -I INPUT -s 你的IP -j ACCEPT 插入到规则最前面。

Q:攻击流量超过服务器带宽上限怎么办?
A:限速和防火墙只能减轻 CPU 负载,如果带宽被占满,必须联系机房或购买更高防御。此时可临时添加 Cloudflare Spectrum,或者直接关掉非核心服务。

Q:规则重启后丢失?
A:参考前面 iptables-persistent 安装步骤。宝塔面板重启后规则不会丢,因为其规则存储在 /etc/firewall/ 中。

效果验证:确认攻击已被缓解

执行以下命令对比攻击前的数值:

# 查看当前实际连接数(尤其是 SYN_RECV 是否下降)
ss -ant | grep SYN_RECV | wc -l

# 查看网卡流量(是否恢复到正常值)
iftop -t -s 10

# 宝塔面板用户直接看实时负载图

通常 1-2 分钟内,CPU 占用会从 100% 降到 30% 以下,网站首页可正常打开。
如果此时攻击源改用大流量硬打,则说明需要更高防护,但至少你已经争取到了时间。

看完这套方案,建议先按步骤操作一遍,同时向云服务商或安全公司申请应急清洗。
低配置机器不是无法自救,关键是先堵住连接入口,再用 CDN 做外层过滤。
希望这份教程能帮你安稳度过被攻击的第一小时。

分享到:
上一篇
Docker 容器资源限制,防止被恶意占用
下一篇
用大模型写运维配置,导致安全漏洞被利用
1
系统公告

泽御云五一特惠活动🔥

泽御云持证合规运营,资质齐全可查,长久稳定! 五一限时多重福利同步开启: ✅ 香港 2 核 2G 云服务器超值拼团,低价入手团长免费 ✅ 4 核 4G 多机房年付拼团,性价比拉满 ✅ 内蒙古新区限时 7 折(zeyuyunnmg)特惠,专属优惠码锁价续费 ✅ 全站通用 75 折优惠,老用户充值享专属赠金 官方站点:zeyuyun.com 合规资质齐全|售后有保障|活动限时错过不再有
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意