PermitRootLogin(Prohibit-Password)之争
什么是PermitRootLogin?

PermitRootLogin是SSH配置文件中的一个参数,用来控制是否允许root用户通过SSH登录到系统,以及是否允许使用密码方式登录。默认情况下,该参数为“yes”,即允许root用户通过SSH登录。
PermitRootLogin参数的值有三种:yes、no和prohibit-password,其中no表示不允许root用户通过SSH登录,prohibit-password表示只允许root用户通过公钥认证方式登录,不允许使用密码方式登录。
PermitRootLogin(Prohibit-Password)之争升级

PermitRootLogin(Prohibit-Password)之争自SSH协议诞生以来就一直存在,但近年来争议越来越大。支持PermitRootLogin的人认为,如果管理员知道如何保护好root账户的密码,那么允许root账户通过SSH登录是可以接受的。而支持Prohibit-Password的人则认为,不管密码多么复杂,只要可以通过密码登录,就存在被破解的风险。因此,只允许使用公钥认证方式可以有效提高系统的安全性。
在2016年,由于PermitRootLogin问题的争议不断升级,OpenSSH频繁更新其文档中对PermitRootLogin参数的解释,以更准确地表述该参数的作用。此外,越来越多的Linux发行版也默认使用Prohibit-Password策略来保护服务器。
PermitRootLogin的安全风险

PermitRootLogin的存在会给系统带来安全风险。如果管理员不小心将SSH服务暴露在公网上,那么黑客就有机会通过暴力破解root账户密码的方式入侵系统,并取得系统的最高权限。而如果使用Prohibit-Password,黑客除非获取到root账户对应的私钥,否则根本无法通过SSH登录到系统。
另外,PermitRootLogin还会增加系统的被攻击面。如果系统上安装的服务存在漏洞,攻击者通过该漏洞获取到了一个普通用户的权限,那么攻击者可以通过PermitRootLogin直接升级至root权限,从而完全控制该系统。
因此,为了保证系统的安全性,建议不使用PermitRootLogin方式来登录服务器,专门为管理员设立一个非root账户,并通过sudo命令授予该账户更高的权限。
关于Prohibit-Password的注意事项

Prohibit-Password策略也存在一些需要注意的事项。首先,使用Prohibit-Password登录服务器需要提前生成一对公私钥,并将公钥交给管理员。因此,在使用Prohibit-Password策略之前,需要确保所有管理员都能够成功创建公私钥对,且公钥已经正确放置到服务器上的指定位置。
其次,为了安全起见,建议定期更换公私钥,以防止私钥被泄露。在更换公私钥时,需要确保所有使用该私钥的地方都已经更新为新的公私钥。
最后,使用Prohibit-Password策略的服务器需要进行必要的加固措施,以防止其他攻击方式,比如口令猜测、社会工程学攻击等。