Skip to content

OceanBase 网络防火墙配置 ​

网络防火墙的作用 ​

  • 限制访问来源:只允许特定 IP 地址或 IP 段访问数据库
  • 控制访问端口:只开放必要的数据库服务端口
  • 防止恶意攻击:阻止 SQL 注入、DDoS 等恶意攻击
  • 监控网络流量:记录和分析数据库的网络访问日志
  • 实现网络隔离:将数据库网络与其他网络隔离,提高安全性

网络防火墙的类型 ​

  • 硬件防火墙:独立的硬件设备,性能高,安全性好
  • 软件防火墙:安装在操作系统上的防火墙软件,如 iptables、firewalld 等
  • 云防火墙:云服务提供商提供的防火墙服务,如阿里云 ECS 安全组、腾讯云安全组等
  • 数据库级防火墙:数据库内置的访问控制机制,如 IP 白名单、用户权限控制等

操作系统级防火墙配置 ​

Linux 防火墙配置 ​

OceanBase 数据库主要运行在 Linux 操作系统上,Linux 系统提供了多种防火墙工具,包括 iptables 和 firewalld 等。

使用 iptables 配置防火墙 ​

iptables 是 Linux 系统传统的防火墙工具,通过配置规则链来控制网络访问。

开放 OceanBase 必要端口 ​
bash
# 开放 OBServer 通信端口(默认 2881、2882)
iptables -A INPUT -p tcp --dport 2881 -j ACCEPT
iptables -A INPUT -p tcp --dport 2882 -j ACCEPT

# 开放 OBProxy 端口(默认 2883)
iptables -A INPUT -p tcp --dport 2883 -j ACCEPT

# 开放 SSH 端口(默认 22)
iptables -A INPUT -p tcp --dport 22 -j ACCEPT

# 开放 OCP 端口(默认 8080、443)
iptables -A INPUT -p tcp --dport 8080 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT

# 允许回环接口访问
iptables -A INPUT -i lo -j ACCEPT

# 允许已建立的连接
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# 默认拒绝所有输入连接
iptables -P INPUT DROP

# 保存 iptables 规则
/sbin/service iptables save
限制访问来源 IP ​
bash
# 只允许特定 IP 访问 OBServer 端口
iptables -A INPUT -p tcp --dport 2881 -s 192.168.1.0/24 -j ACCEPT
iptables -A INPUT -p tcp --dport 2882 -s 192.168.1.0/24 -j ACCEPT

# 只允许特定 IP 访问 OBProxy 端口
iptables -A INPUT -p tcp --dport 2883 -s 10.0.0.0/8 -j ACCEPT

使用 firewalld 配置防火墙 ​

firewalld 是 CentOS 7 及以上版本默认的防火墙管理工具,提供了更友好的命令行界面和动态规则管理功能。

开放 OceanBase 必要端口 ​
bash
# 启动 firewalld 服务
systemctl start firewalld

# 设置 firewalld 开机自启
systemctl enable firewalld

# 开放 OBServer 通信端口
firewall-cmd --permanent --add-port=2881/tcp
firewall-cmd --permanent --add-port=2882/tcp

# 开放 OBProxy 端口
firewall-cmd --permanent --add-port=2883/tcp

# 开放 SSH 端口
firewall-cmd --permanent --add-port=22/tcp

# 开放 OCP 端口
firewall-cmd --permanent --add-port=8080/tcp
firewall-cmd --permanent --add-port=443/tcp

# 重新加载防火墙规则
firewall-cmd --reload
限制访问来源 IP ​
bash
# 创建富规则,只允许特定 IP 访问 OBServer 端口
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="2881" accept'
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="2882" accept'

# 创建富规则,只允许特定 IP 访问 OBProxy 端口
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="10.0.0.0/8" port protocol="tcp" port="2883" accept'

# 重新加载防火墙规则
firewall-cmd --reload

Windows 防火墙配置 ​

如果 OceanBase 数据库运行在 Windows 操作系统上,需要配置 Windows 防火墙规则。

