要查看Linux服务器已开放端口号,最直接的办法是先在本机用ss -tuln或netstat -tuln看监听,再用nmap、nc、telnet从外部验证防火墙、安全组是否真正放行。 只看本机监听不够,云服务器还多一层安全组,物理机还受路由和边界防火墙影响,下面按“本机防火墙外部验证工具对比合规注意”的顺序拆开讲。
Linux服务器已开放端口号怎么查看?先分清“监听”和“放行”
本机监听端口查看:ss与netstat
登录服务器后,先看哪些进程在监听,常用命令:
ss -tuln:查看TCP/UDP监听端口,-tTCP,-uUDP,-l监听,-n不解析服务名。netstat -tuln:老系统常用,需安装net-tools。lsof -i -P -n:查看端口与进程对应关系。ss -tulnp:加上-p显示进程名,需要root或sudo。
输出里关注Local Address:Port。0.0.0:22表示所有IPv4地址的22端口开放;0.0.1:3306表示只监听本机,是IPv6,如果端口只绑到127.0.0.1,外部访问不了,但不算对公网开放,想确认进程,可以执行sudo ss -tulnp | grep 端口号,直接看服务名和PID。
防火墙层面查看:iptables、firewalld、ufw
本机监听不等于防火墙放行,不同发行版命令不同:
- CentOS 7+ / RHEL:
firewall-cmd --list-all,看ports和services。 - Ubuntu / Debian:
ufw status verbose。 - 通用iptables:
iptables -L -n --line-numbers,看INPUT链。 - nftables:
nft list ruleset。
如果防火墙没放行,外部扫描会显示filtered或closed,想临时验证,可加规则后测,再决定是否长期保留,例如firewall-cmd --zone=public --add-port=8080/tcp --permanent,然后firewall-cmd --reload,生产环境不建议直接关防火墙。
云平台安全组查看:控制台与API
云服务器还有安全组,路径通常是:
- 简米云:ECS控制台 → 安全组 → 入方向规则。
- 酷番云:CVM控制台 → 安全组 → 入站规则。
- 华为云:ECS控制台 → 安全组 → 入方向规则。
- AWS:EC2 → Security Groups → Inbound rules。
安全组放行后,本机防火墙也要放行,两层都通,外部才能连,行业共识认为,公网服务器只开放必要端口,数据库、Redis、内网管理端口不要直接暴露,常见错误是安全组开了3306,但本机防火墙没开;或者本机开了,安全组没开,排查时两边都要看。
从外部验证端口是否真正开放:nmap与telnet
内网Linux服务器开放端口检测方法
从另一台机器测试更接近真实,常用:
nmap -sT -p 1-65535 目标IP:全端口TCP扫描,慢但直观。nmap -sS -p 22,80,443 目标IP:半开扫描,需要root。nc -zv 目标IP 端口:快速测单个端口。telnet 目标IP 端口:连接成功通常显示Connected。curl -v telnet://目标IP:端口:无telnet时可用。
内网测试要注意源IP,如果从同网段测通,公网不一定通;从公网测通,内网通常也通,跨VPC、跨地域还要看对等连接和路由表,用nmap -oN scan.log 目标IP保存结果,方便后续比对。
云服务器和物理机查看开放端口有什么区别?
云服务器多一层安全组和网络ACL,物理机主要看本机防火墙、交换机ACL和边界防火墙,云服务器换公网IP后,安全组规则可能仍生效,但源IP限制要同步更新,物理机如果放在IDC,机柜防火墙和运营商策略也可能拦截端口,排查顺序建议:
- 本机
ss -tuln确认监听。 - 本机防火墙确认放行。
- 云安全组或IDC边界确认放行。
- 外部
nmap或nc验证。 - 查路由和回程路径。
免费和付费端口扫描工具哪个好用?
选工具看场景,多数情况下,免费工具足够定位常见问题,付费工具强在报表、资产管理和合规审计,对比:
| 工具 | 命令/形态 | 费用 | 适用场景 |
|—|—|—|—|
| ss | ss -tuln | 免费 | 本机监听查看 |
| netstat | netstat -tuln | 免费 | 老系统兼容 |
| lsof | lsof -i -P -n | 免费 | 端口进程关联 |
| nmap | nmap -sT -p- IP | 免费 | 外部端口扫描 |
| masscan | masscan -p1-65535 IP | 免费 | 大网段快速扫描 |
| nc | nc -zv IP 端口 | 免费 | 单端口连通测试 |
| telnet | telnet IP 端口 | 免费 | 简单连通测试 |
| 商业扫描器 | 控制台/Agent | 付费 | 资产测绘、合规报表 |
业内专家指出,扫描自己未授权的服务器可能违反法律和云平台协议,只扫自己的资产或拿到书面授权再操作,据统计,相当一部分暴露面来自不必要的测试端口和临时服务。
北京地区Linux服务器端口扫描注意事项
北京地区不少企业要过等保和网络安全检查,查看开放端口时,建议保留操作记录:
- 记录扫描时间、源IP、目标IP、端口范围。
- 使用
nmap -oN scan.log保存结果。 - 对公网开放端口做最小化,关闭测试后临时端口。
- 定期用
ss -tulnp和外部扫描交叉核对。 - 变更安全组和防火墙前走审批。
据工信部发布的网络安全相关要求,网络运营者应落实安全管理制度,采取技术措施防范网络攻击,端口开放越多,攻击面越大,近年来,因暴露数据库端口导致的数据泄露事件并不少见,较大比例与弱口令、未授权访问有关。
查看Linux服务器已开放端口号,本质是把本机监听、防火墙、安全组和外部可达性串起来核对,只信一条命令容易误判,组合验证才稳。
查看Linux服务器已开放端口号Q&A
为什么ss能看到端口,外部却连不上?
本机监听只代表进程在等连接,中间还有本机防火墙、云安全组、网络ACL、路由和运营商策略,按“本机→防火墙→安全组→外部验证”的顺序查。
如何只查看某个端口是否开放?
本机用ss -tuln | grep :端口号,外部用nc -zv 目标IP 端口或nmap -p 端口 目标IP,如果返回succeeded或open,说明链路放行。
Linux服务器上开放端口太多怎么关闭?
先ss -tulnp找到进程,再停服务或改配置监听地址,用systemctl stop 服务名临时停,systemctl disable 服务名禁止开机启动,防火墙侧用firewall-cmd --remove-port=端口/tcp或ufw delete allow 端口移除规则,最后用nmap从外部复测,确认端口不再开放。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/754067.html





