服务器被入侵这件事,很多管理员不是没遇到过,而是遇到时不知道从哪查起。有人直接重装系统了事,却因为没找出入侵路径,新系统上线一周又被攻破。正确的做法是先做止损与取证,再定位入侵方式。本文介绍一套不需要专业工具的Linux服务器自查流程。

第一步:先止损再排查
发现异常后按严重程度采取行动:如果是运行中的挖矿或对外发包程序,先断开外网或封禁相关端口;立即修改root密码并检查是否有新增用户;用 iptables/firewalld 临时阻断可疑来源。止损优先于排查,避免攻击者在你看日志时继续扩大破坏。
第二步:检查异常登录记录
登录记录是判断入侵最直接的证据。查看最近的成功登录、失败尝试与当前在线用户:
# 最近成功登录记录
last -n 20
# 失败登录尝试(暴力破解来源)
lastb -n 20
# 当前登录的用户
who
# 查看所有账号与最近修改的账号文件
awk -F: '$3==0{print $1}' /etc/passwd
ls -l /etc/passwd /etc/shadow
重点核对三类异常:自己从未操作过的时间点有登录、来自陌生IP的成功登录、root权限的账号数量异常增多。确认被暴力破解后,除了改密码还应考虑禁用密码登录改用密钥,并限制SSH来源IP。
第三步:排查可疑进程与网络连接
入侵者通常会留下常驻进程。用下面命令查看资源占用异常与对外连接:
# 按CPU和内存排序查看进程
ps aux --sort=-%cpu | head -15
# 查看所有监听端口与对应进程
ss -tlnp
# 查看对外建立的连接
ss -tnp | head -30
# 通过PID定位可执行文件路径
ls -l /proc/PID/exe
可疑进程往往伪装成系统名字(如kdevtmpfsi、watchdogs这类挖矿程序),需要结合 /proc/PID/exe 与启动命令核实。确认是恶意进程后,先记录它的完整信息再处置:kill进程、删除文件、清理定时任务与启动项。
第四步:检查定时任务与启动项
后门程序最常用的持久化手段是写入crontab和开机启动。逐项检查所有用户的定时任务与系统服务:
# 检查当前用户与root的crontab
crontab -l
cat /etc/crontab
ls /etc/cron.d/ /var/spool/cron/
# 检查自启动服务与脚本目录
systemctl list-unit-files | grep enabled
ls -l /etc/rc.d/rc.local /etc/init.d/ 2>/dev/null
# 检查authorized_keys是否被植入公钥
cat ~/.ssh/authorized_keys
authorized_keys里出现自己没添加过的公钥,说明攻击者已植入SSH后门,这是最危险的情况之一,务必立即删除并排查其他账号。
排查完之后的处理建议
- 无法确定入侵路径时,建议备份业务数据后在干净环境重装系统,这是最彻底的处置方式;
- 重装后按最小化原则开放端口,使用密钥登录并关闭root远程密码登录;
- 对服务器做一次漏洞扫描,修复未打补丁的系统组件与中间件;
- 开启系统日志异地留存与安全告警,让下次入侵能被第一时间发现。
相关问答FAQs
- 问:日志被攻击者清空了还能查吗?答:部分日志可能被清除,可检查bash历史、进程残留与异常文件时间戳,条件允许时建议后续配置日志异地集中存储。
- 问:被挖矿程序入侵后只杀进程够吗?答:不够,挖矿程序通常配有守护进程与定时任务,必须连同持久化入口一起清理。
- 问:怎么防止再次被入侵?答:改强密码、关多余端口、及时更新补丁、上云WAF与入侵检测,四者缺一不可。
服务器安全是防守战,入侵自查的能力决定了你能否在第一时间止损。建议把这套流程整理成应急预案文档,并提前配置好日志留存与告警,真出事时按流程走,才能把损失控制在最小范围。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!