开放 OceanBase 必要端口 ​

  1. 打开「控制面板」→「系统和安全」→「Windows Defender 防火墙」
  2. 点击「高级设置」,进入「Windows Defender 防火墙高级安全」窗口
  3. 在左侧面板中点击「入站规则」,然后在右侧面板中点击「新建规则」
  4. 选择「端口」,点击「下一步」
  5. 选择「TCP」,在「特定本地端口」中输入 OceanBase 端口(如 2881,2882,2883),点击「下一步」
  6. 选择「允许连接」,点击「下一步」
  7. 选择适用的网络类型(域、专用、公共),点击「下一步」
  8. 输入规则名称(如「OceanBase Ports」),点击「完成」

限制访问来源 IP ​

  1. 在「Windows Defender 防火墙高级安全」窗口中,找到刚创建的入站规则,右键点击并选择「属性」
  2. 切换到「作用域」选项卡
  3. 在「远程 IP 地址」区域,选择「这些 IP 地址」,然后点击「添加」
  4. 输入允许访问的 IP 地址或 IP 段,点击「确定」
  5. 点击「应用」和「确定」保存设置

数据库级访问控制 ​

IP 白名单配置 ​

OceanBase 数据库提供了 IP 白名单功能,可以限制只允许特定 IP 地址访问数据库。

查看当前 IP 白名单配置 ​

sql
-- 查看当前 IP 白名单配置
SHOW PARAMETERS LIKE 'ob_tcp_invited_nodes';

-- 查看租户级 IP 白名单配置
SHOW TENANT ALL PARAMETERS LIKE 'ob_tcp_invited_nodes';

配置全局 IP 白名单 ​

sql
-- 配置全局 IP 白名单,允许所有 IP 访问(不推荐)
ALTER SYSTEM SET ob_tcp_invited_nodes = '%';

-- 配置全局 IP 白名单,允许特定 IP 访问
ALTER SYSTEM SET ob_tcp_invited_nodes = '127.0.0.1,192.168.1.0/24,10.0.0.100';

配置租户级 IP 白名单 ​

sql
-- 配置租户级 IP 白名单
ALTER TENANT test_tenant SET ob_tcp_invited_nodes = '192.168.1.0/24';

用户权限控制 ​

除了 IP 白名单,OceanBase 数据库还提供了用户权限控制机制,可以限制用户的操作权限和访问范围。

创建用户并限制访问主机 ​

sql
-- 创建用户并限制只能从特定 IP 访问
CREATE USER 'test_user'@'192.168.1.%' IDENTIFIED BY 'password';

-- 创建用户并限制只能从本地访问
CREATE USER 'test_user'@'localhost' IDENTIFIED BY 'password';

-- 创建用户并允许从任何 IP 访问(不推荐)
CREATE USER 'test_user'@'%' IDENTIFIED BY 'password';

授权用户访问权限 ​

sql
-- 授权用户访问特定数据库
GRANT ALL PRIVILEGES ON test_db.* TO 'test_user'@'192.168.1.%';

-- 授权用户只能执行 SELECT 操作
GRANT SELECT ON test_db.* TO 'test_user'@'192.168.1.%';

-- 刷新权限
FLUSH PRIVILEGES;

云环境防火墙配置 ​

阿里云 ECS 安全组配置 ​

如果 OceanBase 数据库运行在阿里云 ECS 上,需要配置 ECS 安全组规则。

开放 OceanBase 必要端口 ​

  1. 登录阿里云控制台,进入「ECS 实例列表」
  2. 找到目标 ECS 实例,点击「管理」
  3. 在左侧面板中点击「本实例安全组」
  4. 点击「配置规则」
  5. 点击「添加安全组规则」
  6. 配置规则:
    • 规则方向:入方向
    • 授权策略:允许
    • 协议类型:TCP
    • 端口范围:2881/2881(分别添加 2881、2882、2883 端口)
    • 授权对象:0.0.0.0/0(或特定 IP 地址/IP 段)
    • 优先级:1-100(数字越小优先级越高)
  7. 点击「确定」保存规则

腾讯云安全组配置 ​

