在CentOS 7系统中,限制登录是保障服务器安全的重要措施,可以有效防止未授权访问、暴力破解等安全风险,通过合理的配置,管理员可以控制哪些用户或IP地址能够登录系统,以及登录的方式和权限,本文将详细介绍CentOS 7系统中限制登录的多种方法,包括基于用户、IP地址、SSH协议以及登录时间的限制,帮助管理员构建更安全的服务器环境。

基于用户账户的限制
通过限制特定用户账户的登录权限,可以避免敏感账户被滥用,在CentOS 7中,主要有以下两种方法:
禁用用户账户
对于不再需要登录权限的用户,可以使用usermod命令直接禁用其账户,禁用用户test:sudo usermod -L test
该命令会锁定用户密码,使其无法通过密码登录,若需重新启用,使用
-U参数解锁:sudo usermod -U test
设置用户过期时间
若需临时限制用户登录,可设置账户过期时间,将用户test的过期时间设置为2025年12月31日:sudo chage -E 2025-12-31 test
过期后,用户将无法登录,若需清除过期时间,使用
-E 0参数。
基于IP地址的限制
通过限制允许登录的IP地址,可以有效防范来自陌生网络的攻击,CentOS 7中可通过修改SSH配置文件实现:
编辑SSH配置文件
使用vi或nano编辑/etc/ssh/sshd_config文件:sudo vi /etc/ssh/sshd_config
添加Allow/Deny规则
在文件中添加以下规则(根据需求选择其一):- 仅允许特定IP登录(如192.168.1.100):
AllowUsers root@192.168.1.100 test@192.168.1.0/24
或使用
AllowHosts(需较新SSH版本支持):AllowHosts 192.168.1.100, 192.168.1.0/24
- 禁止特定IP登录(如10.0.0.0/8网段):
DenyHosts 10.0.0.0/8
- 仅允许特定IP登录(如192.168.1.100):
重启SSH服务
保存文件后,重启SSH服务使配置生效:sudo systemctl restart sshd
限制SSH登录方式
SSH是CentOS 7默认的远程登录协议,通过限制其登录方式可进一步提升安全性:

禁用密码登录,启用密钥认证
在/etc/ssh/sshd_config中设置:PasswordAuthentication no PubkeyAuthentication yes
重启SSH服务后,仅允许通过SSH密钥登录,可有效防止暴力破解。
禁用root直接登录
出于安全考虑,建议禁止root用户直接通过SSH登录:PermitRootLogin no
管理员需先通过普通用户登录,再使用
su或sudo提权。限制SSH端口
默认SSH端口为22,可修改为其他端口(如2222)以减少扫描攻击:Port 2222
同时需确保防火墙允许新端口的访问。
基于登录时间的限制
若需在特定时间段内限制用户登录,可使用login.defs文件或cron任务结合passwd命令实现:
编辑/etc/login.defs文件,添加LOGIN_TIMEOUT参数设置登录超时时间(单位:秒):LOGIN_TIMEOUT 300
通过cron任务在特定时间执行用户禁用/启用命令,每天22:00禁用用户test,次日8:00启用:sudo crontab -e
添加以下内容:
0 22 * * * usermod -L test 0 8 * * * usermod -U test
使用PAM模块实现高级限制
Linux Pluggable Authentication Modules (PAM)提供了更灵活的登录控制方式,使用pam_time.so模块限制用户登录时间:

创建PAM配置文件
在/etc/security/time.conf中添加规则:test;*;!Al 0800-1800
表示用户
test只能在每天8:00-18:00之外的时间登录。启用PAM模块
确保SSH服务配置文件(/etc/pam.d/sshd)包含以下行:account required pam_time.so
防火墙与Fail2ban结合
配置防火墙规则
使用firewalld限制特定IP的SSH访问:sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.50" service name="ssh" reject' sudo firewall-cmd --reload
使用Fail2ban防暴力破解
安装Fail2ban并配置/etc/fail2ban/jail.local:[sshd] enabled = true port = 22 maxretry = 3 bantime = 3600
该工具会自动检测失败登录并封禁IP。
相关问答FAQs
Q1: 如何查看当前系统中哪些用户被禁止登录?
A1: 可以通过以下命令检查用户状态:
- 锁定用户:
sudo passwd -S username,若输出显示L则表示账户已锁定。 - 过期用户:
sudo chage -l username,查看Account expires字段。 - 禁用SSH登录的用户:检查
/etc/ssh/sshd_config中的AllowUsers或DenyUsers规则。
Q2: 限制登录后如何紧急恢复访问?
A2: 若因配置错误导致无法登录,可通过以下方式恢复:
- 通过控制台(物理或VNC)直接登录服务器。
- 修改
/etc/ssh/sshd_config中的限制规则,重启SSH服务。 - 若用户被锁定,使用
sudo usermod -U username解锁。 - 若防火墙规则错误,通过
sudo firewall-cmd --rich-rule='rule family="ipv4" source address="IP地址" service name="ssh" accept'临时放行。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复