计算机"端口"可以认为是计算机与外界通讯交流的出口。其中硬件领域的端口又称接口,如USB端口、串行端口等。软件领域的端口一般指网络中面向连接服务和无连接服务的通信协议端口,是一种抽象的软件结构,包括一些数据结构和I/O(基本输入输出)缓冲区。
  本文向你讲述端口的基础常识及常用端口设置方法与技巧。
  一、端口基础
  1.面向连接和无连接协议
  面向连接服务要经过三个阶段。即数据传数前,先建立连接,连接建立后再传输数据,数据传送完后,释放连接。面向连接服务,可确保数据传送的次序和传输的可靠性。
  无连接服务只有传输数据阶段。消除了除数据通信外的其他开销。只要发送实体是活跃的,无须接收实体也是活跃的。它的优点是灵活方便、迅速,特别适合于传送少量零星的报文,但无连接服务不能防止报文的丢失、重复或失序。
  区分"面向连接服务"和"无连接服务"的概念,特别简单、形象的例子是:打电话和写信。两个人如果要通电话,必须先建立连接--拨号,等待应答后才能相互传递信息,最后还要释放连接--挂电话。写信就没有那么复杂了,地址姓名填好以后直接往邮筒一扔,收信人就能收到。TCP/IP协议在网络层是无连接的(数据
包只管往网上发,如何传输和到达以及是否到达由网络设备来管理)。而"端口",是传输层的内容,是面向连接的。协议里面低于1024的端口都有确切的定义,它们对应着因特网上常见的一些服务。这些常见的服务可以划分为使用TCP端口(面向连接如打电话)和使用UDP端口(无连接如写信)两种。
  网络中可以被命名和寻址的通信端口是操作系统的一种可分配资源。由网络OSI(Open System Interconnection Reference Model,开放系统互联参考模型)七层协议可知,传输层与网络层最大的区别是传输层提供进程通信能力,网络通信的最终地址不仅包括主机地址,还包括可描述进程的某种标识。所以TCP/IP协议提出的协议端口,可以认为是网络通信进程的一种标识符。
  应用程序(调入内存运行后一般称为进程)通过系统调用与某端口建立连接(binding,绑定)后,传输层传给该端口的数据都被相应的进程所接收,相应进程发给传输层的数据都从该端口输出。在TCP/IP协议的实现中,端口操作类似于一般的I/O操作,进程获取一个端口,相当于获取本地唯一的I/O文件,可以用一般的读写方式访问。
  类似于文件描述符,每个端口都拥有一个叫端口号的整数描述符,用来区别不同的端口。由于TCP/IP传输层的TCP和UDP两个协议是两个完全独立的软件模块,因此各自的
端口号也相互独立。如TCP有一个255号端口,UDP也可以有一个255号端口,两者并不冲突。
  2.端口号的基本分配方式
  端口号有两种基本分配方式:
  (1)全局分配:这是一种集中分配方式,由一个公认权威的机构根据用户需要进行统一分配,并将结果公布于众。
  (2)本地分配:又称动态连接,即进程需要访问传输层服务时,向本地操作系统提出申请,操作系统返回本地唯一的端口号,进程再通过合适的系统调用,将自己和该端口连接起来。
  TCP/IP端口号的分配综合了以上两种方式,将端口号分为两部分,少量的作为保留端口,以全局方式分配给服务进程。每一个标准服务器都拥有一个全局公认的端口,即使在不同的机器上,其端口号也相同。剩余的为自由端口,以本地方式进行分配。TCP和UDP规定,小于256的端口才能作为保留端口。
  3.端口分类
  按端口号可分为3大类:
telnet远程登录配置  (1)公认端口(Well Known Ports):从0到1023,它们紧密绑定于一些服务。通常这些端口的通讯明确表明了某种服务的协议。例如,80端口实际上总是HTTP通讯。
  (2)注册端口(Registered Ports):从1024到49151。它们松散地绑定于一些服务。也就是说有许
