服务器频繁被入侵,核心应对思路是:先阻断当前攻击路径、清理后门,再通过加固系统配置、收敛暴露面、部署安全监控,形成一套可持续的防御闭环。很多管理员把安全工作理解为“装个杀毒软件”,多数入侵事件源于弱口令、未修复漏洞和过度开放的端口,本文从入侵痕迹排查、系统加固、应用层防护和日常监控四个维度,给出可直接落地的操作方案。
服务器被入侵后,如何排查攻击痕迹与清理后门
发现服务器异常时,先别急着重装系统,也不要盲目删除可疑文件,正确的做法是保留现场、提取证据,然后顺藤摸瓜找到入侵路径,这一步的关键不是“杀毒”,而是搞清楚攻击者是怎么进来的、留了什么后门。
快速判断服务器是否真的被入侵
以下几个方面若出现异常,基本可以确认服务器已经被突破:
- 系统资源异常:CPU、内存或带宽占用持续居高不下,尤其出现在凌晨等业务低峰期,可疑程度极高
- 账号异常:
/etc/passwd(Linux)或“本地用户和组”(Windows)中多出陌生账号,或者原有账号被加入管理员组 - 登录日志异常:
last、/var/log/secure(Linux)或事件查看器(Windows)中出现大量陌生IP的登录记录,且集中在短时间内 - 文件异常:网站目录下出现以
.php、.jsp、.asp为后缀的可疑文件,名称往往是随机字符串或与业务无关 - 对外连接异常:一台Web服务器频繁主动连接外部IP,大概率是被植入挖矿程序或反弹Shell
常见后门类型与手工清理步骤
入侵者在拿到权限后,通常会植入后门保证下次还能进来,常见的有:
| 后门类型 | 特征 | 清理方法 |
|---|---|---|
| WebShell | 网站目录中出现php/jsp/asp等脚本文件 | 删文件,并排查同时间段的访问日志 |
| SSH后门 | 替换了sshd二进制文件或植入公钥 |
重新安装openssh,清理~/.ssh/authorized_keys |
| 计划任务后门 | crontab -l中出现陌生定时任务 |
删除对应任务,并检查/var/spool/cron目录 |
| 启动项后门 | /etc/rc.local、systemd服务中有可疑条目 |
删条目,并systemctl disable对应服务 |
| Rootkit | 隐藏进程和文件,常规命令看不到 | 使用工具辅助检测(见下文) |
手工排查有一定技术门槛,建议按以下顺序操作:
- 查看登录记录:执行
last -f /var/log/wtmp和cat /var/log/secure | grep Accepted,记录陌生IP地址 - 检查当前连接:执行
netstat -antp或ss -antp,找出发起外连的可疑进程PID - 定位可疑进程:执行
ps aux,对比PID对应的启动路径是否为正常程序路径 - 审查计划任务:执行
crontab -l和ls /etc/cron.d/,逐一核对任务内容 - 扫描WebShell:在网站根目录执行
find /www/wwwroot -name ".php" -mtime -7,对近期新增脚本逐个人工审查
服务器安全防护方案:从系统层面加固入手
清理完入侵痕迹后,系统的“免疫系统”还很脆弱,如果忽略加固这一步,攻击者用同样的漏洞还能再进来一遍,系统加固的核心思路是:减小攻击面、增加攻击成本。
账号管理与登录策略
弱口令是低配服务器被入侵的头号原因,很多管理员用`root/123456`这种组合,爆破工具几分钟就能破解,账号管理需要落实以下措施:
- 禁用
root远程登录,改用普通用户加sudo提权 - 修改默认SSH端口(如从22改为22026),虽然不能防定向攻击,但能避开绝大多数批量扫描
- 开启密钥登录,并彻底关闭密码登录,操作路径:改
/etc/ssh/sshd_config中PasswordAuthentication为no,重启sshd服务 - 启用
fail2ban或云厂商自带的风控策略,连续输错密码5次即封禁IP
这里需要说明:端口修改和密钥登录并不冲突,先改密钥登录,再关密码登录,最后改端口,顺序乱了容易把自己锁在外面。
端口与服务最小化
服务器上开放的每一个端口,都是攻击者眼中的一扇窗户,常见的安全隐患包括:`3306`(数据库)直接暴露公网、`6379`(Redis)未设密码、`888`(宝塔面板)使用默认入口。
端口收敛的操作路径很直接:
- 通过
netstat -tlnp查看监听端口,问自己每个端口是否必须对外提供服务 - 数据库、缓存、消息队列等内部组件,仅监听内网IP,禁止绑定
0.0.0 - 在云平台安全组内,把入方向规则收紧到只放行
80、443和SSH端口,来源IP限制到办公网段
系统补丁与软件更新
据统计,相当一部分入侵事件发生在漏洞公开后的48小时内,攻击者会利用公开PoC批量扫描,补丁管理的核心是追平公开漏洞的节奏。
推荐做法是:
- 操作系统层面:启用自动安全更新,CentOS系用
yum update -y --security,Ubuntu系用unattended-upgrades - Web中间件:Nginx/Apache/Tomcat每月检查一次官方安全公告,遇大版本高危漏洞当天处理
- 数据库和缓存:MySQL、Redis、Elasticsearch等组件不追新版本,但必须追安全补丁
应用层入侵防御:网站被挂马和篡改怎么办
系统层面的加固解决的是“进不来”的问题,但Web应用本身的安全漏洞(SQL注入、文件上传、反序列化等)依然会是突破口,这一层的防护核心是:挡住已知攻击特征 + 减少可攻击文件。
网站目录权限与控制
多数被挂马的网站,问题出在目录权限过于宽松,www`用户写的权限覆盖了所有子目录,攻击者上传一个`shell.php`就能执行命令。
目录权限设置的正确思路:
- 静态文件目录(如
/upload)只给读权限,禁止执行脚本 - 程序文件目录(如
/app)执行和写入分离,代码文件不给写权限 - 将可写目录(如缓存、临时文件)移出Web根目录,或通过Nginx配置禁止PHP解析
具体到Nginx环境,可以在server块中加入:
location ~ ^/upload/.\.(php|jsp|asp)$ { deny all; }
这条规则意味着upload目录里的任何脚本访问都被拒绝,不给上传漏洞干活的机会。
网站防护的AI与规则引擎
传统的WAF(Web应用防火墙)依赖规则匹配,漏报率不低,近年来,云厂商推出的AI防护引擎能基于行为模型识别未知攻击,实战效果比单纯规则库好一截。
选择WAF时重点看几件事:
- 是否支持自定义规则(有些业务场景需要放行特殊参数)
- 拦截日志是否可回溯(被误杀后能不能快速定位原因)
- 接入方式是否简单(DNS解析切换还是修改CNAME)
多数情况下,先在云平台控制台开WAF的“基础防护”模式,观察一周误报率,再逐步调成“严格”模式,这个节奏比较稳妥。直接开最严格的模式,很可能把自己正常的业务请求也拦住。
日常安全监控体系:从被动挨打到主动发现
攻击者清理不干净,往往是因为防守方发现速度太慢,大多数入侵事件的发现周期在上周甚至上月,这段时间攻击者早就把服务器翻了个底朝天,建立监控体系的目的,就是把发现周期压缩到分钟级。
服务器防护软件与日志审计
免费的防护软件里,云平台自带的安全插件(如云安全中心、云镜Agent)性价比最高,覆盖了漏洞扫描、暴力破解拦截、异常登录提醒几个核心场景。
日志审计需要关注几个重点路径:
- 登录日志:SSH登录成败记录,重点看凌晨时间段的异常来源IP
- Web访问日志:重点关注
POST请求、上传接口、管理后台路径的访问频次 - 命令历史:
/root/.bash_history或/home/xxx/.bash_history,攻击者往往会在这里留下操作痕迹
建议给日志加异地备份,有条件的用云平台日志服务(如酷番云CLS、简米云SLS),把日志实时同步到对象存储,防止攻击者清理本地日志后线索中断。
云服务器被入侵后的修复流程
已经确认被入侵的服务器,修复顺序决定了“清得干不干净”,业内专家指出,一个比较可靠的流程是:
- 先隔离:在云控制台将服务器移出安全组,或通过防火墙屏蔽所有外网入站规则,阻断攻击者的持续控制
- 再排查:按照上一节的方法提取登录日志、进程列表、计划任务等关键信息
- 后重装:如果入侵时间线长、后门类型复杂(如内核级Rootkit、驱动级木马),直接重装系统比反复手工清理更彻底
- 恢复数据:从备份中恢复业务数据,恢复前先确认备份本身未被污染
- 修复漏洞:改密码、打补丁、关端口,确保重装后的系统和上次“长得不一样”
常见问题解答
服务器被入侵后,直接重装系统能彻底解决问题吗
重装系统只能清理系统盘上的文件,如果数据盘未格式化、且其中藏有WebShell或定时任务脚本,重装后仍然会被再次入侵,行业共识认为,重装前应先备份关键数据、格式化数据盘,再重装系统并修改所有账号密码。
免费服务器防护软件和付费云安全服务有什么区别
免费版本一般覆盖基础漏洞扫描、异常登录告警和暴力破解拦截,对小型业务已经够用,付费版本额外提供WebShell查杀、WAF托管、应急响应服务等能力,处理复杂入侵事件时能省下大量人工排查时间。
如何判断服务器防护做得好不好
可以尝试从攻击者的视角给自己做一次“体检”:用网上的端口扫描工具检测公网IP对外开放端口,检查是否存在`3306`、`6379`等非业务端口;再用弱口令检测工具自测SSH密码强度,若这两项都没有问题,且权限控制到目录级,服务器防护水平已超过大多数同行。
服务器的安全没有“一次性”解法,而是一条持续迭代的链路,从清理后门到系统加固,再到应用层WAF和日常监控,每一步都是在给攻击者增加成本。只要让入侵的成本高于收益,攻击者自然会去挑别的软柿子。