打印本文 打印本文  关闭窗口 关闭窗口  
端口介绍
作者:未知  文章来源:《网管员世界》2004年第5期  点击数  更新时间:2006/5/13 22:43:17  文章录入:admin  责任编辑:admin

        我们在看一些网络安全文章时经常会接触到“端口”这个词,许多朋友觉得这个所谓的“端口”很神秘,很想了解它,今天我们就谈谈端口这个基础知识。

端口即门口

        在计算机领域中,“端口”词经常会被提到,它由英文“Port”翻译过来,是计算机与外界通信交流的出口。其中硬件领域的端口又称接口.如USB端口、串行端口等,是物理意义上的端口。在软件领域中提到的端口一般是指网络中面向连接服务和无连接服务的通信协议端口,是一种抽象的软件结构,包括一些数据结构和I/O(基本输入输出)缓冲区,是逻辑意义上的端口。端口是计算机与外部通信的途径,没有它,计算机便无法与外界进行沟通交流,虽然我们无法用肉眼看到它们,但它们的的确确存在着,并默默地为我们服务。(XMW)

端口号

      大家知道,一台拥有IP地址的主机可以提供多种服务,比如Web服务.FTP服务、SMTP报务等。主机是如何区分不同的网络服务呢?显然不能只靠IP地址,因为IP地址与网络服务的关系是一对多的关系。实际上主机是通过“IP地址十端口号”来区分不同的服务的。当目的主机接收到数据报后将根据报文首部的目的端口号,把数据发送到相应端口,而与此端口相对应的那个进程将会领取数据并等待下一组数据的到来。比如:我们上网浏览网页时采用80端口,FTP采用21端口,发送邮件采用25端口,接收邮件采用110端口等等。这四项服务都运行在同一台计算机上,并且使用同一个IP地址,当一个数据包到达该计算机时,如何知道该把哪个数据包送到哪个服务程序去呢?这就是我们使用端口号的原因。通过不同端口,计算机与外界就可以进行互不干扰的通信。(XMW)

        如果这样说你还不是很明白,那就把自己的IP地址比作为大楼(大楼代表IP地址),里面住了许多人(许多人代表不同的应用程序),外面来了一封信(信代表数据包),就得知道收信人的地址和门牌号,其中收信人的地址代表IP地址,门牌号就是我们所说的端口。没有端口这个“门牌号”就不知道“信件”该交给谁。这么解释你该明白了吧?需要注意的是,端口并不是一一对应的。比如你的电脑作为客户机访问一台WWW服务器时,WWW服务器使用“80”端口与你的电脑通信但你的电脑则可能使用“3457”这样的端口,如图1所示。(XMW)

        其实,端口就是队,操作系统为各个进程分配了不同的队,数据包按照目的端口被推入相应的队中,等待被进程取用。不光接收数据包的进程需要开启它自己的端口,发送数据包的进程也需要开启端口,这样,数据包中将会标识有源端口,以便接收方能顺利的回传数据报到这个端口。在TCP/IP协议的实现中,端口操作类似于一般I/O操作,进程获取一个端口,相当子获取本地唯一的I/O文件,可以用一般的读写方式访问。(XMW)

 常见的TCP端口如下:

服务 端口 解        释
Http 80 超文本传输协议。其实就是提供网页(WEB)服务
Ftp 21 文件传输协议。采用FTP方式可以对服务器上传下载文件。
Smtp 25 简单邮件传输协议。主要用于发送邮件。
POP3 110 邮件接受协议,主要进行邮件接收。
Telnet 23 远程登陆协议。常见文字BBS就是这种。现在主要用来进行远程维护。

 常见的UDP端口如下:

服务 端口 解        释
DNS 53 域名解析服务。
OICQ 8000/4000 服务器使用8000端口,OICQ软件使用4000端口

   图1  常见端口列表

面向连接服务和无连接服务

      在开篇时我们提到过计算机之间相互通信的时候会采用两种方式:面向连接服务和无连接服务。(XMW)

        面向连接服务要经过三个阶段:数据传数前先建立连接,连接建立后再传输数据,数据传送完后释放连接。面向连接服务,可确保数据传送的次序和传输的可靠性。这种方式类似打于我们日常生活中的打电话,两个人如果要通电话,必须先建立连接——拨号,等待应答后才能相互传递信息,最后还要释放连接——挂电话。也就是说发送信息以后,可以确认信息是否到达,也就是有应答的方式,这种方式大多采用TCP协议。(XMW)

      另外一种是无连接服务,它只有传输数据阶段,消除了除数据通信外的其它开销。只要发送实体是活跃的,无须接收实体也是活跃的。它的优点是灵活方便、迅速,特别适合于传送少量零星的报文,但无连接服务不能防止报文的丢失、重复或失序。这种方式类似于我们日常生活中的写信,写好收信人的地址和姓名以后往邮筒一扔,收信人就能收到。这种无应答的方式大多采用UDP协议(如QQ)。对应这两种协议的服务提供的端口,也就分为TCP端口和UDP端口。由于TCP和UDP两个协议是独立的,因此各自的端口号也相互独立,比如TCP有210端口,UDP也可以有210端口,两者并不  冲突,因为数据报在标明端口的同时,还将标明端口的类型。在TCP/IP协议中,端口是传输层的内容,是面向连接的。(XMW)

