服务器与大带宽专家 · 持牌IDC/CDN/ISP服务商
简米科技官网JIANMI TECH
资讯 2026-10-23 简米科技 3,668 字 9 分钟阅读

服务器被攻击导致内部错误如何快速修复?,服务器内部错误怎么排查修复

导读服务器被攻击导致内部错误时,最快的排查路径是先看日志、再查进程、最后断网隔离,多数情况下能在30分钟内定位问题,别一上来就重装系统,那样反而丢了攻击痕迹,下面这套流程是运维圈子里经常用的实战手法,按着走能省不少时间,服务器被攻击怎么排查?先分清故障类型网站打不开但服务器能Ping通,先看是不是带宽被打满这是最典……

服务器被攻击导致内部错误时,最快的排查路径是先看日志、再查进程、最后断网隔离,多数情况下能在30分钟内定位问题。别一上来就重装系统,那样反而丢了攻击痕迹,下面这套流程是运维圈子里经常用的实战手法,按着走能省不少时间。

服务器被攻击怎么排查?先分清故障类型

网站打不开但服务器能Ping通,先看是不是带宽被打满

这是最典型的场景,用户访问网站提示“500 Internal Server Error”或者直接超时,但你在本地Ping服务器IP却是通的,这时候别急着连SSH,先登录云服务商控制台,查看出入方向带宽监控图。

如果入方向带宽曲线接近上限,说明大概率是流量型攻击,也就是DDoS,行业共识认为,DDoS攻击占服务器被攻击原因的较大比例,而且现在攻击成本极低,几百块钱就能打一天。

处理方式分两层:

  • 没上高防的服务器,先把IP切到CDN或高防IP后面,别让源站IP暴露。
  • 已经上了高防但还被打穿,检查是不是源站IP泄露了,比如域名解析记录里历史A记录没删干净。

服务器能访问但页面报500错误,优先查Web日志

如果带宽正常,服务器也响应,但页面就是报500,这属于应用层攻击导致的内部错误,常见原因有:

  • 攻击者利用漏洞上传webshell,导致PHP或Java进程崩溃。
  • 恶意爬虫把数据库连接池打满,应用拿不到连接,直接抛异常。
  • 暴力破解SSH成功后植入挖矿程序,CPU跑满,Web服务响应不过来。

登录服务器后,第一步不是看进程,而是看日志,具体路径因环境而异:

  • Nginx日志:/var/log/nginx/error.log
  • Apache日志:/var/log/apache2/error.log 或 /var/log/httpd/error_log
  • PHP日志:/var/log/php-fpm.log 或 php.ini里配置的错误日志路径
  • 系统认证日志:/var/log/auth.log(Debian系)或 /var/log/secure(CentOS系)

用tail -100命令看最近100行,如果日志里疯狂刷同一个IP或同一个请求路径,基本就能锁定攻击源。

网站被攻击了怎么处理才不扩大损失

先隔离再查因,防扩散是第一位

很多新手一发现被攻击,马上就去删文件、改密码,这其实可能打草惊蛇,正确的做法是先切断影响范围:

  1. 在云控制台的安全组里,把Web端口(80/443)入方向规则暂时只放行你的办公IP。
  2. 如果已经确认有异常进程在跑,直接vnc进去执行命令:ps aux --sort=-%cpu | head -20,看看哪个进程吃掉大量CPU。
  3. 不确认对方是否拿到root权限时,不要在原系统上改密码,那样相当于改给攻击者看,直接做快照,然后重置系统盘。

隔离的同时,保留一份系统快照作为证据,这在后续追查攻击路径和报警时都用得上。

日志定位到具体攻击类型,再决定修复方案

隔离之后,继续回到日志分析这一步,业内专家指出,多数服务器被攻击的痕迹都会在日志里留下异常模式,关键在于你读不读得懂。

拿最常见的几种攻击类型举例:

攻击类型 日志特征 快速处理方案
暴力破解SSH auth.log中大量Failed password记录 禁用密码登录,改用密钥,安装fail2ban
WebShell上传 nginx日志中出现.php文件POST请求,文件在upload目录 删除Shell文件,修复上传接口鉴权漏洞
挖矿程序植入 CPU占用率异常高,/tmp或/var/tmp下有空跑的可执行文件 kill进程,删除文件,修补Redis或Docker暴露端口
SQL注入 日志中请求参数带有union select或sleep(0.1) 开启数据库防火墙,Web层加WAF规则

服务器内部错误修复实操步骤

修SSH暴力破解:改密钥登录加IP黑名单