多服务绑定于这些端口,这些端口同样用于许多其他目的。例如,许多系统处理动态端口从1024左右开始。
  (3)动态和/或私有端口(Dynamic and/or Private Ports):从49152到65535。理论上,不应为服务分配这些端口。实际上,机器通常从1024起分配动态端口。
  4.端口"重定向"
  系统管理员可以"重定向"端口。
  一种常见的技术是把一个端口重定向到另一个地址。例如默认的HTTP端口是80,不少人将它重定向到另一个端口,如8080。
  实现重定向是为了隐藏公认的默认端口,降低受破坏率。这样如果有人要对一个公认的默认端口进行攻击则必须先进行端口扫描。大多数端口重定向与原端口有相似之处,例如多数HTTP端口由80变化而来,如81、88、8000、8080、8888。同样POP的端口原来在110,也常被重定向到1100。也有不少情况是选取统计上有特别意义的数,如1234、23456、34567等。许多人有其他原因选择奇怪的数,42、69、666、31337。近来,越来越多的远程控制木马采用相同的默认端口。如NetBus的默认端口是12345。Blake R. Swopes指出使用重定向端口还有一个原因,在UNIX系统上,如果你想侦听1024以下
的端口需要有root权限。如果你没有root权限而又想开启Web服务,你就需要将其安装在较高的端口。此外,一些ISP的防火墙将阻挡低端口的通讯,这样的话即使你拥有整个机器你还是得重定向端口。
  二
、常用端口对照详解
  下表列出TCP/UDP端口扫描在防火墙记录中的信息。
