企业官网和业务系统服务器确实能防住DDOS攻击,但前提是别把希望全押在单台服务器上以低成本组合云防护、CDN和本地应急策略,多数中小流量攻击都能被挡在门外。
中小网站服务器遇到DDOS攻击怎么办
很多小公司第一次遭遇DDOS,场景往往是相似的:上午十点,客服反馈“网站打不开了”,运维登录服务器一看,CPU跑满、连接数爆炸、带宽被塞死,这时候的第一反应是“加带宽”或者“换更高配置”,实际上这是最烧钱且效果最差的路子。
先判断攻击类型再动手
DDOS不是一种攻击,它是很多种攻击的统称,常见的类型有:
- 流量型攻击:UDP Flood、ICMP Flood,直接把带宽打满,特征是服务器负载不高但网络入口拥堵
- 连接型攻击:SYN Flood、TCP全连接攻击,特征是服务器连接数暴涨,CPU和内存飙升
- 应用层攻击:HTTP Flood、慢速攻击,特征是Nginx或Apache日志里有大量重复请求
不同攻击类型对应不同应急手段,流量型攻击你没法在服务器上硬扛,只能靠上游清洗;连接型和应用层攻击则可以通过系统参数和Web服务器配置做一定程度的缓解。
应急响应三步走
真被打的时候,按这个顺序操作:
- 登录云厂商控制台,开启流量清洗,简米云、酷番云的服务器默认带5Gbps左右的免费DDoS基础防护,一般攻击强度下会自动触发清洗,如果攻击超过基础阈值,控制台会提示升级为高防IP,按天计费,应急用一天也就几十到几百元
- 在服务器安全组或防火墙里临时封禁来源IP,如果攻击源比较集中,用
netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n看连接排行,把TOP IP段直接drop掉 - 把域名解析切到CDN,多数CDN自带防护能力,源站IP被隐藏后,攻击者只能打到CDN节点,源站压力骤减
行业共识认为,中小企业遇到的大多数DDOS攻击强度都在10Gbps以下,这个量级靠云厂商基础防护加CDN转发就能化解,真正需要买高防硬扛的情况其实不多。
适合小公司的服务器防DDOS方案
预算有限的情况下,防御思路要从“硬扛”转向“分散”,服务器本身的防御能力是有限的,但通过架构调整,可以让攻击者找不到源站、打不透入口。
CDN前置隐藏源站IP(最推荐)
这是性价比最高的做法,把域名解析到CDN,源站只允许CDN回源IP访问,攻击者拿不到真实服务器IP,就只能打CDN节点。
实操路径:
- 在Cloudflare(免费版就够用)或国内云厂商CDN控制台添加域名
- 开启“仅CDN回源”模式,安全组里只放行CDN节点IP段
- 在CDN配置里开启“总是使用HTTPS”和“自动跳转”,减少明文流量暴露
这样做的额外好处是静态资源加载变快,网站访问体验反而提升。
低成本高防IP中转
如果业务必须暴露真实IP(比如有API接口回调),可以用一台按量付费的高防IP做流量中转,具体做法:
- 在云厂商买一个高防IP实例,选择“按量付费”模式,攻击时才会产生费用
- 把高防IP的端口转发指向源站服务器
- 域名解析改为高防IP地址
平时成本几乎为零,只有在被攻击时按清洗流量计费,据业内专家指出,这种模式适合月收入还不稳定的初创项目,把固定成本转成了可变成本。
负载均衡分摊压力
这个方案适合有一台以上服务器的情况,用云负载均衡(SLB)把流量分发到多台机器上,即使其中一台被打挂,其它机器还能继续服务。
配合弹性伸缩策略,当CPU或带宽超过阈值时自动扩容新实例,这样攻击流量会被分散到多台机器上,单台压力大幅降低,不过要注意,这个方法对应用层攻击效果明显,对大流量型攻击帮助有限毕竟带宽入口还是同一个。
百元内服务器防御DDOS的日常配置清单
与其等被打再应急,不如在服务器上线时就把防御配置做好,下面这些操作不花一分钱,却能挡住相当一部分攻击。
系统层面加固
编辑/etc/sysctl.conf,调整内核网络参数:
# 限制SYN半连接队列长度,防止SYN Flood打满内存
net.ipv4.tcp_max_syn_backlog = 1024
net.ipv4.tcp_synack_retries = 1
net.ipv4.tcp_syn_retries = 1
# 缩短TIME_WAIT等待时间,释放连接资源
net.ipv4.tcp_fin_timeout = 10
net.ipv4.tcp_tw_reuse = 1
# 开启SYN Cookie,抵御SYN Flood
net.ipv4.tcp_syncookies = 1
# 限制单个IP的最大连接数
net.ipv4.ip_conntrack_max = 65535
执行sysctl -p生效,这些参数的作用是让系统更激进地释放资源,不跟攻击者“死磕”。
Web层防护配置
Nginx里加几个限制模块:
# 限制单IP并发连接数为10
limit_conn_zone $binary_remote_addr zone=perip:10m;
limit_conn perip 10;
# 限制单IP请求速率为每秒5个
limit_req_zone $binary_remote_addr zone=reqlimit:10m rate=5r/s;
limit_req zone=reqlimit burst=10 nodelay;
这两个配置能有效缓解HTTP Flood和CC攻击,正常用户每秒请求不会超过5个,超过的会被Nginx直接拒绝,不会到达后端应用。
安全组和防火墙规则
不要把所有端口都暴露在公网上,只放行业务必需的端口(80、443、SSH等),数据库端口、Redis端口一律只允许内网访问。
SSH端口建议改成非默认端口,并开启密钥登录,禁用密码登录,这能防止攻击者先拿下服务器,再拿服务器当肉鸡去攻击别人。
Q&A:服务器防DDOS常见疑问
Q:服务器防DDOS要花多少钱?
流量型攻击的防御成本主要看攻击带宽,云厂商的保底防护(5Gbps左右)通常免费,超过后按天或按月计费,一个10Gbps防护的高防IP包月价格在几百到一千元区间,按量付费模式则只有被攻击时才扣费,对多数中小企业来说,免费基础防护加CDN隐藏源站的组合已经能应对大部分情况,额外支出可能只有CDN流量费,每月几十元。
Q:自建机房服务器和云服务器的防御力有差别吗?
自建机房需要自己购买防火墙设备,一台专业的抗DDoS硬件设备价格从几万元到几十万元不等,还需要专人维护,云服务器自带运营商级别的清洗能力,防护位置更靠近骨干网络,攻击流量在进入机房前就被过滤了,从整体拥有成本看,云服务器的防御性价比明显更高,这也是近年来较多企业选择迁移上云的原因之一。
Q:装了防火墙软件就能防住DDOS吗?
软件防火墙(如宝塔面板的Nginx防火墙、ModSecurity)能拦截应用层攻击和部分连接型攻击,但对大流量型攻击无能为力流量已经把你家带宽塞满了,软件根本没机会处理数据包。真正的防线需要多层配合:网络层靠云厂商清洗,传输层靠内核参数和防火墙规则,应用层靠Web服务器限制和业务逻辑校验,任何单点防御都扛不住系统性攻击。
服务器防DDOS的核心结论很简单:别跟攻击者拼硬件,要跟他拼架构,用CDN藏住源站、用云防护扛流量、用系统参数扛连接,三层配合下来,大多数中小企业遇到的攻击规模都能被低成本化解,防御这事不是一锤子买卖,服务器每上线一个业务,都应该同步检查一下这些配置是否到位。