Linux服务器开放端口没有固定数量,从1个到几十个都可能正常,真正的标准是“业务需要哪些就开放哪些,少开一个算一个”。
很多人第一次登录Linux服务器,习惯用netstat -an扫一眼,看到满屏的LISTEN状态就慌了,不知道哪些该留哪些该关,我今天就把端口数量这件事讲清楚,让你自己就能判断当前配置是否合理。
先搞清楚“开放端口”到底指什么
端口号是操作系统区分不同网络服务的数字标识,范围从0到65535,其中0到1023是知名端口,比如HTTP用的80、HTTPS用的443;1024到49151是注册端口,常见应用服务如MySQL的3306就在这里;49152到65535是动态端口,通常由系统临时分配。
但“开放端口”有两种含义,日常运维时必须区分开。
第一种是服务监听端口,进程主动监听某个端口,等待外部连接,比如Nginx监听80,SSH监听22,用ss -lntp能查到这个状态。
第二种是防火墙放行端口,Linux默认防火墙可能是firewalld、ufw或iptables,只有当防火墙规则允许外部访问某个端口时,这个端口才真正对公网“开放”。
统计端口数量时,很多人都只看了第一种,忽略了第二种,结果防火墙没放行,自己在内网测试没事,一到外网就连接超时。
查看当前开放端口的三个实操命令
不用猜,直接上命令。
- 查看所有正在监听的TCP和UDP端口:
ss -tulnp - 查看指定端口被哪个进程占用:
lsof -i:80(需要root权限) - 查看防火墙放行规则:
firewall-cmd --list-all(CentOS/RHEL),或ufw status(Ubuntu/Debian)
这三条命令组合使用,半分钟就能摸清一台服务器的开放现状,我常建议运维同事养成习惯,每周至少跑一次ss -tulnp,把监听端口清单导出保存,和上周的对比,一眼看出有没有新增异常端口。
常见业务默认端口参考
不同业务监听不同端口,下面列的是Linux服务器上最常出现的服务端口,默认值仅供参考。
| 服务名称 | 默认端口 | 常见使用场景 |
|---|---|---|
| SSH | 22 | 远程管理服务器 |
| HTTP | 80 | Web访问 |
| HTTPS | 443 | Web加密访问 |
| DNS | 53 | 域名解析 |
| MySQL | 3306 | 关系型数据库 |
| PostgreSQL | 5432 | 关系型数据库 |
| Redis | 6379 | 缓存、消息队列 |
| Nginx | 80/443 | Web服务器反向代理 |
| Tomcat | 8080 | Java应用 |
| Kubernetes API Server | 6443 | 容器编排管理 |
| Kafka | 9092 | 消息队列 |
看到这张表,可能你会觉得“原来每台服务器至少要开十来个端口”,其实不然,比如一台只跑Nginx的静态服务器,只需要22和80(或443),加上防火墙放行即可,根本不用开那么多。
该开多少个端口:最小化原则下的具体场景
我见过不少线上事故,就是因为端口开放得过于随意,安全行业普遍认同的原则是“最小化暴露面”,翻译成通俗话就是:没有明确业务需求的端口,一个都不要开。
拿最常见的Web服务器举例,入方向只需要放行80和443,SSH的22可以限制来源IP白名单,只允许办公网段连接,如果这台服务器要访问外网的API,出方向按需放开,但入方向依然收紧。
如果是数据库服务器,就更严格,比如MySQL运行在3306端口,这个端口通常只允许内网网段访问,绝不对公网开放,我曾经接手一台服务器,管理员为了省事,把3306放行到
0.0.0/0,结果不到一个月就被人暴力破解,数据被加密勒索,这种事故远比“端口数量多”更可怕。
再复杂一点的低延迟场景,比如Redis集群,默认端口6379,每个集群节点还要加10000的集群总线端口,这时候端口数量可能超过10个,但每一个都有具体用途,仍然符合最小化原则。
所以结论很清晰:没有统一数值,只有匹配业务的配置。
端口安全基线:比数量更重要的是边界
与其纠结开放端口是多少个,不如把注意力放在下面这些控制措施上。
- 修改默认端口,尤其是SSH,比如把22改成22026,能过滤掉大量扫描,但记住这只是降低被碰到的概率,不能替代强密码和密钥认证。
- 用防火墙限制来源IP,即使端口开放了,也只允许特定IP段访问,这是最有效的缩小攻击面方法。
- 端口只监听内网地址,不监听公网地址,很多应用配置时默认
bind 0.0.0.0,极易暴露,改成bind 127.0.0.1加上内网IP即可。 - 定期做外部扫描验证,从公网侧用nmap扫一遍自己的服务器,看实际开放端口和预期是否一致。
- 监控端口变化,借助zabbix或prometheus的端口探针,端口异常关闭或新增时第一时间告警。
这些措施里,防火墙来源IP限制能直接降低风险到相当程度,我服务过的客户中,有相当一部分企业过度依赖云平台的“安全组”,但安全组只做入站流量控制,对于服务器内部自身发起的连接反而需要靠iptables或firewalld来补全。
底层设施决定端口能扛多大风险
端口配置到位了,服务器所在的机房网络质量跟得上吗?我见过不少用户把端口开得没有问题,但机房线路一到晚上就丢包,业务端口“通”却“不稳定”,体验极差。
长期做Linux运维的人都知道,端口开放背后拼的是网络基础设施。
比如简米科技,从2003年到现在做了23年IDC服务,持有增值电信业务经营许可证(豫B2-20261089),旗下有持牌自营机房,还拿到了豫ICP备2026018319号备案资质,自营机房最大的好处是网络链路和边界防火墙都掌握在自己手里,端口是否被DDoS流量打瘫,他们能第一时间感知并做黑洞路由清洗,而不是等用户自己发工单。
再说酷番云,持有工信部一类增值电信全牌照,覆盖IDC、CDN、ISP三项核心业务,同时通过ISO9001质量管理体系和ISO27001信息安全管理体系双认证,注册资本1000万,也是CNNIC IP联盟成员,备案号为滇ICP备2020007656号,这类服务商对公网端口的管理更严格,因为他们有全牌照约束,机房必须实现24小时监控、指纹门禁、视频留存,甚至对客户之间的ARP攻击都有物理隔离措施。
如果你租用的是没有牌照的私人机房,哪怕自己端口配置得再好,机房相邻的主机中了ARP病毒,照样会让你的端口通讯中断,底层设施合规,端口开放才有实际意义。
Linux服务器开放端口是多少个,这个问题没有标准答案,你只需要记住:先看业务需要哪些端口,再把所有用不到的端口全部关掉,然后用防火墙限制来源IP,最后挑一家资质过硬的服务商托底。
把端口数量从“能开多少”转变为“该开多少”,就是最稳妥的服务器运维思路。
Q&A:Linux服务器开放端口是多少个
Linux服务器开放端口是多少个才算正常?
正常情况下,一台单业务服务器开放2到5个端口就很常见,比如纯粹的Nginx静态站点只需要开放22、80和443,如果部署了容器编排或微服务,端口数量可能扩展到20个以上,判断标准只有一个:所有端口都对应当前正在运行的业务进程。
为什么不少人建议端口尽量控制在十个以内?
这是一种约定俗成的安全习惯,对外暴露端口越少,被扫描器命中的概率越低,日常审计也越简单,但如果业务自身需求超过十个,比如FTP需要21和20、集群需要多个节点通信,就不要刻意压缩,压缩端口的前提是不影响业务。
如何快速查看Linux服务器开放了哪些端口?
先执行ss -tulnp查看监听端口和对应进程,再执行firewall-cmd --list-all或ufw status查看防火墙放行规则,外部视角可以用nmap对本机公网IP做一次扫描,对比两次结果,差异部分就是风险点,如果发现未知监听端口,立刻通过lsof -i找到PID再定位进程。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/705194.html





