偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

Linux非root用戶程序使用小于1024端口

系統(tǒng) Linux 系統(tǒng)運維
在Linux下,默認端口1024下的程序是要在root下才能使用的,在其他用戶下,如果嘗試使用將會報錯。在有的時候,我們可能考慮程序運行在root帳戶下,可能會給Linux系統(tǒng)帶來安全風險。那如何能夠讓非root用戶運行的程序能夠?qū)ν鈫⒂眯∮?024的端口呢?

在Linux下,默認端口1024下的程序是要在root下才能使用的,在其他用戶下,如果嘗試使用將會報錯。在有的時候,我們可能考慮程序運行在root帳戶下,可能會給Linux系統(tǒng)帶來安全風險。那如何能夠讓非root用戶運行的程序能夠?qū)ν鈫⒂眯∮?024的端口呢?本文嘗試給出一些方法: 

[[140984]]

***種方法:

SetUID

為用戶的應用程序在執(zhí)行位設置user ID能夠使程序可以有root權限來運行,這個方法讓程序能夠像在root下運行有同樣的效果,不過需要非常小心,這種方法同樣會帶來安全風險,特別是當要執(zhí)行的程序本身存在安全風險。使用的方法是:

  1. chown root.root /path/to/application 
  2. #使用SetUID 
  3. chmod u+s /path/to/application 

我們可以看到在系統(tǒng)下,/usr/bin/passwd這種文件,就使用了SetUID,使得每個系統(tǒng)的用戶都能用passwd來修改密碼——這是要修改/etc/passwd的文件(而這個只有root有權限)。

既然要使用非root用戶運行程序,目的就是要降低程序本身給系統(tǒng)帶來的安全風險,因此,本方法使用的時候需要特別謹慎。 

第二種方法:

CAP_NET_BIND_SERVICE

從2.1開始,Linux內(nèi)核有了能力的概念,這使得普通用戶也能夠做只有超級用戶才能完成的工作,這包括使用端口1

獲取CAP_NET_BIND_SERVICE能力,即使服務程序運行在非root帳戶下,也能夠banding到低端口。使用的方法:

  1. #設置CAP_NET_BIND_SERVICE 
  2. setcap cap_net_bind_service =+ep /path/to/application 

Note:

1. 這個方法并不是所有Linux系統(tǒng)通適,內(nèi)核在2.1之前的并沒有提供,因此你需要檢查要使用此方法所在系統(tǒng)是否支持(Linux must support capacity);

2. 另外需要注意的是,如果要運行的程序文件是一個腳本,這個方法是沒有辦法正常工作的(Script won't work)。 

第三種方法:

Port Forwarding

如果要運行的程序有權限監(jiān)聽其他端口,那么這個方法是可以使用的,首先讓程序運行在非root帳戶下,并綁定高于1024的端口,在確保能正常工作的時候,將低端口通過端口轉(zhuǎn)發(fā),將低端口轉(zhuǎn)到高端口,從而實現(xiàn)非root運行的程序綁定低端口。要使用此方法可以使用下面的方式:

  1. # Enable the IP FORWARD kernel parameter. 
  2. sysctl -w net.ipv4.ip_forward=1 
  3.   
  4. # Use iptables rules to redirect packets 
  5. iptables -F -t nat 
  6. iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to:8088 

***步使用sysctl確保啟用IP FORWARD功能(此功能在Red Hat/CentOS默認是被禁用的),注意,代碼中使用的sysctl設置是臨時性設置,重啟之后將會被重置,如果要長久保存,需要在/etc/sysctl.conf文件內(nèi)修改:

  1. Default value is 0, need change to 1. 
  2. # net.ipv4.ip_forward = 0 
  3. net.ipv4.ip_forward = 1 

然后從文件中加載新的配置

  1. load new sysctl.conf 
  2. sysctl -p /etc/sysctl.conf 
  3.   
  4. or sysctl -p 
  5. default filename is /etc/sysctl.conf 

第二步就是使用iptables的規(guī)則來實現(xiàn)端口轉(zhuǎn)發(fā)到程序所在的端口,示例中我們要將80端口轉(zhuǎn)發(fā)到8088。

此種方法能夠比較好的達到我們的目的,我們的程序可以通過非root用戶來運行,并能夠?qū)ν馓峁┑投丝谔柕姆铡?nbsp;

第四種方法:

RINETD2

這種方法使用的也是端口轉(zhuǎn)發(fā),此工具可以將本地端口映射到遠程端口,但此功能對于我們當前的功能來說,有點雞肋,畢竟我們新增了一個額外的程序,這將可能會增加我們系統(tǒng)的風險性。在此不做推薦。 

參考說明:

1.  Linux capabilities文檔,參見其中CAP_NET_BIND_SERVIC,文中的內(nèi)核是否從2.1開始有這個功能并不完全確定,此信息來自網(wǎng)上。

2.  官網(wǎng)地址:RINETD

責任編輯:火鳳凰 來源: Mitchell Chu博客
相關推薦

2021-02-17 09:16:58

PodmanLinuxDocker

2018-10-26 16:20:27

PodmanrootLinux

2011-04-19 16:09:35

LinuxpythonMySQLdb

2020-04-17 08:00:22

Docker命令普通用戶

2010-03-03 14:17:02

Linux內(nèi)核

2020-09-22 11:20:12

UbuntuLinuxroot

2009-12-25 11:40:29

Linux root

2009-10-23 08:41:14

Linux系統(tǒng)操作系統(tǒng)Grub

2021-07-14 14:20:22

root命令Linux

2014-08-27 11:22:46

LinuxSFTP

2009-09-03 09:08:08

Linuxroot密碼遺忘

2010-05-27 14:42:40

Linux查看端口

2010-01-06 09:35:55

2010-02-23 15:57:49

CentOS Orac

2022-12-14 17:26:43

2012-10-09 11:01:18

IBMdw

2015-08-17 10:16:00

CentOSDocker命令root

2013-12-23 13:24:47

Linuxauthbind命令

2015-10-19 09:15:11

Root Android威脅
點贊
收藏

51CTO技術棧公眾號