【问题标题】:Disable everything but a hidden command for root access禁用除 root 访问的隐藏命令之外的所有内容
【发布时间】: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


【解决方案1】:

您也可以创建一个 SSH 密钥并使用它来登录 Linux 服务器,而不是使用密码,并且不要共享您的私钥。

以下链接是关于如何创建 SSH 密钥的教程,https://www.cyberciti.biz/faq/how-to-set-up-ssh-keys-on-linux-unix/

您还可以在 sshd_config 文件中使用 AllowUsers 选项添加用户过滤:

AllowUsers admin1@192.168.1.* admin2@192.168.1.* otherid1 otherid2

This allows admin1 and admin2 only from 192.168.1.* addresses and otherid1, otherid2 from anywhere.

【讨论】:

  • 嘿,谢谢你的好建议,人们应该尽量不要使用密码进行 ssh。我已经使用受密码保护的私钥设置了 SSH,禁用了通过 SSH 以 root 身份登录的功能,为 SSH 登录添加了 2FA,并禁用了使用密码通过 SSH 登录的可能性。我所说的密码是他们通过所有这些后的root访问密码,但是能够输入该密码的命令是随机且隐藏的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-23
  • 2014-04-10
  • 2023-04-05
  • 1970-01-01
  • 2017-02-18
相关资源
最近更新 更多