在某些情况下,Web应用程序将通过反向代理(例如Apache with mod_proxy)与客户端进行通信,其中反向代理正在侦听端口80,并且Web应用程序正在侦听大于1023的端口(因为root拥有低于1024的端口)。
正如在这个问题的一些答案中所提到的,如果没有其他进程已经开始监听,任何进程都可以开始监听高端口。 如果Web应用程序尚未开始侦听端口,则可能会出现问题,而其他进程则会首先在事件或恶意中开始侦听。
有没有办法让用户或组拥有一个端口,以便只有Web应用程序的所有者才能启动一个在该端口上侦听的进程?
或者,您只需在保留的端口范围内分配一个固定端口,并授予您的应用程序绑定到该端口的权限。
sudo setcap 'cap_net_bind_service=+ep' /usr/local/bin/application
如果你有Selinux(不知道AppArmor),你可能很有可能实现这一点:
确保只有该特定应用程序的上下文才能侦听该端口,然后确保只有您想要的用户才能启动该应用程序。