如何以普通用户身份创建安全本地端口

如何以普通用户身份创建安全本地端口

我正在以没有 root 访问权限的普通用户身份在共享 Linux 服务器上工作。我可以启动一个程序侦听本地 tcp 端口,并成为唯一能够连接到该端口的用户吗?我可以控制程序监听的地址和端口。

例如,该程序可以是网络服务器的开发/测试版本。

此外,由于服务器仅接受端口 22 (ssh) 上的传入 tcp 连接,因此我通过 ssh 转发本地端口,以便可以使用笔记本电脑连接到该端口。ssh -L 8080:localhost:8000 evaben@dice01因此,仍然允许这种情况或类似情况的解决方案会很好。

答案1

只有 root 可以设置防火墙。

一种可能性是在容器(例如 Docker)中运行程序。这需要 root 权限,但即使您没有 root 访问权限,也有可能被允许实例化 Docker 容器。

如果您没有直接或间接的方法来设置网络保护,则需要修改程序的工作方式。让它听Unix套接字而不是 TCP。假设程序是动态链接到标准库的(几乎所有程序都是),您不需要更改程序本身,只需更改运行它的方式即可。你可以这样做LD_PRELOAD,通过加载 TCP 套接字打开函数的包装器来打开 Unix 套接字。ttu正是这样做的(根据其文档,我从未使用过它)。

答案2

我可以启动一个程序来监听本地 tcp 端口吗

是的。如果您不是 root,您将只能侦听所谓的“高端口”,即端口号 > 1024。

并成为唯一能够连接到该端口的用户?

不。如果您具有 root 访问权限,您可能能够使用 执行某些操作iptables,但是在接受端口上的连接时,不存在基于用户的访问控制的概念。

相关内容