AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 790446
Accepted
Ravexina
Ravexina
Asked: 2016-06-23 18:21:20 +0800 CST2016-06-23 18:21:20 +0800 CST 2016-06-23 18:21:20 +0800 CST

以普通用户身份运行不受信任的软件有什么危险

  • 772

有时我必须使用一些我不信任的专有软件,甚至是预编译的开源软件,我不知道它们是否已编译为它们的源代码。

假设我们在/opt/software中安装了一个专有应用程序,然后我们以普通用户身份运行它(没有 sudo、gksudo 等)。

  • 我知道当我们运行一个程序时,它能够连接到 Internet、监控 X、击键、收集用户数据等等。
  • 它不能改变系统中任何重要的东西或感染系统,(因为Linux权限系统)。
  • 程序可以向用户的浏览器添加一些插件/扩展(因为浏览器配置文件在用户主目录中可用)。
  • 关闭程序并重新启动后,它不能再做任何事情了。错了,因为:
    • 程序可以将自己添加到执行自动启动过程的外壳/文件/目录中,因此它将在任何登录时运行。
  • 如果我们认为自动启动过程干净,则无需重新启动程序的进程仍有可能处于活动状态。
  • 程序可以删除或修改用户主目录中的任何文件(或用户具有写入权限的任何其他文件)。

那么我们应该怎么做呢?

  • 我认为运行专有程序的唯一安全方法是以另一个用户身份运行它。
  • 如果无法以某种方式以其他用户身份运行程序,那么我们应该更改自动启动文件权限,以便只有 root 可以更改它们。然后在关闭程序后重新启动将完成这项工作。

我对吗?有什么我想念的吗?

permissions
  • 1 1 个回答
  • 423 Views

1 个回答

  • Voted
  1. Best Answer
    Stefano Palazzo
    2016-06-23T23:09:53+08:002016-06-23T23:09:53+08:00

    作为新用户运行不受信任的软件是一个好的开始,但这可能还不够。

    • 您可能认为敏感的许多文件和设备都是全球可读的。即使作为非特权用户,您也可以从系统中提取大量信息(通常您可以先阅读/etc)。

    • 您可能没有正确配置自己的东西。例如,您是否绝对确定这个“super-secret-passwords.txt”文件不是每个人都可以阅读的?那么这个以你自己或 root 身份运行的有缺陷的旧软件呢?你确定它没有写任何对磁盘敏感的东西吗?

    • 运行的代码nobody可以在 Internet 上运行并下载任务,在您的系统上执行代码。

    • 有时,用于进程间通信的本地系统上的套接字(unix 域套接字)可能无法正确保护(有时是有充分理由的),并且任何进程都可以对其进行读写。

    实际上,您可以做一些事情。

    您绝对可以检查程序在启动时没有启动任何东西。这会很乏味,但您需要非常了解您的系统。有很多方法可以自动启动服务。(注意:如果该程序曾经以 root 身份运行,那么所有的赌注都将被取消,因为它可能已经修改了 init 系统以隐藏自己)

    运行糟糕软件的重要提示

    1. 不要运行它。
      如果您可以完全避免它,请不要运行任何您无法信任的东西。至少要确保你做出了合理的权衡。复杂性是安全的敌人。唯一可以保证安全的代码行是您从未运行过的代码行。:)
    2. 在虚拟机中运行程序。
      设置虚拟机非常简单(如果您不想设置任何虚拟化基础架构,VirtualBox 非常棒)。这意味着您将拥有一台不包含敏感数据的机器(您需要将它放在那里),并且您可以控制它使用的资源。当然,这并不能为您提供完整的保护(它可能会做一些事情,例如用请求淹没您的 Web 服务器,通过 telnet 登录到您的灯泡等等,而且让恶意软件逃离虚拟机的错误并不常见,但有时确实会发生)。
    3. 在容器中运行程序。
      容器(LXD、Docker)为在本地机器上运行代码提供了一些安全性。它们并不完美。但是一个非特权容器为你的程序提供了文件系统隔离,这很重要。正确保护容器是一门艺术和一门科学,但它正变得越来越容易。
    4. 让其他人为您运行该程序。
      这与您的问题略有相关,但您有时可以通过使用第三方服务来避免运行旧的、糟糕的软件或复杂且难以正确保护的软件。电子邮件就是一个很好的例子。我不相信自己有耐心和空闲时间来托管和维护自己的电子邮件服务器。保证这样的事情安全需要做很多工作。
    5. 以单独的用户身份运行它。
      作为最后的手段,如果您觉得值得权衡,请使用专门为此目的创建的新用户帐户运行该程序。我使用我信任的软件来做到这一点。

    选项 1 是最好的。:)

    一般建议

    • 您的操作系统相当安全。当然不是完全安全,但 Ubuntu 有相当不错的记录。您在其上安装的其他软件可能不是那么好。因此,在许多分离的、隔离的机器上运行您的软件。这将确保一个程序中的错误并不意味着另一个可能更敏感的程序变得可利用。
    • 去网络。今天,大多数最终用户软件在网络上都有很好的替代品。在我的机器上,我几乎运行 Chrome 和 Emacs,仅此而已。当然,使用 Web 服务有其自身的安全隐患。
    • 转到云端(用于服务器软件)。您确定需要运行自己的电子邮件服务器吗?网络服务器?数据库?转到云端,让其他人为您完成所有繁琐的安全工作。
    • 5

相关问题

  • 访问启用的虚拟主机时出现 403 禁止错误

  • WINE 用户配置

  • 无法更新雷鸟

  • Ubuntu 在什么许可证下?可以合法修改和分发吗?

  • 文件权限如何工作?文件权限用户和组

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve