我有一台运行 Ubuntu Server 的机器,它充当本地文件存储的 NAS。
我现在想远程访问它,并向互联网公开一些服务,如 FTP、聊天和游戏服务器。
我如何隔离和公开服务,以便几乎不存在未经授权访问服务器其余部分的风险?
我读过有关 chrooting、LXC 和 Docker 的文章,但我很迷茫,不确定哪种方法最合适。
提前感谢您的建议。
附言:看到下面的评论,可能来自可能有帮助的人,也可能不是。由于我是一名高级计算机用户,大部分是自学成才,所以我不需要冗长的操作指南,简短的回复给出建议就很好了。
答案1
对于想要尝试的家庭用户:
检查路由器是否内置 VPN 服务器。某些服务(游戏)可以通过以下方式暴露给互联网:转发端口其他(家庭照片、媒体服务器)通过限制仅 LAN 和 VPN 进行更严格的控制。
- 使用硬密码。您无需手动输入。
- 您的 VPN 客户端已内置于 NetworkManager 中。
- VPN 服务器不会将您限制在仅使用 VPN 的访问范围内。它只是意味着需要转发的端口会少很多。
- 您也可以在服务器上使用 OpenVPN,但第一次尝试时路由器可能更容易设置。
对于实际的应用程序和服务,学习如何设置容器管理器(LXD 或 Docker)是值得的,这样您就可以启动实验性容器,然后在完成后将其丢弃。容器还可以很好地处理隔离。我使用 LXD,因为它对我来说很有意义。尝试两者,看看哪个对你有意义。
值得花一个小时按照教程进行设置桥接网络在您的 Ubuntu 服务器上。使用网桥,每个容器都会从路由器获得一个单独的 LAN IP 地址,并且每个容器看起来就像您网络中的一台独立机器。这不适用于许多无线芯片,因此有线网络可能更可取。初始设置略微复杂,但每个容器的设置略微简单。
容器的一个不错的功能是您可以启动/停止和冻结/解冻它们。您的游戏服务器可以在不使用的几小时内停止。在停止或冻结期间,破坏者将无法连接。
从头开始思考安全性。您已经知道良好的安全性是一套良好的习惯,所以现在就开始刷牙吧。仅使用密钥进行 SSH,始终使用复杂的密码,做好笔记,跟踪您的监听服务和端口等。您已经知道该怎么做了。
集中精力进行实验成功的而不是第一次就完美。第一次永远不会完美。(只是不要让它们不安全!)构建您的 FTP 或游戏容器,学习课程,写下笔记……然后删除容器并重新开始。这很有趣,你会学到很多东西。
答案2
@user535733 的回答非常好,但我只想补充一点:
在防火墙中限制外部访问。进行端口转发时(例如打开端口 443 供外部访问 Web 服务),请检查您的防火墙是否支持限制访问的 IP 范围。我已经为自己的服务这样做了,我相信这是一个很好的额外安全层。实际配置将取决于您的防火墙品牌。例如,允许外部访问我的服务(无需 VPN 访问)的唯一 IP 地址是(主要是这样我就可以从这些位置访问我自己的服务):
- 我的工作场所
- 我的父母
- 我值得信赖的朋友