详解Linux服务器最多能开放多少个端⼝
⽬录
端⼝相关的概念:
端⼝与服务的关系
1:nmap⼯具检测开放端⼝
2:netstat ⼯具检测开放端⼝
3:lsof ⼯具检测开放端⼝
4:ss ⼯具检测开放端⼝
5:使⽤telnet检测端⼝是否开放
6:netcat⼯具检测端⼝是否开放
关闭端⼝和开放端⼝
端⼝相关的概念:
在⽹络技术中,端⼝(Port)包括逻辑端⼝和物理端⼝两种类型。物理端⼝指的是物理存在的端⼝,如ADSL Modem、集线器、交换机、路由器上⽤于连接其他⽹络设备的接⼝,如RJ-45端⼝、SC端⼝等等。逻辑端⼝是指逻辑意义上⽤于区分服务的端⼝,如TCP/IP协议中的服务端⼝,端⼝号的范围从0到65535,⽐如⽤于浏览⽹页服务的80端⼝,⽤于FTP服务的21端⼝等。由于物理端⼝和逻辑端⼝数量较多,为了对端⼝进⾏区分,将每个端⼝进⾏了编号,这就是端⼝号
端⼝按端⼝号可以分为3⼤类:
1:公认端⼝(Well Known Port)
公认端⼝号从0到1023,它们紧密绑定与⼀些常见服务,例如FTP服务使⽤端⼝21,你在 /etc/services ⾥⾯可以看到这种映射关系。
2:注册端⼝(Registered Ports):
从1024到49151。它们松散地绑定于⼀些服务。也就是说有许多服务绑定于这些端⼝,这些端⼝同样⽤于许多其它⽬的.
3: 动态或私有端⼝(Dynamic and/or Private Ports)
动态端⼝,即私⼈端⼝号(private port numbers),是可⽤于任意软件与任何其他的软件通信的端⼝数,使⽤因特⽹的传输控制协议,或⽤户传输协议。动态端⼝⼀般从49152到65535
Linux中有限定端⼝的使⽤范围,如果我要为我的程序预留某些端⼝,那么我需要控制这个端⼝范围。
/proc/sys/net/ipv4/ip_local_port_range定义了本地TCP/UDP的端⼝范围,你可以在/f⾥⾯定义
net.ipv4.ip_local_port_range = 1024 65000
[root@localhost ~]# cat /proc/sys/net/ipv4/ip_local_port_range
32768 61000
[root@localhost ~]# echo 1024 65535 > /proc/sys/net/ipv4/ip_local_port_range
关于端⼝和服务,我曾经拿公共厕所打⽐⽅,公共厕所⾥的每⼀个厕所就好⽐系统的每⼀个端⼝,为⼈解决⽅便就是所谓的服务,你提供了这些服务,那么就必须开放端⼝(厕所),当有⼈上厕所时,就是在这些端⼝建⽴了链接。如果那个厕所被⼈占⽤了,就表⽰端⼝号被服务占⽤了,如果有⼀天这⾥不提供公共厕所服务了,这个公共厕所被拆除了,⾃然也就没有了端⼝号了。其实更形象的例⼦,就好⽐银
⾏⼤堂,端⼝号是那些柜台,⽽那些取号办理业务的⼈就好⽐链接到服务器的各种客户端。他们通过端⼝重定向技术与柜台发送业务联系。再举⼀个通俗易懂的例⼦,端⼝号,好⽐⾼铁线上的每个站点,例如,长沙、岳阳等分别代表⼀个端⼝号,旅客通过⽕车票到各⾃的站点,就好⽐各个应⽤程序发往服务器端⼝的IP包。
端⼝与服务的关系
端⼝有什么⽤呢?我们知道,⼀台拥有IP地址的主机可以提供许多服务,⽐如Web服务、FTP服务、SMTP服务等,这些服务完全可以通过1个IP地址来实现。那么,主机是怎样区分不同的⽹络服务呢?显然不能只靠IP地址,因为IP 地址与⽹络服务的关系是⼀对多的关系。实际上是通过“IP地址+端⼝号”来区分不同的服务的。
端⼝号与相应服务的对应关系存放在/etc/services⽂件中,这个⽂件中可以到⼤部分端⼝。
如何检查端⼝是否开放,其实不整理,还不知道有这么多⽅法!
1:nmap⼯具检测开放端⼝
nmap是⼀款⽹络扫描和主机检测的⼯具。nmap的安装⾮常简单,如下所⽰rpm安装所⽰。
[root@DB-Server Server]# rpm -ivh nmap-4.11-1.1.x86_64.rpm
warning: nmap-4.11-1.1.x86_64.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
<                >>>>>>>>### [100%]
1:nmap                  >>>>>>>>### [100%]
[root@DB-Server Server]# rpm -ivh nmap-frontend-4.11-1.1.x86_64.rpm
warning: nmap-frontend-4.11-1.1.x86_64.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
<                >>>>>>>>### [100%]
1:nmap-frontend          >>>>>>>>### [100%]
关于nmap的使⽤,都可以长篇⼤写特写,这⾥不做展开。如下所⽰,nmap 127.0.0.1 查看本机开放的端⼝,会扫描所有端⼝。当然也可以扫描其它服务器端⼝。
[root@DB-Server Server]# nmap 127.0.0.1
telnet ip 端口号
Starting Nmap 4.11 ( /nmap/ ) at 2016-06-22 15:46 CST
Interesting ports on localhost.localdomain (127.0.0.1):
Not shown: 1674 closed ports
PORT    STATE SERVICE
22/tcp  open  ssh
25/tcp  open  smtp
111/tcp  open  rpcbind
631/tcp  open  ipp
1011/tcp open  unknown
3306/tcp open  mysql
Nmap finished: 1 IP address (1 host up) scanned in 0.089 seconds
You have new mail in /var/spool/mail/root
[root@DB-Server Server]#
2:netstat ⼯具检测开放端⼝
[root@DB-Server Server]# netstat -anlp | grep 3306
tcp        0      0 :::3306                    :::*                        LISTEN      7358/mysqld
[root@DB-Server Server]# netstat -anlp | grep 22
tcp        0      0 :::22                      :::*                        LISTEN      4020/sshd
tcp        0    52 ::ffff:192.168.42.128:22    ::ffff:192.168.42.1:43561  ESTABLISHED 6198/2
[root@DB-Server Server]#
如上所⽰,这个⼯具感觉没有nmap简洁明了。当然也确实没有nmap功能强⼤。
3:lsof ⼯具检测开放端⼝
[root@DB-Server Server]# service mysql start
[  OK  ]
[root@DB-Server Server]# lsof -i:3306
COMMAND  PID  USER  FD  TYPE DEVICE SIZE NODE NAME
mysqld  7860 mysql  15u  IPv6  44714      TCP *:mysql (LISTEN)
[root@DB-Server Server]# service mysql stop
Shutting down MySQL..[  OK  ]
[root@DB-Server Server]# lsof -i:3306
[root@DB-Server Server]#
[root@DB-Server Server]# lsof -i TCP| fgrep LISTEN
cupsd    3153    root    4u  IPv4  9115      TCP localhost.localdomain:ipp (LISTEN)
portmap  3761    rpc    4u  IPv4  10284      TCP *:sunrpc (LISTEN)
rpc.statd 3797 rpcuser    7u  IPv4  10489      TCP *:1011 (LISTEN)
sshd      4020    root    3u  IPv6  12791      TCP *:ssh (LISTEN)
sendmail  4042    root    4u  IPv4  12876      TCP localhost.localdomain:smtp (LISTEN)
4:ss ⼯具检测开放端⼝
[root@localhost ~]# ss -ntl
State      Recv-Q Send-Q Local Address:Port              Peer Address:Port
LISTEN    0      50          *:3306                    *:*
LISTEN    0      128          *:111                      *:*
LISTEN    0      128          *:22                      *:*
LISTEN    0      32          *:8808                    *:*
LISTEN    0      128      [::]:111                  [::]:*
LISTEN    0      128      [::]:22                    [::]:*
[root@localhost ~]#
5:使⽤telnet检测端⼝是否开放
服务器端⼝即使处于监听状态,但是防⽕墙iptables屏蔽了该端⼝,是⽆法通过该⽅法检测端⼝是否开放的。
6:netcat⼯具检测端⼝是否开放
[root@DB-Server ~]# nc -vv 192.168.42.128 1521
Connection to 192.168.42.128 1521 port [tcp/ncube-lm] succeeded!
[root@DB-Server ~]# nc -z 192.168.42.128 1521; echo $?
Connection to 192.168.42.128 1521 port [tcp/ncube-lm] succeeded!
[root@DB-Server ~]#  nc -vv 192.168.42.128 1433
nc: connect to 192.168.42.128 port 1433 (tcp) failed: No route to host
关闭端⼝和开放端⼝
关闭端⼝和开放端⼝应该是两种不同的概念,每个端⼝都有对应的服务,因此要关闭端⼝,只要关闭相应的服务就可以了。像下⾯例⼦,开启了MySQL服务,端⼝3306处于监听状态,关闭MySQL服务后,端⼝3306⾃然被关闭了
[root@DB-Server Server]# service mysql start
[  OK  ]
[root@DB-Server Server]# lsof -i:3306
COMMAND  PID  USER  FD  TYPE DEVICE SIZE NODE NAME
mysqld  7860 mysql  15u  IPv6  44714      TCP *:mysql (LISTEN)
[root@DB-Server Server]# service mysql stop
Shutting down MySQL..[  OK  ]
[root@DB-Server Server]# lsof -i:3306
[root@DB-Server Server]#
所以,系统⾥⾯有些不必要的端⼝和服务,从安全考虑或资源节省⾓度,都应该关闭那些不必要的服务。关闭对应的端⼝。另外,即使服务开启,但是防⽕墙对对应的端⼝进⾏了限制,这样端⼝也不能被访问,但端⼝本⾝并没有关闭,只是端⼝被屏蔽了。
到此这篇关于详解Linux服务器最多能开放多少个端⼝的⽂章就介绍到这了,更多相关Linux服务器开放端⼝内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。

发表评论