zoukankan      html  css  js  c++  java
  • Linux 查看服务器开放的端口号

    在讨论这个问题前,我们先来了解一下物理端口、逻辑端口、端口号等计算机概念。

    端口相关的概念:

    在网络技术中,端口(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的端口范围,你可以在/etc/sysctl.conf里面定义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
    Preparing...                ########################################### [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
    Preparing...                ########################################### [100%]
       1:nmap-frontend          ########################################### [100%]
    [root@DB-Server Server]# 

    关于nmap的使用,都可以长篇大写特写,这里不做展开。如下所示,nmap 127.0.0.1 查看本机开放的端口,会扫描所有端口。 当然也可以扫描其它服务器端口。

    [root@DB-Server Server]# nmap 127.0.0.1
     
    Starting Nmap 4.11 ( http://www.insecure.org/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]# 

    clip_image001

    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]# 

    clip_image002

    如上所示,这个工具感觉没有nmap简洁明了。当然也确实没有nmap功能强大。

    3:lsof 工具检测开放端口

     
    [root@DB-Server Server]# service mysql start
    Starting MySQL......[  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]# 

    clip_image003

    [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: 使用telnet检测端口是否开放

       服务器端口即使处于监听状态,但是防火墙iptables屏蔽了该端口,是无法通过该方法检测端口是否开放的。

    5: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!
    0
    [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
    Starting MySQL......[  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]# 

       

    所以,系统里面有些不必要的端口和服务,从安全考虑或资源节省角度,都应该关闭那些不必要的服务。关闭对应的端口。另外,即使服务开启,但是防火墙对对应的端口进行了限制,这样端口也不能被访问,但端口本身并没有关闭,只是端口被屏蔽了。

  • 相关阅读:
    爬取校园新闻首页的新闻的详情,使用正则表达式,函数抽离
    网络爬虫基础练习
    Mysql 使用 select into outfile
    Mysql 使用CMD 登陆
    使用Clean() 去掉由函数自动生成的字符串中的双引号
    Get Resultset from Oracle Stored procedure
    获取引用某个主键的所有外键的表
    Entity Framework 丢失数据链接的绑定,在已绑好的EDMX中提示“Choose Your Data Connection”
    添加MySql Metat Database 信息
    at System.Data.EntityClient.EntityConnection.GetFactory(String providerString)
  • 原文地址:https://www.cnblogs.com/wanghuaijun/p/8971152.html
Copyright © 2011-2022 走看看