温馨提示×

Linux Oracle如何配置防火墙规则

小樊
38
2025-12-24 09:49:55
栏目: 云计算

Linux Oracle 防火墙规则配置指南

一、前置检查

  • 确认监听端口与状态:执行命令查看监听是否启用与端口是否为1521(默认)。示例:lsnrctl status。若 TCP 能通但客户端报 ORA-12170 TNS: 连接超时,多半是防火墙未放行 1521
  • 确认防火墙引擎:Oracle Linux 6 常用 iptables;Oracle Linux 7/8 常用 firewalld。执行:systemctl status firewalld(若显示 active 则为 firewalld;未安装/未运行可考虑 iptables)。
  • 云环境注意:除系统防火墙外,还需在云安全组放通相应端口(协议 TCP、端口 1521、来源为可信网段)。

二、使用 firewalld 放行 Oracle 端口(推荐,适用于 OL7/OL8)

  • 启动并持久化防火墙:systemctl start firewalld && systemctl enable firewalld
  • 放行 Oracle 监听端口(TCP 1521):firewall-cmd --permanent --add-port=1521/tcp
  • 按源地址精细化放行(示例仅允许 192.168.10.0/24 访问 1521):
    firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.10.0/24" port protocol="tcp" port="1521" accept'
  • 重新加载并验证:firewall-cmd --reloadfirewall-cmd --list-portsfirewall-cmd --list-all 查看是否生效。

三、使用 iptables 放行 Oracle 端口(适用于 OL6 或手动管理 iptables 的场景)

  • 备份当前规则:iptables-save > /etc/iptables.backup
  • 放行回环与已建立连接:
    iptables -A INPUT -i lo -j ACCEPT
    iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
  • 放行 Oracle 监听端口(示例允许 192.168.10.0/24 访问 1521/TCP):
    iptables -A INPUT -p tcp -s 192.168.10.0/24 --dport 1521 -j ACCEPT
  • 保存与重启:
    • RHEL6/CentOS6 系列:service iptables save && service iptables restart
    • 其他:按发行版将规则写入持久化配置或使用 iptables-save/restore 管理

四、验证与常见问题

  • 连通性测试:
    • 本机:nc -l -k 1521(监听测试)
    • 远端:telnet 服务器IP 1521nc -vz 服务器IP 1521
  • 监听与端口确认:
    • lsnrctl status(确认监听已启动且端口为 1521
    • netstat -ntlp | grep 1521(确认进程在 0.0.0.0:1521 或指定地址监听)
  • 若仍超时:复核防火墙规则顺序(是否先拒绝了 1521)、是否仅放行了内网段、云安全组是否放通、以及 SELinux/网络 ACL 是否限制。

五、安全加固建议

  • 最小暴露面:仅对可信网段开放 1521/TCP,避免使用 0.0.0.0/0;必要时在 firewalld 使用富规则按源地址精确放行。
  • 纵深防御:在数据库侧配合 sqlnet.ora 限制来源 IP,例如:
    TCP.VALIDNODE_CHECKING = YES
    TCP.INVITED_NODES = (192.168.10.0/24, 10.0.0.0/8)
    TCP.EXCLUDED_NODES = (x.x.x.x)
  • 变更留痕:规则变更前先备份(如 iptables-save 或 firewalld 的 --permanent 配置),变更后及时验证与回滚预案。

0