为什么不在内部服务器上使用 chmod -R 777 来获取项目源代码?

信息安全 linux 权限 文件访问
2021-08-27 14:56:05

从我业余 Web 开发的日子开始,最小权限的原则就已经让我无法使用chmod -R 777 dir. 我个人从来不需要它,所以我从来没有使用过它。

我现在在一个专业的开发团队工作,我们最近将可执行代码移到了共享的内部服务器上。只有公司的人才能访问服务器,我们信任公司的每个人。无论如何,代码并不是特别敏感。

尝试运行另一个团队成员写入共享文件夹的脚本†会导致权限错误,因此“只是为了检查它是否可以正常工作”,一位同事chmod -R 777 /opt/path/to/shared/folder在该项目上运行。一旦它确实起作用,同事说它可以保持原样,而不是groups为我们切换到更可控的解决方案。

因为我是一只黑猩猩,所以我想大声说这是不好的做法,我们应该将其更改为groups解决方案。但是,经过深思熟虑后,我想不出为什么内部服务器上的共享可执行代码不应该具有777权限的原因。

从安全的角度来看,是否有任何理由将我们的项目文件夹的权限从 更改777为与 绑定更紧密的东西groups


† 我们无法更改此脚本的权限要求。

3个回答

但是,经过深思熟虑后,我想不出为什么内部服务器上的共享可执行代码不应该具有 777 权限的原因。

因为您不仅信任每个用户 - 这在具有访问权限的“每个人”都应该拥有该控制权的内部服务器上可能是合理的 - 您还信任该服务器上的每个进程。网络服务器。SSH 服务器。DHCP 客户端。每个计划任务和每个服务。甚至以“nobody”和“nogroup”运行的进程。攻击者可能利用各种进程来获取或扩展其访问权限。

因为如果您要在内部开发中如此草率,那么有人会在生产或客户系统上如此草率,因为“这就是我们内部修复它的方式”。

因为攻击者会乐于找到那个只是内部的、不重要或不受保护的小系统,所以会看到诸如可写 Web 应用程序文件之类的弱点,使用它们进入系统并开始利用它到达某个地方。我敢打赌,人们在该系统上使用的密码也适用于其他更有价值的内部系统。也许你们也跨服务器使用相同的root密码?这总是一个有趣的发现。

我要支持@gowenfawr,并说培育更好的黑猩猩本身就是一个目标。 (现在我将疯狂地推断您的企业文化)

在我的软件开发公司,我们看到越来越多的客户要求我们的安全实践证据,不仅在生产环境中,而且在我们的开发过程中,以及整个公司 IT 中。这是一个完全合理的要求,因为:

  1. prod 中草率的安全性使他们的数据处于危险之中。请参阅:Equifax 违反 2017 年
  2. 开发中草率的安全性导致开发人员编写草率的产品。确实,安全很重要的态度需要来自管理层,为开发人员提供安全培训,并有时间进行适当的代码审查,以及将修复安全漏洞优先于客户功能的意愿。允许这样的草率做法证明企业文化不会促进安全。
  3. IT 中草率的安全实践会导致网络中出现病毒,进而导致代码中出现病毒。看看2003 年著名的 Linux 后门尝试,有人以电子方式闯入备份代码存储库并插入恶意代码更改,希望最终将其合并到主存储库中。

那么,这是一个您会自豪地告诉客户的决定吗?


底线:最小特权原则是最基本的安全编码原则之一。这是一种思维方式,应该成为任何软件开发过程的一部分。这是关于问“有必要像这样削弱我们的安全吗?”,而不是“谁能证明这是危险的?”。黑客总是比你聪明。

当然,如果chmod 777出于某种原因有必要,那么它就成为最小的特权,并且可以在这里进行合法的安全讨论,但听起来好像没有;这只是懒惰。这并不能让我相信产品本身遵循最低权限原则,例如数据如何存储、从 API 调用返回多少额外数据、正在记录什么信息,或者其他任何最低权限原则与您的产品相关。

除非程序需要写权限,否则我很困惑为什么你的同事使用chmod -R 777 /opt/path/to/shared/folderwhenchmod -R 775 /opt/path/to/shared/folder仍然允许读取和执行权限,并实现所需的访问权限。

鉴于您的团队成员是唯一可以访问服务器的人,并且您信任他们。拥有全局写访问权限不一定是坏事。但目的也是为了防止恶意或流氓程序修改或删除文件。勒索软件可能是一个例子,它由 Alice 执行,具有用户权限。

  • /home/alice/ --- (drwxrwxrwx alice alice)
  • /home/bob/ --- (drwxrwx--- bob bob)

对于上述场景,Alice 执行的勒索软件将加密并覆盖她必须写入的所有文件。鉴于 Alice 不属于bob并且/home/bob/没有全局rwxAlice 的访问权限为零。但是,如果 Bob 要使用用户权限运行勒索软件,则 Bob 具有rwx权限,因为/home/alice/使用全局rwx权限。因此,现在 Alice 和 Bob 的主目录都将被勒索软件加密。

将用户添加到组非常简单,Linux: Add User to Group (Primary/Secondary/New/Existing)这会将用户名:alice,添加到bob组中。Chown -R bob:bobwhereuser:group递归地拥有目录。chmod -R 750将递归地提供rwxr-x---权限,因此 Alice 可以在/home/bob/目录中读取和执行,但不能写入。

  • sudo adduser alice bob
  • sudo chown -R bob:bob /home/bob/
  • sudo chmod -R 750 /home/bob/

最少访问原则主要是为了防范恶意用户。但是,恶意程序也是一个非常严重的问题。这就是为什么全局读、写和执行一起------rwx是一个非常糟糕的安全原则。这个想法是通过添加alicebob组来完成的。现在用户alicer-x权限,/home/bob/而组外的其他用户bob不能,除了root。同样,如果 Bob 想与 Alice 共享文件,但不希望 Alice 拥有组访问权限,AB则可以创建一个新组,称为 Alice 和 Bob 在组中的位置。/opt/AB_share/ (rwxrwx---)现在可以创建一个目录,并应用上述命令。只有AB组内的人才能访问。