systemd – 如何允许基于Java的应用程序绑定到低端口

我需要在基于CentOS 7.5的系统上运行某个应用程序.此应用程序需要绑定到端口389才能公开ldap服务.
此应用程序由SystemD运行但无法启动,因为我不得不使用用于运行应用程序的用户绑定到低于1024的端口.
我已经尝试过setcap’cap_net_bind_service = ep’/ opt / jdk8 / bin / java但是之后这个Java甚至无法启动.

我已经看到了基于iptables forward,ssh tunnels etcetera解决方案.在我必须使用的系统上不允许所有这些“魔法”.我想这同样适用于setcap.

我可以在SystemD中使用一些设置吗?我确信它可以以某种方式完成,因为我必须使用相同的用户在端口80上运行Nginx并且它可以工作.

因为我没有应用程序的源代码,所以我无法改变它打开端口的方式.

解决方法:

如果您可以为java(或使用动态库的任何东西)提升功能,那么攻击者可以切换库以获得功能.

一个办法

编写一个最小的C程序(静态链接),让它打开端口,并将其附加到文件描述符3.然后执行java程序. java程序必须执行fdopen,使其看起来像java的文件(打开“/ dev / fd / 3”)这个包装器需要这些功能.

相关文章

LinuxSystemd服务(2021.07.09)目录LinuxSystemd服务(2021.07...
opidrvabortingprocessM002ospid(3561)asaresultofORA-600OR...
安装好haproxy后,配置正确无法启动,看日志:Feb1309:32:50clu...
Linux 系统与服务管理工具Systemd被曝存在3大漏洞,影响几乎...
一、systemd查看日志文件有隐藏 systemctlstatusSERVICE-l-...
不要在mp目录下保存文件,该目录会定期清理文件mp默认保存10...