如果 OceanBase 数据库运行在腾讯云 CVM 上,需要配置 CVM 安全组规则。

开放 OceanBase 必要端口 ​

  1. 登录腾讯云控制台,进入「CVM 实例列表」
  2. 找到目标 CVM 实例,点击「更多」→「安全组」→「配置安全组」
  3. 点击「修改规则」
  4. 点击「添加规则」
  5. 配置规则:
    • 类型:自定义 TCP
    • 源:0.0.0.0/0(或特定 IP 地址/IP 段)
    • 协议端口:TCP:2881(分别添加 2881、2882、2883 端口)
    • 策略:允许
    • 备注:OceanBase Ports
  6. 点击「完成」保存规则

网络防火墙最佳实践 ​

最小权限原则 ​

  • 只开放必要端口:只开放 OceanBase 数据库必要的服务端口,如 2881(OBServer 内部通信)、2882(OBServer 客户端通信)、2883(OBProxy 端口)
  • 只允许必要 IP 访问:只允许应用服务器、管理终端等必要 IP 地址访问数据库
  • 限制访问权限:根据用户角色分配最小必要权限,避免过度授权

分层防御策略 ​

  • 部署多层防火墙:同时配置硬件防火墙、软件防火墙和数据库级 IP 白名单,实现分层防御
  • 网络隔离:将数据库网络与其他网络(如办公网络、互联网)隔离,使用 VLAN 或 VPN 实现安全访问
  • DMZ 区域:将 OBProxy 部署在 DMZ 区域,OBServer 部署在内部网络,实现网络隔离

定期审查和更新 ​

  • 定期审查防火墙规则:每季度或半年审查一次防火墙规则,删除过时或不必要的规则
  • 及时更新防火墙软件:定期更新防火墙软件,修复安全漏洞
  • 监控防火墙日志:监控防火墙访问日志,及时发现异常访问行为

安全日志记录 ​

  • 启用防火墙日志:配置防火墙记录所有访问尝试,包括允许和拒绝的访问
  • 集中日志管理:将防火墙日志发送到集中日志管理系统,便于分析和审计
  • 定期分析日志:定期分析防火墙日志,识别潜在的安全威胁

网络防火墙的监控与管理 ​

监控防火墙状态 ​

监控 Linux 防火墙状态 ​

bash
# 监控 iptables 状态
iptables -L -n -v

# 监控 firewalld 状态
firewall-cmd --state
firewall-cmd --list-all

监控 Windows 防火墙状态 ​

powershell
# 查看 Windows 防火墙状态
Get-NetFirewallProfile

# 查看入站规则
Get-NetFirewallRule -Direction Inbound | Where-Object {$_.Enabled -eq $true}

查看防火墙日志 ​

查看 Linux 防火墙日志 ​

bash
# 查看 iptables 日志
tail -f /var/log/messages | grep iptables

# 查看 firewalld 日志
tail -f /var/log/firewalld

查看 Windows 防火墙日志 ​

  1. 打开「控制面板」→「系统和安全」→「Windows Defender 防火墙」
  2. 点击「高级设置」,进入「Windows Defender 防火墙高级安全」窗口
  3. 在右侧面板中点击「属性」
  4. 切换到「自定义」选项卡,点击「日志设置」
  5. 查看日志文件路径,默认路径为 %systemroot%\System32\LogFiles\Firewall\pfirewall.log
  6. 使用文本编辑器打开日志文件查看

测试防火墙规则 ​

使用 telnet 测试端口连通性 ​

bash
# 测试 OBServer 端口连通性
telnet 192.168.1.100 2881
telnet 192.168.1.100 2882

# 测试 OBProxy 端口连通性
telnet 192.168.1.100 2883

使用 nc 测试端口连通性 ​

bash
# 测试 OBServer 端口连通性
nc -zv 192.168.1.100 2881
nc -zv 192.168.1.100 2882

# 测试 OBProxy 端口连通性
nc -zv 192.168.1.100 2883

网络防火墙的常见问题 ​

无法连接到数据库 ​

症状:客户端无法连接到 OceanBase 数据库,出现「连接超时」或「拒绝连接」错误

