从 /opt 运行服务的 Ubuntu 安全性

从 /opt 运行服务的 Ubuntu 安全性

我花了一段时间才明白这里发生了什么(我想),但是有人可以向我解释一下,当我作为一名具有一些 Linux 知识的开发人员试图建立家庭网络服务器时,我这里发生的逻辑是否存在安全风险?

Ubuntu 与其他系统不同,它限制了 root 用户帐户。您无法以 root 身份登录或su以 root 身份登录。这对我来说是个问题,因为我必须/opt按照用户文档安装大量应用程序和服务(XAMPPfor Linux 就是一个很好的例子)。这里的问题是这个目录归 拥有。我通过以下命令root:root注意到我的管理员用户帐户不属于组:root

groups username所以我的理解是,即使我放置的文件和服务/opt属于 root,通过sudo(按要求)执行它们并不意味着它们以 root 身份运行?我猜想该sudo命令隐藏在属于root用户的某个地方并具有775权限?所以我的问题是,运行 Tomcat、Apcahe 等服务是否会像在其他系统上一样暴露我的系统?显然我需要在配置中保护这些,但黄金法则不是永远不要以 root 身份运行吗?如果我在同一个用户/组下运行多个服务,而服务器受到感染,会发生什么?

答案1

好的,以下是一些安全基础知识:

  • 关于 root 帐户,Ubuntu 与其他基于 Debian 的系统非常相似,因为它root没有设置密码,因此您无法root直接以 身份登录,而必须使用sudo。如果您需要使用su,您可以使用 来启动它sudo su有关 sudo 的更多详细信息

  • 可执行文件归 拥有root并不意味着它必须由 运行sudo,任何具有读取和执行权限的用户都可以运行此类程序。事实上,Ubuntu 中的大多数程序都归 拥有root,但您可以运行gedit等等。正在运行的进程的“有效用户”将与启动程序的用户匹配,而不是拥有可执行文件的用户。因此,从技术上讲,您可以以非管理员用户身份运行 Apache 和所有内容,但有一个“如果”……

  • 作为一项安全措施,在 Linux 系统中,除非进程的有效用户是 ,否则进程不能绑定到 1024 以下的端口root。因此,如果您希望 Apache 监听端口 80,则必须将其作为 启动root。这显然是一个安全问题。但您可以在端口 8080 上运行它。

  • 为了避免以 root 权限运行的安全问题,Apache 和一些其他网络服务放弃他们的特权绑定到网络端口后,它会执行最少的工作,root然后将其切换effective user id到具有最小权限(无密码、无登录 shell 等)的某些预配置用户。有效用户和组在应用程序的配置文件中设置(对于 Apache,httpd.conf 中的用户和组指令)

  • 一些其他服务不能放弃其权限,因此必须以非特权用户身份从启动脚本启动它们。

  • 当您从 Ubuntu 存储库安装软件包时,它们通常会为每个服务( 等)创建受限用户帐户,mysql并将postgres服务配置为使用各自的有效用户运行。这比以您登录的用户身份运行服务要安全得多。

相关内容