Oracle Linux防火墙配置指南(iptables与firewalld)
Oracle Linux系统默认集成firewalld(动态防火墙管理工具,适用于RHEL 7及以上版本,包括Oracle Linux 7/8/9)作为主要防火墙解决方案,部分旧版本(如Oracle Linux 6)仍使用iptables(传统静态防火墙工具)。以下是两种工具的具体配置流程:
firewalld采用“区域(Zone)”概念,将网络接口划分为不同信任级别(如public、trusted、work),通过服务(Service)或端口(Port)规则控制流量。
systemctl status firewalld
若输出显示“active (running)”,则表示防火墙已启用;若未启用,执行sudo systemctl enable --now firewalld启动并设置开机自启。
# 添加永久规则(--permanent表示重启后仍生效)
sudo firewall-cmd --permanent --zone=public --add-port=1521/tcp
# 重新加载配置使规则立即生效
sudo firewall-cmd --reload
# 验证端口是否开放
sudo firewall-cmd --zone=public --list-ports
若输出包含“1521/tcp”,则表示规则生效。
# 添加Oracle数据库服务(需firewalld预定义,若未定义可使用--add-port替代)
sudo firewall-cmd --permanent --zone=public --add-service=oracle-database
# 重新加载配置
sudo firewall-cmd --reload
# 验证服务是否开放
sudo firewall-cmd --zone=public --list-services
firewalld预定义了常见服务(如http、ssh),可通过firewall-cmd --get-services查看所有可用服务。
# 添加富规则(rich rule,支持IP、端口、协议等高级条件)
sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="1521" accept'
# 重新加载配置
sudo firewall-cmd --reload
# 验证富规则
sudo firewall-cmd --zone=public --list-rich-rules
此规则仅允许指定IP访问1521端口,提升安全性。
iptables是传统静态防火墙工具,通过规则链(Chain)和策略(Policy)控制流量,适用于需要精细调整的场景。
sudo iptables-save > /etc/iptables.backup
修改前备份可避免规则丢失导致网络中断。
sudo iptables -F # 清空所有规则
sudo iptables -X # 删除自定义链
sudo iptables -Z # 重置计数器
清除现有规则以确保从干净状态开始配置。
sudo iptables -P INPUT DROP # 拒绝所有入站流量(默认拒绝)
sudo iptables -P FORWARD DROP # 拒绝所有转发流量
sudo iptables -P OUTPUT ACCEPT # 允许所有出站流量(默认允许)
默认策略应遵循“最小权限原则”,仅允许可信流量。
sudo iptables -A INPUT -i lo -j ACCEPT
本地回环接口(lo)用于本机进程间通信,必须允许,否则可能导致系统服务异常。
# 允许192.168.1.100访问所有端口
sudo iptables -A INPUT -s 192.168.1.100 -j ACCEPT
# 允许192.168.1.0/24网段访问1521端口
sudo iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 1521 -j ACCEPT
根据需求添加规则,优先匹配具体IP或网段,减少规则冲突。
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
允许已建立的连接(如客户端与服务器之间的响应流量)和相关的流量(如FTP数据连接),确保正常通信不受影响。
# 保存规则(Oracle Linux 6默认使用iptables-services包)
sudo service iptables save
# 重启服务使规则生效
sudo service iptables restart
保存规则后,重启服务确保规则持久化(重启系统后仍有效)。
telnet或nc命令测试端口连通性(如telnet <IP> 1521),确保规则配置正确。通过以上步骤,可根据Oracle Linux版本和需求配置防火墙,确保数据库(如Oracle Database)或其他服务的安全访问。