在CentOS系统中,通过SSH配置文件、PAM模块及防火墙策略,可为不同用户或用户组设置精细化访问权限。以下是具体方法及配置示例:
🔐 一、基于sshd_config的用户/组权限控制
1. 用户级限制
- 允许/禁止特定用户:
# 仅允许user1、user2登录,拒绝其他用户 AllowUsers user1 user2@192.168.1.* # 允许user1(所有IP)和user2(指定IP段) DenyUsers baduser # 禁止特定用户登录- 组合使用:
DenyUsers优先级高于AllowUsers(例:同时配置时,拒绝规则生效)。
- 组合使用:
2. 组级限制
# 仅允许sysadmin组登录,拒绝developers组
AllowGroups sysadmin
DenyGroups developers
- 应用场景:按职能划分权限(如运维组可登录,开发组禁止)。
3. IP与用户绑定
AllowUsers ops@10.0.0.0/24 dbadmin@192.168.1.100
- 作用:限制用户只能从特定IP登录(如运维人员仅限内网访问)。
⚙️ 二、使用Match块实现差异化配置
针对不同用户/组应用独立规则:
# 用户组差异配置
Match Group developers
PasswordAuthentication no # 强制密钥认证
PermitTunnel no # 禁止隧道转发
AllowTcpForwarding no # 禁用端口转发
Match User auditor
ChrootDirectory /var/jail # 限制根目录为沙箱环境
ForceCommand internal-sftp # 仅允许SFTP,禁止SSH命令操作
- 优势:为不同角色定制安全策略(如审计员仅限文件传输)。
⏰ 三、基于PAM的时间/IP限制
通过PAM模块实现动态规则:
-
安装与配置:
sudo yum install pam_access # 编辑/etc/pam.d/sshd,添加: account required pam_access.so -
时间/IP规则(编辑
/etc/security/access.conf):# 允许user1在工作时间(9-18点)从内网登录 + : user1 : 192.168.1.0/24 - : user1 : ALL # 禁止所有用户周末登录 - : ALL : ALL- 生效条件:需SSH服务启用PAM支持(默认开启)。
🔥 四、防火墙与Fail2ban增强控制
1. 防火墙IP白名单
# 仅允许IP段192.168.1.0/24访问SSH
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port port="22" protocol="tcp" accept'
sudo firewall-cmd --reload
- 注:优先级高于SSH配置,直接拦截非授权IP。
2. Fail2ban自动封禁
# 配置/etc/fail2ban/jail.d/sshd.conf
[sshd]
enabled = true
maxretry = 3 # 3次失败即封禁
bantime = 1h # 封禁1小时
- 日志监控:自动分析
/var/log/secure,防御暴力破解。
🔒 五、安全实践与验证
-
权限冲突处理:
- 规则优先级:
DenyUsers > AllowUsers,Match块 > 全局配置。 - 测试命令:
ssh -vT user@server # 查看详细连接日志 journalctl -u sshd # 检查服务端错误信息
- 规则优先级:
-
关键文件权限:
~/.ssh/authorized_keys→600~/.ssh目录 →700- 错误示例:权限不当导致
Permission denied。
-
配置生效流程:
sudo sshd -t # 语法检查 sudo systemctl restart sshd # 重启服务
💎 六、总结:权限策略推荐
| 场景 | 配置方案 | 安全等级 |
|---|---|---|
| 管理员用户 | AllowGroups sysadmin + 密钥认证 |
⭐⭐⭐⭐⭐ |
| 外包人员 | Match块限制IP/命令 + 时间控制 |
⭐⭐⭐⭐ |
| 审计员 | ChrootDirectory + 仅SFTP |
⭐⭐⭐⭐⭐ |
重要提醒:
- ✋ 修改前备份配置:
cp /etc/ssh/sshd_config{,.bak} - 🌐 通过本地终端测试规则,避免远程连接中断后无法恢复。
- 🔄 定期审计日志:
grep 'sshd' /var/log/secure监控异常登录。
浙公网安备 33010602011771号