最安全的设置原则是默认拒绝所有入站流量,仅对必需的服务端口开放,且来源 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