Unraid 安全

2020-02-23 11:55:24    Unraid官网-tmtony翻译    10250

安全

本节涵盖Unraid的与安全相关的各个方面

加密

Unraid支持在缓存和阵列中使用加密驱动器。它使用Linux LUKS(Linux统一密钥系统)加密模块执行此操作。

LUKS是Linux硬盘加密的标准。通过提供标准的磁盘格式,它不仅可以促进发行版之间的兼容性,而且还可以安全管理多个用户密码。与现有解决方案相比,LUKS将所有必要的设置信息存储在分区头中,从而使用户能够无缝地传输或迁移其数据。

可以在这里找到LUKS的主页

因为它是Linux标准驱动器,所以使用LUKS加密的驱动器可以在任何标准Linux系统上读取,即使将其从Unraid中删除,只要具有解锁驱动器所需的关键短语/文件即可。

Unraid实现期望将相同的密钥用于加密Unraid使用的所有驱动器。用于加密的密钥可以是密码短语,也可以通过密钥文件提供。使用密钥文件时,最好使用图像之类的东西,因为这样就永远不会被猜到。

加密驱动器(请注意,这将擦除驱动器上已存在的所有内容)。

  • 停止阵列
  • 在主选项卡上单击驱动器
  • 将文件系统更改为要使用的加密类型
  • 单击“应用”提交更改
  • 单击“完成”返回到“主要”选项卡
  • 该驱动器现在将显示为不可安装,并且将出现格式化不可安装驱动器的选项。检查该驱动器是否是您希望加密的驱动器,如果正确,请继续进行格式化。


随身碟

用于引导Unraid的闪存驱动器很重要,因为它包含与Unraid服务器有关的所有配置信息。因此,您要考虑其中包含的信息的安全性以及如何访问它。

后备

如果闪存驱动器由于任何原因而发生故障,那么只要您有备份就可以使Unraid服务器恢复正常运行是一个简单的过程。建议您在进行重大配置更改时进行备份。

您可以通过Unraid GUI轻松实现此目标:

  1. 在GUI的“主要”选项卡上单击闪存驱动器。
  2. 在“  闪存设备设置”部分中,单击“  闪存备份”按钮。
  3. 系统现在将开始创建一个zip文件,该文件是闪存驱动器内容的备份
  4. 创建zip文件后,浏览器应提示您提供要将备份保存到的位置。建议将该位置放在Unraid服务器之外,以便即使Unraid服务器无法运行时也可以使用。

如果以后由于任何原因需要重新创建闪存驱动器,则可以将此备份用作Limetech USB Creator工具的输入。

网络访问

闪存驱动器可以应用类似的设置,以控制网络访问,就像Unraid系统上的其他共享一样。区别在于您可以通过在GUI 的“  主要”选项卡单击 闪存设备来进行设置,而不是通过“共享”选项卡来进行设置。

  • 网络可见性:您可以指定是否甚至可以通过网络访问闪存驱动器,以及是否可以访问该闪存驱动器,使其对所有人都是隐藏的还是可见的。
  • 访问权限:如果允许网络访问,则可以指定要应用的所有访问权限。

权限

为了提高Unraid系统的安全性,从闪存驱动器上的Unraid 6.8文件开始,将不再具有执行权限。

