将家庭服务器打开到 Internet 时应该注意什么?

信息安全 linux 网络服务器 SSH
2021-09-06 20:38:39

我已经构建了一个家庭服务器(几乎只是一个带有几个大 HDD 的基本 PC),我想将它用作 FTP 服务器和我的世界服务器。两者都适用于我的游戏社区的成员。我还想在不在家时访问我的家庭服务器的终端(SSH)。

我目前不确定如何授予对 FTP 服务器的访问权限,但我希望社区中任何想要访问的人都可以使用它,因此它可能是敌对的人,但它不会是随机的攻击机器人。我可能会向他们发送共享“访客”帐户的登录详细信息,或者我会给个别成员单独的帐户。

我不打算在服务器上托管任何重要或个人数据,但我想尽可能地保护它,而不会让人们使用它。它作为我家庭网络中的一个节点连接,并没有什么特别之处(除了当前在我的世界服务器的路由器中转发端口)。

它运行 Ubuntu 服务器 15.10,并通过一个 5 端口非托管交换机(我的个人台式 PC 也连接到该交换机)连接到 Sky Hub 路由器。它有一个静态的内部 IP。

我的计划是不是一个糟糕的想法,我将如何减轻潜在的攻击?

3个回答

首先,假设您的服务器一旦上线就会受到攻击。在这种假设下进行操作,您将避免人们通常会犯的许多错误。

我首先将您的服务器放在DMZ中,这样如果它确实受到威胁,攻击面就可以达到的程度而言是有限的。如果这是不可能的,这不是世界末日,但它确实有助于保持分离。

接下来,也许更重要的是,绝对没有不需要运行的东西应该运行。关闭所有不必要的功能(您真的需要 GUI 环境吗?)并阻止任何不需要运行的端口。我自己喜欢iptables,但重要的是使用了一些东西

您可以使用一些工具来检测恶意活动,例如扫描、暴力破解、漏洞利用尝试等。我不会详细介绍每个工具,但这里有一些我多年来使用过的工具:

  • 绊线有点过时但不是很过时
  • ossec 起到类似的作用,但更具反应性
  • snort 很流行,有很多规则

比任何特定工具更重要的是正确配置和使用它。确保您了解所有工具涵盖的内容、未涵盖的内容以及失败时会发生什么。

您绝对可以运行家庭服务器,这样做可能是一个很好的学习体验,但您需要确保您的系统已更新并受到监视。不要仅仅因为它似乎运行良好而忽略偶尔检查它。

我对您的主要建议是确保您尽可能将其锁定。

从传输层开始。有很多 linux 路由可以做到这一点,就我个人而言,我发现 ufw 是一个相当易于使用的路由。如果有一个不需要打开的端口(即没有特定的原因让它对互联网开放),那么它不应该是。如果它需要本地访问,请仅将其打开到本地网络上的地址。您已经列出了 3 个需要打开的服务(FTP、SSH、Minecraft),因此将您的配置限制为仅允许网络外部的服务。

然后看认证。对于 SSH,因为它允许执行,我建议不要将其打开以进行一般访问。选择您自己的用户帐户,并为其授予 SSH 权限,并阻止所有其他用户帐户。我个人建议使用密钥进行身份验证并且根本不允许密码,但这只是我。

您希望 FTP 处于打开状态,因此解决方案是限制其访问。给它一个通用帐户,让它只能访问一个特定的、不重要的目录。从这里什么都不运行,也没有任何东西指向它作为保存目录。

我猜你希望我的世界相对开放,这很好,但这需要更多的管理来解决问题(世界备份等)。

有一些 HIDS(基于主机的入侵检测系统)将有助于减轻任何人试图攻击您的服务器的影响。

我同意@Jozef Woods 和@TactiFail 关于锁定服务器等的回答。

我还要补充一点,您应该确保定期应用补丁,这不仅适用于操作系统。如果您希望它成为 Minecraft 服务器,那么我猜它会运行 Java 吗?这将是修补的关键组件。例如,Java 的此更新修复了 8 个被评为严重严重性的漏洞以及一系列其他不太严重的项目:

https://www.cvedetails.com/vulnerability-list/vendor_id-93/product_id-19117/version_id-168994/Oracle-JRE-1.7.0.html

我还将对服务器应用行业标准强化。您可以从 CIS 免费下载各种 Linux 风格的优秀指南:

https://benchmarks.cisecurity.org/downloads/browse/?category=benchmarks.os.linux

这些指南涵盖:

  • 锁定文件系统
  • 强化流程执行上下文
  • 删除不需要的服务
  • 网络配置
  • 记录和审计
  • 用户账户管理