我有一个在 Linux 服务器上运行的应用程序,可通过每个用户的 Web 浏览器访问。我的应用程序包含我需要保证其安全的专有代码。我想将该应用程序安装在客户的专用网络中,供其员工使用,但我需要确保他们无法访问该应用程序的代码。我只希望他们能够使用他们的 Web 浏览器作为 Web 应用程序的客户端与该应用程序交互。
我之前没有管理过 Linux 服务器。我会购买自己的服务器机箱,在其上安装 Linux,然后安装我的应用程序并将服务器机箱放置在客户的本地网络中。
有没有什么方法可以配置 Linux 机器,使我成为唯一可以使用除仅限于特定 URL 模式的 Web 浏览器之外的任何工具来访问该机器的人?
答案1
最终,如果有人非常想破解它,他们可以——访问硬件使这变得更加可行。也就是说,你可以让它变得非常困难。例如:
创建基本的 Linux 设置。该系统应锁定以仅允许客户端进行 Web 访问,但需要允许您访问 - 例如使用 SSH 和公钥/私钥,以及确保允许从您的网络通过其防火墙使用相应的端口。基本系统应该只执行启动、允许您访问并在服务器重新启动时通知您等操作。您需要为第 2 部分保留大量可用空间。
创建 LUKS 卷,并在其中托管您的代码和应用程序。系统重新启动后,通过 SSH 登录,挂载 LUKS 卷,启动驻留在那里的应用程序并注销。
这并不能阻止冷启动攻击来获取内存内容,或者有人能够劫持机器中的内存并在机器开启时读取它(记住他们有物理访问权限),但除此之外,有人很难破坏它。
答案2
Linux 本质上就是为支持多级和远程访问而构建的。对于您来说,保护应用程序很容易,因为它在 Web 上运行。有几种选项可以让您远程访问服务器。管理远程服务器的最流行方式是通过 SSH。由于您是服务器管理新手,您可能会发现 Webmin (webmin.com) 是一个有趣的工具,它可以帮助您完成服务器管理过程。此外(如果您更喜欢通过 GUI 配置服务器),您可以使用任何远程桌面选项,如 rdesktop 或 VNC。
您需要了解的一点是,驻留在服务器上并由 Web 服务器提供服务的代码在 Linux 的本机身份验证系统中被视为是安全的。除非您向他们提供凭据,否则任何人都无法访问您的代码。
--更新--如果您想阻止除 Web 端口之外的所有内容通过网络访问,请使用以下命令:
iptables -P INPUT DROP iptables -A
INPUT -p tcp -m tcp --dport 80 -j ACCEPT
此防火墙规则将阻止除 Web 请求之外的任何服务的传入连接。至于物理安全,默认的 Linux 身份验证就足够了,尽管经验丰富的 Linux 用户可以通过在“运行级别 1”上重新启动系统来绕过身份验证
希望这对你有帮助,Hex
答案3
是的,这很容易实现,事实上,开箱即用的 Linux 不会让用户登录,除非您专门创建帐户并授予他们访问权限。简而言之,您需要执行以下操作:
- 安装操作系统,安装应用程序
- 为自己创建本地用户帐户
- 安装/激活你的 ssh 服务器,并对其进行配置,使其只允许你的用户账户登录;另外对其进行配置,以限制你可以登录的 IP 地址/范围
- 配置 Linux 防火墙(iptables)
- 确保 Web 服务器没有代码文件的读取权限
编辑:根据 davidgo 的评论:
- 您需要加密源代码以便他们无法检查它。