• 了解端口和开放端口的风险

  • 常见高危端口

  • 如何封禁高危端口

  • 如何保护风险端口

了解端口和开放端口的风险

什么是端口?

大家都知道,IP地址用于标识网络中的计算机。TCP/IP协议把一个IP地址和另一个IP地址连接起来,形成了网络。一台计算机上通常运行着很多服务。例如,允许客户访问网页的Web服务,允许管理员配置服务器的SSH服务,或者用于传输文件的FTP服务等。那么,怎么区分同一台计算机上的不同服务呢?

为此,人们设计了端口的概念。端口由数字指定,即端口号。计算机上每种类型的服务都要提供一个端口,等待通信对端从动态端口发来的数据包。例如,Web服务常用的端口号是80(用于HTTP)或443(用于HTTPS)。当您浏览网页时,您的浏览器随机选择一个端口,向Web服务器的80端口或者443端口发送数据包。一台计算机通过端口发送数据包,另一台计算机通过端口接收数据包。通信双方的端口是数据包发送和接收的终点。

快递员投递包裹时,首先根据街道地址找到小区,然后在这个小区中根据门牌号找到收件人,把包裹送达。街道地址和门牌号构成了完整的投递地址。在计算机的世界,如果我们把IP地址类比为街道地址,把服务类比为快递员,那么端口就是门牌号。IP地址和端口构成了完整的通信地址,用于识别数据包的目的地。

什么是开放端口?

开放端口(Open ports)是指主动接收数据包的端口。相应地,拒绝所有数据包的端口是关闭的端口(Closed ports)。如前所述,当计算机需要对外提供服务时,需要开放特定的端口。毕竟,你要接收包裹,就得给快递员开门。

在特定端口上启用了某个服务以后,该端口将仅供此服务使用,不能再用于其他目的(服务)。端口号分为三类。

  • 知名端口(Well-known Ports):也叫系统端口(System Ports),端口号范围0-1023。知名端口由 ICANN(The Internet Corporation for Assigned Names and Numbers,互联网名称与数字地址分配机构)分配给常用的服务。知名端口与服务具有紧密的联系。通常说采用某知名端口通信,即表明采用该端口对应的服务。例如,22表示SSH,23表示Telnet。

  • 注册端口(Registered Ports):也叫用户端口(User Ports),端口号范围1024-49151。注册端口由IANA(Internet Assigned Numbers Authority,互联网数字分配机构)管理,组织可以向IANA申请某端口为应用程序的注册端口。例如,3389是微软为RDP(Remote Desktop Protocol,远程桌面协议)申请的注册端口。

  • 私有端口(Private Ports):也叫动态端口(Dynamic Ports),端口号范围49152-65535。不应该为服务分配动态端口。动态端口是主机与服务端通信时,临时分配给应用程序的端口。通信结束后,该端口即被释放。不过,在实际应用中,主机通常从1024起分配动态端口。

端口号与服务的分配关系,可参考IANA网站

开放端口有什么风险?

严格意义上讲,开放端口并不一定存在风险,任何一个特定的端口也并不一定比其他端口更安全或者更危险。

端口本身是中立的。开放端口是否存在风险,由使用端口的服务、管理服务的人来决定。当使用端口的服务存在漏洞、没有及时打补丁,或者服务配置错误、安全策略不合理时,开放端口是危险的。

网络攻击通常从端口扫描开始。攻击者将从开放端口的服务中寻找安全漏洞,并通过成功的漏洞利用非法访问未授权的资源。例如:SMB协议用于组织内部共享文件夹、打印机和串行端口。由于协议本身设计存在缺陷,SMB协议被称为永恒之蓝的零日漏洞利用,导致WannaCry勒索病毒大爆发。在互联网上公开此类服务,必将存在安全风险。除了查找漏洞,攻击者还经常采用暴力破解。例如,针对RDP的暴力破解经常被用于勒索软件攻击,是最常见的入侵手法之一。

如果说开放端口有风险的话,那么这个风险就是,开放端口容易受到攻击。开放任何端口都会增加攻击面,并增加由于漏洞、配置错误和管理不足而受到威胁的可能性。

为什么安全专家建议仅开放必要的端口?

端口是为通信而存在的。组织应实施必要的审核程序,以确定是否开放端口。如果有运行某个服务的需求,开放相应的端口是有意义的。这时,应从合法渠道获取应用软件、及时检查安全漏洞并实施安全加固措施,然后再正式开放端口。

如前所述,开放任何端口都会增加攻击面,并增加受到威胁的可能性。如果没有合理的通信需求,不要开放端口。

组织内部网络中有大量计算机,每台计算机上都可能开放了非必要的端口。你可以逐个计算机去关闭端口,也可以把这项工作交给防火墙。防火墙通常部署在网络的出口,在防火墙上可以阻断此类端口与外部网络的通信。想象你有一个四合院(网络),你可以关闭每个房间(计算机)的门窗(端口),你也可以依赖院墙,然后守好四合院的大门。

