禁用 root 远程登录:一个核心配置与四个关键加固步骤 直接说结论:禁用 root 远程登录的核心,确实是设置 PermitRootLogin no 并重启 sshd 服务。但如果你只做到这一步,那安全防护可能还停留在“纸面”上。真正有效的策略,需要配合用户白名单、关闭密码认证、精细化控制 sud
直接说结论:禁用 root 远程登录的核心,确实是设置 PermitRootLogin no 并重启 sshd 服务。但如果你只做到这一步,那安全防护可能还停留在“纸面”上。真正有效的策略,需要配合用户白名单、关闭密码认证、精细化控制 sudo 权限,并最终让日志审计环节真正运转起来。
这个操作的本质,是让 SSH 守护进程在认证环节就直接对 root 用户说“不”。关键配置项就这一行:PermitRootLogin no,必须确保它出现在 /etc/ssh/sshd_config 文件里,并且没有被注释掉。
长期稳定更新的攒劲资源: >>>点此立即查看<<<
PermitRootLogin 设置,只保留一行生效的,其他的全部注释或删除。sudo systemctl restart sshd(适用于 Ubuntu/Debian/CentOS 7+),旧版本系统则使用 sudo service sshd restart。ssh root@你的服务器IP,如果看到 Permission denied (publickey) 或者直接被拒绝连接,那才算配置成功。PermitRootLogin no 只拦住了 root 用户,但攻击者仍然可以扫描和尝试其他用户账号。这时候,增加一道 AllowUsers 白名单,就能把攻击面压缩到最小。
/etc/ssh/sshd_config 中添加一行,例如:AllowUsers admin deploy(多个用户名用空格分隔)。sudo(Ubuntu)或 wheel(RHEL/CentOS)组,以便后续管理。AllowUsers admin@192.168.10.5。AllowUsers 和 DenyUsers 同时存在时,AllowUsers 的优先级更高;如果两者都没配置,默认就是允许所有用户。只要服务器还允许密码认证,攻击者就可以暴力穷举普通用户的密码,一旦成功,再利用 sudo 提权——这样一来,禁用 root 远程登录的意义就被大大削弱了。
PasswordAuthentication no,同时确认 PubkeyAuthentication yes 是开启状态。~/.ssh/authorized_keys 文件中,否则修改后就会无法登录。sudo -l 确认权限无误 → 最后才修改 PasswordAuthentication 并重启服务。禁了 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 操作,这才是真正兜底的防线。
侠游戏发布此文仅为了传递信息,不代表侠游戏网站认同其观点或证实其描述