服务器遭遇流量攻击,服务器访问流量过高如何处理

服务器运行卡顿,带宽被占满,用户访问超时,碰到这类故障,优先不要直接重启服务器,先区分是网络攻击,还是业务流量自然上涨。两种情况处理方式完全不同,误判会加剧故障。

使用Linux服务器,几条命令就可以快速排查状态。ss -nt state SYN-RECV | wc -l 统计半开连接会话数量。正常场景这个数值一般为个位数到几十,数值飙升到几百上千,大概率遭遇SYN Flood攻击,握手队列被占满。新版Linux系统默认不再预装netstat,ss工具就能完成查询。

接着查看流量分布。iftop -n -P 实时展示各连接占用带宽,按流量大小排序。大量陌生IP同时向服务器传输数据,单一IP段占用八成以上带宽,属于DDoS典型特征。没有安装iftop,cat /proc/net/dev 可以查看网卡进出总流量,确认带宽是否跑满。再执行 ss -nt | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr,按连接数量从高到低列出所有对端IP。单个IP短时间建立数百条连接,基本可以判定异常访问。

服务器遭遇流量攻击,服务器访问流量过高如何处理

内核日志同样值得查看。dmesg | tail -50,输出内容如果出现 possible SYN flooding 或者 nf_conntrack: table full, dropping packet,可以确认TCP层洪水攻击。部分云厂商接管底层内核日志,没有相关输出不代表不存在攻击,需要结合连接数综合判断。

CC攻击容易误判,特征和流量型DDoS有明显区别,带宽不一定打满,但CPU资源耗尽,网站响应缓慢。排查方式统计80、443端口已建立连接,ss -nt state ESTABLISHED | grep :80 | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr。CC攻击请求来源IP往往相对集中,不像DDoS分散在海量IP。同时查看Nginx访问日志,cat /var/log/nginx/access.log | awk '{print $1}' | sort | uniq -c | sort -nr | head -20,排名靠前IP反复请求搜索页、登录接口这类动态页面,基本可以确认CC攻击。

确认遭受攻击之后,第一步收紧安全组。云服务器安全组修改便捷,见效直接。入方向规则关闭所有非必要端口,仅保留业务需要的80、443。SSH端口如果限定固定办公IP访问,就设置来源限制,没有固定IP,至少修改默认22端口。3306、6379这类数据库端口,禁止对公网开放。

安全组作为第一道防护,iptables作为第二道。攻击期间下面几类规则效果明显:限制单个IP并发连接,iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 50 -j DROP,避免单个IP耗尽连接池。限制新建连接速率,iptables -A INPUT -p tcp --syn -m limit --limit 1/s --limit-burst 3 -j ACCEPT,搭配后续DROP规则,缓解SYN Flood。同时限制ICMP数据包,iptables -A INPUT -p icmp -m limit --limit 10/minute -j ACCEPT,抵御ping洪水。不用一次性添加全部规则,优先配置connlimit与SYN限速,观察效果再决定是否继续收紧。需要留意,iptables很难防御CC攻击,CC属于应用层请求,流量形态和正常HTTP访问一致,防火墙层面无法区分。

攻击流量超出服务器带宽上限,本机防火墙策略再严格也无法拦截,流量抵达iptables之前就已经占满带宽。这时需要上游流量清洗能力。主流云厂商为公网IP提供免费DDoS基础防护,上限大多在5 Gbps。流量超过阈值,云平台会将实例放入黑洞,丢弃所有访问该实例的公网流量。黑洞状态服务器对外断网,攻击停止自动解封,华为云黑洞默认24小时自动解除,如果攻击持续,IP会再次封堵。

黑洞属于保护机制,但业务会直接中断。想要减少黑洞触发概率,可以升级高防IP。高防IP原理是把业务IP隐藏在清洗节点后方,用户访问高防IP,攻击流量在清洗中心过滤,干净流量回源至源服务器。这套方案可以承载远高于基础防护的攻击流量,代价是每月额外付费。

Web业务场景,高防CDN是另一项可选方案。内容分发与流量清洗在边缘节点完成,攻击在靠近用户一侧拦截,源站IP不暴露,黑洞风险随之降低。但高防CDN仅支持HTTP、HTTPS协议域名接入,如果业务采用原生TCP连接,例如游戏登录、数据库直连,要选用高防IP或者TCP安全加速服务。

攻击期间几项操作不能遗漏。保存当前网络连接快照、进程列表、Nginx访问日志,作为后续溯源复盘材料。攻击同时伴随入侵迹象,例如陌生进程、crontab被篡改、出站流量指向境外IP,就不只是单纯流量攻击。服务器本地日志可能被攻击者清理,依靠云防火墙独立存储的流量日志还原攻击时序,服务器本地操作无法删除这类记录。

业务允许短暂中断的情况下,恢复阶段从备份重建实例,比在原有服务器清理故障更稳妥。重建之后不要立刻开放公网,安全组规则、系统补丁、账号口令策略全部配置完成,再逐步放开访问。

日常准备比应急处置更值得投入精力。梳理安全组规则,关闭闲置端口。Nginx配置单IP请求限速,limit_req_zone $binary_remote_addr zone=req_limit_per_ip:10m rate=10r/s,无法抵御大规模攻击,但可以拦截慢速CC和爬虫。提前配置云监控带宽、连接数告警,等到用户反馈页面打不开再排查,往往已经滞后十几分钟。

免责声明:本文提供的方法与建议仅供技术参考,实际部署效果受机房环境、运营商线路、系统配置等多重因素影响。请在专业人员指导下操作,因自行操作导致的业务损失本站不承担责任。

相关推荐