可通过 PAM 模块、nologin、limits.conf 等方法限制 linux 账户登录。1. 编辑 time.conf 并启用 pam_time.so 实现时段控制;2. 使用 usermod -s /sbin/nologin 或 passwd - l 禁止用户登录;3. 配置 limits.conf 与 pam_limits.so 限制 并发 会话数;4. 通过 pam_tally2.so 设置登录失败锁定策略,增强 安全防护。

在 Linux 中设置账户登录限制可以通过多种方式实现,主要目的是增强系统安全性,防止未授权访问或暴力破解。常见的方法包括限制用户登录时间、控制同时登录的会话数量、禁止特定用户登录以及通过 PAM 模块进行细粒度管理。
限制用户登录时间
可以使用 login.defs 和 faillog 配合,但更常用的是通过 PAM 模块结合 time.conf 来控制用户在特定时间段内是否能登录。
– 编辑 /etc/security/time.conf 文件 – 添加规则限制用户在指定时间段外无法登录,例如:sshd;*;username;!Al0800-1800 表示用户 username 只能在早上 8 点到下午 6 点通过 SSH 登录 – 确保 /etc/pam.d/sshd 或 /etc/pam.d/login 中包含:
account required pam_time.so
禁止用户登录系统
如果需要临时或永久禁止某个用户登录,有几种简单有效的方法:
– 使用 nologin:修改用户 shell 为 /sbin/nologin 或 /usr/sbin/nologin 执行命令:usermod -s /sbin/nologin username – 锁定用户账户:passwd -l username(会锁定密码,无法通过密码登录)– 解锁账户使用:passwd -u username
限制并发登录会话数
可以通过 PAM 的 pam_limits.so 模块来控制每个用户能打开的登录会话数量。
– 编辑 /etc/security/limits.conf – 添加如下内容限制用户最多 2 个并发 TTY 或 SSH 会话:username hard maxsyslogins 2 – 同时确保 /etc/pam.d/sshd 和 /etc/pam.d/login 包含:
session required pam_limits.so
使用 PAM 模块进行登录失败处理
为了防止暴力破解,可配置 PAM 以限制登录失败次数。
– 安装并配置 pam_tally2 或 pam_faillock 模块 – 在 /etc/pam.d/common-auth(debian系)或 /etc/pam.d/system-auth(RHEL 系)中添加:auth required pam_tally2.so deny=5 unlock_time=900 表示连续失败 5 次后锁定账户 15 分钟 – 查看失败次数:pam_tally2 –user=username – 手动解锁:pam_tally2 –user=username –reset
基本上就这些。合理组合上述方法,可以有效控制用户登录行为,提升系统安全。关键是根据实际需求选择合适的限制策略,并测试确认不影响正常运维。


