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
    • 最新
    • 标签
主页 / server / 问题 / 52380
Accepted
xyz
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 8 个回答
  • 769 Views

8 个回答

  • Voted
  1. Best Answer
    innaM
    2009-08-11T10:23:50+08:002009-08-11T10:23:50+08:00

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

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

    PS:我推荐 Apache,无论是否轻量级。它的配置有大量的信息很容易获得,而且它的配置文件一点也不难理解。

    • 8
  2. KPWINC
    2009-08-11T10:18:41+08:002009-08-11T10:18:41+08:00

    跟着我重复:

    永远不要以 root 身份运行 Web 服务器。

    永远不要以 root 身份运行 Web 服务器。

    永远不要以 root 身份运行 Web 服务器。

    永远不要以 root 身份运行 Web 服务器。

    这就像让你的房子没有上锁并去度假 6 个月。

    至于把你的网络根放在哪里。我推荐一个对你有意义的地方。我非常喜欢把它放在非标准的地方,因为它有助于抵御所有各种脚本小子。(仍然不能让你安全,但它会有所帮助。)

    • 3
  3. 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 服务器。

    • 1
  4. Nate
    2009-08-11T10:59:09+08:002009-08-11T10:59:09+08:00

    Debian 存储库中的默认版本apache2以 root 身份启动,但以 user 身份生成实际的 Apache 进程www-data。

    我建议将您的实验服务器作为 Xen 或 KVM 下的虚拟机运行。这样你就可以从一个完全干净的环境开始,如果你有问题,你可以安全地使用它。您还可以更改系统范围的设置或在 VM 中安装用于测试目的的软件,而不会弄乱您的真实系统。

    • 1
  5. 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。

    • 1
  6. 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 服务器都应该没问题。
    • 1
  7. 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身份运行:)

    • 0
  8. NotMe
    2009-08-11T16:42:09+08:002009-08-11T16:42:09+08:00

    以下是您的学习方式。

    步骤 1. 使用默认值安装服务器。不要在上面放置任何有价值的东西。

    步骤 2. 将其插入网络。

    步骤 3. 等待 15 分钟

    第 4 步:查看对它造成了多大的损害。

    ========

    接下来,通过完全重新安装将其擦干净。然后为您的操作系统和 Web 服务器找到适当的安全指南。照它说的做,插上电源,等一个小时。如果它仍然存在并且没有被顶起,那么你很好。一阵子。;)

    安全是一场持续的舞蹈。跟上,你的脚不会被踩到的。

    祝你好运。;)

    • -1

相关问题

  • 在 SOHO 环境中实施的最佳 VPN 技术是什么?[关闭]

  • 更改 PHP 的默认配置设置?

  • 保护新的 Ubuntu 服务器 [关闭]

  • (软)Ubuntu 7.10 上的 RAID 6,我应该迁移到 8.10 吗?

Sidebar

Stats

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

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

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

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve