阅读量:3
1. 修改SSH配置文件(核心限制方式)
通过编辑/etc/ssh/sshd_config文件,可使用以下指令精准限制登录:
- 限制特定用户登录:添加
AllowUsers指令,指定允许登录的用户名(多个用户用空格分隔),例如AllowUsers user1 user2;若需限制用户仅能从特定IP登录,可写为AllowUsers user1@192.168.1.100(仅user1可从192.168.1.100访问)。 - 禁止特定用户登录:添加
DenyUsers指令,指定禁止登录的用户名,例如DenyUsers user3 user4(即使AllowUsers包含该用户,DenyUsers优先级更高)。 - 限制用户组登录:添加
AllowGroups指令,指定允许登录的用户组(需提前创建组并将用户加入),例如AllowGroups sshusers(仅sshusers组成员可登录);若需禁止用户组,可添加DenyGroups指令。
修改完成后,需重启SSH服务使配置生效:sudo systemctl restart ssh。
2. 使用TCP Wrappers(/etc/hosts.allow与/etc/hosts.deny)
通过hosts.allow和hosts.deny文件可实现基于IP的访问控制:
- 编辑
/etc/hosts.deny文件,添加sshd:ALL(拒绝所有IP访问SSH); - 编辑
/etc/hosts.allow文件,添加允许规则,例如:- 仅允许单个IP:
sshd:192.168.1.100; - 允许IP段:
sshd:192.168.1.(允许192.168.1.0~192.168.1.255所有IP); - 允许多个IP:
sshd:192.168.1.100,192.168.1.200。
此方法无需重启SSH服务,修改后立即生效。
- 仅允许单个IP:
3. 配置防火墙限制IP访问
使用ufw(Uncomplicated Firewall)或iptables限制可访问SSH的IP地址:
- UFW配置:
启用UFW:sudo ufw enable;
允许特定IP访问SSH(假设SSH端口为22):sudo ufw allow from 192.168.1.100 to any port 22;
删除默认允许SSH的规则(若有):sudo ufw delete allow ssh。 - Iptables配置:
允许特定IP访问SSH:sudo iptables -A INPUT -p tcp --dport 22 -s 192.168.1.100 -j ACCEPT;
拒绝其他所有IP访问SSH:sudo iptables -A INPUT -p tcp --dport 22 -j DROP;
保存规则(避免重启失效):sudo netfilter-persistent save。
防火墙规则可有效阻断非法IP的连接请求,提升系统安全性。
4. 禁用Root登录与密码认证(增强安全性)
- 禁用Root登录:编辑
/etc/ssh/sshd_config文件,将PermitRootLogin设置为no(禁止root用户通过SSH登录),强制用户使用普通账户登录后通过sudo提权,减少root账户被暴力破解的风险。 - 禁用密码认证:编辑
/etc/ssh/sshd_config文件,将PasswordAuthentication设置为no(禁用密码登录),同时启用公钥认证(PubkeyAuthentication yes)。需提前将客户端的公钥复制到服务器的~/.ssh/authorized_keys文件中(权限需设为600),实现无密码登录。此方法可有效防止暴力破解密码。
5. 使用Fail2Ban自动封禁恶意IP
Fail2Ban可监控SSH日志(/var/log/auth.log),自动封禁多次认证失败的IP地址:
- 安装Fail2Ban:
sudo apt install fail2ban; - 创建自定义配置文件(避免修改默认配置):
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local; - 编辑
jail.local文件,找到[sshd]部分,修改以下参数:enabled = true # 启用SSH防护 port = ssh # 监控SSH端口(默认22) filter = sshd # 使用sshd过滤规则 logpath = /var/log/auth.log # 日志路径 maxretry = 3 # 允许的最大失败次数(3次失败后封禁) bantime = 600 # 封禁时间(600秒=10分钟) findtime = 600 # 检测时间窗口(600秒内达到maxretry则封禁) - 重启Fail2Ban服务:
sudo systemctl restart fail2ban。
Fail2Ban可自动识别并封禁恶意IP,减少暴力破解攻击。
以上就是关于“Ubuntu SSH如何限制登录”的相关介绍,筋斗云是国内较早的云主机应用的服务商,拥有10余年行业经验,提供丰富的云服务器、租用服务器等相关产品服务。云服务器资源弹性伸缩,主机vCPU、内存性能强悍、超高I/O速度、故障秒级恢复;电子化备案,提交快速,专业团队7×24小时服务支持!
简单好用、高性价比云服务器租用链接:https://www.jindouyun.cn/product/cvm