允许非 root 进程监听端口 80,而无需执行任何激烈的操作

允许非 root 进程监听端口 80,而无需执行任何激烈的操作

由于我无法理解的原因,GlassFish 拒绝与 合作iptables。也就是说,即使所有正确的重定向规则都到位,它也不会收到任何重定向流量。所以我的计划是 B,即将 GlassFish 绑定到端口 80 和 443,而不是 8080 和 8181。

由于安全原因我不想以 root 身份运行 GlassFish,因此我需要授予运行它的用户帐户足够的权限以绑定到端口 80 和 443。从安全角度来看,这并不危险,因为 iptables 阻止了所有其他端口。

在 Centos 6.4 中,我该执行什么命令来允许指定的非 root 用户直接监听端口 <1024?

请不要建议从随机位置下载(和编译)内容的极端解决方案。我需要一些可重复的东西,因此如果需要引入任何依赖项,它们都需要来自 Centos 的软件包存储库。

答案1

authbind 工具可以工作。只需安装/解压它并将其添加到命令前面即可。对于我的安装,我编辑了 /usr/share/java-utils/java-functions 并用它调用了 $JAVACMD,它运行正常。

答案2

不,你不想这么做。

相反,选择您最喜欢的 Web 服务器(我更喜欢 nginx),然后使用它来代理从端口 80 到 glassfish 正在监听的任何位置的请求。

执行此操作的配置位非常简单,最终您将获得一个更加安全、更易于管理的系统。

答案3

你应该能够使用功能(7)来实现这一点。参见例如https://stackoverflow.com/questions/413807/是否有办法让非根进程绑定到特权端口-1024-on-l/414258#414258来获取大量信息。

我对 GlassFish 不是特别熟悉,因此我对这种方法的保留意见是,您可能需要将 CAP_NET_BIND_SERVICE 功能授予整个 Java,这当然是有风险的。为此目的专门复制 Java 二进制文件是一种(同样不完美的)选择。

相关内容