安全检查脚本

[脚本名称]: 安全检查脚本

[软件大小]:9.66KB

[下载通道] : 夸克盘

注!!! 不对服务器任何配置进行修改

一、脚本整体作用定位

check.sh 的核心作用:

📌 对 Linux 系统进行 安全配置合规性检查,生成一份可读的安全巡检报告。

特点:

  • ✅ 只读检查(不会改任何系统配置)

  • ✅ 适合内网 / 等保 / 安全检查前自查

  • ✅ 输出清晰,带"通过 / 不通过 / 未配置"

  • ✅ 覆盖账号、口令、日志、登录安全等关键项

非常适合:

  • 运维巡检

  • 等保测评前自查

  • 上线前安全检查

  • 内控 / 审计材料准备


二、脚本做了哪些安全检查(逐项说明)

1️⃣ 限制 root 远程登录(SSH)

复制代码

PermitRootLogin no

  • 检查 /etc/ssh/sshd_config

  • 判断 root 是否允许远程 SSH 登录

    ✅ 推荐禁用,降低暴力破解风险


2️⃣ 是否修改默认 root 账号

  • 检查 root 的 shell 是否仍为 /bin/bash

  • 如果 root 可直接登录 bash → 判定不安全

⚠️ 实际生产中,这一项偏"严格",有些环境会人工放宽


3️⃣ 是否存在多余可登录账号

  • 统计 /bin/bash 的账号数量

  • 期望只有 1 个(root 或管理账号)

防止:

  • 僵尸账号

  • 测试账号遗留


4️⃣ 是否启用账号异常锁定

复制代码

pam_tally2.so

  • 检查 SSH 是否配置登录失败锁定

  • 防止暴力破解


5️⃣ 密码最短长度策略

复制代码

PASS_MIN_LEN >= 8

  • /etc/login.defs 读取

  • 不符合直接判不通过


6️⃣ 密码复杂度策略

复制代码

pam_cracklib.so

  • 检查是否要求数字 / 大小写 / 特殊字符

  • 等保必查项


7️⃣ Grub 引导密码

  • 防止物理接触时进入单用户模式

  • 服务器等保场景常要求


8️⃣ Bash 历史命令保留

复制代码

HISTSIZE=2000

  • 确保命令可追溯

  • 便于安全审计


9️⃣ 登录超时自动退出

复制代码

TMOUT=1800

  • 防止运维人员离席导致风险

  • 30 分钟无操作自动登出


🔟 Umask 默认权限

复制代码

umask 027

  • 新建文件默认权限更安全

  • 防止数据被其他用户读取


1️⃣1️⃣ rsyslog 认证日志

复制代码

authpriv.*

  • 是否记录登录、认证类日志

  • 安全审计必需


1️⃣2️⃣ rsyslog 日志完整性

  • 判断 rsyslog 是否正常配置

  • 防止日志未记录 / 被关闭


三、脚本输出结构说明

📋 1)逐项检查输出

每一项都会显示:

  • 使用的检查命令

  • 实际配置值

  • 检查结果(✅ ❌ ⚠️)

📊 2)最终汇总表格

复制代码

检查项目 | 结果 | 实际值

一眼就能看出:

  • 哪些项不合规

  • 哪些需要整改

  • 哪些只是未配置


四、适用场景 & 使用建议

✔️ 适合使用场景

  • 等保 2.0 / 3.0 自查

  • 运维日常巡检

  • 上线前安全评估

  • 安全整改对照检查

⚠️ 使用注意事项(很重要)

1️⃣ 不同 Linux 版本差异

  • RHEL 8 / Rocky / Kylin / CentOS 7

    部分 PAM 模块名称不同(如 pam_faillock)

2️⃣ root shell 判断偏严格

  • 有些企业允许 root 登录 bash

  • 可根据实际情况调整第 2 项逻辑

3️⃣ 不会自动修复

  • 本脚本只"发现问题"

  • 修复需要你单独执行配置变更

4️⃣ 适合"标准化环境"

  • 如果服务器有特殊用途(数据库、专用节点)

  • 个别规则可能需要豁免


五、一句话总结

check.sh 是一份结构清晰、风险低、非常适合运维和等保自查的 Linux 安全基线巡检脚本。

如果你愿意,我可以帮你:

  • 🔧 改成 等保 2.0/3.0 标准版

  • 📄 输出成 CSV / Word / HTML 报告

  • ⚙️ 加上 自动整改建议

  • 🧠 适配 Kylin / CentOS / RHEL 8