关于运行 Web 服务器的基本问题

关于运行 Web 服务器的基本问题

我想运行一个 Web 服务器来进行实验。我将使用猫鼬因为它看起来很轻巧并且足够简单,可以理解它所做的一切。

我有一个 Debian 盒子来运行它。

我的问题是

  • 以 root 身份运行 Web 服务器是否可取?如果不可取,​​原因何在?(非特权帐户如何监听端口 80,443?)

  • 是否有一个标准目录来放置要服务的“站点根目录”?从安全考虑而言,这个目录在哪里重要吗?

答案1

网络服务器通常开始以 root 身份运行。然后,好的网络服务器将更改运行各个进程的用户。这样,您就可以使用标准端口。

将文档根目录放在哪里并不重要。当然,您需要对该目录具有写权限(无需成为 root)。您通常可以在/var/www或下找到默认文档根目录/srv/www

PS:我推荐 Apache,无论它是否轻量级。它的配置信息非常丰富,而且配置文件也很容易理解。

答案2

跟我重复一遍:

切勿以 root 身份运行 Web 服务器。

切勿以 root 身份运行 Web 服务器。

切勿以 root 身份运行 Web 服务器。

切勿以 root 身份运行 Web 服务器。

这就像不锁门就去度假 6 个月一样。

至于将 Web 根目录放在哪里。我建议你把它放在对你来说有意义的地方。我非常喜欢把它放在非标准的地方,因为它有助于防御各种脚本小子。(仍然不能保证你的安全,但有帮助。)

答案3

正如其他人所说,永远不要在 root 帐户下运行 Web 服务器。幸运的是,大多数 Web 服务器在绑定到端口 80 后会立即将权限放弃给非 root 帐户。

处理此问题的另一种方法是在 1024 以上的端口上运行 Web 服务器程序,并使用前端(例如 varnish 或 nginx)监听端口 80 并转发到后端 Web 服务器。

答案4

就像其他人所说的那样,您不应该以 root 身份运行 Web 服务器。不幸的是,无论您的服务器或应用程序有多安全,总是存在(很大)安全风险的可能性。使用非特权帐户入侵已经够糟糕了,允许 root 访问则更为致命

启动服务器时,通常使用 sudo ( sudo apache2ctl start) 升级到 root 权限,然后Apache 绑定到指定端口,然后返回到较低的权限

由于我有 Mac 背景,并且热爱人类可读性,所以我的网站位于/var/WebServer。里面有我default和许多其他以虚拟主机形式运行的网站。

Apache 被广泛讨论,并且有大量的文档可供使用,最好和最容易其中(在我看来)由 Slicehost 提供(尽管它不是 VPS 专用的)。我会参考他们的文章来了解如何快速安全地设置 Apache。

相关内容