对于有些网络技术基础的人来说,协议端口号并不陌生,这是TCP或UDP协议的主要组成部分,用来区分服务和在同一时间进行的多个会话,几乎每个人都可以脱口而出说出几个常用协议端口号,比如FTP的21号端口,SSH的22号端口,Telnet的23号端口等等,但很少有人去研究这些端口背后的故事,尤其如今网络兴起虚拟化、软件定义网络等新技术,更鲜有人提起这些传统技术。实际上,不仅在过去,即使在当下甚至是将来,这些端口技术都将发挥着极为关键的作用。
在以太网标准协议中规定端口号为两个字节的长度,共16个比特,这样端口范围可以从0到65535,端口号种类多达6万多,其中1~1024是被RFC 3232规定好的,用于特定协议,从1025~65535的端口被称为动态端口,可用来建立与其它主机的会话,也可由用户自定义用途。在网络通信过程中,目的主机接收到数据报后,将根据报文首部的目的端口号,把数据发送到相应端口,而与此端口相对应的那个进程将会领取数据并等待下一组数据的到来。不光接受数据报的进程需要开启它自己的端口,发送数据报的进程也需要开启端口,这样,数据报中将会标识有源端口,以便接受方能顺利的回传数据报到这个端口。由于每种网络的服务功能都不相同,有必要将不同的封包送给不同的服务来处理,端口号就可以用来区分不同的服务,这样就算网络中同时跑数十种应用也不会乱,每种应用所用的端口都是不同的。每一种服务都有特定的端口在监听,这样不同应用相互之间无法互访,不会混乱。
端口可分为三类:从0到1023叫做公认端口。它们紧密绑定于一些服务,通常这些端口的通讯明确表明了属于某种服务的协议。例如:53端口是DNS域名解析服务,80端口是HTTP超文本传输服务;从1024到49151叫做注册端口。它们松散地绑定于一些服务,也就是说有许多服务绑定于这些端口,这些端口同样用于许多其它目的。例如:许多系统处理动态端口从1024左右开始;从49152到65535叫做动态或私有端口。理论上,不应为服务分配这些端口,当然也有例外,比如SUN的一些服务器,还有搭建一些私有网络时,使用这些端口号,实际上是因为没有那么多已知的网络服务需要这么多端口号,后面的端口号都是没有明确定义的,谁都可以使用,但只能是私有使用,并不能得到广泛认可。
之所以将端口技术拿出来讲,最重要的是网络安全问题,网络安全已经成为数据中心里最受人关注的议题,针对数据中心的攻击都来源于网络。通常网络攻击者会用扫描器对目标主机或者网络设备进行端口扫描,以确定哪些端口是开放的,从开放的端口,攻击者就可以知道目标主机或网络设备大致提供了哪些服务,进而猜测可能存在的漏洞。如今对数据中心网络进行防攻击测试,端口测试是一个必测项,看设备都开放了哪些端口,在没有使能相关应用的情况下是否有端口服务是被打开的,数据中心设备应该尽可能少开启端口服务,只有需要的应用对应的端口服务才开启。而一些常用的FTP端口号、Telnet端口号、HTTP端口号也经常被作为攻击的对象,这些协议虽然很成熟,少有系统漏洞,但一些设备防攻击能力较弱,或者软件版本较低,依然有被攻破的风险,对于这些端口也不能忽视。有些端口是比较容易入侵的,比如135、139、445等,135实际上是一个WINNT漏洞,容易引起来自外部的Snork攻击,139是NetBIOS提供服务的TCP端口,445用来传输文件和NET远程管理,一旦这些端口被攻击者顶上,协议处理上有漏洞就很容易被攻破。还有一些端口本身处理是什么问题的,但是在收到大量该端口的报文时,系统可能瘫痪而受到攻击,这时可能系统并不见得被攻破,而是被破坏,导致系统运转异常。比较典型的就是TCP SYN扫描,通常又叫“半开放”扫描,因为它不必打开一个完整的TCP连接,它发送一个SYN包,就像真的要打开一个连接一样,然后等待对端的反应。如果对端返回SYN/ACK报文则表示该端口处于监听状态,此时,扫描端则必须再返回一个RST报文来关闭此连接,返回RST报文则表示该端口没有开放。TCP SYN会导致设备建立大量的半连接,占用大量系统资源,待系统彻底崩溃时,攻击者趁虚而入,破坏或者偷走机密数据,TCP Connect扫描也是常用的扫描方式。
为防止数据中心网络遭受到端口攻击,应该经常检查所有的设备端口开启情况,关闭一些没有必要开启的端口服务。检查的时候要仔细,经常有一些动态分配的端口也可能存在问题,这类端口一般比较低,且连续。还有,一些狡猾的后门软件,他们会借用80等一些常见端口来进行通信(穿透了防火墙),令人防不胜防,所以不要轻易运行陌生程序,才是关键。在数据中心的网络访问入口应该部署一些安全防火墙设备,对端口协议进行过滤,没有应用的端口报文全部丢弃,这不仅对网络攻击,对于正常的安全策略下发也有意义,比如众所周知,QQ的端口号是8000,那么在涉及办公网的数据中心网络中,可以在网络出入口防火墙设备上下发端口号8000 的Deny策略,这样所有的QQ服务都无法使用。
数据中心协议端口技术不难,但是要完全掌握也绝非易事,尤其是能够利用这些端口特性部署应用,还有有效应对各种端口攻击,还需要不断进行探索和学习,所以端口技术虽然可算是一个古老的技术,但依然不过时。
本文转自d1net(转载)