UOS统信服务器安全加固实战:从密码策略到SSH超时,手把手配置指南
UOS统信服务器安全加固实战:从密码策略到SSH超时,手把手配置指南
接手一台全新的UOS统信服务器时,安全加固往往是新手运维最容易忽视却最关键的环节。想象这样一个场景:凌晨三点收到告警,发现服务器因弱密码被暴力破解,而业务数据已遭泄露——这种噩梦完全可以通过基础安全配置避免。本文将模拟真实运维场景,带你逐项完成从密码复杂度到会话管理的全流程加固,每个步骤都附带可立即执行的命令和参数详解,最终形成可复用的安全检查清单。
1. 密码策略:构建第一道防线
密码如同服务器的门锁,默认配置往往过于简单。我们首先通过libpam-pwquality模块实现企业级密码强度控制。安装前建议更新软件源:
sudo apt update && sudo apt -y install libpam-pwquality cracklib-runtime关键配置位于/etc/pam.d/common-password,使用vim编辑时建议先备份:
sudo cp /etc/pam.d/common-password{,.bak} sudo vim /etc/pam.d/common-password找到pam_pwquality.so行替换为以下参数组合:
password requisite pam_pwquality.so retry=3 minlen=10 maxrepeat=3 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1 difok=4 gecoscheck=1 reject_username enforce_for_root参数解析表:
| 参数 | 作用 | 推荐值 |
|---|---|---|
| minlen | 最小密码长度 | 10 |
| maxrepeat | 允许重复字符数 | 3 |
| ucredit | 至少大写字母数 | -1 |
| dcredit | 至少数字数 | -1 |
| difok | 新旧密码差异字符数 | 4 |
注意:修改后立即生效,下次用户修改密码时就会触发新规则。测试时可先用
passwd testuser验证策略是否生效。
密码有效期管理在/etc/login.defs中配置,建议企业环境采用以下标准:
PASS_MAX_DAYS 90 # 密码最长有效期 PASS_MIN_DAYS 7 # 密码修改最小间隔 PASS_WARN_AGE 14 # 过期前提醒天数2. 防暴力破解:失败锁定机制
连续登录失败是暴力破解的典型特征,通过pam_tally2模块可实现智能锁定。同时配置控制台和SSH两种登录方式:
# 控制台登录配置 sudo vim /etc/pam.d/login # 在auth段添加: auth required pam_tally2.so deny=5 unlock_time=1800 even_deny_root root_unlock_time=3600 # SSH登录配置 sudo vim /etc/pam.d/sshd # 添加相同内容锁定机制对比:
- 普通用户:5次失败锁定30分钟
- root用户:5次失败锁定60分钟
- 解锁方式:自动解锁或手动
pam_tally2 --user=username --reset
实际运维中发现,生产环境建议将root用户的deny值设为3,并配合邮件告警更安全。
3. SSH安全增强:从超时到加密算法
SSH是服务器最重要的入口,需要多层防护。首先设置会话超时,在/etc/profile末尾添加:
export TMOUT=900 # 15分钟无操作断开 readonly TMOUT # 防止用户修改然后优化SSH守护进程配置,编辑/etc/ssh/sshd_config:
ClientAliveInterval 300 # 5分钟检测一次心跳 ClientAliveCountMax 2 # 最多检测2次 Protocol 2 # 禁用SSHv1 PermitRootLogin without-password # 禁止密码登录rootSSH加密算法优化方案:
# 添加在sshd_config文件末尾 Ciphers aes256-ctr,aes192-ctr,aes128-ctr MACs hmac-sha2-512,hmac-sha2-256 KexAlgorithms ecdh-sha2-nistp521,ecdh-sha2-nistp384修改后务必测试配置并重启服务:
sshd -t && systemctl restart sshd4. 审计追踪:auditd实战配置
审计系统是事中监控、事后追责的关键。安装后建议先检查服务状态:
sudo apt -y install auditd sudo systemctl enable --now auditd监控敏感文件的操作示例:
# 监控/etc/passwd的读写执行和属性修改 sudo auditctl -w /etc/passwd -p rwxa -k passwd_changes # 监控SSH配置文件修改 sudo auditctl -w /etc/ssh/sshd_config -p wa -k sshd_modification永久规则需写入/etc/audit/rules.d/audit.rules,格式为:
-w /etc/shadow -p wa -k shadow_file -w /usr/sbin/ -p x -k privileged_exec常用审计查询命令:
# 查看最近10条审计日志 ausearch -i -l 10 # 按关键词查询 ausearch -k passwd_changes -i # 生成日报 aureport -m -i --summary -ts today5. 防火墙与端口管理
UOS默认使用firewalld,建议改用更直观的ufw:
sudo apt -y install ufw sudo ufw default deny incoming sudo ufw allow 22/tcp # 仅开放SSH sudo ufw enable检查开放端口的小技巧:
sudo netstat -tulnp | grep -v 127.0.0.1对于必须开放的服务端口,建议修改默认端口号。比如修改SSH端口:
sudo vim /etc/ssh/sshd_config # 修改为: Port 5922别忘了同步防火墙规则:
sudo ufw allow 5922/tcp sudo ufw deny 22/tcp6. 自动化安全检查脚本
将关键检查项整合为可定期运行的脚本security_check.sh:
#!/bin/bash echo "==== 密码策略检查 ====" grep -E 'minlen|credit' /etc/pam.d/common-password echo "==== SSH配置检查 ====" sshd -T | grep -E 'Protocol|PermitRootLogin|PasswordAuthentication' echo "==== 审计规则检查 ====" auditctl -l echo "==== 开放端口检查 ====" ss -tulnp | awk 'NR>1 {print $5}'添加执行权限并设置每周自动运行:
chmod +x security_check.sh (crontab -l 2>/dev/null; echo "0 3 * * 1 /path/to/security_check.sh >> /var/log/security_check.log") | crontab -7. 备份与恢复策略
所有安全配置都应建立回滚机制。推荐配置备份方案:
# 关键配置文件备份 BACKUP_DIR=/var/backups/server_config mkdir -p $BACKUP_DIR cp /etc/pam.d/{common-password,login,sshd} $BACKUP_DIR cp /etc/ssh/sshd_config $BACKUP_DIR/sshd_config.$(date +%Y%m%d) # 打包审计规则 tar czf $BACKUP_DIR/audit_rules_$(date +%Y%m%d).tar.gz /etc/audit/rules.d/恢复时只需解压并重启相应服务:
sudo cp $BACKUP_DIR/common-password /etc/pam.d/ sudo pam-auth-update