如何评估端口安全风险?

  1. 检查开放的端口。使用开源的端口扫描工具(如Nmap)或者部署华为漏洞扫描产品VSCAN,可以发现网络中开放的端口。

  2. 评估开放端口的必要性。安全专家建议,仅在特定设备上开放必要的端口,非必要的端口应立即关闭。如果扫描结果中出现了未主动开放的端口,请检查主机是否被植入了木马程序。

  3. 评估开放端口的安全性。了解每个端口上承载的服务,了解端口可能的风险。端口的安全风险可以从三个方面来评估。

    1. 可被利用:端口所承载的服务和应用程序存在安全漏洞,就可能被攻击者利用。

    2. 常被利用:攻击者经常使用的端口,风险更大。典型的如网络管理员广泛使用的RDP远程连接服务、FTP文件传输服务、Web应用程序等。

    3. 开放范围:开放在公网上的端口,都可能受到攻击。非必要的端口,不要暴露在公网上;有业务需要的,必须做好安全防护。

根据风险等级,端口可以简单分类如下,风险等级依次降低。

  • 高危端口:开放在公网上的、极度危险的端口。这些端口承载的服务曾经造成广泛的安全事件,因此深受攻击者青睐,无时无刻不被各种自动化攻击工具扫描着,风险极高。请参考如何封禁高危端口,在防火墙上封禁常见的高危端口。

  • 高危服务:开放在公网上的、采用非标准端口的高危服务,例如开放在3399端口上的RDP服务。RDP服务的默认端口是3389,修改端口号可以增加攻击者发现风险服务的时间成本,可以在一定程度上提高安全性,因此高危服务的风险等级低于高危端口。但是这种提高的程度非常有限,请参考如何保护风险端口,为高危服务增强安全防护。

  • 风险端口:开放在公网的端口。如果这些开放端口是正常的业务需要,请参考如何保护风险端口,做好安全防护。

 

常见高危端口

常见的高危端口主要有以下五类,表1-1提供了常见高危端口的不完全列表,供参考。

  • 远程管理服务:远程运维是企业IT运维人员的日常工作,而多数远程管理服务都是攻击者的首选目标,直接开放风险巨大。建议部署运维审计系统(如华为UMA1000),并通过VPN接入内网后登录。如未部署运维审计系统,请务必选择安全的加密应用,如SSHv2。

  • 局域网服务:这些服务端口安全漏洞多,常被攻击者利用,造成严重的安全事件。此类服务主要应用于企业内网访问,完全可以在出口防火墙上封禁。一般情况下,企业自建DNS服务器仅限于解析自有域名,不会对外开放,因此可以在互联网出口防火墙上封禁DNS服务。

  • 互联网服务:SMTP、POP3、IMAP等邮件协议在设计之初没有内置安全性,请使用SSL/TLS加密保护。同样,如果需要对外提供Web服务,请使用HTTPS协议替代HTTP。

  • 数据库:所有的数据库端口都不应该对外开放。

  • 木马常用端口:攻击者在主机中植入木马以后,会在失陷主机中开放后门端口。常用的后门端口很多,如123、1234、12345、666、4444、3127、31337、27374等。在病毒爆发时期,请封禁此类端口。

表1-1 常见高危端口(不完全列表)

端口

协议

服务

建议处理动作

远程管理服务

20、21

TCP

FTP(文件传输协议)

始终封禁,使用SSHv2替代,或者部署运维审计系统

22

TCP

SSH(安全外壳协议)

建议封禁,如必须使用,请务必使用SSHv2版本并采用强认证

23

TCP

Telnet(远程终端协议)

始终封禁,使用SSHv2替代,或者部署运维审计系统

69

TCP

TFTP(简单文件传送协议)

始终封禁,使用SSHv2替代,或者部署运维审计系统

3389

TCP

RDP(远程桌面协议)

始终封禁,如需远程运维,请部署运维审计系统

5900-5902

TCP

VNC(虚拟网络控制台)

始终封禁,如需远程运维,请部署运维审计系统

512-514

TCP

Linux rexec(远程登录)

始终封禁,如需远程运维,请部署运维审计系统

873

TCP

Rsync(数据镜像备份工具)

始终封禁,如需远程运维,请部署运维审计系统

局域网服务

53

TCP、UDP

DNS(域名系统)

始终封禁

111、2049

TCP

NFS(网络文件系统)

始终封禁

135

TCP、UDP

RPC(远程过程调用)

始终封禁

137

TCP、UDP

NBNS(NetBIOS名字服务)

始终封禁

138

TCP、UDP

NBDS(NetBIOS数据报文服务)

始终封禁

139

TCP、UDP

NBSS(NetBIOS会话服务)

始终封禁

445

TCP、UDP

SMB(网络文件共享协议)

始终封禁

161

TCP、UDP