解决方案:

  1. 检查数据库服务是否正常运行:ps -ef | grep observer
  2. 检查数据库端口是否正常监听:netstat -tlnp | grep 2881
  3. 检查操作系统防火墙规则:iptables -L -n 或 firewall-cmd --list-all
  4. 检查数据库 IP 白名单配置:SHOW PARAMETERS LIKE 'ob_tcp_invited_nodes'
  5. 检查云平台安全组规则(如果是云环境)

防火墙规则不生效 ​

症状:配置了防火墙规则,但仍然无法访问数据库,或规则没有按预期工作

解决方案:

  1. 检查规则顺序:确保规则顺序正确,优先级高的规则先执行
  2. 重新加载规则:service iptables restart 或 firewall-cmd --reload
  3. 检查规则语法:确保规则语法正确,没有拼写错误
  4. 检查 IP 地址和端口:确保 IP 地址和端口配置正确
  5. 检查网络拓扑:确保网络路径上的所有防火墙都配置了正确的规则

防火墙性能问题 ​

症状:防火墙导致数据库访问延迟增加,影响性能

解决方案:

  1. 优化防火墙规则:删除不必要的规则,合并相似规则
  2. 调整规则顺序:将频繁匹配的规则放在前面
  3. 使用硬件防火墙:对于高流量场景,考虑使用硬件防火墙
  4. 启用连接追踪优化:调整连接追踪参数,提高性能
  5. 考虑使用云防火墙:云防火墙通常具有更好的性能和扩展性

网络防火墙的安全加固 ​

禁用不必要的服务 ​

  • 禁用不必要的网络服务:关闭不需要的网络服务,减少攻击面
  • 禁用 IPv6:如果不使用 IPv6,禁用 IPv6 支持
  • 禁用 ICMP 响应:禁用 ICMP 响应,防止 ping 扫描

启用入侵检测和防御 ​

  • 部署 IDS/IPS 系统:在数据库网络部署入侵检测/防御系统,实时检测和阻止恶意攻击
  • 启用 SQL 防火墙:启用数据库 SQL 防火墙,防止 SQL 注入攻击
  • 启用 DDoS 防护:部署 DDoS 防护设备,防止分布式拒绝服务攻击

实现安全审计 ​

  • 启用数据库审计:配置 OceanBase 数据库审计功能,记录所有数据库操作
  • 启用防火墙审计:配置防火墙审计功能,记录所有网络访问尝试
  • 定期安全审计:每季度或半年进行一次安全审计,评估防火墙配置的安全性

常见问题(FAQ) ​

Q1: OceanBase 数据库需要开放哪些端口? ​

A1: OceanBase 数据库需要开放以下端口:

  • 2881:OBServer 内部通信端口
  • 2882:OBServer 客户端通信端口
  • 2883:OBProxy 服务端口
  • 8080:OCP 管理端口(如果使用 OCP)
  • 22:SSH 管理端口(用于远程管理)

Q2: 如何配置 OceanBase 的 IP 白名单? ​

A2: 配置 OceanBase IP 白名单的方法:

sql
-- 配置全局 IP 白名单
ALTER SYSTEM SET ob_tcp_invited_nodes = '192.168.1.0/24,10.0.0.100';

-- 配置租户级 IP 白名单
ALTER TENANT test_tenant SET ob_tcp_invited_nodes = '192.168.1.0/24';

Q3: 如何测试 OceanBase 端口连通性? ​

A3: 测试 OceanBase 端口连通性的方法:

bash
# 使用 telnet 测试
telnet 192.168.1.100 2881

# 使用 nc 测试
nc -zv 192.168.1.100 2881

Q4: 防火墙规则应该如何排序? ​

A4: 防火墙规则的排序原则:

  • 更具体的规则放在前面
  • 允许访问的规则放在前面
  • 拒绝访问的规则放在后面
  • 默认拒绝所有访问的规则放在最后

Q5: 如何查看防火墙日志? ​

A5: 查看防火墙日志的方法:

  • Linux iptables:tail -f /var/log/messages | grep iptables
  • Linux firewalld:tail -f /var/log/firewalld
  • Windows:%systemroot%\System32\LogFiles\Firewall\pfirewall.log

