转载:https://support.huawei.com/enterprise/zh/doc/EDOC1100297669
大家都知道,IP地址用于标识网络中的计算机。TCP/IP协议把一个IP地址和另一个IP地址连接起来,形成了网络。一台计算机上通常运行着很多服务。例如,允许客户访问网页的Web服务,允许管理员配置服务器的SSH服务,或者用于传输文件的FTP服务等。那么,怎么区分同一台计算机上的不同服务呢?
为此,人们设计了端口的概念。端口由数字指定,即端口号。计算机上每种类型的服务都要提供一个端口,等待通信对端从动态端口发来的数据包。例如,Web服务常用的端口号是80(用于HTTP)或443(用于HTTPS)。当您浏览网页时,您的浏览器随机选择一个端口,向Web服务器的80端口或者443端口发送数据包。一台计算机通过端口发送数据包,另一台计算机通过端口接收数据包。通信双方的端口是数据包发送和接收的终点。
快递员投递包裹时,首先根据街道地址找到小区,然后在这个小区中根据门牌号找到收件人,把包裹送达。街道地址和门牌号构成了完整的投递地址。在计算机的世界,如果我们把IP地址类比为街道地址,把服务类比为快递员,那么端口就是门牌号。IP地址和端口构成了完整的通信地址,用于识别数据包的目的地。
开放端口(Open ports)是指主动接收数据包的端口。相应地,拒绝所有数据包的端口是关闭的端口(Closed ports)。如前所述,当计算机需要对外提供服务时,需要开放特定的端口。毕竟,你要接收包裹,就得给快递员开门。
在特定端口上启用了某个服务以后,该端口将仅供此服务使用,不能再用于其他目的(服务)。端口号分为三类。
端口号与服务的分配关系,可参考IANA网站。
严格意义上讲,开放端口并不一定存在风险,任何一个特定的端口也并不一定比其他端口更安全或者更危险。
端口本身是中立的。开放端口是否存在风险,由使用端口的服务、管理服务的人来决定。当使用端口的服务存在漏洞、没有及时打补丁,或者服务配置错误、安全策略不合理时,开放端口是危险的。
网络攻击通常从端口扫描开始。攻击者将从开放端口的服务中寻找安全漏洞,并通过成功的漏洞利用非法访问未授权的资源。例如:SMB协议用于组织内部共享文件夹、打印机和串行端口。由于协议本身设计存在缺陷,SMB协议被称为永恒之蓝的零日漏洞利用,导致WannaCry勒索病毒大爆发。在互联网上公开此类服务,必将存在安全风险。除了查找漏洞,攻击者还经常采用暴力破解。例如,针对RDP的暴力破解经常被用于勒索软件攻击,是最常见的入侵手法之一。
如果说开放端口有风险的话,那么这个风险就是,开放端口容易受到攻击。开放任何端口都会增加攻击面,并增加由于漏洞、配置错误和管理不足而受到威胁的可能性。
端口是为通信而存在的。组织应实施必要的审核程序,以确定是否开放端口。如果有运行某个服务的需求,开放相应的端口是有意义的。这时,应从合法渠道获取应用软件、及时检查安全漏洞并实施安全加固措施,然后再正式开放端口。
如前所述,开放任何端口都会增加攻击面,并增加受到威胁的可能性。如果没有合理的通信需求,不要开放端口。
组织内部网络中有大量计算机,每台计算机上都可能开放了非必要的端口。你可以逐个计算机去关闭端口,也可以把这项工作交给防火墙。防火墙通常部署在网络的出口,在防火墙上可以阻断此类端口与外部网络的通信。想象你有一个四合院(网络),你可以关闭每个房间(计算机)的门窗(端口),你也可以依赖院墙,然后守好四合院的大门。
根据风险等级,端口可以简单分类如下,风险等级依次降低。
常见的高危端口主要有以下五类,表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为例,介绍安全策略的配置方法。
任何连接互联网的服务都需要打开特定的端口才能正常工作。这些端口都可能成为攻击者的目标。那么,如何保护这些风险端口?您可以从以下几个方面来实施安全加固措施。
非加密协议使用明文传输数据包,攻击者可以使用Wireshark等工具轻松捕获网络流量,查看明文传输的密码等敏感信息。因此,请使用加密协议替代非加密协议,例如,使用SSH替代Telnet、FTP/TFTP,使用SSL加密HTTP、邮件协议,使用VPN保护通信等等。
使用最新的协议和软件版本。很多协议的早期版本存在安全隐患。例如,SSHv1采用了不安全的密钥交换算法,应将SSH服务配置为仅接受SSHv2连接。类似的,所有的服务和应用程序都应采用官方发布的正式版本,并保证及时更新。过时的版本、已经停止维护的版本,都可能存在公开的已知漏洞,且得不到及时的修复。
很多入侵是从破解用户密码开始的。采用强密码策略可以防止弱密码,避免密码泄露,帮助组织更安全地抵御暴力破解。不同应用软件支持的密码策略各不相同,通常包括以下方面。
强认证(strong authentication)是融合了两种以上不同类型的身份验证因素的认证策略,可以提高身份验证的安全性。最常见的强认证策略就是双因子认证,用户在登录时不仅要提供用户名/密码,还需要提供与之绑定的物品(比如网上银行普遍采用USB Key),或者动态口令(比如互联网应用普遍采用短信验证码)。
把网络划分为不同等级的安全区域,并部署安全设备来检查区域之间的通信。例如: