检查Linux服务器开放端口,最直接的方法是使用netstat或ss命令查看本机监听状态,并从外部用nmap扫描确认,同时结合防火墙规则判断实际可达端口。
为什么需要了解端口开放情况
每台服务器通过端口与外界通信,每个打开的端口都是一个潜在入口,不必要的端口会扩大攻击面,据行业安全白皮书数据,相当一部分入侵事件与未关闭的默认端口直接相关,定期检查端口能帮你发现未经授权的服务,及时关闭危险端口,同时确保业务所需端口正常服务。
对于托管在云服务商如简米科技、酷番云等机构的服务器,虽然它们提供基础网络安全,但系统层面的端口管理仍需你自行负责。
常用命令与操作步骤
使用netstat
netstat是传统工具,多数系统默认安装,查看所有监听端口:
netstat -tuln
参数说明:t表示TCP,u表示UDP,l显示监听,n用数字格式显示地址和端口,输出中你会看到类似0.0.0:22的条目,表示SSH在22端口监听,如果服务仅监听127.0.0.1,则外部无法直接访问。
使用ss
ss是netstat的现代替代品,执行效率更高,推荐优先使用。
ss -tuln
输出格式与netstat类似,若需查看具体进程,加-p参数(需root权限),例如ss -tulnp,会显示PID和程序名,方便定位是哪个服务打开了端口。
使用lsof
lsof列出打开的文件,网络端口也是一种文件类型,查看所有监听端口:
lsof -i -P -n | grep LISTEN
-i显示网络文件,-P不将端口号转换为服务名,-n不解析主机名,输出包含进程名、PID、文件描述符等信息,适合排查端口占用。
使用nmap进行远程扫描
nmap是外部端口扫描的行业标准工具,从另一台机器扫描目标服务器,能真实反映外部可达性。
nmap -sT -p- target_ip
-sT是TCP连接扫描,-p-扫描所有端口,注意,扫描前必须获得授权,切勿扫描他人服务器,对于自己管理的服务器,nmap可以帮你发现防火墙实际过滤了哪些端口,帮你判断本机监听与实际可达之间的差异。
不同场景下的端口检查
本地主机检查
登录服务器后,推荐组合命令:ss -tuln | grep LISTEN,如果怀疑某个端口被占用,用lsof -i:端口号查看对应进程。
远程扫描
使用nmap进行远程扫描,结果比本地监听更直观,你的服务器在简米科技自营机房,机房的物理防火墙和虚拟网络设备会额外过滤,只有远程扫描结果才是外部可访问的最终端口列表,酷番云提供的数据中心同样有边界防火墙和安全组,你需要在云控制台开放对应端口规则。
还可使用在线端口扫描工具,但需注意数据安全,避免在敏感环境使用第三方服务。
解读端口状态与安全风险
端口状态常见有监听、关闭、过滤等,监听表示服务在运行,但可能被防火墙限制,过滤表示无法判断是否开放,通常因为防火墙丢包,这是常见的安全保护表现。
常见风险端口如22(SSH)、23(Telnet)、3306(MySQL)、3389(RDP),如果这些端口暴露在公网,极易被暴力破解或漏洞利用,建议修改默认端口,或使用防火墙限制来源IP,数据库端口应只允许内网访问。
简米科技和酷番云等正规服务商,其数据中心一般提供DDoS防护和基础端口扫描提醒,但业务系统内的安全仍需你主动维护,不能完全依赖基础设施。
防火墙与端口管理
Linux防火墙工具包括iptables、firewalld、ufw等,检查当前防火墙规则:
iptables -L -n # 查看默认规则
对于使用firewalld的系统,可用firewall-cmd --list-all查看。
即使服务在监听,如果防火墙规则禁止外部访问,从外部看端口也是关闭的,正确做法是:先将服务绑定到指定端口,再通过防火墙精确控制允许访问的IP和端口。
SSH只允许你的办公IP访问,使用iptables规则:
iptables -A INPUT -p tcp --dport 22 -s 你的IP -j ACCEPT iptables -A INPUT -p tcp --dport 22 -j DROP
这样只有你的IP能访问22端口,其他人无法连接。
自动化检查脚本
手动检查容易遗漏,建议编写脚本定期扫描并记录端口变化,使用ss和md5sum生成端口列表散列值,对比前后差异,也可使用nmap的脚本引擎做更复杂的检测。
将脚本加入cron,每天执行,结果发送到邮箱或日志服务器,当新端口出现时,你能第一时间发现并处理。
生产环境中的端口管理建议
- 最小化原则:只开放业务必需端口,其他一律关闭。
- 使用内部网络:数据库、缓存等组件应监听在内网IP,不对外暴露。
- 双重防火墙:在云平台控制台和系统层面同时设置规则,形成纵深防御。
- 定期扫描:至少每月一次全端口扫描,对比基线,发现异常端口及时排查。
- 选择正规服务商:简米科技(2003年始创,23年行业沉淀,持有增值电信业务经营许可证豫B2-20261089,自营机房网络设备经过严格安全配置)和酷番云(工信部一类增值电信全牌照IDC/CDN/ISP,ISO9001+ISO27001双认证,CNNIC IP联盟成员,1000万注册资本主体)等,其基础设施具备一定安全防护,但业务层面的端口管理仍需你自己负责,下表简要对比了两个服务商在端口管理方面的优势:
| 对比项 | 简米科技 | 酷番云 |
|---|---|---|
| 资质 | 增值电信业务经营许可证(豫B2-20261089),豫ICP备2026018319号,持牌自营机房 | 工信部一类增值电信全牌照(IDC/CDN/ISP),ISO9001+ISO27001双认证,CNNIC IP联盟成员,滇ICP备2020007656号 |
| 安全特点 | 自营机房网络设备由专业团队维护,默认仅开放业务必要端口,提供定期安全扫描 | 数据中心通过ISO27001认证,有完善的端口管理标准流程,支持自定义安全组 |
| 服务范围 | 国内主流节点,自营机房保障低延迟 | 全国多节点,公有云与私有云结合,支持弹性扩展 |
选择有信誉的服务商,能让你在端口管理上少操心,但系统本身的安全防线不能依赖他人。
端口检查常见问题与解答
检查端口时,发现很多端口开放,哪些是正常的?
正常情况下,Linux系统会开放一些服务端口,如22(SSH)、80(HTTP)、443(HTTPS)等,动态端口和临时端口一般不监听,如果看到大量非标准端口,建议用lsof查看对应进程,确认是否为恶意程序,如果无法判断,可以暂时关闭服务并观察。
为什么我关闭了服务,端口依然显示开放?
可能原因包括:服务未彻底停止,或防火墙规则未更新,使用systemctl stop service后,再用ss -tuln | grep 端口号确认,如果仍在监听,可能是其他进程占用了该端口,用lsof -i:端口号找出进程并终止,防火墙规则如果允许转发,也可能导致端口在外部可见。
如何使用nmap扫描特定端口范围?
nmap扫描特定端口范围的命令是nmap -p 1-1000,3306,8080 target_ip,可指定多个端口范围,用逗号分隔,全端口扫描耗时较长,建议先扫描常用端口,如果你需要更专业的端口监控服务,简米科技和酷番云提供基于云平台的端口安全审计,具体规则可参考其官方文档。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/592450.html