SNMP(简单网络管理协议)

始终封禁

389

TCP、UDP

LDAP(轻量目录访问协议)

始终封禁

互联网服务

25

TCP

SMTP(简单邮件传输协议)

始终封禁,使用SMTPS替代

110

TCP

POP3(邮局协议版本3)

始终封禁,使用POP3S替代

143

TCP

IMAP(邮件访问协议)

始终封禁,使用IMAPS替代

80、8000、8080、8888

TCP

HTTP(超文本传输协议)

建议封禁,使用HTTPS替代

数据库

1433

TCP

SQL Server(数据库管理系统)

始终封禁

1521

TCP

Oracle(甲骨文数据库)

始终封禁

3306

TCP

MySQL(数据库)

始终封禁

5000

TCP

Sybase/DB2(数据库)

始终封禁

5432

TCP

PostgreSQL(数据库)

始终封禁

6379

TCP

Redis(数据库)

始终封禁

27017-27018

TCP

MongoDB(数据库)

始终封禁

如何封禁高危端口

在封禁端口之前,请务必确认端口上未承载正常运行的服务。如有业务需要,请为该业务设置例外策略,并严格限制可访问的源IP地址和源用户。

下面以封禁135、137、138、139、445、3389为例,介绍安全策略的配置方法。

  1. 创建一个服务组。选择“对象 > 服务 > 服务组”菜单,单击“新建”按钮。在“可选”窗格中输入端口号,查询对应的服务,并添加到“已选”窗格。

  2. 创建一条安全策略。选择“策略 > 安全策略 > 安全策略”菜单,单击“新建安全策略”按钮。设置服务为新创建的服务组“High-risk ports”“源安全区域”为Untrust,“动作”“禁止”

  3. 选中这条安全策略,移至顶部。

  4. (可选)为特定用户开放特定端口,如仅允许特定地址的管理终端通过RDP远程桌面访问位于DMZ区域的服务器。注意,添加规则后要移动到上一条规则之前。

 

如何保护风险端口

任何连接互联网的服务都需要打开特定的端口才能正常工作。这些端口都可能成为攻击者的目标。那么,如何保护这些风险端口?您可以从以下几个方面来实施安全加固措施。

使用安全的协议和软件

非加密协议使用明文传输数据包,攻击者可以使用Wireshark等工具轻松捕获网络流量,查看明文传输的密码等敏感信息。因此,请使用加密协议替代非加密协议,例如,使用SSH替代Telnet、FTP/TFTP,使用SSL加密HTTP、邮件协议,使用VPN保护通信等等。

使用最新的协议和软件版本。很多协议的早期版本存在安全隐患。例如,SSHv1采用了不安全的密钥交换算法,应将SSH服务配置为仅接受SSHv2连接。类似的,所有的服务和应用程序都应采用官方发布的正式版本,并保证及时更新。过时的版本、已经停止维护的版本,都可能存在公开的已知漏洞,且得不到及时的修复。

使用强密码策略和强认证

很多入侵是从破解用户密码开始的。采用强密码策略可以防止弱密码,避免密码泄露,帮助组织更安全地抵御暴力破解。不同应用软件支持的密码策略各不相同,通常包括以下方面。

  • 密码复杂度:密码应至少包含大写字母、小写字母、数字和特殊字符中的3种。

  • 密码最小长度:密码最小长度应不低于8位。

  • 密码有效期:设置密码有效期。密码超期后将会失效,无法登录。用户必须在密码超期前修改密码。

  • 密码历史记录:应用软件记录用户的历史密码。用户设置的新密码不能与记录的历史密码相同,避免用户重复使用旧密码。

  • 密码错误次数:当密码错误次数达到设定的阈值时,锁定账户或登录IP一段时间,以防止暴力破解。

强认证(strong authentication)是融合了两种以上不同类型的身份验证因素的认证策略,可以提高身份验证的安全性。最常见的强认证策略就是双因子认证,用户在登录时不仅要提供用户名/密码,还需要提供与之绑定的物品(比如网上银行普遍采用USB Key),或者动态口令(比如互联网应用普遍采用短信验证码)。

部署纵深防御体系

把网络划分为不同等级的安全区域,并部署安全设备来检查区域之间的通信。例如:

  • 面向互联网的公共服务部署在DMZ区,所有访问公共服务的流量都必须经过防火墙的安全检查。对于仅供特定用户访问的服务,可以设置基于源IP地址或基于用户的安全策略,以限制可访问的群体。

  • 不直接面向互联网的敏感服务,如数据库系统,部署在安全等级更高的区域,并使用安全策略严格限制可访问的源IP地址。这样,即使攻击者破坏了DMZ区的公共服务端口,也还会面临区域间的安全检查,一定程度上增强了防护能力,进而增加攻击者的攻击成本。

  • 对于常见的Web服务,还可以在服务器前部署专用的Web应用防火墙,如华为WAF5000系列。