上个月一家企业服务器被入侵,运维小哥发现后第一反应是重启服务器,结果攻击痕迹全部丢失,连攻击者怎么进来的都查不出来了。这个教训至少值一套安全设备的钱。
取证:在动任何东西之前
取证是第一优先级,核心原则是不要改变系统当前状态。
不要重启——重启会清空内存,而内存里可能有攻击者运行的恶意进程和未加密的密钥。不要安装新软件——安装过程可能覆盖日志、修改系统文件,破坏证据链。
正确做法是从外部通过SSH连上去,把关键信息全部导出到外部存储:进程列表ps -eo pid,ppcd,user,args重点关注root运行的非系统进程;网络连接ss -antp找出连接异常IP的进程;已加载内核模块lsmod排查rootkit;定时任务crontab -l和/etc/cron.d/里藏的反弹Shell;最近修改的文件find / -mtime -7 -type f重点看/usr/bin、/tmp、/var/tmp。
后门排查:攻击者不会只留一个
常见后门有这么几种。SSH公钥后门:检查~/.ssh/authorized_keys有没有不认识的公钥,加一行就能免密登录。WebShell:用find /var/www -name *.php -size -5k找小文件,再用grep -rn eval /var/www/搜危险函数。隐藏账号:检查/etc/passwd里UID为0的行,多出来的就是后门。异常systemd服务:systemctl list-unit-files --state=enabled逐个排查不认识的服务。
清理:最彻底的方式是重建
查清后门后面临选择:手动清理还是重建?我的建议是只要确认被入侵过,一律重建。你永远无法100%确定找出了所有后门,攻击者可能藏在BIOS固件、磁盘boot sector,甚至用rootkit替换了系统命令本身。
重建流程:备份数据并在隔离环境中做安全检查;抹掉磁盘重装系统;部署应用后补全安全补丁;用检查过的备份恢复业务。所有密码和密钥全部换新,旧的一个都不用。重建后持续监控至少一周,确认攻击者没有重新进来。