一、先分清是哪一类 “被攻击”
1、流量型
带宽或每秒请求数被打满。表现是所有人访问都慢、甚至完全不通,但服务器本身可能还活着 —— 登录进去看,CPU 和内存反而不高。这一类的特征是 “网络堵了,机器没病”。
2、连接型
带宽没满,CPU 和连接数很高。慢连接、大量半开连接、频繁请求同一个动态接口,都属于这一族。特征是 “请求很小,但量很大,且专门挑消耗资源的地方打”。
3、入侵型
机器已经不是你的了。表现包括:陌生进程长期占 CPU(常见是挖矿)、对外发起大量连接、被投诉发送垃圾邮件、出现陌生账号和计划任务、磁盘里多出看不懂的文件。
4、常见的误判
业务自己暴涨、配置改错导致资源耗尽、上游依赖故障、监控口径错误,这些看起来都像被攻击。先看一眼变更记录,能省掉很多排查。
二、止损:按类型走不同动作
1、流量型
接入清洗服务、把流量切到高防节点、临时限速、必要时先黑洞掉异常来源再逐步放开。核心目标是保住可用性,不是找出发起者 —— 按流量来源追查,通常追不到。
2、连接型
在入口层限流、上规则拦截异常请求特征、缩短超时时间、对高危接口加验证。同时看住连接数上限和文件描述符上限,别让系统在限流生效前先被拖死。
3、入侵型
第一动作是隔离,不是重启。切断外网、保留内存与网络连接现场、导出日志,然后重装。已经被控制的机器,任何 “清理” 都不彻底 —— 留后门的手法比清理的手段多。
4、止损优先于追因
业务断了的时候,先恢复再追查。把现场固化成快照和日志,事后再慢慢分析。
三、安全组怎么配才管用
1、默认拒绝入站
先把默认策略设为拒绝,再逐个放行必要端口。反过来做(默认放行、逐个封禁)几乎必然漏。
2、源地址限制
管理端口(SSH、远程桌面、数据库管理口)只允许固定 IP 或跳板机访问。这一条能挡掉绝大多数自动化扫描和弱口令爆破。
3、分层暴露
公网只暴露负载均衡或反向代理,应用服务器和数据库放在内网,不直接对公网开放。数据库端口暴露在公网,是最常见的高危项。
4、出站也要管
不只管进来,也管出去。限制机器对外的目的端口和地址,能抑制挖矿回连、数据外传、被当作跳板。出站全放开,等于给攻击者留了一条运货通道。
5、定期审规则
临时放行的规则最容易忘了收。建议每季度过一遍,把来源为 “任意” 的规则逐条确认。
四、云服务器被入侵之后必做的几件事
1、保现场
进程列表、网络连接、登录记录、计划任务、启动项、最近修改的文件。这些在本机日志里,但攻击者也会删,导出要快。
2、找入口
弱口令、未打补丁的组件、上传功能、暴露的管理端口、第三方依赖漏洞。找到入口才知道其他机器有没有同样的洞。
3、重装而不是修复
系统盘重建、数据从可信备份恢复。恢复之后先补洞,再接入网络。
4、换凭证
密钥、密码、令牌、API key,全部视作已泄露。包括这台机器能访问的其他系统的凭证。
5、判断是否需要通报
如果涉及个人信息或业务数据外泄,按相关规定处理,别自己压着。
五、平时的低成本加固
1、缩小暴露面
不必要的端口关掉,不必要的服务卸掉,不必要的账号删掉。暴露面越小,被盯上的概率越低。
2、补丁跟紧
公开漏洞披露之后,被利用往往就在几天内。补丁节奏要跟上,尤其是对外暴露的组件。
3、最小权限
服务用非特权账号跑,数据库账号按需授权,别用超级用户办所有事。
4、日志外送
本机日志会被篡改和删除。集中收集到另一台机器或日志服务上,至少留一份改不掉的。
5、备份离线
勒索和删库是第一大破坏方式。有一份与网络隔离的备份,是最后的退路。