目录
方法 2:使用 pam_pwquality 模块(动态验证)
1. 配置文件修改(/etc/ssh/sshd_config)
在数字化浪潮中,网络安全已成为企业稳健运营的重要保障。2025 年金砖国家职业技能大赛网络系统管理赛项真题,为我们提供了丰富的实战场景,助力探索网络安全配置的关键技术与策略。本文将围绕大赛真题,对密码策略、用户管理、权限控制等多个关键领域展开深入剖析,旨在为企业网络安全建设提供全面、实用的指导。
一、密码策略的深度解析与配置实践
核心知识点:密码复杂度与生命周期管理
密码作为网络安全的第一道防线,其复杂度和生命周期管理至关重要。复杂且定期更换的密码,能有效降低被破解的风险,为系统安全筑牢根基。
方法 1:修改 login.defs 文件(系统全局策略)
login.defs
文件定义了用户账户创建和管理的默认值,通过修改该文件,可以设置系统全局的密码策略。
使用vim
编辑器打开文件:
vim /etc/login.defs
修改以下参数:
PASS_MAX_DAYS 90
:PASS_MAX_DAYS
全称 “Password Maximum Days”,指定密码的最长有效期为 90 天,到期后用户需更换密码,以此降低密码被破解的风险。PASS_MIN_DAYS 1
:PASS_MIN_DAYS
即 “Password Minimum Days”,表示密码最短修改间隔为 1 天,防止用户频繁无意义地更换密码。PASS_MIN_LEN 9
:PASS_MIN_LEN
也就是 “Password Minimum Length”,规定密码最小长度为 9 位,增加密码复杂度。PASS_WARN_AGE 7
:PASS_WARN_AGE
全称 “Password Warning Age”,在密码过期前 7 天,系统会向用户发出警告,提醒用户及时更换密码。
方法 2:使用 pam_pwquality 模块(动态验证)
pam_pwquality
模块为 PAM(Pluggable Authentication Modules,可插拔认证模块)的一部分,用于对用户密码进行强度检查。
使用vim
编辑器修改system-auth
文件:
vim /etc/pam.d/system-auth
在password
行添加:
password requisite pam_pwquality.so retry=3 minlen=9 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1
参数详解:
retry=3
:允许用户输入错误密码 3 次,超过 3 次则认证失败。minlen=9
:minlen
全称 “minimum length”,指定密码最小长度为 9 位。ucredit=-1
:ucredit
即 “uppercase credit”,要求密码中至少包含 1 个大写字母。lcredit=-1
:lcredit
表示 “lowercase credit”,要求密码中至少包含 1 个小写字母。dcredit=-1
:dcredit
代表 “digit credit”,要求密码中至少包含 1 个数字。ocredit=-1
:ocredit
即 “other credit”,要求密码中至少包含 1 个特殊字符。
企业级扩展
- 结合 Kerberos 实现双因素认证:Kerberos 是一种网络认证协议,通过使用票据(ticket)来证明用户身份。结合 Kerberos 实现双因素认证,可在传统密码认证的基础上,增加额外的认证因素,如智能卡或一次性密码,大幅提升系统安全性。
- 使用 cracklib - check 检测弱密码:
cracklib - check
是一款用于检测密码强度的工具。使用示例如下:
echo "Test@2025" | cracklib-check
若输出结果为 “OK”,则说明密码符合强度要求。
二、自动化密码生成与用户管理
1. 密码生成工具实战
pwgen
是一款用于生成随机密码的工具,通过安装和使用该工具,可快速生成符合安全要求的密码。
安装pwgen
工具(若未安装):在基于 Debian 或 Ubuntu 的系统上,可使用以下命令安装:
sudo apt install pwgen
在基于 Red Hat 或 CentOS 的系统上,使用以下命令安装:
sudo yum install pwgen
使用pwgen
生成 16 位强密码:
pwgen -sy 16 1
-s
:-s
全称 “secure”,表示生成安全随机密码,避免使用易被猜测的字符组合。-y
:-y
即 “symbols”,使生成的密码包含特殊字符,增加密码复杂度。16
:指定生成密码的长度为 16 位。1
:表示生成 1 个密码。
示例输出:3$gH7@qL!vE8^mKzN
验证生成命令记录:
history | grep pwgen
通过该命令,可确认是否执行过密码生成命令,便于后续审计。
2. 用户全生命周期管理
用户全生命周期管理涵盖从用户创建到账户删除的全过程,确保用户账户在整个生命周期内的安全性和合规性。
- 创建用户并设置密码:创建用户
test1
,并将密码设置为生成的3$gH7@qL!vE8^mKzN
:
useradd test1
echo "3$gH7@qL!vE8^mKzN" | passwd --stdin test1
- 设置账户时效:设置用户
test1
的账户时效,30 天内不可修改密码,90 天后密码过期:
chage -M 30 -m 1 -W 7 -E $(date -d "+90 days" +%Y-%m-%d) test1
-M 30
:-M
全称 “maximum days”,指定密码最长使用期限为 30 天。-m 1
:-m
即 “minimum days”,表示密码最短修改间隔为 1 天。-W 7
:-W
代表 “warning days”,在密码过期前 7 天发出警告。-E $(date -d "+90 days" +%Y-%m-%d)
:-E
即 “expiration date”,指定密码的过期日期为 90 天后。- 验证配置:使用
chage
命令查看用户test1
的密码策略详情:
chage -l test1
三、用户权限控制进阶技巧
1. UID 修改与账户锁定
用户 ID(UID)是系统识别用户的唯一标识,合理设置 UID 和账户锁定策略,可有效防止非法访问。
- 创建用户并修改 UID:创建用户
test2
,并将其 UID 修改为 20000:
useradd test2
usermod -u 20000 test2
通常,UID 20000 及以上会保留给系统服务,通过这种方式可规范用户账户管理。
- 账户锁定与解锁:锁定用户
test2
的账户:
usermod -L test2
-L
全称 “lock”,用于锁定用户账户。解锁账户使用-U
参数,即 “unlock”。
查看用户test2
的账户状态:
passwd -S test2
若输出 “Password locked”,则表示账户已被锁定。
2. Root 用户安全强化
Root 用户拥有系统的最高权限,加强 Root 用户的安全防护,对保障系统安全至关重要。
- 修改密码策略:修改 Root 用户的密码策略,设置最短修改间隔为 1 天,最长有效期为 45 天,过期前 7 天发出警告:
chage -m 1 -M 45 -W 7 root
- 禁止交互式修改密码:通过修改
passwd
命令的权限,限制普通用户执行交互式修改密码操作:
chmod 700 /usr/bin/passwd
该命令将passwd
命令的权限设置为只有 Root 用户可执行,防止普通用户滥用该命令。
四、SSH 安全加固全流程
1. 配置文件修改(/etc/ssh/sshd_config)
sshd_config
是 SSH 守护进程的配置文件,通过修改该文件,可以增强 SSH 服务的安全性。
使用vim
编辑器打开文件:
vim /etc/ssh/sshd_config
修改以下参数:
- 错误登录锁定策略:
MaxAuthTries 3
:MaxAuthTries
全称 “Maximum Authentication Tries”,指定允许用户尝试登录的最大次数为 3 次,超过 3 次则拒绝登录。LoginGraceTime 1m
:LoginGraceTime
即 “Login Grace Time”,设置登录超时时间为 1 分钟,在规定时间内未完成登录操作,将被拒绝登录。
- 登录超时与 Root 限制:
ClientAliveInterval 600
:ClientAliveInterval
代表 “Client Alive Interval”,指定服务器向客户端发送存活消息的时间间隔为 600 秒(10 分钟),若客户端在规定时间内未响应,将被视为超时。PermitRootLogin no
:PermitRootLogin
即 “Permit Root Login”,禁止 Root 用户直接通过 SSH 登录,降低系统被攻击的风险。
重启 SSH 服务使配置生效:
systemctl restart sshd
2. 实战漏洞防护
案例:某企业因未设置MaxAuthTries
,遭暴力破解攻击,导致系统数据泄露。
解决方案:结合fail2ban
动态封禁 IP。fail2ban
是一款基于日志分析的入侵防御工具,通过监控 SSH 登录日志,当检测到频繁的错误登录尝试时,自动封禁相应的 IP 地址,有效防止暴力破解攻击。
安装fail2ban
工具(以 Debian 或 Ubuntu 系统为例):
sudo apt install fail2ban
配置fail2ban
:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo vim /etc/fail2ban/jail.local
在[ssh]
部分进行如下配置:
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
重启fail2ban
服务使配置生效:
sudo systemctl restart fail2ban
五、文件权限的精细化控制
Root 用户默认权限设置
通过修改umask
值,可以设置 Root 用户新建文件和目录的默认权限。
使用vim
编辑器打开.bashrc
文件:
vim /root/.bashrc
添加以下内容:
umask 022
umask
值为 022 时,新建文件的默认权限为 644(rw-r--r--
),新建目录的默认权限为 755。
使配置生效:
source /root/.bashrc
验证配置:
touch /root/testfile
ls -l /root/testfile
输出结果应为-rw-r--r--
。
企业级扩展:使用 ACL 实现细粒度权限控制
访问控制列表(ACL)为文件和目录提供了更细粒度的权限控制,允许为特定用户或用户组设置独立的权限。
授予用户test1
对/data/project
目录的读写执行权限:
setfacl -m u:test1:rwx /data/project
-m
:-m
全称 “modify”,用于修改 ACL 规则。u:test1:rwx
:u
代表 “user”,指定用户为test1
,并赋予其读写执行权限。
六、金砖赛真题的启示与企业实践
历史记录的重要性
操作历史记录是系统安全审计的重要依据,通过保存和分析历史记录,可以追溯安全事件的发生过程,及时发现潜在的安全问题。
永久保存操作记录:
使用vim
编辑器打开/etc/profile
文件:
vim /etc/profile
添加以下内容:
export HISTTIMEFORMAT="%F %T "
export HISTSIZE=10000
export HISTTIMEFORMAT="%F %T "
:HISTTIMEFORMAT
全称 “History Time Format”,为历史记录添加时间戳,格式为 “年 - 月 - 日 时:分: 秒”,便于准确追溯操作时间。export HISTSIZE=10000
:HISTSIZE
即 “History Size”,设置保存 10000 条历史记录,确保重要操作记录不被遗漏。
安全基线检查工具推荐
- Lynis:Lynis 是一款自动化系统审计工具,可对系统进行全面的安全检查,包括操作系统配置、软件安装、文件权限等方面。它会生成详细的报告,指出系统存在的安全问题,并提供相应的改进建议。
- OpenSCAP:OpenSCAP 是一款合规性扫描工具,支持多种安全标准,如 CIS(Center for Internet Security)基准、NIST(National Institute of Standards and Technology)标准等。通过使用 OpenSCAP,企业可以确保系统配置符合相关的安全标准和法规要求。
总结
从大赛真题到真实生产环境,网络安全配置的核心在于:
- 纵深防御:构建多层次的安全防护体系,包括密码策略、权限控制、日志审计等,有效抵御各种安全威胁。
- 最小权限原则:遵循最小权限原则,合理分配用户权限和 SSH 访问限制,降低因权限滥用导致的安全风险。
- 可验证性:通过命令回显和历史记录,确保安全配置操作生效,便于后续的安全审计和问题排查。
通过不断学习和实践,企业可以提升网络安全防护能力,为业务的稳定发展提供有力保障。