SSH端口被狂扫是服务器被攻击最常见的前兆,也是最容易导致后续被入侵的入口,如果你发现auth.log里有大量来自不同IP的登录尝试,按照下面步骤操作:

# 1. 生成密钥对并在本机保存好私钥
ssh-keygen -t ed25519 -f ~/.ssh/server_key
# 2. 把公钥追加到服务器authorized_keys
ssh-copy-id -i ~/.ssh/server_key.pub root@服务器IP
# 3. 修改sshd配置禁用密码登录
vi /etc/ssh/sshd_config
# 修改两项:
# PasswordAuthentication no
# PermitRootLogin prohibit-password
# 4. 重启sshd服务
systemctl restart sshd

装fail2ban的时候,默认配置直接能用,它会自动封禁连续输错密码的IP,注意不要把自己办公IP封了,在/etc/fail2ban/jail.local里加一行ignoreip。

清理webshell和恶意文件:先找后删再堵

确认有webshell被上传后,不要直接删了完事,要找到上传入口,常见路径:

  • WordPress插件漏洞上传到/wp-content/uploads/
  • 后台编辑器漏洞写入主题文件
  • 文件上传接口没做类型校验,直接被传了.php文件

查找webshell可以用一句话命令:

grep -r "eval(" /var/www/html --include=".php" -l
grep -r "base64_decode" /var/www/html --include=".php" -l

找到文件后先备份然后删除,再检查对应入口文件的上传逻辑,如果实在找不到入口,就直接重装应用层,比如把WordPress重新覆盖一遍核心文件,然后修改所有后台密码和数据库密码。

处理挖矿病毒:结束进程然后清残留

挖矿程序的典型特征是CPU跑满,且启动命令里带有一个可疑的URL(矿池地址),处理步骤:

# 1. 查看CPU占用最高的进程
top -c
# 2. 强制结束进程
kill -9 进程PID
# 3. 查看进程关联的可执行文件位置
ls -l /proc/进程PID/exe
# 4. 删除对应的文件,清理计划任务
crontab -l
crontab -r
# 同时检查 /etc/cron.d/ 目录下的可疑脚本

挖矿程序常在/tmp目录下运行,清理完别忘检查防火墙和SSH配置,因为攻击者可能已经改了公钥。

服务器被ddos攻击之后的防御配置

启用云WAF和速率控制,别全裸上阵

近年来,国内云厂商的基本套餐里都自带免费的低配WAF,虽然不是所有攻击都能拦住,但对付中小规模的CC攻击够用了,如果你用的是简米云或酷番云,控制台里都能一键开启。

Web应用防火墙主要拦截SQL注入、XSS、恶意爬虫这些七层攻击,如果业务还没上WAF,现在就去开,免费版就有基本防护能力,针对CC攻击,直接在WAF规则里配置单IP速率限制,一般每分钟超过60次请求就自动封禁IP一段时间。

服务器被攻击数据恢复和灾备方案

被攻击之后最痛苦的其实是数据丢了,网站代码被删了、数据库被篡改了,就算把攻击源头堵住也没用,所以日常就得做好备份:

  • Web代码走Git版本管理,每次发版都打tag,被篡改之后直接git checkout回滚。
  • 数据库每天凌晨全量备份,日志实时同步到对象存储。
  • 如果预算允许,做一套主从复制,备份节点平时不对外提供服务。

这样即便服务器被攻击到完全不可用,也能在2小时内把业务切到新机器上。

常见问题速查

服务器被攻击了报警有用吗?

有用,但效果取决于攻击场景,如果涉及数据泄露、勒索病毒或者大额资金损失,报警是必须的,警方可以通过服务器快照和日志追查定位,如果是单纯DDoS骚扰,报警后建议同时联系云厂商的售后团队做流量清洗。

服务器被攻击导致内部错误如何处理才能防止二次攻击?

修复后必须做三件事:修改所有密码(包括数据库和后台管理员)、检查SSH授权密钥、更新所有应用和插件到最新版,很多服务器被反复攻击成功,就是因为只清了木马,没堵住漏洞入口。

服务器被攻击后网站数据能还原干净吗?

取决于备份的时间点,如果备份策略合理,最多丢失一小时内的数据,关键是把攻击源彻底清理干净再回滚,否则刚恢复又被入侵了,建议在根目录放一个文件完整性监控脚本,用crontab每五分钟跑一次,有改动就发送告警到邮箱。

分享本文
本文为 简米科技官网 原创,已由运维技术专家审核。转载请注明来源:原文链接
售前咨询 服务热线 售后 邮箱