首页 > 数据库 >怎么禁用root用户远程登录_最小权限原则安全配置

怎么禁用root用户远程登录_最小权限原则安全配置

来源:互联网 2026-04-30 16:46:21

禁用 root 远程登录:一个核心配置与四个关键加固步骤 直接说结论:禁用 root 远程登录的核心,确实是设置 PermitRootLogin no 并重启 sshd 服务。但如果你只做到这一步,那安全防护可能还停留在“纸面”上。真正有效的策略,需要配合用户白名单、关闭密码认证、精细化控制 sud

禁用 root 远程登录:一个核心配置与四个关键加固步骤

直接说结论:禁用 root 远程登录的核心,确实是设置 PermitRootLogin no 并重启 sshd 服务。但如果你只做到这一步,那安全防护可能还停留在“纸面”上。真正有效的策略,需要配合用户白名单、关闭密码认证、精细化控制 sudo 权限,并最终让日志审计环节真正运转起来。

PermitRootLogin no 是核心,但改完不重启等于没改

这个操作的本质,是让 SSH 守护进程在认证环节就直接对 root 用户说“不”。关键配置项就这一行:PermitRootLogin no,必须确保它出现在 /etc/ssh/sshd_config 文件里,并且没有被注释掉。

长期稳定更新的攒劲资源: >>>点此立即查看<<<

  • 别急着改完就收工——先检查配置文件里是不是有多处 PermitRootLogin 设置,只保留一行生效的,其他的全部注释或删除。
  • 改完配置后,重启服务是必须动作:sudo systemctl restart sshd(适用于 Ubuntu/Debian/CentOS 7+),旧版本系统则使用 sudo service sshd restart
  • 这里有个关键提醒:千万别在修改配置的当前 root 终端里测试。正确做法是开一个新终端去验证,否则一旦配置出错,你可能真的就被关在门外了。
  • 验证方法很简单:从另一台机器执行 ssh root@你的服务器IP,如果看到 Permission denied (publickey) 或者直接被拒绝连接,那才算配置成功。

AllowUsers 比 PermitRootLogin 更细一层控制

PermitRootLogin no 只拦住了 root 用户,但攻击者仍然可以扫描和尝试其他用户账号。这时候,增加一道 AllowUsers 白名单,就能把攻击面压缩到最小。

  • /etc/ssh/sshd_config 中添加一行,例如:AllowUsers admin deploy(多个用户名用空格分隔)。
  • 务必确保这些白名单里的用户已经存在,并且配置好了密码或 SSH 密钥,同时他们应该属于 sudo(Ubuntu)或 wheel(RHEL/CentOS)组,以便后续管理。
  • 如果运维需要从固定 IP(比如公司跳板机)登录,配置可以更精准:AllowUsers admin@192.168.10.5
  • 需要注意:当 AllowUsersDenyUsers 同时存在时,AllowUsers 的优先级更高;如果两者都没配置,默认就是允许所有用户。

密码登录不关,禁 root 就是纸糊的

只要服务器还允许密码认证,攻击者就可以暴力穷举普通用户的密码,一旦成功,再利用 sudo 提权——这样一来,禁用 root 远程登录的意义就被大大削弱了。

  • 务必关闭密码登录:设置 PasswordAuthentication no,同时确认 PubkeyAuthentication yes 是开启状态。
  • 在关闭密码认证之前,必须确保普通用户已经将 SSH 公钥部署到了服务器的 ~/.ssh/authorized_keys 文件中,否则修改后就会无法登录。
  • 测试顺序至关重要:先用密钥登录普通用户 → 执行 sudo -l 确认权限无误 → 最后才修改 PasswordAuthentication 并重启服务。
  • 别迷信“我的密码足够复杂”。SSH 的密码认证机制天生难以抵御自动化的暴力破解,使用密钥对才是更安全的解决方案。

sudo 权限给太宽,等于变相开放 root shell

禁了 root 远程登录,但如果转头就给普通用户 ALL=(ALL) ALL 这样的全权 sudo 权限,那跟没禁几乎没区别——攻击者只需要一个 sudo /bin/bash 命令,就能获得完整的 root 环境。

  • 先用 sudo -l 命令检查当前用户能执行哪些命令,特别要警惕那些可以用于逃逸到 shell 的命令,比如 /bin/bash/usr/bin/vi/usr/bin/python3 等。
  • 编辑 /etc/sudoers 文件时,必须使用 sudo visudo 命令,它能帮你检查语法,避免因配置错误导致 sudo 功能完全失效。
  • 授权原则是尽量精确:最好能指定到二进制文件的完整路径和具体参数。例如:admin ALL=(root) /usr/bin/systemctl restart nginx
  • 免密码选项(NOPASSWD)只应用于确定无风险的操作,并且必须写明完整路径,避免使用 systemctl 或通配符 */systemctl 这类模糊的写法。

最后,也是最容易被忽略的一点:日志审计。无论权限设置得多精细,如果没人去查看操作记录,防线就等于形同虚设。定期检查 grep 'sudo:' /var/log/auth.log 或使用 journalctl _COMM=sudo 来审计 sudo 操作,这才是真正兜底的防线。

侠游戏发布此文仅为了传递信息,不代表侠游戏网站认同其观点或证实其描述

热游推荐

更多
湘ICP备14008430号-1 湘公网安备 43070302000280号
All Rights Reserved
本站为非盈利网站,不接受任何广告。本站所有软件,都由网友
上传,如有侵犯你的版权,请发邮件给xiayx666@163.com
抵制不良色情、反动、暴力游戏。注意自我保护,谨防受骗上当。
适度游戏益脑,沉迷游戏伤身。合理安排时间,享受健康生活。