如何让Linux下非root用户程序使用小于1024端口?

如何让Linux下非root用户程序使用小于1024端口?,第1张

在Linux下,默认端口1024下的程序是要在root下才能使用的,在其他用户下,如果尝试使用将会报错。在有的时候,我们可能考虑程序运行在root帐户下,可能会给Linux系统带来安全风险。那如何能够让非root用户运行的程序能够对外启用小于1024的端口呢?本文尝试给出一些方法: \x0d\x0a\x0d\x0a第一种方法:\x0d\x0aSetUID\x0d\x0a为用户的应用程序在执行位设置user ID能够使程序可以有root权限来运行,这个方法让程序能够像在root下运行有同样的效果,不过需要非常小心,这种方法同样会带来安全风险,特别是当要执行的程序本身存在安全风险。使用的方法是:\x0d\x0achown root.root /path/to/application #使用SetUID chmod u+s /path/to/application \x0d\x0a\x0d\x0a我们可以看到在系统下,/usr/bin/passwd这种文件,就使用了SetUID,使得每个系统的用户都能用passwd来修改密码——这是要修改/etc/passwd的文件(而这个只有root有权限)。\x0d\x0a既然要使用非root用户运行程序,目的就是要降低程序本身给系统带来的安全风险,因此,本方法使用的时候需要特别谨慎。 \x0d\x0a第二种方法:\x0d\x0aCAP_NET_BIND_SERVICE\x0d\x0a从2.1开始,Linux内核有了能力的概念,这使得普通用户也能够做只有超级用户才能完成的工作,这包括使用端口1。\x0d\x0a获取CAP_NET_BIND_SERVICE能力,即使服务程序运行在非root帐户下,也能够banding到低端口。使用的方法:\x0d\x0a#设置CAP_NET_BIND_SERVICE setcap cap_net_bind_service =+ep /path/to/application \x0d\x0a\x0d\x0aNote:\x0d\x0a1. 这个方法并不是所有Linux系统通适,内核在2.1之前的并没有提供,因此你需要检查要使用此方法所在系统是否支持(Linux must support capacity);\x0d\x0a2. 另外需要注意的是,如果要运行的程序文件是一个脚本,这个方法是没有办法正常工作的(Script won't work)。 \x0d\x0a第三种方法:\x0d\x0aPort Forwarding\x0d\x0a如果要运行的程序有权限监听其他端口,那么这个方法是可以使用的,首先让程序运行在非root帐户下,并绑定高于1024的端口,在确保能正常工作的时候,将低端口通过端口转发,将低端口转到高端口,从而实现非root运行的程序绑定低端口。要使用此方法可以使用下面的方式:\x0d\x0a# Enable the IP FORWARD kernel parameter. sysctl -w net.ipv4.ip_forward=1 # Use iptables rules to redirect packets iptables -F -t nat iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to:8088 \x0d\x0a\x0d\x0a第一步使用sysctl确保启用IP FORWARD功能(此功能在Red Hat/CentOS默认是被禁用的),注意,代码中使用的sysctl设置是临时性设置,重启之后将会被重置,如果要长久保存,需要在/etc/sysctl.conf文件内修改:\x0d\x0a# Default value is 0, need change to 1. # net.ipv4.ip_forward = 0 net.ipv4.ip_forward = 1 \x0d\x0a\x0d\x0a然后从文件中加载新的配置\x0d\x0a# load new sysctl.conf sysctl -p /etc/sysctl.conf # or sysctl -p # default filename is /etc/sysctl.conf \x0d\x0a\x0d\x0a第二步就是使用iptables的规则来实现端口转发到程序所在的端口,示例中我们要将80端口转发到8088。\x0d\x0a此种方法能够比较好的达到我们的目的,我们的程序可以通过非root用户来运行,并能够对外提供低端口号的服务。 \x0d\x0a第四种方法:\x0d\x0aRINETD2\x0d\x0a这种方法使用的也是端口转发,此工具可以将本地端口映射到远程端口,但此功能对于我们当前的功能来说,有点鸡肋,毕竟我们新增了一个额外的程序,这将可能会增加我们系统的风险性。在此不做推荐。

1、查看哪些端口被打开netstat -anp。

2、关闭端口号:iptables -AINPUT -ptcp --drop 端口号-jDROP,iptables -AOUTPUT -ptcp --dport

端口号-jDROP。

3、打开端口号:iptables -AINPUT -ptcp --dport 端口号-jACCEPT。

4、以下是linux打开端口命令的使用方法。nc -lp22&(打开22端口,即telnet),netstat -an| grep 22 (查看是否打开22端口)。

5、linux打开端口命令每一个打开的端口。

关闭端口号:iptables -AINPUT -ptcp --drop 端口号-jDROP,iptables -AOUTPUT -ptcp --dport

端口号-jDROP。

扩展资料:

liunx常见端口详细说明 :

1、端口:7

服务:Echo

说明:能看到许多人搜索Fraggle放大器时,发送到X.X.X.0和X.X.X.255的信息。

2、端口:21

服务:FTP

说明:FTP服务器所开放的端口,用于上传、下载。最常见的攻击者用于寻找打开anonymous的FTP服务器的方法。这些服务器带有可读写的目录。木马Doly

Trojan、Fore、Invisible FTP、WebEx、WinCrash和Blade Runner所开放的端口。

3、端口:22

服务:Ssh

说明:PcAnywhere建立的TCP和这一端口的连接可能是为了寻找ssh。这一服务有许多弱点,如果配置成特定的模式,许多使用RSAREF库的版本就会有不少的漏洞

