以下是11个步骤完美排查服务器是否已经被入侵的详细指南,结合日志分析、文件校验、进程监控及数据恢复方法,适用于Linux系统(如CentOS):
1. 检查日志文件是否被删除或篡改入侵者常通过删除日志掩盖痕迹,需验证关键日志是否存在或被清空:
- 命令示例:ls -lh /var/log/messages /var/log/secure # 检查日志文件大小及修改时间
- 异常表现:日志文件大小为0或修改时间异常(如近期被修改)。
2. 检查新增的用户名及密码文件入侵者可能创建隐藏用户或修改系统用户文件:
- 关键文件:/etc/passwd(用户信息)、/etc/shadow(密码哈希)。
- 命令示例:cat /etc/passwd | grep -E '/bin/bash|/sbin/nologin' # 检查异常用户
- 异常表现:存在未知用户或UID为0的非root用户。
3. 校验用户文件内容是否被修改对比当前文件与备份或默认配置:
- 命令示例:diff /etc/passwd /etc/passwd.bak # 若有备份文件
- 无备份时:检查文件末尾是否有新增行(如test:x:0:0::/:/bin/bash)。
4. 查看最近登录事件通过lastlog命令检查异常登录:
- 命令示例:lastlog -u all # 显示所有用户最近登录时间
- 异常表现:未知IP或非常规时间登录。
5. 检查当前登录用户通过w或who命令实时监控活跃会话:
- 命令示例:w # 显示当前登录用户及操作
- 异常表现:存在未知用户或非交互式会话(如crond进程异常)。
6. 查看历史登录记录通过last命令分析长期登录行为:
- 命令示例:last | grep -E "reboot|shutdown" # 检查重启记录last -n 100 # 查看最近100条登录记录
- 异常表现:频繁短时间登录或来自高风险IP。
7. 分析用户连接时长通过ac命令统计用户总连接时间:
- 命令示例:ac -p # 显示每个用户的连接总时长(小时)
- 异常表现:非特权用户连接时间异常高。
8. 检测异常网络流量使用tcpdump或iftop抓包分析:
- 命令示例:tcpdump -i eth0 port not 22 -w capture.pcap # 抓取非SSH流量iftop -i eth0 # 实时监控带宽占用
- 异常表现:大量外连至未知IP或端口(如6667、4444等常见后门端口)。
9. 审查安全日志通过/var/log/secure(CentOS)或/var/log/auth.log(Ubuntu)追踪入侵行为:
- 命令示例:grep -i "failed password" /var/log/secure # 检查暴力破解记录grep -i "accepted password" /var/log/secure | tail -n 20 # 最近成功登录
- 异常表现:短时间内大量失败登录或未知用户成功登录。
10. 定位异常进程及脚本通过top和lsof追踪恶意进程:
- 步骤:
使用top找到异常进程的PID:
top -c # 显示进程及命令行通过lsof查找进程打开的文件:
lsof -p <PID> # 显示进程打开的文件 - 异常表现:进程路径包含临时目录(如/tmp/)或可疑文件名(如kworkerds)。
11. 恢复被删除的文件若关键文件被删除但进程仍占用,可通过/proc目录恢复:
- 步骤:
使用lsof查找打开文件的进程:
lsof | grep deleted /var/log/secure从/proc/<PID>/fd/恢复文件:
cp /proc/<PID>/fd/<FD_NUM> /var/log/secure.recovered - 示例:恢复/var/log/secure:cp /proc/1264/fd/4 /var/log/secure # 假设PID为1264,FD为4
总结- 核心工具:lastlog、w、last、tcpdump、lsof、ac。
- 关键文件:/etc/passwd、/etc/shadow、/var/log/secure、/var/log/wtmp。
- 恢复前提:文件被删除后进程仍运行,且未重启系统。
通过以上步骤,可系统化排查服务器入侵痕迹,并尽可能恢复受损数据。建议定期备份关键文件并审计日志,以降低风险。