Q6: 如何优化防火墙性能? ​

A6: 优化防火墙性能的方法:

  • 优化防火墙规则,删除不必要的规则
  • 调整规则顺序,将频繁匹配的规则放在前面
  • 使用硬件防火墙或云防火墙
  • 启用连接追踪优化
  • 考虑分布式防火墙架构

Q7: 云环境下需要配置哪些防火墙? ​

A7: 云环境下需要配置的防火墙:

  • 云平台安全组规则(如阿里云 ECS 安全组、腾讯云安全组)
  • 操作系统级防火墙(iptables、firewalld 等)
  • 数据库级 IP 白名单

Q8: 如何实现数据库网络隔离? ​

A8: 实现数据库网络隔离的方法:

  • 使用 VLAN 划分网络
  • 部署 DMZ 区域,将 OBProxy 部署在 DMZ 区域
  • 使用 VPN 实现安全访问
  • 配置网络 ACL,限制网络间的通信

Q9: 如何处理防火墙误拦截问题? ​

A9: 处理防火墙误拦截问题的方法:

  • 检查防火墙规则,确认是否存在误配置
  • 查看防火墙日志,确定误拦截的原因
  • 调整防火墙规则,允许合法访问
  • 考虑使用「学习模式」,自动生成防火墙规则

Q10: 如何制定防火墙规则策略? ​

A10: 制定防火墙规则策略的方法:

  • 遵循最小权限原则,只允许必要的访问
  • 基于业务需求制定规则,避免过度配置
  • 定期审查和更新规则
  • 记录规则的目的和负责人
  • 建立规则变更流程,确保规则变更的安全性和可追溯性

网络防火墙配置示例 ​

生产环境防火墙配置示例 ​

iptables 配置示例 ​

bash
# 清空现有规则
iptables -F
iptables -X

# 设置默认策略
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

# 允许回环接口
iptables -A INPUT -i lo -j ACCEPT

# 允许已建立的连接
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# 允许 SSH 访问(仅允许管理 IP)
iptables -A INPUT -p tcp --dport 22 -s 192.168.1.0/24 -j ACCEPT

# 允许 OBServer 内部通信(仅允许内部 IP)
iptables -A INPUT -p tcp --dport 2881 -s 10.0.0.0/8 -j ACCEPT

# 允许 OBServer 客户端通信(仅允许应用服务器 IP)
iptables -A INPUT -p tcp --dport 2882 -s 172.16.0.0/12 -j ACCEPT

# 允许 OBProxy 访问(仅允许 DMZ IP)
iptables -A INPUT -p tcp --dport 2883 -s 192.168.2.0/24 -j ACCEPT

# 允许 OCP 访问(仅允许管理 IP)
iptables -A INPUT -p tcp --dport 8080 -s 192.168.1.0/24 -j ACCEPT

# 保存规则
iptables-save > /etc/sysconfig/iptables

IP 白名单配置示例 ​

sql
-- 配置全局 IP 白名单,仅允许应用服务器和管理终端访问
ALTER SYSTEM SET ob_tcp_invited_nodes = '172.16.0.0/12,192.168.1.0/24';

-- 配置租户级 IP 白名单,仅允许特定应用服务器访问
ALTER TENANT app_tenant SET ob_tcp_invited_nodes = '172.16.1.0/24';
ALTER TENANT reporting_tenant SET ob_tcp_invited_nodes = '172.16.2.0/24';

网络防火墙的未来趋势 ​

  • 软件定义防火墙(SDFW):基于软件定义网络(SDN)的防火墙,提供更灵活的网络安全策略管理
  • 云原生防火墙:专为云环境设计的防火墙,提供更好的云环境集成和扩展性
  • 智能防火墙:结合人工智能和机器学习技术,自动识别和阻止新型威胁
  • 零信任架构:基于零信任原则的防火墙,不依赖网络位置,对所有访问请求进行验证
  • 微分段:将网络划分为更小的安全域,实现更细粒度的访问控制