麒麟系统安全基线检查与自动加固脚本

麒麟系统安全基线检查与自动加固脚本

该脚本是一个用于麒麟kylin安全基线检查与自动加固的 Bash 脚本。,它共包含 67 项 检查/配置项,覆盖账户安全、文件权限、服务管理、网络参数、日志审计、密码策略、SSH 安全等多个方面。脚本会扫描系统当前状态,对不符合安全基线要求的配置自动进行修复 (如修改权限、启用/禁用服务、调整内核参数、配置 PAM 等),并将检查结果和操作记录输出到 /root/result/results_show 文件中,同时为被修改的配置文件创建 .kybak 备份。

脚本下载地址:https://pan.quark.cn/s/3fe2ba5ab6ce

主要功能模块

1. 账户与认证安全

  • 检查 sudo 命令是否安装
  • 查找 UID 为 0 的非 root 账户
  • 检查是否存在空密码账户
  • 检查系统默认未禁用账户(如 daemon, bin, sync 等)
  • 禁止 wheel 组以外用户通过 su 切换到 root
  • 分配普通用户提示

2. 文件与目录权限

  • 检查 PATH 环境变量中是否存在 777 权限的目录 → 改为 755
  • 检查 PATH 环境变量中是否存在 777 权限的文件 → 改为 644
  • 检查 /etc/rsyslog.conf 权限 → 改为 640
  • 检查 /etc/passwd、/etc/group、/etc/shadow 权限 → 改为 644、644、000
  • 检查 /usr/bin 下 suid/sgid 文件 → 清除特殊权限
  • 检查并列出不应具有 suid/sgid 权限的文件
  • 检查并修改 /etc/hosts.allow / /etc/hosts.deny 中 SSH 访问控制
  • 对重要文件进行锁定(chattr +i 部分已注释)

3. 服务与进程管理

  • 启用必要服务:rsyslog、sshd、auditd、ntpd
  • 禁用危险/不必要的服务:talk、ntalk、sendmail、telnet、nfs,及列表中的 finger、discard、daytime、chargen 等
  • 检查 SSH 服务配置:协议版本 (SSH2)、最大认证尝试次数 (≤5)、禁止 root 登录、登录前/后警告 Banner
  • 检查 vsftpd:禁止 root 登录、禁止匿名登录
  • 检查 SNMP 默认团体名 → 提示用户修改
  • 检查是否使用 NTP 同步时间

4. 网络与内核安全

  • 检查数据包转发 (ip_forward) → 关闭
  • 禁止源路由 (accept_source_route)
  • 禁止 ICMP 重定向 (accept_redirects)
  • 禁止内核发送重定向 (send_redirects)
  • 禁止 ICMP 广播包响应 (icmp_echo_ignore_broadcasts)
  • 检查 /etc/host.conf 中 multi → 关闭 IP 欺骗与多 IP 绑定
  • 检查系统是否开启 ASLR(内核随机化)
  • 检查 PATH 环境变量中是否存在相对路径

5. 日志与审计

  • 开启 rsyslog 日志功能
  • 为 su 命令使用配置记录到 /var/log/secure
  • 启用 cron 行为日志到 /var/log/cron
  • 设置审计日志保存时间(/etc/logrotate.d/audit) → 365 天
  • 配置 rsyslog 记录安全事件到 /var/adm/messages
  • 检查 /var/log/wtmp、/var/run/utmp 登录日志是否存在

6. 密码策略与账户锁定

  • 设置密码最小长度 (minlen = 8)
  • 设置密码复杂度:minclass=3、dcredit=-1、ucredit=-1、lcredit=-1
  • 设置密码过期时间 (PASS_MAX_DAYS ≤ 90)
  • 设置密码修改最小间隔 (PASS_MIN_DAYS ≥ 7)
  • 设置密码过期前警告天数 (PASS_WARN_AGE = 7)
  • 配置密码历史记录 (pam_pwhistory.so remember=5 enforce_for_root)
  • 配置账户认证失败锁定策略 (deny=6 unlock_time=1800)
  • 设置命令行超时自动登出 (TMOUT=480)
  • 设置历史命令记录条数 (HISTSIZE=1000、HISTFILESIZE=1000)

7. 其他安全加固

  • 检查磁盘使用率并告警
  • 禁用 Ctrl+Alt+Del 重启组合键(图形界面、终端、systemd 层面)
  • 检查 /etc/aliases 中不必要的 root 别名并注释
  • 检查系统是否安装 chkrootkit
  • 检查 root 能否通过 telnet 远程登录 → 禁止
  • 检查系统引导管理器密码(提示使用 grub2-setpassword)
  • 设置空闲锁屏时间(适用于 GNOME/MATE 桌面环境,idle-delay=15)

脚本输出与行为

  • 所有结果追加到 /root/result/results_show
  • 彩色输出显示在终端
  • 自动备份被修改的配置文件(添加 .kybak 后缀)
  • 对于需要交互的操作(如 SNMP 团体名),会提示用户输入
  • 部分服务启用/禁用会调用 systemctl 并检查状态

注意事项

  1. 脚本需要 root 权限 运行。
  2. 部分修改(如 PAM 配置、sysctl 参数)需要重启服务或重新登录才能生效。
  3. 第 66 项(chattr +i 锁定重要文件)已被注释,避免影响用户管理。
  4. 博主运行环境Kylin-Server-V10-SP3,大家根据自己要求修改脚本,测试后酌情运行。
相关推荐
天行健,君子而铎9 小时前
数据分类分级的范式转换:从规则匹配到场景化高准确率一键部署
网络·数据库·安全
砚凝霜10 小时前
【软考信息安全】第十章 入侵检测概述与原理分类
人工智能·安全·数据挖掘
Hum8le14 小时前
漏洞知识点《php伪协议》
开发语言·安全·web安全·php
砚凝霜15 小时前
【软考信息安全】第十九章 Unix/Linux安全分析与防护
linux·安全·unix
虹科网络安全16 小时前
“顶会”看安全(十九):医疗 AI 中的差异化隐私风险
人工智能·经验分享·安全
砚凝霜17 小时前
【软考信息安全】第十六章 网络安全风险评估过程与技术方法
网络·安全·web安全
步行cgn18 小时前
Spring AOP 实战:安全日志
python·安全·spring
Fxrain20 小时前
[Paper-Reading] CUAs 安全与隐私威胁综述
人工智能·安全·agent·智能体
砚凝霜1 天前
【软考信息安全】第十七章 网络安全应急响应概述与事件处理流程
网络·安全·web安全
终端安全笔记1 天前
配置锁状态那一栏查的是什么:报告里几项各自指向什么风险
android·前端·安全·ios