我是 Linux 世界的新手,我读过一些关于安全的教程。我在 StackExchange 上看到过一些关于这个主题的问题,但就我所见,没有一个答案能让我明白。
我不断看到他们(教程)建议root
出于各种原因禁用它,其中最重要的原因是,如果发生暴力攻击,具有 root 用户的服务器最有可能崩溃(据我了解,暴力攻击意味着一个自动化过程,它会反复尝试使用用户名/密码组合进行身份验证,直到成功)
现在,假设我禁用用户名/密码验证,并且仅启用 SSH RSA 密钥验证(并且假设我对私钥所在设备的安全性非常有信心,并且我也有该密钥的密码)启用 root 的风险是什么?
假设攻击者永远不会获得我的私钥(和密码),他们通过什么方式来访问服务器?
答案1
是的。默认情况下它是关闭的FreeBSD
。
部分原因是,对于任何试图进行暴力入侵的人来说,知道用户名就是成功的一半。'root' 是所有类 unix 操作系统都包含的用户。想必你自己的用户名更难猜到。sudo
进入后,你可以随时根据需要进行登录。此外,sudo
当你确实发生入侵时,日志将显示哪个用户在做坏事。
仔细检查你的 sshd 和/或安全日志(取决于你的日志设置)。你会对随机登录尝试的次数感到震惊。
如果这是一台服务器,您可能还希望对机器设置防火墙,使得ssh
只能从某些知名的网络进行连接。
还要考虑一些漂亮的 pam 插件,它们可以在时间跨度 t 内 n 次登录失败后将 IP 地址添加到防火墙。
如果您确实必须允许 root,那么您还可以在/root/.ssh/authorized_keys
可以接受该密钥的 IP 地址/主机名列表中指定。
例如(丑化后公开展示):
from="*.foo.bar.isp.net,*NewEngland.bellatlantic.net,333.132.227.*,*.mydomain.net,*.customer.com,177.12.47.2??" ssh-dss AAAA ..[public key].. cas6A== [email protected]
答案2
始终应权衡强化方法的风险与您要保护的资产以及这些资产的内在价值。
我之所以这么说,是因为需要考虑这样一个事实:即使禁用了 root 帐户,也可以通过其他方式获得提升的访问权限。这就像一个地鼠洞,如果你只“半途而废”,你实际上并没有获得你认为的安全性。
某些进程以 root 身份运行。利用该进程可能会提升权限。因此,让我们检查所有正在运行的进程,并确保它们以较低的权限运行。这并不总是容易的,具体取决于所需的软件。
即使禁用 root 帐户,从其他操作系统或启动媒体启动也可能使文件系统易受攻击。因此,让我们在所有东西上使用加密文件系统,这样万一发生这种情况,我们就可以确保数据的完整性。
那么备份呢?如果在机器处于热态时运行,敏感数据是否会以明文形式存档在未加密的介质上?
用户帐户;bob 需要 sudo 来安装软件。如果 bob 的登录凭据被泄露会发生什么?这可能比泄露 root 帐户更容易,但最终结果是一样的。
您提到您是初学者,所以我们可能应该从家庭系统的角度来考虑这个问题。服务器的强化方式通常与家庭系统不同,将相同的范例应用于两者是愚蠢的。尽管如此,有一些基本原则确实适用于两者。
- 考虑你所保护的资产的价值和保护这些资产的成本
- 删除不需要的软件和服务
- 及时更新补丁
- 考虑到牺牲可用性。这是否值得增加安全性?
如果您已经禁用了基于密码的 ssh 登录,并且只允许基于密钥的身份验证,那么这无疑是最划算的选择。当密码身份验证被禁用时,强行进行 ssh 登录是不可能的,并且可能需要 10 分钟的时间来实现。
如果你想更进一步,你可以另外定义root
允许/不允许登录的位置(或任何其他用户/组)的限制。请参阅man 5 access.conf
归根结底,这是出于安全考虑,应该在牺牲可用性的情况下权衡。没有太多的安全措施不会导致可用性降低,尽管有时这些措施非常微不足道。