是否存在允许普通 Linux 用户运行任意代码的安全风险?

信息安全 linux
2021-08-31 03:27:13

我想允许不受信任的用户运行任意 Node 应用程序。如果我使用 iptables 阻止除受信任服务器之外的所有内容,使每个用户的主文件夹仅对他们可见,并使用 runuser 启动他们的服务器,他们是否有访问彼此数据的风险?

基本上我将为实例创建一个新用户,将应用程序复制到主目录,chown/chmod 它,然后执行:

runuser -l their-user-name -c /usr/local/bin/node /users/their-user-name/server.js

我意识到他们可以淹没内存/cpu/io。显然他们可以打开他们自己的数据,但除此之外......我是否有任何安全风险?

我的计划是使用 iptables 让每个特定用户在一个特定端口上打开一个服务器,该端口只能接收来自我的 nginx 服务器的传入连接。然后允许传出连接到受信任的数据库服务器。

1个回答

总是存在一些风险,在这种情况下,如果系统内部没有得到强化,“知情用户”或不良行为者在几分钟甚至几秒钟内访问其他用户数据可能是微不足道的。

在这种情况下,您仍然会遇到所有本地权限提升问题和本地安全强化问题,这些问题可能允许本地用户成为 root 用户或以 root 用户身份运行东西,或者只是让他们完全访问其他用户的数据。在许多方面,这比试图从外部保护系统要难得多。也就是说,并不是说您不能添加很多安全控制措施来保护自己免受用户的侵害,也不是说它无法完成,而是需要做更多的工作。

考虑建立一个 chrooted 环境可能是明智的,请记住您仍然需要加强系统免受内部攻击。同样,明智的做法是将您的所有日志发送到远程系统,以防用户确实提升了权限,他们将更难隐藏这一点。

请记住,可能有更简单的方法来解决您的最终目标,有时值得退一步看看所有安全权衡在哪里以及您实际想要完成的目标。

以下 Linux 安全强化指南可能会有所帮助。您可能还想运行一个类似于 Nessus 的工具来查看您当地的风险。

CIS 安全基准 http://benchmarks.cisecurity.org/downloads/browse/index.cfm?category=benchmarks.os.linux

NSA 操作系统安全配置指南 https://www.nsa.gov/ia/mitigation_guidance/security_configuration_guides/operating_systems.shtml#linux2

NIST sp800-123 通用服务器安全指南 http://csrc.nist.gov/publications/nistpubs/800-123/SP800-123.pdf

Ubuntu Server 14.04 上的 Matt Brock 安全强化 http://blog.mattbrock.co.uk/hardening-the-security-on-ubuntu-server-14-04/

使用限制速率强化 IPTables 配置 https://petermolnar.eu/linux-tech-coding/hardening-iptables-config-with-limit-rates/

Linux 服务器加固安全提示 http://www.tecmint.com/linux-server-hardening-security-tips/

针对 SYN 洪水强化 TCP/IP 堆栈 https://www.ndchost.com/wiki/server-administration/hardening-tcpip-syn-flood

IBM 强化 Linux 指南 http://www.ibm.com/developerworks/linux/tutorials/l-harden-server/index.html