端口号分配

 类似于文件描述符,每个端口都拥有一个叫端口号的整数描述符,用来区别不同的端口,端口号的范围是从O到65535。从端口的分配来看,端口被分为公认端口(Well  Known Ports)、注册端口(Registered Ports)和动态和/或私有端口(Dynamicand/or/Private Ports)三种类型。其中O~1023为公认端口,使用集中式管理机制即服从一个管理机构对端口的指派。由于这些端口紧密绑定于一些服务,所以我们会经常扫描这些端口来判断对方是否开启了这  些服务。比方说,在默认情况下WWW服务的端口号是80;1024—49151为注册端口,这些端口并非固定的捆绑于某一服务,而是松散地绑定于一些服务,即有许多服务绑定于这些端口,操作系统将这些端口动态的分配给各个进程,同一进程两次分配有可能分配到不同的端口。不过一些应用于程序并不愿意使用操作系统分配的动态端口  他们有其自己喜欢的“固定”端口,如QQ客户端的4000端口,木马冰河的7626 端口等都是固定而出名的;49152—65535为动态和/或私有端口,从理论上说,不应为服务分配这些端口。不过,有很多木马喜欢使用它们,如木马网络公牛使用的234444端口,而木马BO2000使用的则是54320端口。以下是部分常见端口,如图2所示。

查看打开的端口

       端口在入侵和防御中有什么用呢?如果把目标主机比喻为一间房屋,则端口就是房屋的门(假设该房间有好多“门”)。入侵者要进入这所房间,必须通过门才能进入对于入侵害来说,了解这间房间开有哪几扇“门”  都是什么样的“门”,“门”后面有什么东西是十分必要的。攻击者通常使用软件扫描目标计算机,得到目标计算机打开的端口,从而了解目标主机提供了哪些服务,进而猜测到可能存在的漏洞。如果计算机端口打开太多,而管理者又不知道,那就很危险了。出现这种情况,大都是由于以下两种原因:一种是提供了服务而管理者没有注意,比如安装IIS的时候  软件就会自动增加很多服务,而管理员可能没有注意到;另外一种就是服务器被攻击者安装木马,通过特殊的端口进行通信。这两种情况都很危险。说到底就是管理员不了解服务器提供的服务,减小了系统安全系数。所以对我们来说,扫描本机的开放端口对我们就显得非常必要了。(XMW)

      那么该怎么来查看端口呢,有两种方法:一种是利用系统内置的命令,如在CMD中输入。netstst—an就可以检查自己的电脑上已经打开的端口。另一种方法是利用第三方端口扫描软件如使用软件FPort,FPort可以把本机开放的TCP/UDP端口同应用程序关联起来,这和使用”netstat—an”命令产生的效果类似,但是该软件还可以把端口和运行着的进程关联起来,并可以显示进程PID名称和路径。如果你喜欢图形界面可以使用activeport.exe,它也是用来查看本地机器开放端口的软件,它还有一个令人心动的功能——可以关闭端口。至于superscan、Portscan之类的端口扫描软件大家可能已经很熟悉了,这里就不多说了。(XMW)

管理端口

        我们面临的下一个问题是,该怎样管理端口呢?很简单利用系统内置的管理工具就可以。以Windows 2000 Server为例,只要双击任务栏右下角的网络连接图标,再双击打开“本地连接状态”,点击“属性”按钮后选中“Internet协议(TCP/IP)”,然后点击“属性”按钮,会弹出的“Internet协议(TCP/IP)”对话框  点击“高级”按钮,在“高级TCP/IP设置”中选择“选项”标签,选中“TCP/IP筛选”,然后点击“属性”铵钮。在“TCP/IP筛选”对话框里选择“启用TCP/IP筛选”的复选框,然后把左边“TCP端口” 中的“只允许”选上。增加你允许使用的端口,如80、21、25等,重新启动以后未经允许的端口就关闭了。当然你也可以采用第三方软件管理端口如防火墙等管理端口,其实防火墙就是一整套制定好的IP地址及其端口的访问规则,你可以改变这些规则来打开和关闭指定的端口。大家可以打开自己的防火墙如天网防火墙或瑞星防火墙等试试就知道了。下文中我们会提到管理端口的实例。(XMW)

关闭不必要的端口

关闭139端口

