检查数据库端口是否暴露在互联网上

主机
仅扫描你拥有或已明确获准探测的主机。扫描会检查约 20 个常见 TCP 端口。
下一步

在公网上有响应的数据库,是最常见的服务器错误之一。输入您的服务器地址,即可查看 MySQL(3306)、PostgreSQL(5432)或 Redis(6379)是否接受来自外部的连接。如果列表中没有出现它们,说明从这里无法访问到它们。

如何检测暴露的数据库

  1. 1

    输入服务器地址

    使用托管数据库的机器的公网主机名或 IP 地址。

  2. 2

    运行扫描

    点击“下一步”,然后点击“扫描常见端口”。

  3. 3

    检查 3306、5432 和 6379

    如果列出了其中任何一个,说明该服务接受来自互联网的连接。

  4. 4

    修复不应公开的服务

    将服务绑定到私有地址,或在防火墙中关闭该端口,然后重新扫描。

为什么暴露很重要

数据库和缓存的设计目的是供您自己的应用程序访问,而不是供陌生人访问。Redis 在默认配置下通常没有密码,而可访问的 MySQL 或 PostgreSQL 端口会招致密码猜测攻击。让这些端口远离公网,是一项基本的防范措施。

每个结果意味着什么

端口 服务 如果被列出
3306 MySQL 服务器接受来自互联网的 TCP 连接
5432 PostgreSQL 同样,请检查访问规则和绑定地址
6379 Redis 同样,请检查密码和私有绑定地址

端口开放并不意味着数据库没有保护。身份验证和主机规则仍可能拒绝登录。但它确实意味着该服务可以被访问,值得进一步检查。

常见修复方法

  1. 将数据库绑定到 localhost 或私有网络地址。
  2. 添加防火墙规则,仅允许您的应用服务器访问该端口。
  3. 对于云服务器,除了主机防火墙,还要检查安全组或网络 ACL。
  4. 再次扫描,确认该端口不再出现。

本检测的局限

只测试三个默认端口。使用自定义端口的数据库不会被发现。关闭、被过滤和无法访问的端口都会返回相同的空结果,因此扫描结果干净,只表示这些端口从这里接受连接的尝试未成功,仅此而已。请只扫描您拥有或管理的服务器。

有意暴露的情况

有些配置会有意暴露数据库,例如只接受允许列表中地址连接的托管服务,或供其他地区连接的副本。如果您的情况属于这类,那么本扫描中出现开放端口是符合预期的。需要确认的问题是允许列表是否真正限制了访问,确认方法是从允许列表之外的地址检查该端口的行为是否符合您的预期。

如果您并未打算暴露数据库,请将开放的数据库端口视为需要今天就修复的问题,然后检查数据库日志,查找来自您不认识的地址的连接尝试。

常见问题

不会。它只是对端口建立一个 TCP 连接,并报告该连接是否被接受。它不发送任何凭据,也不执行任何查询。

不能。只测试固定列表中的默认端口,因此其他端口上的数据库不会被检查。

不一定,因为身份验证和加密仍可能保护它。但暴露会扩大攻击面,所以大多数配置都会让这些端口保持私有。

防火墙可能只允许您办公室的地址。扫描来自另一个公网地址,因此它看到的是所有其他人看到的内容,这正是此检测的目的。

相关工具

此工具还提供其他语言版本

使用指南与应用场景