端口开放检测

TCP 连接探测常用端口组,仅允许探测你拥有或已获授权的目标。

三种状态,三个含义

TCP 连接探测的结果有三种:开放——目标端口应答握手,有服务在监听;关闭——目标明确拒绝(回 RST),机器在线但这个端口没服务;被过滤(filtered)——包石沉大海,通常是防火墙静默丢弃,无法区分"没服务"和"不许你问"。 网站打不开但 443 显示开放,问题多半在应用层(Web 服务出错)而非网络层;443 显示被过滤,才是防火墙 / 端口没放行的问题。

各端口组都在查什么

Web 服务组探测 80 / 443 / 8080 / 8443——80/443 是 HTTP/HTTPS 标准端口,8080/8443 是常见的备用端口; 数据库组探测 3306(MySQL)/ 5432(PostgreSQL)/ 6379(Redis)/ 27017(MongoDB)——这四个端口对公网开放几乎总是配置失误; 邮件组探测 25(SMTP,服务器间投递)/ 110 / 143 / 993 / 995(收信,后两个为加密端口)。 25 端口对外开放且能任意发信的服务器,大概率已被或将被垃圾邮件网络利用——这也是云厂商默认封 25 出端口的原因。

安全自查:管理员的正确用法

这个工具最适合的场景是自查:买了个新服务器,部署完想确认"对外暴露的端口和我预期的一致"。 数据库端口若显示开放,说明服务绑在了 0.0.0.0 而非 127.0.0.1,任何扫描器都能摸到, 应尽快改配置(bind 127.0.0.1 或内网地址)并在防火墙放行白名单。为防止滥用, 本工具对目标做了家宽保护与频率限制,且仅支持已授权目标。

相关文章

更多内容见 博客列表

常见问题

网站打不开,443 却显示开放,是什么问题?

端口开放只说明"TCP 层面有服务应答",具体到 Web 服务是否正常是应用层的事。443 开放但网站 5xx / 白屏,说明是 Web 服务本身的问题(配置错误、后端挂了、证书异常),而不是防火墙或端口问题。

为什么有的端口显示"被过滤"而不是"关闭"?

被过滤(filtered)表示探测包没有得到任何回应——通常是防火墙静默丢弃。它和"关闭"(目标明确拒绝)的区别在于:关闭是主机自己回答"没有服务",被过滤是半路被人拦下,你无法知道目标真实状态。安全加固过的服务器,绝大多数未使用端口都显示被过滤。

扫描别人的服务器合法吗?

未经授权对他人资产进行端口扫描在很多司法辖区处于法律灰区甚至违法,本工具的使用条款要求仅探测你拥有或已获授权的目标。自查自己的服务器、测试自己租用的云主机是完全正当的用途。

数据库端口开放有多危险?

MySQL/Redis/MongoDB 对公网开放是数据泄露事故的经典起因:Redis 未授权访问可以直接写文件拿权限,MongoDB 被勒索赎回数据的事件每年都有。正确配置是数据库只监听 127.0.0.1 或内网地址,必须远程时加防火墙白名单 + 强密码 + 加密连接。

为什么我刚启动的服务探测不到?

常见原因按概率排:服务只监听了 127.0.0.1(对公网不可见);云厂商安全组 / 控制台防火墙没放行该端口;容器映射没配(-p 漏了)。用 ss -tlnp 在服务器上确认监听地址是不是 0.0.0.0,再检查两层防火墙。