linux普通用户使用1024以下的端口(80)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux普通用户使用1024以下的端口(80)相关的知识,希望对你有一定的参考价值。

参考技术A linux对于非root权限用户不能使用1024以下的端口,对于一些服务,过高的权限,会带来一定的风险。那么对于低权限的用户如何对外开放1024以下的端口。我这里找到几种办法并且亲测可行

首先搭建环境 centos7 账户 tengine 没有 sudo 权限

利用 nginx 做反向代理,nginx 监听 80 端口,将请求转发到实际监听的端口,示例:

首先程序绑定1024以上的端口,然后root权限下做转发注意有些系统需要手动开启IP FORWARD功能

root账户下执行

从图片可以看出来nginx可以运行,但是主进程仍然是以root权限运行,这样并不安全。

从 2.1 版本开始,Linux 内核有了能力的概念,这使得普通用户也能够做只有超级用户才能完成的工作,这包括使用端口。

获取 CAP_NET_BIND_SERVICE 能力,即使服务程序运行在非root帐户下,也能够 binding 到低端口。使用的方法:

切换到 tengine 账户下,信息如下:

最后别忘记怎么清除这个能力

Linux普通用户使用1024以下端口的问题

由于Linux内核Kernel代码规定禁止普通用户使用1024以下的端口,所以很多时候当我们为安全起见想要以普通用户启动使用80端口的apache、nginx或tomcat时,就会被权限禁止。


解决方法:

一般主要都是,应用程序使用1024以上的端口,然后用防火墙(硬件防火墙或iptables)把80端口转发到对应的程序端口,例如把80转发至8080端口。


iptables添加转发规则:

#iptables -A PREROUTING -t nat -p tcp --dport 80 -j REDIRECT --to-port 8080

然后把转发规则保存至配置文件

#service iptables save


或者直接修改配置文件

#vim /etc/sysconfig/iptables

在*nat项下添加

-A PREROUTING -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080


另外:

不建议通过chmod u+s的方式,如此一来就有违安全性的初衷了。


以上是关于linux普通用户使用1024以下的端口(80)的主要内容,如果未能解决你的问题,请参考以下文章

Linux普通用户使用1024以下端口的问题

Linux普通用户使用1024以下端口的问题

如何配置linux可以让普通用户使用80端口或1024以下的端口

nodejs如何检查哪个IP访问80端口

普通用户启动nginx

非root启动80端口