Firewalld

1.firewalld概述
动态防火墙后台程序 firewalld 提供了一个 动态管理的防火墙,用以支持网络 “ zones” ,以分配对一个网络及其相关链接和界面一定程度的信任。它具备对 IP v4 和 IP v6 防火墙设置的支持。它支持以太网桥,并有分离运行时间和永久性配置选择。它还具备一个通向服务或者应用程序以直接增加防火墙规则的接口。
系统提供了图像化的配置工具firewall-config、system-config-firewall, 提供命令行客户端firewall-cmd, 用于配置 firewalld永久性或非永久性运行时间的改变:它依次用 iptables工具与执行数据包筛选的内核中的 Netfilter通信。
firewalld和iptables service 之间最本质的不同是:
1.iptables service 在 /etc/sysconfig/iptables 中储存配置,而 firewalld将配置储存在/usr/lib/firewalld/ 和 /etc/firewalld/ 中的各种XML文件里.
2. 使用 iptables service每一个单独更改意味着清除所有旧有的规则和从/etc/sysconfig/iptables里读取所有新的规则,然而使用 firewalld却不会再创建任何新的规则;仅仅运行规则中的不同之处。因此,firewalld可以在运行时间内,改变设置而不丢失现行连接

2.工作方式
Firewalld_第1张图片

3.网络区
基于用户对网络中设备和交通所给与的信任程度,防火墙可以用来将网络分割成不同的区域。
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( 丢弃 )任何接收的网络数据包都被丢弃,没有任何回复

4.防火墙的配置
yum install -y firewalld firewall-config -y ##安装防火墙软件
systemctl start firewalld ##启动和禁用防火墙
systemctl enable firewalld ##开机启动

常用命令
firewall-cmd –state ##查看firewalld的状态
firewall-cmd –get-active-zones ##查看当前活动的区域,并附带一个目前分配给它们的接口列表
firewall-cmd –get-default-zone ##查看默认区域
firewall-cmd –get-zones ##查看所有可用区域

firewall-cmd –zone=public –list-all ##列出指定域的所有设置
输出格式是:

interfaces: ..
services: ..
ports: ..
forward-ports: ..
icmp-blocks: ....

firewall-cmd –get-services ##列出所有预设服务
firewall-cmd –list-all-zones ##列出所有区域的设置
firewall-cmd –set-default-zone=public ##设置默认区域
firewall-cmd –permanent –zone=internal –add-source=172.25.0.0/24 ##设置网络地址到指定的区域
(–permanent参数表示永久生效设置,如果没有指定–zone参数,那么会加入默认区域)
firewall-cmd –permanent –zone=internal –remove-source=172.25.0.0/24 ##删除指定区域中的网路地址

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=http ##添加服务
firewall-cmd –permanent –zone=public –remove-service=http ##删除服务

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目录下的内容是不可以被编辑的,但可以用做默认模板。

5.多语言命令
在这个部分,所有命令都必须以 root 用户身份运行。
语法结构:
Firewalld_第2张图片

source
指定源地址,可以是一个ipv4/ipv6的地址或网段,不支持使用主机名。
destination
指定目的地址,用法和source相同。
service
服务名称是 f irewalld 提供的其中一种服务。要获得被支持的服务的列表,输入以下命令:
firewall-cmd –get-services 。命令为以下形式:
service name= service_name
port
端口既可以是一个独立端口数字,又或者端口范围,例如,5060-5062。协议可以指定为 tcp 或
udp 。命令为以下形式:
port port= number_or_range protocol= protocol
protocol
协议值可以是一个协议 ID 数字,或者一个协议名。预知可用协议,请查阅 /etc/protocols。
命令形式:protocol value= protocol_name_or_ID
icmp-block
用这个命令阻绝一个或多个ICMP类型。IC MP 类型是 firewalld支持的ICMP类型之一。
(要获得被支持的ICMP类型列表,输入以下命令: firewall-cmd –get-icmptypes)
forward-port
从一个带有指定为 tcp 或 udp 协议的本地端口转发数据包到另一个本地端口,或另一台机器,或另一台机器上的另一个端口。port 和 to-port 可以是一个单独的端口数字,或一个端口范围。而目的地址是一个简单的 IP 地址。不允许指定动作
命令为以下形式:
forward-port port= number_or_range protocol= protocol /
to-port= number_or_range to-addr= address
log
注册含有内核记录的新连接请求到规则中,比如系统记录。

例1:
firewall-cmd –add-rich-rule=’rule family=”ipv4” source address=”172.25.254.137” accept’
##允许172.25.254.137主机所有连接。
例2:
firewall-cmd –permanent –add-rich-rule=’rule family=ipv4 source
address=172.25.254.0/24 service name=ftp accept’
##允许172.25.254.0/24网段中的主机访问ftp服务

6.地址伪装和端口转发

地址伪装:
firewall-cmd –permanent –zone=public –add-masquerade

firewall-cmd –permanent –zone=public –add-rich-rule=’rule family=ipv4 source address=172.25.254.137 masquerade’

端口转发:
firewall-cmd –permanent –zone=public –add-forward-port=
port=80:proto=tcp:toport=8080:toaddr=172.25.254.137 ## 将公共区域172.25.254.137这个ip连接的80端口的流量转发至192.168.0.1的8080端口

firewall-cmd –permanent –zone=public –add-rich-rule=’rule family=ipv4 source address=172.25.0.0/24 forward-port port=80 protocol=tcp to-port=8080’ ## 将公共区域172.25.0.0/24这个网段连接的80端口的数据转发至8080

你可能感兴趣的:(linux)