这意味着如果用户在闪存驱动器上存储了自己的自定义脚本(或程序),则无法再从该位置执行该脚本。有多种方法可以解决此问题:

  • 将文件复制到可执行文件的位置
    • 位置 在/ usr / local / bin目录是一个不错的选择,如果你想要的默认搜索路径上的文件。
    • 通过在闪存驱动器上的config / go文件中添加适当的命令,可以在引导时将文件复制到适当位置。
    • 记住在复制文件后给予文件执行权限。
  • 对于脚本,脚本名称之前应带有运行脚本的命令(例如 bash path-to-script


虚拟专用网

不受攻击的服务器不会通过网络受到攻击,因此 绝对不要直接暴露于Internet。

  • 一个例外是Unraid 6.8中明确引入的WireGuard VPN服务,用于解决对Internet的安全访问。
  • 如果运行Docker容器或暴露于Internet,则需要根据具体情况评估这些容器的安全性。
您可能需要联系容器的开发人员,以确定暴露到互联网上的安全性。由于docker容器在“沙盒”环境中运行,因此具有一定的保护级别,因此对磁盘内容的访问级别受容器路径映射设置中所允许的限制。
  • 如果运行在Internet上公开的VM,则需要对这些虚拟机应用与应用于连接到本地LAN的物理PC相同的安全性。

如果要在Unraid服务器和Internet之间建立安全连接,则要使用一种称为VPN(虚拟专用网络)的技术。VPN在客户端/服务器模型上工作,其中您有一个接受传入连接的服务器和一个启动此类连接的客户端。

简单来说,VPN连接的思想是在客户端和服务器端之间建立一个加密的“隧道”,以使任何恶意玩家都无法拦截或窃听您的交互。设置此类隧道,以便只有授权用户才能建立此类连接。可以在此Wiki文章中找到有关VPN作为一种技术的更多信息。

Unraid用户可能有两种常见的用例:

  • 从Internet远程访问Unraid:这是迄今为止最常见的用例,许多用户都希望这样做。出门在外时能够安全地访问其Unraid服务器(甚至可能是整个家庭LAN)。在此模式下运行时,VPN链接的服务器端将在用户的路由器上运行(如果它支持这种功能),或者将托管在Unraid服务器上。
  • 从Unraid到Internet的远程访问:当您希望在Unraid上运行的应用程序访问Internet时,将使用此方法。这可能是访问通用Internet内容或访问位于Unraid服务器远程的另一台服务器。如果可以通过Internet进行通用访问,则这种连接的服务器端很有可能将通过商业VPN提供商进行访问。在此模式下运行时,Unraid将充当任何VPN链接的客户端。

有许多免费和商用的VPN解决方案。


路由器

许多现代路由器都有作为标准内置的VPN服务器(通常基于OpenVPN)。

使用路由器来提供VPN支持具有很大的优势,即您不需要家庭LAN上的任何其他组件即可运行以使VPN起作用。设置完成后,它应允许您以与直接连接到LAN时类似的方式访问家庭LAN上的所有设备。


Open VPN

历史上一直提倡这种方式,以允许在Unraid服务器和Internet之间建立连接。

OpenVPN是一个完善的解决方案,因此,如果您要使用OpenVPN,则可以在社区应用程序中搜索符合您要求的插件或Docker容器。您可能还会发现SpaceInvaderOne YouTube视频可用于设置它。

预计随着Unraid 6.8中引入WireGuard支持,WireGuard将成为与Unraid服务器建立VPN连接的首选方法


Unraid WireGuard


总览

Unraid 6.8引入了对 VPN连接的内置支持目的是使Unraid用户尽可能容易地建立与Unraid服务器之间的VPN连接。

有关Unraid WireGuard实施的一些注意事项:

  • WireGuard服务内置于Unraid中,因此无需添加第三方软件即可实现VPN连接。
  • 在Unraid引导过程中,可以将Wireguard服务设置为自动启动。
  • 即使未启动阵列,也可以使用Wireguard服务。
  • WireGuard使用轻量级协议,因此性能往往比OpenVPN更好。

有关WireGuard的更多信息,请参见WireGuard网站应当指出,WireGuard的开发人员仍将其标记为“实验性”,但是许多用户已经发现它对于实际应用而言似乎足够健壮。许多商业VPN服务正在努力添加WireGuard支持,因此他们必须认为它已经足够成熟,对此才有意义。

最初的Unraid实施包括将WireGuard内核模块添加到标准Unraid发行版中,并作为Unraid引导过程的一部分启动WireGuard服务,但还没有内置的WireGuard管理。目前,GUI部分是作为单独的插件提供的,但打算将来将其集成到Unraid中。这种方法允许快速更新和增强功能,而无需依赖Unraid版本发行。Unraid WireGuard GUI插件可以通过社区应用程序安装,并且在安装后,您会发现 设置->网络服务,将名为 VPN Manager的条目添加到GUI中

请注意,Unraid Wireguard插件仍在不断发展,因此,如果此处描述的内容与以下论坛主题之间存在差异,则该主题可能是正确的,此Wiki需要进行更新以使其内联。这些线程也是询问有关Unraid的WireGuard实现的问题的合适位置。

您可以使用WireGuard做什么?让我们看一下每种连接类型:

  • 远程访问服务器:使用电话或计算机远程访问Unraid服务器,包括:
    • 通过webgui进行防暴管理
    • 就像您已物理连接到网络一样,访问docker,VM和网络共享
  • 对LAN的远程访问:建立在“对服务器的远程访问”的基础上,还允许您访问整个LAN。
  • 服务器到服务器的访问:允许两台Unraid服务器相互连接。
  • LAN到LAN的访问:建立在“服务器到服务器的访问”的基础上,允许两个整个网络进行通信。可能需要其他设置,待定。
  • 服务器集线器和分支访问:在“远程访问服务器”的基础上,所有VPN客户端也可以相互连接。请注意,所有流量都通过服务器。
  • LAN集线器和分支访问:在“服务器集线器和分支访问”的基础上,还允许您访问整个LAN。
  • VPN隧道访问:通过商业WireGuard VPN提供商路由特定Docker和VM的流量(请参阅本指南)
  • 远程隧道访问:通过VPN路由所有流量并断开Unraid的Internet连接,安全地从不受信任的网络访问Internet

下图试图以图形格式显示这些不同的连接类型

传入VPN连接

本节将逐步介绍如何设置WireGuard,以便您可信任的设备可以VPN进入您的家庭网络以访问Unraid和网络上的其他系统。


先决条件

  • 您必须使用通过“  应用程序”选项卡(“社区应用程序”)安装的Dynamix WireGuard插件运行Unraid 6.8 
  • 请注意,WireGuard在技术上被归类为实验性的。它尚未经过完整的安全审核,并且尚未达到1.0状态。但是,这是第一个开源VPN解决方案,其安装极其简单,快速,并且从头开始设计以确保安全。
  • 请理解,向某人授予对您的LAN的VPN访问权限就像授予他们对您的LAN的物理访问权限,只是当您不在监管时,他们可以24x7全天候访问。仅允许访问您信任的人员和设备,并确保不会不安全地传递配置详细信息(尤其是私钥)。不管您选择哪种“连接类型”,都假定任何有权访问此配置信息的人都将能够完全访问您的网络。
  • 本指南适用于简单的网络。但是,如果您的Docker具有自定义IP或具有严格网络要求的VM,请参阅下面的“复杂网络”部分。
  • Unraid会自动将您的WireGuard客户端配置为使用您当前的公共IP地址连接到Unraid,该公共IP地址将一直起作用,直到该IP地址更改为止。为了使安装适应未来需求,您可以改用动态DNS。有许多方法可以做到这一点,最简单的方法可能是在SpaceInvaderOne的2分钟视频中描述的
  • 如果您的路由器启用了UPnP,Unraid将能够为您自动转发端口。如果没有,您将需要知道如何配置路由器以转发端口。
  • 您将需要在客户端系统上安装WireGuard。WireGuard客户端所述,它可用于许多操作系统Android或iOS成为良好的第一客户端系统,因为您可以通过QR码获取所有详细信息。


设置VPN隧道的Unraid端

  • 首先,转到设置->网络设置->接口eth0。如果“启用桥接”为“是”,则WireGuard将按如下所述工作。如果禁用桥接,则涉及本地LAN的“对等连接类型”都将无法正常工作。通常,应在Unraid中启用桥接。

  • 如果您的路由器上启用了UPnP,并且您想在Unraid中使用它,请转到“设置”->“管理访问”,并确认“使用UPnP”设置为“是”
  • 在Unraid上转到设置-> VPN Manager

  • 给VPN隧道命名,例如“ MyHome VPN”
  • 按“生成密钥对”。这将为Unraid生成一组公钥和私钥。注意不要与任何人无意间共享私钥(例如在这样的屏幕截图中)
  • 默认情况下,将使用您当前的公共IP地址配置本地终结点。如果选择较早设置DDNS,则将IP地址更改为DDNS地址。
  • Unraid建议使用一个端口。除非您已经在网络上的其他位置运行了WireGuard,否则通常不需要更改此设置。
  • 点击申请
  • 如果Unraid检测到您的路由器支持UPnP,它将自动为您设置端口转发:

  • 如果看到说明“正在配置路由器以进行端口转发...”的注释,则需要登录到路由器并按照注释的指示设置端口转发:

  • 在路由器中设置端口转发的一些技巧:
    • 外部(源)端口和内部(目标/本地)端口都应设置为Unraid提供的值。如果您的路由器接口要求您输入一个范围,则将相同的端口用于起始值和结束值。确保指定它是UDP端口而不是TCP端口。
    • 对于内部(目标/本地)地址,请使用注释中所示的Unraid系统的IP地址。
    • Google可以帮助您找到特定路由器的说明,例如“如何移植华硕RT-AC68U”
  • 请注意,单击“应用”后,将从视图中删除公钥和私钥。如果您需要访问它们,请单击右侧的“键”图标。

  • 同样,您可以通过按右侧的“向下V形”来访问其他高级设置。它们不在本指南的范围内,但是您可以打开帮助以查看它们的作用。
  • 在页面的右上角,将“非活动”滑块更改为“活动”以启动WireGuard。您可以选择在Unraid引导时将隧道设置为自动启动。

在某些情况下,此步骤已被省略,用户最终想知道Wireguard VPN链接为何不起作用!


定义对等方(客户端)

  • 点击“添加对等”

  • 给它起一个名字,例如“ MyAndroid”
  • 对于初始连接类型,选择“远程访问LAN”。这将使您的设备访问网络上的Unraid和其他项目。
  • 单击“生成密钥对”为客户端生成公用密钥和专用密钥。私钥将提供给客户端/对等方,但请注意不要与其他任何人共享(例如在这样的屏幕截图中)
  • 为了增加安全性,请单击“生成密钥”以生成预共享密钥。同样,这仅应与此客户端/对等方共享。
  • 单击应用。
  • 注意:从技术上讲,对等方应生成这些密钥,而不应将私钥提供给Unraid。欢迎这样做,但是这样做不太方便,因为Unraid生成的配置文件将不完整,您将必须手动完成客户端的配置。

警告:
如果您已经使用WirGuard远程连接,则将新客户端(“对等”)添加到WireGuard可能会有些冒险,因为添加新对等项 有时会关闭WireGuard隧道,这将使您无法重新连接。这是因为通过使用当前(旧)配置禁用隧道,然后使用更新(新)配置激活隧道,可以使配置更改生效。如果此时存在任何类型的配置冲突,则隧道将保持不活动状态,并且您将无法再连接到Unraid服务器


配置对等方(客户端)

  • 单击“眼睛”图标以查看对等配置。如果该按钮不可单击,则需要首先应用或重置未保存的更改。

  • 如果要设置移动设备,请在移动应用程序中选择“从QR码创建”选项,并拍摄QR码的图片。给它起个名字并建立连接。VPN隧道几乎是立即启动的,一旦建立,您就可以打开浏览器并连接到网络上的Unraid或其他系统。注意不要与任何人共享QR码的屏幕截图,否则他们将可以使用它来访问您的VPN。
  • 如果要设置其他类型的设备,请下载文件,然后通过受信任的电子邮件或保管箱等将其传输到远程计算机。然后将其解压缩并将配置加载到客户端。保护此文件,任何有权访问该文件的人都可以访问您的VPN。


关于DNS

Dynamix Wireguard插件包括“对等DNS服务器”选项

如果您在WireGuard客户端上无法解析DNS,请返回Unraid中的VPN Manager页面,然后从“基本”模式切换到“高级”模式,将所需DNS服务器的IP地址添加到“对等DNS服务器”字段中,然后安装客户端上更新的配置文件。您可能要使用要连接的LAN上路由器的IP地址,也可以使用8.8.8.8之类的全局可用IP。

如果所有流量都通过隧道路由后,客户端的原始DNS服务器不再可访问,则“远程隧道访问”模式需要这样做。

如果您使用任何拆分隧道模式,则添加DNS服务器可能会在远程网络上提供名称解析,尽管在此过程中您将丢失客户端本地网络上的名称解析。最简单的解决方案是在客户端上添加一个主机文件,该文件为两个网络提供名称解析。


复杂网络

上面的说明对于简单的网络应该开箱即用。如果“使用NAT”默认设置为“是”,则Unraid上的所有网络流量都将使用Unraid的IP,如果您进行了简单的设置,则可以正常工作。

但是,如果您的Docker具有自定义IP或对网络有严格要求的VM,则可能无法正常工作(我知道,这有点含糊,但您可以随意阅读两个WireGuard线程作为示例)

部分解决方案是:

  • 在WireGuard配置中,将“使用NAT”设置为“否”
  • 在路由器中,添加一条静态路由,使您的网络可以通过Unraid系统的IP地址访问WireGuard“本地隧道网络池”。例如,对于默认池10.253.0.0/24,您应该添加以下静态路由:
    • 网络:10.253.0.0/16(又称为10.253.0.0,子网为255.255.0.0)
    • 网关:<Unraid系统的IP地址>
  • 请注意,这涵盖了整个B类10.253.xx网络,因此您可以添加其他WireGuard隧道,而无需再次修改路由器设置。

通过这些更改,您的网络应该可以正常工作。但是,您的WireGuard客户端仍然可能无法访问自定义IP或VM上的Docker。如果您找到解决方案,请在前面提到的论坛主题中提问。


对WireGuard进行故障排除

WireGuard不是一个健谈的协议,实际上它被设计为不可见的!如果事情不正常,则实际上没有任何错误消息,它要么起作用,要么不起作用。端口扫描程序无法检测到它。

如果无法连接,则主要是仔细检查您的工作:

  • 确认隧道处于活动状态(!)
  • 确认您的DDNS指向您当前的公共IP地址,并已分配给您的“本地终结点”
  • 确认您已通过路由器将正确的UDP端口转发到Unraid,并将相同的端口分配给“本地端点”
  • 如果在设置客户端后对配置进行了任何更改,则需要重新设置客户端,以便它们具有最新的配置。
  • 确保在按“ View Peer Config”之前保存更改,否则您的QR码/文件将没有最新数据。

其他一些想法:

*对于第一个客户端,请使用其数据连接(而非wifi)设置电话。这样就消除了与客户端网络有关的问题,QR码是传输设置的最简单方法。在手机上正常工作后,请转到其他客户端。 

禁用客户端上的任何节能功能,特别是在低功耗模式下,电话可能无法正确使用VPN。另外,您可能需要禁用手机上的所有“数据保护程序”功能,以免限制VPN。看到这篇文章。

*如果“对等连接类型”包括LAN选项之一,但您只能访问Unraid,请转到“设置”->“网络设置”,然后查看“启用桥接”是否为是。如果禁用了桥接,则将无法通过WireGuard访问LAN。 
  • 如果要通过Internet从另一个网络连接,请确保双方的网络使用不同的子网。例如,您不能连接两个都使用192.168.1.0/24的网络。
  • 如果可以从某些位置连接,但不能从其他位置连接,请记住,“断开”的远程位置可能具有阻止UDP流量的防火墙。希望WireGuard将来会支持TCP,但目前尚无解决方法。
  • 如果没有任何正常工作,请切换到高级模式,并确认您的网络或要连接到的网络之一尚未使用“本地隧道网络池”。如果发生冲突,则需要将其更改为其他专用网络(10.0.0.0至10.255.255.255 | 172.16.0.0至172.31.255.255 | 192.168.0.0至192.168.255.255)
  • 如果由于某种原因无法访问Unraid Webgui,并且需要阻止WireGuard隧道自动启动,请从闪存驱动器中删除此文件,然后重新启动:
 / boot / config / wireguard / autostart 
  • 请注意,如果您的Docker具有自定义IP或具有严格网络要求的VM,则可能会遇到问题。请参阅上面的“复杂网络”部分。

传出VPN连接

本节说明如何建立从Unraid服务器到商业VPN提供商的WireGuard VPN连接。如果您尝试从远程位置访问Unraid网络,请参阅有关进行入站连接的部分。有一个论坛主题讨论使用WireGuard建立出站VPN连接

商业VPN提供商

一些商业VPN提供商现在支持WireGuard。下面列出了一些,但这并不是详尽的清单。并不意味着背书,您需要研究并确定哪一种可以满足您的需求。

请注意,在WireGuard的当前状态下,VPN提供商不能保证与OpenVPN一样数量的隐私。有关详细信息,请参见此处
通常,异议不是围绕安全性,而是围绕这样的事实,即它们很难保证他们无法跟踪您。

配置VPN隧道访问

  • 从您的首选商业VPN提供商下载配置文件
  • 在“设置”->“ VPN管理器”页面上,单击“导入配置”按钮,然后选择硬盘驱动器上的文件。这将创建一个特定于此提供程序的新隧道。
  • 除了可以命名之外,没有其他设置可以更改。单击应用。
  • 注意:对于这种类型的连接,您不需要通过路由器转发任何端口
  • 将非活动滑块更改为活动
  • 现在,您所有的Unraid流量都将通过商业VPN隧道。
    • 将来可能会对其进行限制,以便仅特定的Docker使用VPN隧道。在此之前,您可能需要禁用隧道才能检查插件更新或执行其他Unraid管理任务。
    • 请注意,当前Unraid将忽略下载的配置文件中指定的任何DNS服务器。应将Unraid的DNS设置为无论隧道打开还是关闭都可以使用的DNS,例如8.8.8.8和8.8.4.4。

测试隧道

  • 使用社区应用程序,安装浏览器,例如jlesage / Firefox Docker容器
  • 接受所有默认值
  • 启动Firefox并访问https://whatismyipaddress.com/,您应该会看到您的IP地址在您与提供商签署时所选择的国家/地区中


支持

WireGuard是Unraid的一项新功能,因此可以在论坛上提问,并获得有关将WireGuard与Unraid结合使用的最新信息。最可能感兴趣的线程是: