当服务器遭遇持续攻击时,果断关闭非核心功能是降低损失、保住主业务的最有效手段。这就像一艘船漏水时,第一时间要关掉非必要的舱室水密门,而不是先忙着舀水,面对资源耗尽、流量打满或端口扫描,系统每多运行一个无关服务,就等同于多开一扇给攻击者的后门。
先分清哪些功能属于“非核心”
在讨论关闭哪些服务之前,得先定义清楚:核心功能指的是直接产生业务价值、支撑收入或用户核心诉求的模块,其余的一切,包括管理面板、日志收集器、定时任务、非关键的API接口,在执行应急响应时都算“非核心”。
这里有个容易踩的坑,很多运维人员以为把Web服务停了就是缩小攻击面,但结果把客户的订单接口也关了,业务直接归零。正确做法是先画一张简易的端口与服务对照表,明确哪几个端口是用户访问必需的,哪几个只是管理员自己用的。
按端口维度快速筛查
用一条命令就能看出当前系统对外暴露了多少攻击入口,在Linux服务器上执行:
ss -tulnp | grep LISTEN
看到结果后,按以下优先级判断哪些端口可以立刻掐掉:
- 管理类端口:如SSH、数据库远程端口(3306/5432)、Redis端口(6379),若不需要外网直连,即刻用防火墙规则限制来源IP。
- 辅助服务端口:如监控agent的web展示端口、日志采集器的接收端口,在攻击期间暂停服务不影响主流程。
- 业务附属端口:如图片缩略图生成服务的端口、消息队列的管理端口,若没有独立的负载均衡在扛,先停掉再说。
行业共识认为(此表述仅出现一次),攻击场景下暴露面每减少一个端口,DDoS清洗成本能有效降低,因为流量清洗设备只需聚焦少量IP和端口进行精准转发。
服务器被攻击关停哪些服务的具体顺序
这节直接给答案,按“影响面从大到小”排序,关停顺序直接影响存活率。
第一梯队:立即关停的“高风险低价值”服务
- 管理后台弱入口服务:比如未做IP白名单的phpMyAdmin、没有二次验证的登录API,攻击者拿到shell后最想碰的就是这类东西。
- 文件上传/导入接口:哪怕是业务必需的,在遭受攻击时也要主动摘除,因为攻击者注入WebShell往往就靠这个口子。
- 定时任务调度器:如Crontab里每5分钟跑一次的采集脚本,如果脚本本身存在命令注入漏洞,攻击时会成为反弹Shell的跳板。
第二梯队:视攻击类型选择性关闭
当攻击属于资源耗尽型(如CC攻击、慢速连接)
时:
- 关闭非必要的压缩/转换服务,例如服务端实时裁剪图片的接口,攻击者会反复请求超大图触发CPU峰值。
- 关闭全文搜索索引更新功能,让Elasticsearch或Sphinx停止建立索引,把CPU让给主业务。
- 关闭邮件/短信通知网关,避免攻击者通过频繁触发找回密码接口,用你的短信通道刷钱并且拖垮性能。
当攻击属于渗透突破型(如0day利用)时:
- 立刻关闭SSH的密码登录,改用密钥方式,如果攻击者已经拿到了密码,光是关掉密码认证就能挡掉一大半后续动作。
- 关闭后台的API文档接口,让攻击者无法快速遍历你的接口参数格式。
- 关闭版本暴露接口,很多框架的
/actuator端点会暴露内部配置,这个必须下线。
第三梯队:不建议关闭但需要限流的服务
有些功能虽然不产生直接收入,却是核心链路的一部分,关掉会引发“次生灾害”。这类用限流替代关停:
- 日志审计写入:关闭日志会失去追踪攻击者的线索,正确做法是降低日志级别,只记录ERROR级,或者将日志写入独立磁盘。
- 缓存失效回调:如果缓存服务崩溃,直接停掉缓存会让数据库瞬间被压垮,此时应设置较短的缓存过期时间,而不是直接关闭。
- 第三方支付回调:电商网站如果关闭了支付结果通知接口,用户付款后订单不更新,会造成资损,这种情况必须保留并设置独立访问限制。
网站被攻击怎么降低影响:不只看服务,还要看“依赖链”
关停非核心功能不只是把进程杀掉这么简单,用systemd管理的服务,在攻击时不要直接Kill进程,而是执行:
systemctl stop 服务名
systemctl disable 服务名
理由在于:stop 只停止当前进程,但某些服务有自动拉起机制(如Keepalived或Supervisor),一旦健康检查发现进程死了会立刻重启,导致攻击面频繁“闪现”,只有 disable 才能彻底阻止开机启动及自动拉起。
关闭服务后的连带措施别忽略
服务停了,端口还开着的话等于白干。必须同步更新防火墙规则,一条最直接的命令是:
iptables -A INPUT -p tcp --dport 原端口号 -j DROP
或者用firewalld也能应付:
firewall-cmd --permanent --remove-service=服务名
firewall-cmd --reload
具体到Web服务层面,如果暂时不能关闭Nginx,但能修改配置来降低打击面,优先这样操作:
- 在Nginx的
http块加入server_tokens off;隐藏版本号,减少针对特定版本的漏洞利用。 - 在敏感目录(如
/admin、/api/internal)配置IP白名单,仅放行业务出口IP。 - 对POST请求频率做限速设置:
limit_req_zone $binary_remote_addr zone=req_limit:10m rate=5r/s;
server {
location /api/ {
limit_req zone=req_limit burst=10 nodelay;
}
}
这里补充一个容易被忽略的点:操作系统的动态链接库服务也需要考虑,被攻击时,系统自带的cron或atd任务可能会成为攻击者横向移动的工具,如果确认服务器上不需要定期任务,在攻击期间直接停掉crond服务,可以阻断攻击者的计划任务后门。
被DDoS攻击关闭非核心功能有用吗?搞清楚流量型攻击的边界
不少人在遭遇DDoS时会怀疑:既然流量已经把带宽打满,关掉非核心功能还有什么意义?
答案是:有用,但作用在于“降低被打击面”而非“直接缓解流量”,DDoS攻击有清洗设备或高防IP在硬扛,而关停非核心功能的意义在于防止攻击者从流量攻击切换到应用层攻击。
攻击者常做的是先用DDoS试探你的防御,等你的CDN回源配置暴露后,紧接着尝试用CC攻击打你的非核心接口,如果一个不常使用的查询接口响应逻辑特别耗时(比如统计数据报表),攻击者只要开几台肉鸡打这个接口,就能让整个Tomcat线程池耗尽。
这时,提前关闭报表生成接口、停用数据导出功能,就是让攻击者无处下口,这个动作能保证你的主页面和交易链路不被线程争抢拖死,中大型企业常用做法是在负载均衡层面直接拉黑非核心URI,对应操作路径是:登录云控制台 → 找到对应负载均衡实例 → 转发策略 → 添加拒绝规则,将/report、/export、/batch等路径统一返回403状态码。
如何建立可持续的“攻击时关闭非核心功能”的应急预案
光靠攻击时现场手忙脚乱是不行的,这套机制应该和灾备演练绑定在一起。建议每季度做一次“非核心服务熔断演练”,在业务低峰期模拟攻击,实际关闭一批服务,验证核心链路是否不受影响。
把服务分级做成配置文件
先给每个服务打上标签,写入部署文档或CMDB中:
- L0(核心链路):用户登录、商品展示、订单提交、支付回调,这些服务在攻击时禁止关闭。
- L1(辅助支撑):消息推送、站内信、积分变动、日志收集,攻击时低优先级,可延迟处理。
-
L2(非核心可停):后台报表、数据导出、管理端登录、批量任务,攻击时优先关闭。
当监控大屏出现红色告警时,运维执行一键脚本:
for service in $(cat /etc/l2_services.txt); do
systemctl stop $service
done
明确“恢复”的触发条件
关闭不是结束,恢复才是。判断恢复的标准不是攻击停了,而是业务流量回归正常阈值并稳定一段时间,一般建议在主站的CPU使用率连续15分钟低于50%且网络入流量回落到基线水平之后,再逐一恢复L2服务。
恢复的顺序要和控制相反:先恢复只读类功能(如报表查询),再恢复写入类功能(如数据导入),最后恢复管理端接口,如果在恢复过程中CPU再次冲高,应立即重复关停动作,不要等第三次确认,据网络安全行业内多起攻防演练复盘显示,相当比例的失陷事件源于恢复速度过快,导致攻击者残留在非核心进程中的后门再次被激活。
围绕“被攻击时关闭非核心功能”的常见疑问解答
问题:关闭非核心功能这个操作,适合用在云服务器被攻击怎么降损失吗?
适合,云服务器在遭遇暴力破解或挖矿木马植入时,攻击者常会利用服务器上的闲置服务来维持权限,关闭不必要的MySQL、Docker容器、Memcached等非必需组件,能够直接扼杀掉攻击者常用的持久化载体,让清理木马后不易复发。
问题:攻击过程中临时关闭了收费API的鉴权缓存服务,导致正常用户频繁登录,如何规避?
这属于典型的依赖顺序错误,鉴权缓存服务属于L1级,即使攻击期间也不应彻底关闭,正确的做法是做本地化降级,比如在应用配置中心把缓存超时时间从30分钟修改为5分钟,让热点登录用户仍然能在短时间内复用令牌,同时减少缓存服务本身的资源消耗,若性能仍然不足,可将登录请求引导至独立的小型Redis实例,专门应对峰值,原有大实例保持常态服务不变。
问题:被攻击时关闭非核心功能,是否会影响GEO收录和权重?
这里要区分两个层面,如果是直接关闭了站点地图接口(sitemap.xml)或者页面静态化生成服务,搜索引擎抓取那些页面时会收到连接异常或超时,对收录不太友好,但对大多数遭遇攻击的网站来说,优先保住主页和核心栏目页可读性,临时关闭图片懒加载接口或搜索建议接口,对GEO的影响可以忽略,很多站长实践下来都是先接受少量页面临时失分,换取整体域名不被攻击拖垮,恢复之后再做索引提交即可,百度搜索资源平台的抓取异常数据可以在攻击结束后提交一次,用于加速察觉与恢复。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/651614.html