存在。

4、端口:23

服务:Telnet

说明:远程登录,入侵者在搜索远程登录UNIX的服务。大多数情况下扫描这一端口是为了找到机器运行的 *** 作系统。还有使用其他技术,入侵者也会找到密码。木马Tiny

Telnet Server就开放这个端口。

5、端口:25

服务:SMTP

说明:SMTP服务器所开放的端口,用于发送邮件。入侵者寻找SMTP服务器是为了传递他们的SPAM。入侵者的帐户被关闭,他们需要连接到高带宽的E-MAIL服务器上,将简单的信息传递到不同的地址。木马Antigen、Email Password Sender、Haebu Coceda、Shtrilitz Stealth、WinPC、WinSpy都开放这个端口。

6、端口:53

服务:Domain Name Server(DNS)

说明:DNS服务器所开放的端口,入侵者可能是试图进行区域传递(TCP),欺骗DNS(UDP)或隐藏其他的通信。因此防火墙常常过滤或记录此端口。

7、端口:80

服务:HTTP

说明:用于网页浏览。木马Executor开放此端口。

8、端口:102

服务:Message transfer agent(MTA)-X.400 over TCP/IP

说明:消息传输代理。

9、端口:110

服务:pop3

说明:POP3(Post Office Protocol

服务器开放此端口,用于接收邮件,客户端访问服务器端的邮件服务。POP3服务有许多公认的弱点。关于用户名和密码交换缓冲区溢出的弱点至少有20个,这意味着入侵者可以在真正登陆前进入系统。成功登陆后还有其他缓冲区溢出错误。

10、端口:137、138、139

服务:NETBIOS Name Service

说明:其中137、138是UDP端口,当通过网上邻居传输文件时用这个端口。而139端口:通过这个端口进入的连接试图获得NetBIOS/SMB服务。这个协议被用于windows文件和打印机共享和SAMBA。还有WINS Regisrtation也用它。

11、端口:143

服务:Interim Mail Access Protocol v2

说明:和POP3的安全问题一样,许多IMAP服务器存在有缓冲区溢出漏洞。

记住:一种LINUX蠕虫(admv0rm)会通过这个端口繁殖,因此许多这个端口的扫描来自不知情的已经被感染的用户。当REDHAT在他们的LINUX发布版本中默认允许IMAP后,这些漏洞变的很流行。这一端口还被用于IMAP2,但并不流行。

12、端口:161

服务:SNMP

说明:SNMP允许远程管理设备。所有配置和运行信息的储存在数据库中,通过SNMP可获得这些信息。许多管理员的错误配置将被暴露在Internet。Cackers将试图使用默认的密码public、private访问系统。他们可能会试验所有可能的组合。

SNMP包可能会被错误的指向用户的网络。

13、端口:389

服务:LDAP、ILS

说明:轻型目录访问协议和NetMeeting Internet Locator Server共用这一端口 。

14、端口:443

服务:Https

说明:网页浏览端口,能提供加密和通过安全端口传输的另一种HTTP。

15、端口:993

服务:IMAP

说明:SSL(Secure Sockets layer)

16、端口:1433

服务:SQL

说明:Microsoft的SQL服务开放的端口。

17、端口:1503

服务:NetMeeting T.120

说明:NetMeeting T.120

18、端口:1720

服务:NetMeeting

说明:NetMeeting H.233 call Setup。

19、端口:1731

服务:NetMeeting Audio Call Control

说明:NetMeeting音频调用控制。

20、端口:3389

服务:超级终端

说明:WINDOWS 2000终端开放此端口。

21、端口:4000

服务:QQ客户端

说明:腾讯QQ客户端开放此端口。

22、端口:5631

服务:pcAnywere

说明:有时会看到很多这个端口的扫描,这依赖于用户所在的位置。当用户打开pcAnywere时,它会自动扫描局域网C类网以寻找可能的代理(这里的代理是指agent而不是proxy)。入侵者也会寻找开放这种服务的计算机。所以应该查看这种扫描的源地址。一些搜寻pcAnywere的扫描包常含端口22的UDP数据包。

23、端口:6970

服务:RealAudio

说明:RealAudio客户将从服务器的6970-7170的UDP端口接收音频数据流。这是由TCP-7070端口外向控制连接设置的。

24、端口:7323

服务:[NULL]

说明:Sygate服务器端。

25、端口:8000

服务:OICQ

说明:腾讯QQ服务器端开放此端口。

26、端口:8010

服务:Wingate

说明:Wingate代理开放此端口。

27、端口:8080

服务:代理端口

说明:WWW代理开放此端口。

一、查看哪些端口被打开 netstat -anp

二、关闭端口号:iptables -A INPUT -p tcp --drop 端口号-j DROP

iptables -A OUTPUT -p tcp --dport 端口号-j DROP

三、打开端口号:iptables -A INPUT -ptcp --dport 端口号-j ACCEPT

四、以下是linux打开端口命令的使用方法。

nc -lp 23 &(打开23端口,即telnet)

netstat -an | grep 23 (查看是否打开23端口)

五、linux打开端口命令每一个打开的端口,都需要有相应的监听程序才可以

免费提供最新Linux技术教程书籍,入门自学书籍《linux就该这么学》,为开源技术爱好者努力做得更多更好


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/8310432.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-15
下一篇 2023-04-15

发表评论

登录后才能评论

评论列表(0条)

保存