常见网络端口

快速答案: 端口号范围是 0–65535,分为三段:0–1023 是知名端口(由 IANA 分配,绑定时通常需要管理员权限),1024–49151 是注册端口,49152–65535 是动态/临时端口,操作系统通常从这里选择出站连接端口。

Web 与远程访问

22SSHtcp加密的 shell 和文件传输。不要把密码登录暴露到互联网,应该使用密钥。
53DNStcp/udp域名解析。开放递归解析器容易被滥用于放大攻击。
80HTTPtcp明文 Web 流量。可以通过重定向转到 443,但不要在此端口提供登录服务。
443HTTPStcp使用 TLS 加密的 Web 流量,面向用户的服务默认应使用它。
8080HTTP 备用端口tcp开发服务器和代理常用的端口,生产环境中很容易忘记关闭。

电子邮件

25SMTPtcp服务器之间的邮件中继。开放中继通常会在数小时内被发现并滥用。
465SMTPStcp使用隐式 TLS 的邮件提交。
587SMTP 提交tcp经过认证的客户端提交,使用 STARTTLS。
993IMAPStcp通过 TLS 同步邮箱。
995POP3Stcp通过 TLS 下载邮件。

数据库与缓存

1433SQL Servertcp只绑定到私有网络;这是勒索软件经常攻击的目标。
1521Oracletcp只绑定到私有网络。
3306MySQL / MariaDBtcp绝不要暴露到互联网;应使用 VPN 或 SSH 隧道。
5432PostgreSQLtcp同样的规则:只使用私有网络或隧道。
6379Redistcp默认没有内置认证。公开暴露的 Redis 实例经常被劫持。
27017MongoDBtcp旧版本默认不启用认证;务必要求凭据并绑定到私有网络。

消息系统与基础设施

5672AMQP (RabbitMQ)tcp消息代理。15672 是管理界面,两个端口都应限制访问。
9092Kafkatcp事件流端口;9093 是 TLS 变体。
2375Docker(明文)tcp未认证的 Docker API。如果它对网络开放,主机基本等于已被控制;应使用带 TLS 的 2376。
6443Kubernetes APItcp集群控制平面,只允许管理网络访问。
9200Elasticsearchtcp搜索 API。暴露的实例可能泄露整套数据,应绑定到私有网络。

文件传输与传统服务

20/21FTPtcp凭据和数据均为明文。优先使用 SFTP(通过 SSH)或 HTTPS。
69TFTPudp完全没有认证,只适合局域网内的配置下发。
139/445SMBtcpWindows 文件共享端口;WannaCry 曾利用它传播,应在网络边界阻断。
3389RDPtcp远程桌面端口,经常遭到暴力破解;应置于 VPN 或网关之后。

端口范围与防火墙

防火墙规则和安全组通常用 CIDR 网段加端口范围表示。如果需要确认一条规则覆盖哪些地址,可以使用CIDR 计算器将网段展开为网络地址、广播地址和主机范围;也可以使用IP 范围计算器把明确的起止地址范围转换为最小 CIDR 网段。

参考资料