在/etc/init.d中保留非root用户拥有的脚本的安全性如何?


15

我有一个作为守护程序运行的应用程序,该应用程序由/etc/init.d中的脚本控制。
有时,我们需要更改这些脚本的启动/控制参数,然后重新启动守护程序。这些脚本仅对root用户具有写许可权,因此在编辑这些脚本时,我需要root特权。

我当时的想法是,我应该让非root用户成为这些脚本的所有者。这样,只有root用户和特殊用户才能编辑这些脚本。

将一些非root拥有的文件保留在/etc/init.d目录下是否可以接受?
还是荒谬的,扰乱了系统的自然秩序?


1
坏主意,不要。
ChuckCottrill 2014年

Answers:


17

马上想到的是,特权用户能够以root身份在启动时运行东西,这对于破解者来说是合乎需要的:

  • 想要升级其他帐户的特权
  • 想要使用您的服务器托管恶意服务
  • 如果服务器重新启动,则想启动IRC / Spam僵尸程序
  • 想要ping一艘母舰说“我又起来了”,或者下载一个新的有效载荷
  • 想要清理他们的足迹
  • ...其他缺点。

如果您的弱势用户受到某种方式的威胁,这可能是可能的,也许是通过其他服务(http / etc)。大多数攻击者会快速运行一个ls或多个对象find/etc以查看是否存在这种可能性,他们使用各种语言编写的shell使得这一点变得简单。

如果您主要通过SSH远程管理服务器,除非您检查init脚本,否则很有可能甚至看不到此信息,因为在启动时将看不到输出(尽管您应该使用一些根据已知哈希值检查这些脚本的哈希值,以查看是否已更改某些内容或版本控制软件等)

您绝对不希望发生这种情况,root确实需要拥有该初始化脚本。您可以将开发用户添加到sudoers列表中,以便足够方便地更新脚本,但是我建议您不要对init.d中的任何内容进行特权写访问。


5
tl; dr:如果执行此操作,则非root用户在下次引导时与root用户一样好。你求求你了。
沃伦·杨

9

除了Tim Post的观点之外,我还补充说,对于需要多个人将更改推送到服务器上的设置,您应该考虑使用某种配置管理系统。

例如,如果使用puppet,chef或cfengine,则可以让相关用户在本地编辑文件,然后使用配置管理将更改推出。究竟如何设置这当然取决于你使用哪个系统,但正确的建立,将包括版本控制软件,因此很容易恢复到一个配置文件时(注的早期版本:,没有如果!)有人弄错了。它还将使您更轻松地将配置复制到单独的测试系统等。


即使在不考虑系统是否受到威胁的情况下,将脚本甚至配置数据文件保持在配置/版本管理系统中的版本都是一个好主意。
ChuckCottrill 2014年

确实-我用它来修正错误的频率要高出几个数量级,而我用它来修正受损的系统。
珍妮D

非常感谢你 。因为这里主要是一个专用用户使用此应用程序,所以sudo相当有效,这也是我长期以来一直在做的事情。但是我对配置真的是非常感兴趣的版本管理系统。尊敬的珍妮,您可以向我提供任何参考吗?:)。
Akaks,2014年

1
如果您不想使用完整的puppet / chef / cfengine等路线,我将亲自使用www.perforce.com。在存在木偶之前的时间里,我们用了约100台服务器,而它们的评估许可证足以容纳一台服务器。主要优点是您可以将VC的文件检出到文件系统中的任何位置,而不仅限于一个子路径。其他选项是joeyh.name/code/etckeeper,或结合使用任何VC和脚本将文件移动到正确的目录。
珍妮·D
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.