当一台 Linux 服务器的响应速度突然变慢,或是出现异常的网络连接,有经验的管理员首先会怀疑:是不是被入侵了?面对潜在的安全威胁,如何快速、系统地进行排查,而不是盲目地敲几个命令?本文将详细介绍一款实用的开源脚本 Linux_checklist.sh,它能帮你完成一次全面的安全检查。
工具简介
Linux_checklist.sh 是一个用于快速检查 Linux 系统常见安全与运行状况的 Bash 脚本。它通过一系列自动化检查,帮助你发现系统中可能存在的恶意活动痕迹与配置风险。
主要检查项目
脚本聚焦于几个关键的安全风险点,能够快速揭示常见的攻击手法:
- 检查网卡是否处于混杂模式:这是攻击者嗅探内网流量(例如密码)的典型迹象。
- 检查“无文件”进程:寻找内存中正在运行,但其对应的磁盘可执行文件已被删除的进程(显示为
/proc/*/exe -> (deleted))。这是挖矿木马和 Rootkit 偏爱的“无文件攻击”手段。
- 校验系统命令完整性:通过
rpm -V 等命令检查 ls, ps, netstat 等核心命令是否被恶意替换(攻击者常通过修改这些命令来隐藏自己的活动)。
- 扫描 SSH 授权密钥:遍历所有用户的
.ssh/authorized_keys 文件,检查是否被植入了未授权的免密登录公钥。
- 审查定时任务:检查系统及用户的定时任务中,是否隐藏了包含
bash -i, nc, curl 等用于连接外网控制服务器的恶意命令。
详细检查清单
以下为脚本执行的完整检查项,覆盖了从资源、网络到文件、日志的多个维度。
1. 系统资源(排查挖矿等资源消耗型攻击)
- CPU/内存占用:列出资源占用 Top 5 的进程,帮助判断是否存在异常的高资源消耗程序(如挖矿程序)。
- 磁盘空间:检查磁盘使用率,避免因日志爆破或垃圾文件堆积导致服务不可用。
2. 网络连接(排查后门与非法外联)
- 网卡混杂模式:检测是否有网卡被设置为监听模式。
- DNS/Hosts配置:检查 DNS 设置是否被劫持,以及
/etc/hosts 文件是否存在恶意的重定向条目。
- 监听端口:列出所有开放端口,便于快速识别不应开放的高位端口。
- 外部连接统计:汇总服务器当前正在连接的外部 IP(Top 10),用于发现可能存在的向C2(命令与控制)服务器的回连行为。
3. 进程分析(定位恶意程序)
- 内存中已删除文件:再次重点筛查,捕捉利用内存执行的无文件落地木马。
- 高资源占用进程详情:展示 CPU 和内存占用最高的 5 个进程的详细信息。
4. 账号与权限(检查未授权访问)
- 特权用户:检查除了
root 以外,是否还存在其他 UID=0 的“超级用户”。
- 影子文件分析:检查
/etc/shadow,确认哪些账户配置为可登录状态。
- Sudo 权限审计:检查哪些用户被授予了
ALL=(ALL) 的超级管理员权限。
- SSH 公钥审计:遍历
/root 和 /home 下所有用户的 SSH 公钥文件。
- SSH 环境劫持:检查是否存在
sshrc 等文件(此类文件可在用户登录时自动执行恶意脚本)。
5. 持久化与启动项(防止恶意程序复活)
- 定时任务审查:
- 检查
/etc/crontab 和 /etc/cron.d/ 目录下的任务。
- 遍历所有用户的个人
crontab 任务。
- 特征匹配:自动扫描任务内容中是否包含
wget, curl, nc 等常用于下载或建立连接的敏感命令。
- 开机启动项审查:
- 检查 Systemd 中已启用的服务。
- 检查
/etc/rc.local 文件中是否藏有恶意启动脚本。
6. 文件完整性(排查 Rootkit 与文件篡改)
- 二进制文件校验:利用系统包管理器(如 RPM)校验
ls, ps, top, login, sshd 等核心命令的哈希值,判断是否被替换。
- SUID 特权文件扫描:扫描系统中具有 SUID 权限的异常文件(普通用户运行此类文件时可获得 root 权限)。
- 临时目录扫描:检查
/tmp 和 /var/tmp 目录下是否有 .sh, .py, .elf 等可疑的可执行文件(攻击者常在此存放工具)。
- 文件属性检查:检查关键系统文件是否被
chattr +i 命令锁定(导致无法正常修改或删除)。
7. 日志与痕迹(分析攻击者行为)
- 暴力破解分析:统计
/var/log/secure 或 auth.log 中登录失败次数最多的源 IP 地址。
- 成功登录记录:查看最近成功的登录记录及其来源 IP。
- 账号变更记录:查看系统日志中是否有新建用户 (
useradd) 或删除用户 (userdel) 的操作记录。
- 命令历史审查:扫描
root 用户的 .bash_history 文件,查找是否存在 wget(下载木马)、tar(打包窃取数据)、passwd(修改密码)等敏感操作记录。
安全与使用注意事项
- 该脚本运行时会收集并输出系统的敏感信息(如用户列表、网络连接、进程详情等)。请务必仅在您拥有管理权限的受信环境中运行,并妥善保管生成的输出文件,防止信息泄露。
- 脚本提供的是一种“快照式”检查,对于持续性的高级威胁,可能需要结合 更深入的日志分析 和实时监控手段。
项目获取
Linux_checklist.sh 是一个开源项目,你可以在 GitHub 上找到它并参与改进:
项目地址:https://github.com/HuyaThomas/Linux_checklist
希望这个工具能成为你网络与系统安全工具箱中的一个实用组件。如果你在排查中发现了其他有趣的技巧或疑问,欢迎在技术社区进行交流。
|