允许特定Linux用户绑定到端口443(Allow specific linux user to b

2019-10-24 04:16发布

我负责建立运行通过SSL,因此应通过端口443访问的JBoss Web应用程序的。

当然,也可以通过具有root权限的用户可以启动,但是这是我想避免的。 我想用非特权用户来运行它,所以我可以严格控制一切此应用程序,并给予不超过访问需要。

然而,问题是,非特权用户不能结合<1024个端口。 我知道的原因,这是如此的设计,但是,这种安全性原则并没有让我与我的JBoss应用养成良好的安全性。

什么是解决这个的最好方法? 我当然想避免像绑定到8443端口,而不是一个丑陋的解决方案。

Answer 1:

1。

编写使用特权端口的网络服务常用的方法是:

  • 启动服务为根;
  • 创建套接字并将其绑定到特权端口;
  • 通过切换到非特权用户下降根特权:
    • 使用setuid(2)不可逆地下降特权;
    • 使用seteuid(2)下降的特权,但仍然能够切换回根。

2。

允许非特权用户启动特权服务常用的方法是设置setuid bit

绑定到特权端口后,服务可以切换回real user id (用户即开始为您服务)或某些特殊用户(如cron用户对cron守护程序)。

3。

另一个(Linux特定的)选择是给你的服务CAP_NET_BIND_SERVICE能力没有充分root权限。

这可以直接在代码中使用来完成libpcap (但你仍然需要setuid bit ),或通过附着能力位可执行文件,如果你的文件系统支持的话(因此你不需要setuid bit )。



文章来源: Allow specific linux user to bind to port 443
标签: linux ssl jboss