一般说来,一台个人用的电脑,在正常情况下,开机后不会开放过多的端口,比方说会使用137、138、139端口等。若上网冲浪会有其它端口开放,这是本机与网上主机通讯时打开的,比方说,用IE浏览网页会打开连续的端口:1025,1026 ,1027……使用QQ会打开4000、4001端口……而木马多用1024以上的端口。因此,发现有数字比较大的端口被打开,则很有可能是木马所开,要小心!查看自己的电脑开放了哪些端口的最简单的方法,可以使用DOS下的netslat命令。如果输入nbtstst—A ip,则可以查看139端口是否开放。如果139端口开放则计算机就会泄露你的机器的一些信息.其中第一行中的NB便是这台计算机的机器名,WORKGROUP则说明这台机器是工作组模式。最后一行还列出了机器的MAC地址(网卡地址)。因此,对于个人用户来说139端口实在没有必要开放,由于Windows是通过139端口与其他安装Windows系统的电脑进行连接,所以关闭此端口,可防范绝大多数的攻击。

      对于Windows 9x关闭139端口的方法为.“网络”“配置”TCP/IP”“属性”“绑定”Microsoft网络客户端”,把此项前面的“√”去掉,若无此项可不作变动。

        对于Windows 2000/XP来说,关闭139端口的方法是;先用鼠标右键单击“网络邻居”,选择“属性”进入“网络和拨号连接”,再用鼠标右键单击“本地连接”,选择“属性”,进入“本地连接属性”。在下拉列表框中找到“Internet协议(TCP/IP)”,双击“Internet协议(TCP/IP)”“进入Internet协议(TCP/IP)属性”窗口。点击该窗口中的“高级”按钮,会进入“高级TCP/IP设置”窗口,接下来选择“选项”标签下的“TCP/IP筛选”项,点“届性”按钮,会来到“TCP/IP筛选”的窗口(图3),记住一定要在该窗口的“启用TCP/IP筛选(所有视配器)”前面打上“√”才行,最后在“只允许”中填入除了139之外要用到的端口即可。(XMW)

       注意,以上的方法都是给不需要连接入局域网的单机用户提供的,如果你是一台拨号上网的单机那么完全可以禁止NetBIOS服务。但是如果你需要接入局域网的话,则不能关闭NetBIOS服务,否则局域网上的其他机器将无法访问你的资源了,关闭该服务后,你不能连接到局域网上的任何用户,局域网上也无法看到你的计算机。(XMW)

      下面,给出一个对Windows 9x/NT/2000/XP都行之有效的解决办法——通过防火墙来屏蔽NetBIOS对应的139端口,这样别人就无法攻击我们了。以天网个人防火墙为例选择一条空规则,点击“修改”按钮,在弹出的“IP规则修改”窗口中设定如下规则:“数据包方向”选“接收”,“对方IP地址”选“任何”  “协议”选“TCP”,“本地端口”选“139到139”,“对方端口”选“O到O”,“TCP标志位“选“SYN”,然后在“当满足上面条件时”下拉列表框选“拦截”(图4)最后点击“确定”即可增加一条新规则。这样就可以屏蔽对方对139端口的访问,从而保证了我们上网的安全。(XMW)

关闭735端口

      另外,利用系统自带防火墙关闭端口(适用系统Windows XP/Server 2003)也可关闭不必要的端口,实现的步骤也很简单。下面我们以关闭135端口为例来说明。(XMW)

点击“控制面板”“本地连接”“高级”,把“Internet连接防火墙”下面的选项勾选上,然后点击“设置”,出现如图5所示窗口。假设我们要关闭135端口(强烈建议,所有使用Windows 2000/XP的用户马上关闭135端口,因为最新的漏洞可以利用这个端口攻击服务器获取权限),135端口用于启动与远程计算机的RPC连接。我们可以在“高级设置”窗口的“服务”选项卡中点击“添加”按钮,出现如图6所示窗口。在“服务设置”对话框中把各项按图中所示填写好之后一路确定就可以了。这样防火墙就自动启动了,启动以后“本地连接”图标会出现一个可爱的小锁头。

关闭445端口

      对于Windows 2000来说,在查看共享资源的时候,系统会先尝试连接139端口。如果139端口关闭的话就会尝试445端口的连接(在黑客进行IPCS入侵时同样离不开它们),所以不仅要关闭139端口,还要关闭445端口。除了可以利用防火墙  还可以采用下面的方法:在“开始”菜单的“运行”中输入regedit,打开注册表编辑器。然后展开到这里

      HKEY_LOCAL_MACHlNE\SYSTEM\CurentControlSet\Sevioes\NetBT\Parameters,在它的下面新建一个D W O R D值SMBDeviceEnabled,其键值为1即可。(XMW)

关闭3389端口

        最后说说3389端口。3389端口开放表示服务器提供了终端服务,如果黑客获得了管理员的用户名和密码那么他就可以通过这个服务完全控制主机,要想关闭此端口,需要关闭终端服务。(XMW)

      在Windows 2000中关闭3389端口的方法;在Windows 2000 Server中,可以点击“开始程序管理工具服务”,找到Terminal Services服务项.选中“属性”选项将启动类型改成手动,并停止该服务;在Windows 2000 PRO中,可以点击“开始设置控制面板管理工具服务”,找到Terminal Services服务项,选中“属性”选项将启动类型改成手动,并停止该服务。

        在Windows XP关闭3389端口的方法:在“我的电脑”上点击鼠标右键,选择弹出菜单中的“属性一远程” 将里面的“远程协助”和“远程桌面”两个选项框里的“√”去掉即可。(XMW)

打印本文 打印本文  关闭窗口 关闭窗口