麒麟系统安全基线检查与自动加固脚本
该脚本是一个用于麒麟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并检查状态
注意事项
- 脚本需要 root 权限 运行。
- 部分修改(如 PAM 配置、sysctl 参数)需要重启服务或重新登录才能生效。
- 第 66 项(
chattr +i锁定重要文件)已被注释,避免影响用户管理。 - 博主运行环境Kylin-Server-V10-SP3,大家根据自己要求修改脚本,测试后酌情运行。