【发布时间】:2021-11-21 23:50:59
【问题描述】:
linux安全和root访问问题......
我正在为基于底层的区块链设置一个运行验证器节点的服务器。我试图加强我的服务器的安全性。我为所有端口设置了 ufw,但节点运行所需的端口除外。我用 ed25519 设置了 2FA、SSH,然后我花时间试图弄清楚,如果出于某种疯狂的原因有人进入......我怎么能阻止某人使用 systemctl 或 poweroff 和 sudo 特权.目标是最大化正常运行时间并始终与其他节点保持同步。
无论如何,我开始阻止允许 SSH 的用户帐户的 bash 命令并阻止 SSH 到 root。然后我又屏蔽了一些命令并想,如果有人能找到解决办法怎么办?所以,我刚开始阻止太多东西哈哈。即使我为用户禁用了sudo 并阻止了一些命令,用户仍然可以使用systemctl 和stop 为节点使用service。最终我找到了这个guide,关于如何只允许用户使用一些命令。
更新:我没有正确地从 sudo 组中删除用户。之后他们仍然可以使用systemctl,但系统随后允许systemctl 弹出并输入root 用户密码进行身份验证。无论如何,我只是想要一些简单而安全的东西......
我最终删除了用户的所有命令并将 su 命令符号链接并将其重命名为只有我知道的随机命令。用户执行的所有其他命令都以
-rbash: /usr/lib/command-not-found: restricted: cannot specify /' in command names
我带走了bash history 和bash autocomplete/tab completion。现在您唯一能做的就是猜测命令,这将使您达到您仍然必须通过我的root 密码的程度。当只有一个可用命令以这种方式被屏蔽时,黑客有没有办法扫描可用命令?
无论如何,我之所以这么说,是因为我一直听说最佳安全实践涉及“禁用 root”。有时我认为它只是禁用 root SSH,我已经这样做了,但有时我读它就像禁用 root 帐户一样。有人说禁用密码并尝试将其与sudo 权限分开,以便更容易追踪到个人用户。
在我的情况下,我需要以某种方式保留 root 访问权限,但我基本上将所有内容都隐藏在 root 用户中。所以,如果有人可以访问root,那就结束了。但是,它在 2FA、SSH 和一个未知命令之后,您可以尝试输入密码来访问 root。
我是否认为这个“为安全而禁用根”全错了,我应该完全禁用它,还是到目前为止我所做的一切有意义?
【问题讨论】:
-
您是否尝试阻止将 systemctl 与 sudoers 文件一起使用?
-
@Jeriko,是的。我从sudo组中删除了用户,但是在使用systemctl时仍然提示输入用户密码,所以它甚至不需要sudo来使用systemctl。在我意识到这一点之后,我并没有试图弄清楚如何将其关闭,而是认为 id 删除了所有内容,因为我在文章顶部链接了该指南
-
不正常。 1)您不需要sudo权限来检查服务的状态,但您需要它来停止服务2)如果用户没有sudo权限,则不会出现密码提示并发送邮件给管理员。如果有任何间接条目允许您的用户将 systemctl 与 sudo 一起使用(例如,如果您的用户属于您授予此权限的另一个组),请再次检查您的 sudoers 文件。用 visudo 命令修改。
-
@Jeriko,您对 sudo 的看法是对的,我更新了问题以反映这一点。我最初的问题实际上是我试图让人们对制作一个随机命令的想法,该命令通过 su 命令屏蔽 root 访问作为用户唯一可用的命令。这是否有任何危险,或者没有危害,甚至可能有助于我的服务器的安全?
-
Stackoverflow 用于软件开发方面的帮助。您应该考虑在Unix & Linux 或Server Fault 上提出这样的问题。
标签: linux bash ssh root hardening