Firewalld 概述
动态防火墙后台程序 firewalld 提供了一个 动态管理的防火墙, 用以支持网络 “zones” , 以分配对一个网络及其相关链接和界面一定程度的信任。它具备对 IP v4 和 IP v6 防火墙设置的支持。它支持以太网桥, 并有分离运行时间和永久性配置选择。它还具备一个通向服务或者应用程序以直接增加防火墙规则的接口。
系统提供了图像化的配置工具 firewall-config、system-config-firewall, 提供命令行客户端 firewall-cmd, 用于配置 firewalld 永久性或非永久性运行时间的改变: 它依次用 iptables 工具与执行数据包筛选的内核中的 Netfilter 通信。
3.firewalld 和 iptables service 之间最本质的不同是:
• iptables service 在 /etc/sysconfig/iptables 中储存配置, 而 firewalld 将配置储存在 / usr/lib/firewalld/ 和 /etc/firewalld/ 中的各种 XML 文件里.
• 使用 iptables service 每一个单独更改意味着清除所有旧有的规则和从 / etc/sysconfig/iptables 里读取所有新的规则, 然而使用 firewalld 却不会再创建任何新的规则; 仅仅运行规则中的不同之处。因此, firewalld 可以在运行时间内, 改变设置而不丢失现行连接。
基于用户对网络中设备和交通所给与的信任程度, 防火墙可以用来将网络分割成不同的区域 NetworkManager 通知 firewalld 一个接口归属某个区域, 新加入的接口被分配到默认区域。
网络区名称 默认配置
trusted(信任) 可接受所有的网络连接
home(家庭) 用于家庭网络, 仅接受 ssh、mdns、ipp-client、samba-client、或 dhcpv6-client 服务连接
internal(内部) 用于内部网络, 仅接受 ssh、mdns、ipp-client、samba-client、dhcpv6-client 服务连接
work(工作) 用于工作区, 仅接受 ssh、ipp-client 或 dhcpv6-client 服务连接
public(公共) 在公共区域内使用, 仅接受 ssh 或 dhcpv6-client 服务连接, 为 firewalld 的默认区域
external(外部) 出去的 ipv4 网络连接通过此区域伪装和转发, 仅接受 ssh 服务连接
dmz(非军事区) 仅接受 ssh 服务接连
block(限制) 拒绝所有网络连接
drop(丢弃) 任何接收的网络数据包都被丢弃, 没有任何回复
管理防火墙
firewalld的启动
[root@client Desktop]# yum install firewalld firewalld-config -y
[root@client Desktop]# firewalld-config & firewalld 的图形化管理
启动和禁止防火墙
systemctl start firewalld
systemctl enable firewalld
systemctl stop firewalld
systemctl disable firewalld
使用命令行接口配置防火墙
查看 firewalld 的状态
[root@client Desktop]# firewall-cmd --state
running
查看默认网络区域
[root@client Desktop]# firewall-cmd --get-default-zone
public ##公共
查看所有可用区域
[root@client Desktop]# firewall-cmd --get-zones
ROL block dmz drop external home internal public trusted work
列出指定域(public)的所有设置
[root@client Desktop]# firewall-cmd --zone=public --list-all
public (default, active)
interfaces: eth0
sources:
services: dhcpv6-client ssh
ports:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
列出指定域(block)的所有设置
[root@client Desktop]# firewall-cmd --zone=block --list-all
block
interfaces:
sources:
services:
ports:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
列出所有区域的设置
[root@client Desktop]# firewall-cmd --list-all-zones
设置默认区域
[root@client Desktop]# firewall-cmd --set-default-zone=trusted
success
[root@client Desktop]# firewall-cmd --get-default-zone
trusted
[root@client Desktop]# firewall-cmd --get-active-zones
ROL
sources: 172.25.0.252/32
trusted ##网络区为信任
interfaces: eth0
设置网络地址到指定的区域
firewall-cmd -permanent --add-source=172.25.254.36 --zone=trusted
firewall-cmd -permanent --add-source=172.25.254.36/24 --zone=trusted
–permanent 参数表示永久生效设置
如果没有指定–zone 参数, 那么会加入默认区域
172.25.254.36(IP 指定)、172.25.254.36/24(网络位相同即可)
删除指定区域中的网络地址
firewall-cmd -permanent --remove-source=172.25.254.36 --zone=trusted
查看指定级别的接口
[root@client Desktop]# firewall-cmd --list-interfaces
eth0
查看指定接口的 Zone 信息
[root@client Desktop]# firewall-cmd --get-zone-of-interface=eth0
trusted
添加网络接口
[root@client Desktop]# firewall-cmd --add-interface=eth1 --zone=public
success
[root@client Desktop]# firewall-cmd --get-zone-of-interface=eth1
public
改变某接口至某信任等级,譬如改变 eth0 至 public
[root@client Desktop]# firewall-cmd --change-interface=eth0 --zone=public
success
[root@client Desktop]# firewall-cmd --get-zone-of-interface=eth0
public
[root@client Desktop]# firewall-cmd --get-zone-of-interface=eth1
public
删除指定接口 eth1
[root@client Desktop]# firewall-cmd --remove-interface=eth1 --zone=trusted
success
[root@client Desktop]# firewall-cmd --get-zone-of-interface=eth1
no zone
添加、改变、删除网络接口:
firewall-cmd –permanent –zone=internal –add-interface=eth0
firewall-cmd –permanent –zone=internal –change-interface=eth0
firewall-cmd –permanent –zone=internal –remove-interface=eth0
添加、删除服务:
firewall-cmd –permanent –zone=public –add-service=smtp
firewall-cmd –permanent –zone=public –remove-service=smtp
列出、添加、删除端口:
firewall-cmd –zone=public –list-ports
firewall-cmd –permanent –zone=public –add-port=8080/tcp
firewall-cmd –permanent –zone=public –remove-port=8080/tcp
重载防火墙:
firewall-cmd –reload
(注意: 这并不会中断已经建立的连接, 如果打算中断, 可以使用 –complete-reload 选项)firewalld 的规则被保存在 / etc/firewalld 目录下的文件中, 你也可以直接编辑这些文件达到配置防火墙的目的。/usr/lib/firewalld 目录下的内容是不可以被编辑的, 但可以用做默认模板。
添加、删除服务
添加
[root@client ~]# firewall-cmd --zone=public -add-service=http
success
[root@client ~]# firewall-cmd --list-all
public (default, active)
interfaces: eth0 eth1
sources:
services: dhcpv6-client http ssh
ports:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
删除
[root@client ~]# firewall-cmd --remove-service=http
success
[root@client ~]# firewall-cmd --reload ##不完全刷新
success
[root@client ~]# firewall-cmd --list-all
[root@client ~]# firewall-cmd --list-all