破解 非root用户禁止使用1024以下端口限制

概述

如果你有一个最新的内核,确实有可能使用它作为非root用户启动服务,但绑定低端口。最简单有效的办法是:

#setcap 'cap_net_bind_service=+ep' /path/to/program

执行了该命令后,该文件程序将会具有CAP_NET_BIND_SERVICE功能,setcap在debian软件包libcap2-bin中,至于具体的功能感兴趣可以自己查阅。

注意:

1. 内核版本至少为2.6.24

2.文件不能是脚本。也就是说必须将CAP_NET_BIND_SERVICE功能应用到可执行文件本身,而不是脚本中指向的其他应用。如果赋予了该文件CAP_NET_BIND_SERVICE能力,其他应用滥用用这个文件就可能在安全性上造成隐患。

3.如果程序使用自己的... / lib /的共享库,而Linux将在任何具有像setcap或suid这样的特权提升的程序上禁用LD_LIBRARY_PATH,将导致不能使用。


应用实例:

nginx配置文件,监听80端口

直接在非root用户下启动nginx服务,发现启动不了,提示非root用户没有使用80端口的权利。

使用setcap

在root用户下执行命令:

#setcap cap_net_bind_service=+eip

再次启动nginx服务:

注:如果不使用了,使用如下命令即可:

#setcap -r 文件名

之所以研究了这块是因为安全整改时是不能用root去启动nginx的,在修改配置的时候发现了linux限制非root用户禁止使用1024以下端口这个特性,所以今天顺便发一下解决的方法。

后面会分享更多关于devops和DBA内容,感兴趣的朋友可以关注下~

举报
评论 0