端口        服 务        说   明
0        Reserved        通常用于分析操作系统
1        tcpmux        显示有人在寻SGI Irix计算机。默认情况下,tcpmux在Irix系统中被打开。Irix计算机在寻是否包含有默认的无密码的账户,如,IP、GUEST
UUCP、NUUCP、DEMOS 、TUTOR、DIAG、OUTOFBOX等。许多管理员在安装后忘记删除这些账户。因此,攻击者在网络上搜索tcpmux并利用这些账户
7        Echo        搜索Fraggle放大器时,发送到X.X.X.0和X.X.X.255的信息
19        Character Generator        一种仅发送字符的服务。UDP版本将会在收到UDP包后回应含有垃圾字符的包。TCP连接时会发送含有垃圾字符的数据流直到连接关闭。
攻击者利用IP欺骗可以发动DoS攻击。伪造两个chargen服务器之间的UDP包。同样Fraggle
DoS攻击向目标地址的这个端口广播一个带有伪造受害者IP的数据包,受害者为了回应这些数据而拦载
21        FTP        FTP服务器开放该端口,用于上传、下载。攻击者用于寻打开Anonymous的FTP服务器的方法。这些服务器带有可读写的目录。木马Doly
Trojan、Fore、Invisible FTP、WebEx、WinCrash和Blade Runner所开放的端口
22        SSH`        PcAnywhere建立的TCP和该端口的连接可能是为了寻SSH。如果将该服务配置成为特定的模式,许多使用RSAREF库的版本就会有不少的漏洞存在
23        Telnet        远程登录,攻击者在搜索远程登录UNIX的服务。大多数情况下扫描这一端口是为了到计算机所运行的操作系统。还有使用其他技术,入侵者也会到密码。木马Tiny
Telnet Server开放该端口
25        SMTP        SMTP服务器所开放的端口,用于发送邮件。攻击者寻SMTP服务器是为了传递他们的SPAM。入侵者的账户被关闭,他们需要连接到E-mail服务器上,将简单的信息传递到不同的地址。木马Antigen、Email
Password Sender、Haebu Coceda、Shtrilitz Stealth、WinPC、WinSpy都开放该端口
31        MSG Authentication        木马Master Paradise、Hackers Paradise开放该端口
42        WINS Replication        WINS复制
53        Domain Name Server(DNS)        DNS服务器所开放的端口,攻击者可能是试图进行区域传递(TCP),欺骗DNS(UDP)或隐藏其他的通信。因此防火墙常常过滤或记录此端口
67        Bootstrap Protocol Server        通过ADSL的防火墙常会看见大量发送到广播地址255.255.255.255的数据。这些计算机在向DHCP服务器请求一个地址。攻击者常进入它们,分配一个地址,把自己作为局部路由器而发起大量中间人攻击。客户端向68端口广播请求配置,服务器向67端口广播回应请求。这种回应使用广播是因为客
户端还不知道可以发送的IP地址
69        Trival File Transfer        许多服务器与Bootp一起提供这项服务,便于从系统下载启动代码。但是它们常常由于错误配置而使攻击者能从系统中窃取任何文件
79        Finger Server        攻击者用该服务获取用户信息,查询操作系统,探测已知的缓冲区溢出错误,回应从自己机器到其他机器Finger扫描
80        HTTP        用于网页浏览。木马Executor开放该端口
88        -        Kerberos krb5。另外TCP的88端口也是这个用途
99        Metagram Relay        后门程序ncx99开放此端口
102        Message transfer agent(MTA)-X.400 over TCP/IP        消息传输代理
109        POP3        POP3服务器开放此端口,用于接收邮件,客户端访问服务器端的邮件服务。POP3服务有许多公认的弱点。关于用户名和密码交换缓冲区溢出的弱点至少有20个,这意味着攻击者可以在真正登陆前进入系统。成功登陆后还有其他缓冲区溢出错误
110        SUN公司的RPC服务所有端口        常见RPC服务有untd、NFS、rpc.statd、rpc.csmd、bd、amd等
113        Authentication Service        是一个在许多计算机上运行的协议,用于鉴别TCP连接的用户。使用这种服务可以获得许多计算机的信息。但是它可作为服务的记录器,尤其是FTP、POP、IMAP、SMTP和IRC等服务。如果有客户通过防火墙访问这些服务,将会看到该端口的连接请求。如果关闭该端口,客户端会感觉到在防火墙另一边与E-mail服务器连接缓慢。许多防火墙支持TCP连接在阻断过程中发回RST。这将会停止缓慢的连接
119        Network News Transfer Protocol        NEWS新闻组传输协议。这个端口的连接通常是人们在寻USENET服务器。多数ISP限制,只有他们的客户才能访问他们的新闻组服务器。打开新闻组服务器将允许发/读任何人的帖子,访问被限制的新闻组服务器,匿名发帖或发送SPAM
135        Location Service 微软在该端口运行DCE RPC end-point mapper为它的DCOM服务。这与UNIX 111端口的功能相似。使用DCOM和RPC的服务利用计算机上的end-point
mapper注册它们的位置。远端客户连接到计算机时,它们查end-point mapper到服务的位置。攻击者扫描计算机的这个端口是为了到这个计算机上运行Exchange
Server吗?什么版本?还有些DoS攻击直接针对这个端口
137、138、139        NETBIOS Name Service        其中137、138是UDP端口,当通过网上邻居传输文
件时用这个端口。而139端口则是用于获得NetBIOS/SMB服务。这个协议被用于Windows文件和打印机共享和SAMBA。还有WINS
Regisrtation也用它
137        -        其他协议名称查上的SQL命名管道加密技术、其他协议名称查上的SQL RPC加密技术、WINS NetBT
名称服务和Wins
Proxy都用这个端口
143        IMAP2        和POP3的安全问题一样,许多IMAP服务器存在有缓冲区溢出漏洞
161        SNMP        SNMP允许远程管理设备。所有配置和运行信息储存在数据库中,通过SNMP可获得这些信息。管理员的错误配置将被暴露在Internet。攻击者将试图使用默认的密码访问系统。他们可能会试验所有可能的组合。SNMP包可能会被错误的指向用户的网络
161        -        简单网络管理协议
162        -        SNMP陷阱
177        X Display Manager Control Protocol        许多入侵者通过它访问X-windows控制台,它同时需要打开6000端口
389        LDAP、ILS        轻型目录访问协议和NetMeeting Internet Locator Server共用这一端口
443        Https        网页浏览端口,能提供加密和通过安全端口传输的另一种HTTP
445        -        公共Internet文件系统
456        NULL        木马HACKERS PARADISE开放此端口
464        -        Kerberos kpasswd(v5)。另外TCP的464端口也是这个用途
500        -        Internet Key Exchange(IKE)(Internet密钥交换)
513        Login,remote login        是从使用ADSL登陆到子网中的UNIX计算机发出的广播。这些人为入侵者进入他们的系统提供了信息
553        CORBA IIOP (UDP)        使用ADSL或VLAN将会看到这个端口的广播。CORBA是一种面向对象的RPC系统。入侵者可以利用这些信息进入系统
555        DSF        木马PhAse1.0、Stealth Spy、IniKiller开放此端口
568        Membership DPA        成员资格DPA
569        Membership MSN        成员资格MSN
635        mountd        Linux的mountd Bug。这是扫描的一个流行BUG。大多数对这个端口的扫描是基于UDP的,但是基于TCP的mountd有所增加(mountd同时运行于两个端口)。记住mountd可运行于任何端口,只是Linux默认端口是635,就像NFS通常运行于2049端口
636        LDAP        SSL,Secure Sockets layer。安全套接层
666        Doom Id Software        木马Attack FTP、Satanz Backdoor开放此端口
993        IMAP        SSL,Secure Sockets layer。安全套接层
1001、1011        NULL        木马Silencer、WebEx开放1001端口。木马Doly Trojan开放1011端口
1024        Reserved        它是动态端口的开始,许多程序并不在乎用哪个端口连接网络,它们请求系统为它们分配下一个闲置端口。基于这一点分配从端口1024开始。这就是说第一个向系统发出请求的会分配到1024端口。你可以重启机器,打开Telnet,再打开一个窗口运行natstat
-a 将会看到Telnet被分配1024端口。还有SQL session也用此端口和5000端口
1080        SOCKS        这一协议以通道方式穿过防火墙,允许防火墙后的人通过一个IP地址访问Internet。理论上它应该只允许内部的通信向外到达Internet。但是由
于错误的配置,它会允许位于防火墙外部的攻击穿过防火墙。WinGate常会发生这种错误,在加入IRC聊天室时常会看到这种情况
1170        NULL        木马Streaming Audio Trojan、Psyber Stream Server、Voice开放此端口
1234、1243、6711、6776        NULL        木马SubSeven2.0、Ultors Trojan开放1234、6776端口。木马SubSeven1.0/1.9开放1243、6711、6776端口
1245        NULL        木马Vodoo开放此端口
1433        SQL        SQL服务开放的端口
1492        stone-design-1        木马FTP99CMP开放此端口
1500        RPC client fixed port session queries        RPC客户固定端口会话查询
1503        NetMeeting T.120        NetMeeting T.120
1524        ingress        许多攻击脚本将安装一个后门SHELL于这个端口,尤其是针对SUN系统中Sendmail和RPC服务漏洞的脚本。如果刚安装了防火墙就看到在这个端口上的连接企图,很可能是上述原因。可以试试Telnet到用户的计算机上的这个端口,看看它是否会给你一个SHELL。连接到600/pcserver也存在这个问题
1600        issd        木马Shivka-Burka开放此端口
1645、1812        -        远程认证拨号用户服务
1646、1813        -        RADIUS记账(路由和远程访问)
1701        -        第2层隧道协议
1720        NetMeeting        NetMeeting H.233 call Setup
1731        NetMeeting Audio Call Control        NetMeeting音频调用控制
1801、3527        -        Microsoft消息队列服务器。还有TCP的135、1801、2101、2103、2105也是同样的用途
1807        NULL        木马SpySender开放此端口
1981        NULL        木马ShockRave开放此端口
1999        cisco identification port        木马BackDoor开放此端口
2000        NULL        木马GirlFriend 1.3、Millenium 1.0开放此端口
2001        NULL        木马Millenium 1.0、Trojan Cow开放此端口
2023        xinuexpansion 4        木马Pass Ripper开放此端口
2049        NFS        NFS程序常运行于这个端口。通常需要访问Portmapper查询这个服务运行于哪个端口
2115        NULL        木马Bugs开放此端口
2140、3150        NULL        木马Deep Throat 1.0/3.0开放此端口
2500        RPC client using a fixed port session replication        应用固定端口会话复制的RPC客户
2504        -        网络平衡负荷
2583        NULL        木马Wincrash 2.0开放此端口
2801        NULL        木马Phineas Phucker开放此端口
3024、4092        NULL        木马WinCrash开放此端口
3128        squid        这是squid HTTP代理服务器的默认端口。攻击者扫描这个端口是为了搜寻一个代理服务器而匿名访问Internet。也会看到搜索其他代理服务器的端口8000、8001、8080、8888。扫描这个端口的另一个原因是用户正在进入聊天室。其他用户也会检验这个端口以确定用户的机器是否