1. 防火墙简介
firewalld
提供了一个 动态管理的防火墙,用以支持网络
“zones” ,以分配对一个网络及其相关链接和界面一定程度的信任。它具备对 IPv4
和 IPv6
防火墙设置的支持。它支持以太网桥,并有分离运行时间和永久性配置选择。它还具备一个通向服务或者应用程序以直接增加防火墙规则的接口。
2. 了解防火墙
firewalld
:它依次用 iptables工具 与执行数据包筛选的内核中的 Netfilter 通信,
firewall
,然后按下 Enter。firewall-config 工具就出现了。您将被提示输入管理员密码。
firewalld
提供的是动态的防火墙服务,而非静态的。因为配置的改变可以随时随地立刻执行,不再需要保存或者执行这些改变。现行网络连接的意外中断不会发生,正如防火墙的所有部分都不需要重新下载。
man firewall-cmd(1)
所解释的一样。永久性改变需要按照 firewalld(1)
手册页的解释来进行。注意, firewall-cmd
命令可以由 root
用户运行,也可以由管理员用户——换言之, wheel
群体的成员运行。在后一种情况里,命令将通过 polkit 进程来授权。
firewalld
的配置储存在
/usr/lib/firewalld/
和
/etc/firewalld/
里的各种 XML 文件里,这样保持了这些文件被编辑、写入、备份的极大的灵活性,使之可作为其他安装的备份等等。
firewalld
通信。
3. 比较 system-config-firewall 以及 iptables 的 firewalld
firewalld
和
iptables service 之间最本质的不同是:
-
iptables service 在
/etc/sysconfig/iptables
中储存配置,而firewalld
将配置储存在/usr/lib/firewalld/
和/etc/firewalld/
中的各种 XML 文件里,。要注意,当firewalld
在Red Hat Enterprise Linux上安装失败时,/etc/sysconfig/iptables
文件就不存在。 -
使用 iptables service,每一个单独更改意味着清除所有旧有的规则和从
/etc/sysconfig/iptables
里读取所有新的规则,然而使用firewalld
却不会再创建任何新的规则;仅仅运行规则中的不同之处。因此,firewalld
可以在运行时间内,改变设置而不丢失现行连接。
4. 对网络区的理解
firewalld
一个接口归属某个区域。接口所分配的区域可以由 NetworkManager 改变,也可以通过能为您打开相关 NetworkManager 窗口的 firewall-config 工具进行。
/etc/firewalld/
的区域设定是一系列可以被快速执行到网络接口的预设定。列表并简要说明如下:
-
任何接收的网络数据包都被丢弃,没有任何回复。仅能有发送出去的网络连接。
-
任何接收的网络连接都被
IPv4
的 icmp-host-prohibited 信息和IPv6
的 icmp6-adm-prohibited 信息所拒绝。 -
在公共区域内使用,不能相信网络内的其他计算机不会对您的计算机造成危害,只能接收经过选取的连接。
-
特别是为路由器启用了伪装功能的外部网。您不能信任来自网络的其他计算,不能相信它们不会对您的计算机造成危害,只能接收经过选择的连接。
-
用于您的非军事区内的电脑,此区域内可公开访问,可以有限地进入您的内部网络,仅仅接收经过选择的连接。
-
用于工作区。您可以基本相信网络内的其他电脑不会危害您的电脑。仅仅接收经过选择的连接。
-
用于家庭网络。您可以基本信任网络内的其他计算机不会危害您的计算机。仅仅接收经过选择的连接。
-
用于内部网络。您可以基本上信任网络内的其他计算机不会威胁您的计算机。仅仅接受经过选择的连接。
-
可接受所有的网络连接。
drop
(丢弃)
block
(限制)
public
(公共)
external
(外部)
dmz
(非军事区)
work
(工作)
home
(家庭)
internal
(内部)
trusted
(信任)
firewalld
里的默认区域被设定为公共区域。
如果你的系统上没有安装使用命令安装
安装firewalld 防火墙
yum install firewalld
开启服务
systemctl start firewalld.service
关闭防火墙
systemctl stop firewalld.service
开机自动启动
systemctl enable firewalld.service
关闭开机制动启动
systemctl disable firewalld.service
使用firewall-cmd 命令
查看状态firewall-cmd --state //running 表示运行
获取活动的区域
firewall-cmd --get-active-zones
这条命令将用以下格式输出每个区域所含接口:
<zone1>: <interface1> <interface2> ..<zone2>: <interface3> ..
获取所有支持的服务
firewall-cmd --get-service
在不改变状态的条件下重新加载防火墙:
firewall-cmd --reload
启用某个服务
firewall-cmd --zone=public --add-service=https //临时 firewall-cmd --permanent --zone=public --add-service=https //永久
开启某个端口
firewall-cmd --permanent --zone=public --add-port=8080-8081/tcp //永久 firewall-cmd --zone=public --add-port=8080-8081/tcp //临时
删除某个端口
firewall-cmd --permanent --zone=public --remove-port=8080-8081/tcp
使用命令加载设置firewall-cmd --reload
新增一个zone,如新增 k8s,新增的配置文件会存放在 /etc/firewalld/zones 目录下
firewall-cmd --new-zone=k8s --permanent
将网络接口eth0 添加到k8s zones,一个zone 可以添加多个网络接口,但是一个网络接口只能加入一个 zone(一定要加ssh服务)
firewall-cmd --zone=k8s --add-interface=eth0
如网络接口 eth0 已经存在其他zone,首先查找eth0 接口当前在那个zone(假设查询在 publich zone),然后将 eth0 接口从所在的 zone 删除
firewall-cmd --get-zone-of-interface=eth0 firewall-cmd --zone=public --remove-interface=eth0
查看开启的端口和服务
firewall-cmd --permanent --zone=public --list-services //服务空格隔开 例如 dhcpv6-client https ss firewall-cmd --permanent --zone=public --list-ports //端口空格隔开 例如 8080-8081/tcp 8388/tcp 80/tcp
设置某个ip 访问某个服务
firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="192.168.0.4/24" service name="http" accept"
ip 192.168.0.4/24 访问 http
删除上面设置的规则
firewall-cmd --permanent --zone=public --remove-rich-rule="rule family="ipv4" source address="192.168.0.4/24" service name="http" accept"
检查设定是否生效
iptables -L -n | grep 21 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:21 ctstate NEW
执行命令firewall-cmd --list-all
显示:
public (default) interfaces: sources: services: dhcpv6-client ftp ssh ports: masquerade: no forward-ports: icmp-blocks: rich rules:
查询服务的启动状态
firewall-cmd --query-service ftp yes firewall-cmd --query-service ssh yes firewall-cmd --query-service samba no firewall-cmd --query-service http no
自行加入要开放的 Port
firewall-cmd --add-port=3128/tcp firewall-cmd --list-all public (default) interfaces: sources: services: dhcpv6-client ftp ssh ports: 3128/tcp masquerade: no forward-ports: icmp-blocks: rich rules: