firewalld

1 firewalld的开启

systemctl stop iptables
systemctl disable iptables
systemctl mask iptables   
systemctl unmask firewalld
systemctl enable --now firewalld

切换至 firewalld 模式。

在rhel7中可以使用 firewall-config 开启图形界面进行管理。

display firewali session table verbose命令查 查看firewalld策略_ssh


rhel8中可以在firefox 中输入 localost:9090 进行web方式的管理。

2.关于firewalld的域

display firewali session table verbose命令查 查看firewalld策略_linux_02

我们默认的域为 public

名称

内容

trusted

接受所有的网络连接

home

用于家庭网络,允许接受ssh mdns ipp-client samba-client dhcp-client

work

工作网络 ssh ipp-client dhcp-client

public

公共网络 ssh dhcp-client

dmz

军级网络 ssh

block

拒绝所有

drop

丢弃 所有数据全部丢弃无任何回复

internal

内部网络 ssh mdns ipp-client samba-client dhcp-client

external

ipv4网络地址伪装转发 sshd

3.关于firewalld的设定原理及数据存储

1  /etc/firewalld      ##火墙配置目录

display firewali session table verbose命令查 查看firewalld策略_ssh_03


display firewali session table verbose命令查 查看firewalld策略_centos_04


display firewali session table verbose命令查 查看firewalld策略_centos_05


我们为火墙添加或端口或者服务的时候,就会自动更改这个文件

2    /lib/firewalld      ##火墙模块目录

display firewali session table verbose命令查 查看firewalld策略_linux_06


上述两个目录的原理可在下面管理命令中体现。

4. firewalld的管理命令

firewall-cmd --state      查看火墙状态

display firewali session table verbose命令查 查看firewalld策略_iptables_07

firewall-cmd --get-active-zones      查看当前火墙中生效的域

display firewali session table verbose命令查 查看firewalld策略_centos_08

firewall-cmd --get-default-zone      查看默认域

display firewali session table verbose命令查 查看firewalld策略_iptables_09

firewall-cmd --list-all       查看默认域中的火墙策略

display firewali session table verbose命令查 查看firewalld策略_ssh_10

firewall-cmd --list-all --zone=work      查看指定域的火墙策略

display firewali session table verbose命令查 查看firewalld策略_linux_11

firewall-cmd --set-default-zone=trusted      设定默认域

display firewali session table verbose命令查 查看firewalld策略_运维_12


这时就会自动更改 /etc/fiewalld/firewalld.conf 文件:

display firewali session table verbose命令查 查看firewalld策略_iptables_13


firewall-cmd --get-services      查看所有可以设定的服务

display firewali session table verbose命令查 查看firewalld策略_linux_14


当我们想添加一个不存在的服务时,我们更改配置文件如下:

display firewali session table verbose命令查 查看firewalld策略_linux_15


display firewali session table verbose命令查 查看firewalld策略_linux_16


重新加载后可以看出没有添加AAAA服务,因为他不存在,没有被 xml (可扩展标记语言)封装。

我们可以再 /lib/firewalld/service/ 下建立 AAAA 的封装,复制http的封装,做如下改动。

display firewali session table verbose命令查 查看firewalld策略_运维_17


重启服务后过滤一下,发现AAAA服务已经添加。

display firewali session table verbose命令查 查看firewalld策略_linux_18


display firewali session table verbose命令查 查看firewalld策略_centos_19


firewall-cmd --permanent --remove-service=AAAA     永久移除服务
firewall-cmd --reload

display firewali session table verbose命令查 查看firewalld策略_linux_20


AAAA服务已经被移除。


firewall-cmd --permanent --add-source=172.25.254.0/24 --zone=block     指定数据来源访问指定域
firewall-cmd --permanent --remove-source=172.25.254.0/24 --zone=block   删除自定域中的数据来源
firewall-cmd --reload

display firewali session table verbose命令查 查看firewalld策略_运维_21


设定完成后发现活跃的域多了 block 。

display firewali session table verbose命令查 查看firewalld策略_linux_22


我们在用 172.25.254.30主机ping 20主机时失败。


display firewali session table verbose命令查 查看firewalld策略_linux_23


两个网络接口都在public 上,这时我们的 172.25.254.30 主机可以ping通20主机的172和192两个网段

firewall-cmd --permanent --remove-interface=ens224 --zone=public    删除指定域的网络接口
firewall-cmd --permanent --add-interface=ens224 --zone=block     添加指定域的网络接口

display firewali session table verbose命令查 查看firewalld策略_iptables_24


将ens224的网络接口移动到block后,我们再次用30主机访问20主机的两个网段:

display firewali session table verbose命令查 查看firewalld策略_iptables_25


都被拒绝,因为到达172网段时被拒,所以也到不了192网段。


firewall-cmd --permanent --change-interface=ens224 --zone=public     更改网络接口到指定域

display firewali session table verbose命令查 查看firewalld策略_iptables_26


ens224接口又被指定到了public域。

display firewali session table verbose命令查 查看firewalld策略_运维_27


两个网段又可以ping通了。

5. firewalld的高级规则

firewall-cmd --direct --get-all-rules      查看高级规则
firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -s 172.25.254.0/24 -p tcp --dport 22 -j ACCEPT

只准172.25.254.0网段的人在ssh本机的时候可以连接。

display firewali session table verbose命令查 查看firewalld策略_linux_28


192网段连接失败:

display firewali session table verbose命令查 查看firewalld策略_运维_29


172网段连接成功。

6.firewalld中的NAT

SNAT

firewall-cmd --permanent --add-masquerade
firewall-cmd --reload         开启地址伪装功能。

display firewali session table verbose命令查 查看firewalld策略_linux_30


然后用172网段连接192网段:

display firewali session table verbose命令查 查看firewalld策略_iptables_31


源地址转换成功,路由功能开启。

DNAT目的地地址转换

firewall-cmd --permanent --add-forward-port=port=22:proto=tcp:toaddr=172.25.254.30
firewall-cmd --reload

display firewali session table verbose命令查 查看firewalld策略_运维_32


display firewali session table verbose命令查 查看firewalld策略_iptables_33


地址转换成功。