
银河麒麟V10系统安全加固自动化脚本集成5项关键配置1. 国产操作系统安全加固的必要性在当前的IT基础设施环境中国产操作系统正逐步成为关键业务系统的重要支撑平台。作为国产操作系统的代表之一银河麒麟V10在政务、金融、能源等领域得到广泛应用。然而随着部署规模的扩大系统安全问题也日益凸显。传统的手工安全加固方式存在几个明显痛点效率低下每台服务器需要重复执行相同的配置步骤一致性差人工操作容易遗漏关键配置项维护困难配置变更难以批量同步到所有服务器针对这些问题我们开发了一个集成化的安全加固脚本能够一次性完成以下核心安全配置账户登录限制包括root账户管控密码复杂度策略强制实施SSH服务安全加固PAM认证模块优化使用pam_faillock替代pam_tally2系统审计日志配置2. 脚本设计与架构2.1 整体架构我们的安全加固脚本采用模块化设计每个安全功能点对应独立的函数模块便于后期维护和功能扩展。脚本整体架构如下#!/bin/bash # 银河麒麟V10安全加固脚本v1.2 # 功能集成账户安全、密码策略、SSH加固等核心安全配置 # ------------------------------ # 全局变量定义 # ------------------------------ readonly BACKUP_DIR/var/security_backup readonly LOG_FILE/var/log/security_harden.log # ------------------------------ # 模块1账户安全配置 # ------------------------------ config_account_security() { # 具体实现... } # ------------------------------ # 模块2密码策略配置 # ------------------------------ config_password_policy() { # 具体实现... } # 其他模块...2.2 关键特性非破坏性执行所有修改前自动备份原配置文件幂等设计重复执行不会导致配置重复添加详细日志记录所有操作步骤和变更内容环境检测自动识别系统版本和架构3. 核心安全功能实现3.1 账户登录限制脚本通过以下方式强化账户安全# 锁定root直接登录 lock_root_login() { # 备份原始配置 cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak # 禁用root登录 sed -i s/^#PermitRootLogin.*/PermitRootLogin no/ /etc/ssh/sshd_config sed -i s/^PermitRootLogin.*/PermitRootLogin no/ /etc/ssh/sshd_config # 重启SSH服务 systemctl restart sshd }同时配置账户锁定策略参数默认值说明deny5最大失败尝试次数unlock_time600账户锁定时间(秒)fail_interval900失败计数时间窗口3.2 密码复杂度策略密码策略配置通过PAM模块实现关键参数如下# 配置密码复杂度要求 config_password_complexity() { # 安装必要组件 yum install -y libpwquality # 配置密码策略 cat /etc/security/pwquality.conf EOF minlen 8 minclass 4 dcredit -1 ucredit -1 lcredit -1 ocredit -1 EOF }密码策略参数说明minlen8密码最小长度8位minclass4必须包含4种字符类型大小写字母、数字、特殊字符dcredit-1至少包含1个数字ucredit-1至少包含1个大写字母lcredit-1至少包含1个小写字母ocredit-1至少包含1个特殊字符4. SSH服务加固SSH作为主要的远程管理通道需要特别加强安全防护。我们的脚本实现了以下加固措施harden_ssh_service() { # 修改默认端口 sed -i s/^#Port 22/Port 8822/ /etc/ssh/sshd_config # 禁用不安全的协议版本 sed -i s/^#Protocol 2/Protocol 2/ /etc/ssh/sshd_config # 配置会话超时 echo ClientAliveInterval 300 /etc/ssh/sshd_config echo ClientAliveCountMax 3 /etc/ssh/sshd_config # 限制最大认证尝试次数 echo MaxAuthTries 3 /etc/ssh/sshd_config # 重启SSH服务 systemctl restart sshd }注意修改SSH端口后请确保防火墙规则相应调整否则可能导致无法连接5. PAM模块配置优化银河麒麟V10已不再支持传统的pam_tally2模块需要使用pam_faillock替代config_pam_faillock() { # 配置system-auth文件 cat /etc/pam.d/system-auth EOF auth required pam_faillock.so preauth silent audit deny5 unlock_time600 auth [defaultdie] pam_faillock.so authfail audit deny5 unlock_time600 auth sufficient pam_faillock.so authsucc audit deny5 unlock_time600 EOF # 配置password-auth文件 cat /etc/pam.d/password-auth EOF auth required pam_faillock.so preauth silent audit deny5 unlock_time600 auth [defaultdie] pam_faillock.so authfail audit deny5 unlock_time600 auth sufficient pam_faillock.so authsucc audit deny5 unlock_time600 EOF }关键参数说明deny5允许5次失败尝试unlock_time600账户锁定10分钟audit记录审计日志silent不显示提示信息6. 日志审计配置完善的日志记录是安全运维的基础脚本配置了以下日志策略config_logging() { # 配置rsyslog远程日志 sed -i s/#$ModLoad imudp/$ModLoad imudp/ /etc/rsyslog.conf sed -i s/#$UDPServerRun 514/$UDPServerRun 514/ /etc/rsyslog.conf # 添加日志服务器配置 cat /etc/rsyslog.conf EOF *.* 10.0.0.100:514 EOF # 重启日志服务 systemctl restart rsyslog }日志保留策略配置日志类型保留周期压缩最大大小auth.log30天是100Msecure30天是100Mmessages7天否500M7. 脚本使用与维护7.1 执行方式脚本支持多种执行方式# 全量执行所有安全加固 ./security_harden.sh --all # 仅执行指定模块 ./security_harden.sh --module ssh,pam # 测试模式不实际修改配置 ./security_harden.sh --test7.2 维护与更新为方便后续维护脚本设计了以下功能配置回滚自动备份原始配置可通过--rollback参数恢复版本检查支持--version参数查看当前版本更新检测支持--check-update检查新版本7.3 注意事项执行脚本前建议先进行系统备份生产环境建议先在测试环境验证修改SSH端口后需确保防火墙规则同步更新密码策略变更仅对新密码生效在实际项目中这个脚本已经帮助多个客户实现了银河麒麟V10系统的快速安全加固将原本需要数小时的手工配置缩短到几分钟内完成同时保证了配置的一致性和可审计性。