在 Linux 中使用低端口号的首选方法是什么?

在 Linux 中使用低端口号的首选方法是什么?

长话短说:我希望 Glassfish 监听端口 80,这样您在输入 url 时就不必指定端口,但 Linux 不允许在没有 root 的情况下使用低端口号,并且运行 glassfish 因为 root 存在安全风险。

解决这个问题的最佳方法是什么?制作某种例外,以便 glassfish 可以单独监听它,使用其他程序将请求从端口 80 转发到其他端口?也许有某种方法可以只授予 glassfish 使用任何端口的权限,而不需要实际授予它 root 权限?

答案1

解决这个问题的最佳方法是什么?

glassfish 本身给出的那个。

直接来自linux-service.template:

# 示例命令演示如何在“特殊”端口 < 1024 上运行 GlassFish
#
# iptables -t nat -A PREROUTING -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080
# iptables -t nat -A PREROUTING -p udp -m udp --dport 80 -j REDIRECT --to-ports 8080

是的,如果 glassfish 能够接收监听文件描述符,这样它就可以在类似的东西下运行,那就太好了s6-tcpserver或由 systemd 激活套接字。然而,它并不是为了以这种方式运行而设计的。

进一步阅读

答案2

你可以使用 bash 的副本...
我的意思是你可以在你的一个$PATH目录中制作一个单独的 bash 版本,并将其称为 bash1 或其他名称。
然后你可以做的是给它不同的权限,以便你可以运行玻璃鱼用 bash1 而不是 bash。
这意味着 tyat bash 将保持不变,并且您拥有自己单独的 bash 权限版本,例如玻璃鱼。唯一的缺点是,这意味着您必须将其仅限于某些程序和用户,否则整个系统可能会被破坏......

答案3

虽然“chroot”不再像以前那样被广泛使用,但它是一种可以提高必须以 root 权限运行的进程的安全性的工具。当您创建一个包含应用程序所需的所有文件的虚拟 / 文件夹时,需要一些额外的努力,包括库(静态链接的程序编译),这样,如果某个进程破坏了您的安全性,它将位于有限的沙箱中。显然,您删除了任何不需要的支持程序,例如编辑器和网络工具。

运行 bind/named 的首选方法之一是使用此方法,因此这可能是有关如何设置的一个很好的指南。

查看https://help.ubuntu.com/community/BasicChroot更多细节。

相关内容