说明
这里已经对 CentOS7 和 ReadHat7 的 firewalld
配置验证了。
FirewallD
是 iptables
的前端控制器,用于实现持久的网络流量规则。它提供命令行和图形界面,在大多数 Linux 发行版的仓库中都有。与直接控制 iptables 相比,使用 FirewallD 有两个主要区别:
(1)FirewallD 使用区域和服务而不是链式规则;
(2)它动态管理规则集,允许更新规则而不破坏现有会话和连接;
本文重点讲解下 firewalld
的一些使用场景,更多 FirewallD
基本介绍
需求说明
推荐系统所在机器资源信息(白名单):
所属平台 | 机器IP | 机器品牌 | 系统版本 |
---|---|---|---|
智能推荐平台(REC60) | 192.168.246.60 | HW2280 | ReadHat7.6 |
智能推荐平台(REC61) | 192.168.246.61 | HW2280 | ReadHat7.6 |
智能推荐平台(REC62) | 192.168.246.62 | HW2280 | ReadHat7.6 |
智能推荐平台(REC63) | 192.168.246.63 | HW2280 | ReadHat7.6 |
智能推荐平台(REC64) | 192.168.246.64 | HW2280 | ReadHat7.6 |
要求:设置CentOS 7防火墙,以便除我白名单中的原始IP地址外,所有传入请求都将被阻止。对于白名单IP地址,所有端口都应可访问。
firewall 防火墙规则如下:
## public所在区域的IP来源
firewall-cmd --permanent --zone=public --list-sources
## 添加public所在区域的IP来源,这里是 192.168.246.60
firewall-cmd --permanent --zone=public --add-source=192.168.246.60
## 允许192.168.246.60访问所有端口
firewall-cmd --zone=public --add-rich-rule 'rule family="ipv4" source address="192.168.246.60" accept' --permanent
firewall-cmd --permanent --zone=public --add-source=192.168.246.61
firewall-cmd --zone=public --add-rich-rule 'rule family="ipv4" source address="192.168.246.61" accept' --permanent
firewall-cmd --permanent --zone=public --add-source=192.168.246.62
firewall-cmd --zone=public --add-rich-rule 'rule family="ipv4" source address="192.168.246.62" accept' --permanent
firewall-cmd --permanent --zone=public --add-source=192.168.246.63
firewall-cmd --zone=public --add-rich-rule 'rule family="ipv4" source address="192.168.246.63" accept' --permanent
firewall-cmd --permanent --zone=public --add-source=192.168.246.64
firewall-cmd --zone=public --add-rich-rule 'rule family="ipv4" source address="192.168.246.64" accept' --permanent
## 加载firewalld规则
firewall-cmd --reload
## 查看public区域下所有信息
firewall-cmd --zone=public --list-all
安装、启用、关闭firewalld(非必需)
如果系统上已经安装有 firewalld
,请忽略此步骤:
## 安装firewalld
yum install firewalld firewall-config
## 启动服务
systemctl start firewalld
## 开机自动启动服务
systemctl enable firewalld
## 查看状态
systemctl status firewalld
firewall-cmd --state
## 关闭服务
systemctl stop firewalld
## 取消开机启动
systemctl disable firewalld
防火墙规则说明
一些常用基本的命令
## 查看状态:
firewall-cmd --state ## 输出应该是 running 或者 not running
## 重新加载配置:
firewall-cmd --reload
# 防火墙的区域
## 获取所有区域:
firewall-cmd --get-zones ## 输出 work drop internal external trusted home dmz public block
## 查看默认区域:
firewall-cmd --get-default-zone
## 修改默认区域:
firewall-cmd --set-default-zone=internal
## 查看你网络接口使用的区域:
firewall-cmd --get-active-zones
## 要得到特定区域的所有配置:
firewall-cmd --zone=public --list-all
## 要得到所有区域的配置:
firewall-cmd --list-all-zones
开启或关闭端口和服务
## 比如:允许或者禁用 12345 端口的 TCP 流量。
firewall-cmd --zone=public --add-port=12345/tcp --permanent
firewall-cmd --zone=public --remove-port=12345/tcp --permanent
## 批量添加或者移除区间端口
firewall-cmd --zone=public --add-port=4400-4600/udp --permanent
firewall-cmd --zone=public --add-port=4400-4600/tcp --permanent
firewall-cmd --zone=public --remove-port=4400-4600/udp --permanent
firewall-cmd --zone=public --remove-port=4400-4600/tcp --permanent
## 查看默认的可用服务:
firewall-cmd --get-services
## 比如,要启用或禁用 HTTP 服务:
firewall-cmd --zone=public --add-service=http --permanent
firewall-cmd --zone=public --remove-service=http --permanent
## 重新加载配置:
firewall-cmd --reload
## 查看端口列表
firewall-cmd --permanent --list-port
说明⚠️:
(1)默认情况下,firewall-cmd 命令适用于运行时配置,但使用 --permanent 标志将保存到持久配置中。
(2)如果要通过上面命令添加任何端口或服务,则所有来源都可以访问它!!!
高级配置
一些使用的例子:
更多实例
## 允许来自主机 192.168.0.14 的所有 IPv4 流量和所有端口:
firewall-cmd --zone=public --add-rich-rule 'rule family="ipv4" source address=192.168.0.14 accept' --permanent
## 移除 192.168.0.14 所有访问所有端口
firewall-cmd --zone=public --remove-rich-rule 'rule family="ipv4" source address=192.168.0.14 accept' --permanent
## 拒绝来自主机 192.168.1.10 到 22 端口的 IPv4 的 TCP 流量:
firewall-cmd --zone=public --add-rich-rule 'rule family="ipv4" source address="192.168.1.10" port port=22 protocol=tcp reject'
## 允许192.168.2.0/24(0-255)网段访问所有端口
firewall-cmd --zone=public --add-rich-rule 'rule family="ipv4" source address="192.168.2.0/24" accept' --permanent