xyz Asked: 2009-08-11 10:08:32 +0800 CST2009-08-11 10:08:32 +0800 CST 2009-08-11 10:08:32 +0800 CST 关于运行 Web 服务器的基本问题 772 我想运行一个 Web 服务器来进行试验。我将使用Mongoose,因为它看起来轻巧且简单,足以理解它所做的一切。 我有一个 Debian 盒子来运行它。 我的问题是 是否建议以 root 身份运行 Web 服务器?如果不是,为什么不呢?(非特权帐户如何监听 80,443 端口?) 是否有一个标准目录来放置要提供的“站点根目录”?就安全考虑而言,这在哪里重要吗? linux debian security web-server mongoose 8 个回答 Voted Best Answer innaM 2009-08-11T10:23:50+08:002009-08-11T10:23:50+08:00 网络服务器通常以 root 身份启动。然后,一个好的网络服务器将更改运行各个进程的用户。这样你就可以使用标准端口了。 将文档根放在哪里并不重要。当然,您需要对该目录具有写访问权(不是 root)。您通常可以在/var/www或下找到默认文档根目录/srv/www。 PS:我推荐 Apache,无论是否轻量级。它的配置有大量的信息很容易获得,而且它的配置文件一点也不难理解。 KPWINC 2009-08-11T10:18:41+08:002009-08-11T10:18:41+08:00 跟着我重复: 永远不要以 root 身份运行 Web 服务器。 永远不要以 root 身份运行 Web 服务器。 永远不要以 root 身份运行 Web 服务器。 永远不要以 root 身份运行 Web 服务器。 这就像让你的房子没有上锁并去度假 6 个月。 至于把你的网络根放在哪里。我推荐一个对你有意义的地方。我非常喜欢把它放在非标准的地方,因为它有助于抵御所有各种脚本小子。(仍然不能让你安全,但它会有所帮助。) Geoff Fritz 2009-08-11T10:26:06+08:002009-08-11T10:26:06+08:00 正如其他人所说,永远不要在 root 帐户下运行 Web 服务器。幸运的是,大多数 Web 服务器在绑定到端口 80 后会立即将 privs 删除到非 root 帐户。 另一种处理方法是在超过 1024 的端口上运行 Web 服务器程序,并使用前端(例如 varnish 或 nginx)监听端口 80 并转发到后端 Web 服务器。 Nate 2009-08-11T10:59:09+08:002009-08-11T10:59:09+08:00 Debian 存储库中的默认版本apache2以 root 身份启动,但以 user 身份生成实际的 Apache 进程www-data。 我建议将您的实验服务器作为 Xen 或 KVM 下的虚拟机运行。这样你就可以从一个完全干净的环境开始,如果你有问题,你可以安全地使用它。您还可以更改系统范围的设置或在 VM 中安装用于测试目的的软件,而不会弄乱您的真实系统。 arbales 2009-08-11T11:03:50+08:002009-08-11T11:03:50+08:00 正如其他人所说,您不应该以 root 身份运行 Web 服务器。不幸的是,无论您的服务器或应用程序多么安全,总有一个(很好的)机会存在安全风险。使用非特权帐户闯入已经够糟糕了——允许 root 访问是致命的。 启动服务器时,通常使用 sudo( sudo apache2ctl start) 升级到 root 权限,然后Apache 绑定到指定端口,然后返回到较低权限。 由于我的 Mac 背景,以及我对人类可读性的热爱,我的网站位于/var/WebServer. 在里面,我有default许多其他站点作为虚拟主机运行。 Apache 被广泛讨论,并且有大量的文档可用,其中最好和最简单的(在我看来)由 Slicehost 提供(虽然它不是 VPS 特定的)。我会查阅他们的文章以了解如何快速安全地设置 Apache。 theotherreceive 2009-08-11T15:17:55+08:002009-08-11T15:17:55+08:00 我必须同意 Manni 的观点,Apache 是你最好的选择。 它为新用户提供了最多的文档和帮助。 它带有来自 Debian 的合理默认值和软件包,它们维护良好并确保快速获得安全升级。 大多数人在某处使用一些 apache,因此了解基础知识会很有帮助 Apache 几乎是瑞士军刀网络服务器,其他大多数被设计为在特定环境下运行和/或非常擅长以更少的资源运行。Imo,这是在其他人之前学习它的原因,但有些人可能不同意。 至于你问的具体问题: 您必须以 root 身份启动您的网络服务器才能绑定到端口 80。通常,您将服务器配置为删除这些特权并在绑定到端口后以不同的用户身份运行(在 debian apache 上,此用户是 www-user,并且这是默认设置)。为缺乏此功能的特定应用程序运行自己的 Web 服务器的程序通常通过更大的 Web 服务器(例如 apache 或 nginx)进行代理。 /var/www 是 Debian 上网站根目录的默认位置。这对于您选择的任何 Web 服务器都应该没问题。 Cristian Ivascu 2009-08-11T10:55:24+08:002009-08-11T10:55:24+08:00 版本 1: 在系统上创建另一个用户,没有太多权限(甚至没有登录) 在 Web 服务器的启动脚本中执行 su my.web.server.sh(仅作为示例) 创建一个文件夹(例如在新用户的主文件夹下)并将其分配给新创建的用户 授予自己对该文件夹的写入权限 将此新文件夹设置为 Web 根目录 版本2:(我最喜欢的) sudo apt-get install apache2/httpd 您拥有 /var/www/[html] 作为网络根目录 这应该会为您处理一切 - 创建用户、文件夹的正确权限等 冒着重复上述其他所有人的风险:永远不要以root身份运行:) NotMe 2009-08-11T16:42:09+08:002009-08-11T16:42:09+08:00 以下是您的学习方式。 步骤 1. 使用默认值安装服务器。不要在上面放置任何有价值的东西。 步骤 2. 将其插入网络。 步骤 3. 等待 15 分钟 第 4 步:查看对它造成了多大的损害。 ======== 接下来,通过完全重新安装将其擦干净。然后为您的操作系统和 Web 服务器找到适当的安全指南。照它说的做,插上电源,等一个小时。如果它仍然存在并且没有被顶起,那么你很好。一阵子。;) 安全是一场持续的舞蹈。跟上,你的脚不会被踩到的。 祝你好运。;)
网络服务器通常以 root 身份启动。然后,一个好的网络服务器将更改运行各个进程的用户。这样你就可以使用标准端口了。
将文档根放在哪里并不重要。当然,您需要对该目录具有写访问权(不是 root)。您通常可以在
/var/www
或下找到默认文档根目录/srv/www
。PS:我推荐 Apache,无论是否轻量级。它的配置有大量的信息很容易获得,而且它的配置文件一点也不难理解。
跟着我重复:
永远不要以 root 身份运行 Web 服务器。
永远不要以 root 身份运行 Web 服务器。
永远不要以 root 身份运行 Web 服务器。
永远不要以 root 身份运行 Web 服务器。
这就像让你的房子没有上锁并去度假 6 个月。
至于把你的网络根放在哪里。我推荐一个对你有意义的地方。我非常喜欢把它放在非标准的地方,因为它有助于抵御所有各种脚本小子。(仍然不能让你安全,但它会有所帮助。)
正如其他人所说,永远不要在 root 帐户下运行 Web 服务器。幸运的是,大多数 Web 服务器在绑定到端口 80 后会立即将 privs 删除到非 root 帐户。
另一种处理方法是在超过 1024 的端口上运行 Web 服务器程序,并使用前端(例如 varnish 或 nginx)监听端口 80 并转发到后端 Web 服务器。
Debian 存储库中的默认版本
apache2
以 root 身份启动,但以 user 身份生成实际的 Apache 进程www-data
。我建议将您的实验服务器作为 Xen 或 KVM 下的虚拟机运行。这样你就可以从一个完全干净的环境开始,如果你有问题,你可以安全地使用它。您还可以更改系统范围的设置或在 VM 中安装用于测试目的的软件,而不会弄乱您的真实系统。
正如其他人所说,您不应该以 root 身份运行 Web 服务器。不幸的是,无论您的服务器或应用程序多么安全,总有一个(很好的)机会存在安全风险。使用非特权帐户闯入已经够糟糕了——允许 root 访问是致命的。
启动服务器时,通常使用 sudo(
sudo apache2ctl start
) 升级到 root 权限,然后Apache 绑定到指定端口,然后返回到较低权限。由于我的 Mac 背景,以及我对人类可读性的热爱,我的网站位于
/var/WebServer
. 在里面,我有default
许多其他站点作为虚拟主机运行。Apache 被广泛讨论,并且有大量的文档可用,其中最好和最简单的(在我看来)由 Slicehost 提供(虽然它不是 VPS 特定的)。我会查阅他们的文章以了解如何快速安全地设置 Apache。
我必须同意 Manni 的观点,Apache 是你最好的选择。
至于你问的具体问题:
版本 1:
版本2:(我最喜欢的)
冒着重复上述其他所有人的风险:永远不要以root身份运行:)
以下是您的学习方式。
步骤 1. 使用默认值安装服务器。不要在上面放置任何有价值的东西。
步骤 2. 将其插入网络。
步骤 3. 等待 15 分钟
第 4 步:查看对它造成了多大的损害。
========
接下来,通过完全重新安装将其擦干净。然后为您的操作系统和 Web 服务器找到适当的安全指南。照它说的做,插上电源,等一个小时。如果它仍然存在并且没有被顶起,那么你很好。一阵子。;)
安全是一场持续的舞蹈。跟上,你的脚不会被踩到的。
祝你好运。;)