修复甲骨文云数据库端口暴露,需立即登录 OCI 控制台修改虚拟云网络(VCN)下的安全列表或网络安全组入站规则,将源 CIDR 从 0.0.0.0/0 改为特定 IP 或私有网段。操作前需确认当前管理连接来源,避免误封 SSH 端口导致无法远程。
先说结论:甲骨文云实例端口暴露通常由安全列表或网络安全组的入站规则配置过于宽松引起,修复核心是限制源 IP 地址。
- 先判断:确认数据库端口(如 3306、1521、5432)是否需要对公网开放,绝大多数生产场景应仅限内网或特定管理 IP 访问。
- 优先做:在 OCI 控制台的网络设置中,将入站规则的源 CIDR 从 0.0.0.0/0 修改为受信任的 IP 段,同时保留 SSH 管理通道。
- 再验证:使用外部网络执行 telnet 或 nmap 扫描,确认端口已无法从非授权 IP 连接。
快速处理思路
甲骨文云防火墙配置主要通过图形界面完成,无需命令行即可生效。适用场景为所有 OCI 计算实例网络访问控制。操作动作是登录控制台找到对应 VCN 的安全规则。风险边界是修改规则可能立即中断现有连接,需确保当前 SSH 会话不受影响。
1. 登录 Oracle Cloud Console,进入 Networking 菜单。
2. 选择 Virtual Cloud Networks,点击实例所在的 VCN。
3. 查看 Resources 下的 Security Lists 或 Network Security Groups。
4. 找到包含数据库端口的入站规则(Ingress Rules),点击编辑。
5. 将 Source CIDR 从 0.0.0.0/0 改为具体 IP 或私有网段(如 10.0.0.0/8),保存更改。
为什么会这样
默认创建实例时,部分镜像或快捷配置会自动开放常用端口给全网。甲骨文云的安全模型分为两层:子网级别的安全列表(Security Lists)和网卡级别的网络安全组(NSGs)。公开资料中没有看到可靠的量化数据说明默认开放的具体比例,但常见误区是认为修改操作系统防火墙即可,实际上 OCI 的网络防火墙优先级更高,若控制台规则开放,操作系统防火墙无法阻断外部流量。
分步处理
以下步骤基于 OCI 控制台操作,适用场景为修复已暴露的数据库端口。操作动作需按顺序执行,每步完成后需检查状态。
步骤 1:确认当前规则位置
检查实例详情页面的 Subnet 信息,确认该实例使用的是 Security Lists 还是 NSGs。若两者都存在,需同时检查,因为流量需通过所有 applicable 的防火墙层。
步骤 2:修改入站规则
进入 Security List 或 NSG 详情页,找到 Ingress Rules 列表。定位到协议为 TCP 且端口范围包含数据库端口(如 3306)的规则。点击编辑,将 Source CIDR 修改为允许访问的 IP 地址。若需完全关闭公网访问,可删除该规则或设置为仅内网网段。
步骤 3:保留管理通道
风险边界提示:检查同一规则列表中是否有 SSH(端口 22)或 RDP(端口 3389)规则。确保这些管理端口的 Source CIDR 包含你当前的公网 IP,避免修改后无法连接实例。
步骤 4:保存并应用
点击 Save Changes。OCI 安全规则修改通常秒级生效,无需重启实例。
怎么验证是否生效
验证需在非授权网络环境下进行,例如使用手机热点或另一台不在白名单内的服务器。操作动作是执行网络连通性测试。
1. 在外部机器执行命令:telnet <实例公网 IP> <数据库端口>。
2. 若连接超时或显示 Connection refused,说明规则已生效。
3. 若仍能连接,检查是否有多余的安全组规则叠加,或操作系统内部防火墙(如 iptables、firewalld)未配合限制。
4. 也可使用在线端口扫描工具,但需注意扫描频率避免触发云厂商安全预警。
常见坑
1. 多层规则冲突:同时配置了 Security List 和 NSG 时,流量需同时满足两者允许才能通过。若只修改了一层,另一层仍开放 0.0.0.0/0,端口依然暴露。
2. 有状态与无状态规则:OCI 默认使用有状态规则(Stateful),返回流量自动允许。若误配无状态规则(Stateless),需手动配置出站规则,否则可能导致数据库响应无法返回客户端。
3. 操作系统防火墙忽略:仅修改 OCI 控制台规则即可阻断外部流量,但若内部防火墙未配置,一旦云防火墙策略被意外重置,内部无防护。建议同时在操作系统层限制数据库监听地址为内网 IP。
常见问题
安全列表和网络安全组有什么区别?
安全列表作用于子网内所有实例,网络安全组作用于特定网卡。建议优先使用网络安全组实现细粒度控制,减少规则管理复杂度。
修改规则后需要重启服务器吗?
不需要。OCI 网络安全规则修改后立即生效,现有连接可能会中断,但新连接会立即受新规则限制。
我不小心把自己锁在外面了怎么办?
若 SSH 端口也被误封,需通过 OCI 控制台的 Instance Console Connection(串行控制台)登录实例修复网络规则,或暂时放宽安全列表规则恢复访问后再重新限制。
参考来源
- Oracle Cloud Infrastructure Documentation, Security Lists Overview, https://docs.oracle.com/en-us/iaas/Content/Network/Concepts/securitylists.htm
- Oracle Cloud Infrastructure Documentation, Network Security Groups Overview, https://docs.oracle.com/en-us/iaas/Content/Network/Concepts/NSGs.htm