我需要在基于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”)这个包装器需要这些功能.