甲骨文云安全组入站规则怎么设置才最安全?

文章导读
最安全的设置原则是默认拒绝所有入站流量,仅对必需的服务端口开放,且来源 IP 限制为具体地址而非全网开放。
📋 目录
  1. CLI 环境准备与命令速用
  2. 为什么会这样
  3. 控制台分步处理
  4. 怎么验证是否生效
  5. 常见坑
  6. 参考来源
A A

最安全的设置原则是默认拒绝所有入站流量,仅对必需的服务端口开放,且来源 IP 限制为具体地址而非全网开放。

先说结论:甲骨文云(OCI)中没有直接叫“安全组”的产品,对应的是网络安全组(NSG)或安全列表,最小权限原则是核心。

  • 先判断:确认业务真正需要开放的端口,避免盲目放行 22 或 3389。
  • 优先做:使用网络安全组(NSG)绑定实例,来源 CIDR 尽量填写具体 IP 而非 0.0.0.0/0。
  • 再验证:配置完成后从外部网络测试端口连通性,确认非授权 IP 无法访问。

CLI 环境准备与命令速用

使用 CLI 管理前,请确保已安装 Oracle Cloud Infrastructure CLI 并完成认证配置:

oci setup config

按提示输入用户 OCID、指纹私钥路径等信息。配置完成后,可通过以下命令查看现有 NSG 规则:

oci network nsg security-rule list `--nsg-id` <nsg_ocid>

添加允许特定 IP 访问 TCP 22 端口的规则:

甲骨文云安全组入站规则怎么设置才最安全?
oci network nsg security-rule create `--nsg-id` <nsg_ocid> `--direction` INGRESS `--protocol` 6 `--src` 1.2.3.4/32 `--tcp-options` '{"min":22,"max":22}'

为什么会这样

云平台的安全规则本质是虚拟防火墙。开放 0.0.0.0/0 意味着互联网上任何设备都能尝试连接你的服务,这会暴露给自动化扫描脚本,增加暴力破解风险。网络安全组(NSG)比安全列表更灵活,因为它直接绑定到网卡级别,而不是子网级别,能更精确地控制单台实例的流量。

控制台分步处理

1. 登录 OCI 控制台,进入“虚拟云网络” (VCN) 页面。

2. 在左侧菜单选择“网络安全组” (Network Security Groups)。

3. 点击现有的 NSG 或创建一个新的,确保它已关联到目标实例的 VNIC。

甲骨文云安全组入站规则怎么设置才最安全?

4. 点击“添加入站规则” (Add Ingress Rules)。

5. 填写参数:来源类型选 CIDR,来源 CIDR 填写你的办公网 IP 或特定信任 IP,协议选择 TCP,端口范围填写业务端口。

6. 保存前检查是否有旧的宽松规则,如有建议先禁用或删除。

怎么验证是否生效

配置完成后,不要只在控制台看状态。找一台不在允许列表内的机器,使用 telnet 或 nc 测试端口:

甲骨文云安全组入站规则怎么设置才最安全?
nc -zv <实例公网 IP> <端口号>

如果显示连接超时 (Connection timed out),说明规则生效拦截了流量。如果显示连接成功,则说明规则放行。

常见坑

1. 安全列表与 NSG 同时生效:OCI 中安全列表和 NSG 规则是累加的,如果子网的安全列表放行了全网,NSG 的限制可能无效,需同时检查。

2. ICMP 协议:如果不放行 ICMP 类型 3 代码 4 等特定类型,可能会影响路径 MTU 发现,导致大包传输失败,但普通 Ping 需要单独放行 ICMP 类型 8。

3. 状态化规则:OCI 默认是状态化的,入了就不需要配出,但如果是无状态规则,需要配对配置出站规则,否则回包会被丢弃。

参考来源

  • Oracle Cloud Infrastructure Documentation, "Network Security Groups", https://docs.oracle.com/en-us/iaas/Content/Network/Concepts/networksecuritygroups.htm
  • Oracle Cloud Infrastructure Documentation, "Security Rules", https://docs.oracle.com/en-us/iaas/Content/Network/Tasks/managingsecurityrules.htm