linux命令__firewalld

firewalld

linux命令__firewalld

1、firewalld

firewalld防火墙是centos7系统默认的防火墙管理工具取代了之前的iptables防火墙

  • 在网络层工作,包括过滤防火墙
    [En]

    working at the network layer, including filtering firewalls*

    firewalld和iptables都是用来管理防火墙的工具(属于用户状态)来定义防火墙的各种规则功能

  • 内部结构都指向netfilter网络过滤子系统(属于内状态)来实现包过滤防火墙能
    firewalld提供了支持网路区域所定义的网络链接以及接口安全等级的动态的防火墙管理工具
  • 支持ipv4、ipv6防火墙设置以及以太网桥(在某些高级服务可能会用到,如云计算)
    有两种配置模式:运行时配置和永久配置
    [En]

    There are two configuration modes: runtime configuration and permanent configuration

2、firewalld与iptables的区别

(1)作用点

iptables主要是基于接口,来设置规则,从而判断网络的安全性
firewalld是基于区域,根据不同的区域来设置不同的规则,从而判断网络的安全性。和硬件防火墙的设置相类似。
(2)储存位置

iptables在、/etc/sysconfig/iptables 中储存配置
firewalld 将配置储存在/etc/firewalld(优先加载)和/usr/bid/firewalld/(默认配置文件)中的各种XML文件里
(3)新规则的使用

使用 iptables 每一个单独更改意味着清除所有旧有的规则和从/etc/sysconfig/iptables 里读取所有新的规则
使用 firewalld 却不会再创建任何新的规则,仅仅运行规则中的不同之处。因此firewalld 可以在运行时间内,改变设置而不丢失现行连接

iptables主要是基于接口,来设置规则,从而判断网络的安全性。
firewalld是基于区域,根据不同的区域来设置不同的规则,从而保证网络的安全。与硬件防火墙的设置相类似。

iptables 在/etc/ sysconfig/iptables中储存配置.,
firewalld 将配置储存在/etc/firewalld/(优先加载)和/usr/lib/firewalld/(默认的配置文件)中的各种XM文件里。

使用iptables 每一个单独更改意味着清除所有旧有的规则和从/etc/sysconfig/iptables里读取所有新的规则。使用firewalld 却不会再创建任何新的规则,仅仅运行规则中的不同之处。因此firewalld可以在运行时间内,改变设置而不丢失现行连接。

iptables 防火墙类型为静态防火墙

firewalld 防火墙类型为动态防火墙

iptables倾向于对数据包的源/目的IP,端口,协议,出入站网卡来设置包过滤规则

filewalld对指定的网络区域设置相关过滤规则,数据包在全部指定区域的规则对包进行过滤。

Firewalls In-tables 配置文件 /usr/lib/firewalld /etc/firewalld /etc/sysconfig/iptables 对规则的修改 不需要全部刷新策略,不丢失现行连接 需要全部刷新策略,丢失连接 防火墙类型 动态防火墙 静态防火墙

3、firewalld区域的概念

  • firewalld防火墙为了简化管理,将所有网络流量分为多个区域(zone)
  • 然后根据数据包的源IP地址或传入的网络接口等条件将流量传入相应区域
  • 每个地区都定义了自己的开放或关闭的港口和服务清单。
    [En]

    each region defines its own list of ports and services that are opened or closed.*

firewalld防火墙预定了9个区域

区域名称 作用 trusted(信任区域) 允许所有的传入流量 public(公共区域) 允许与ssh或dhcpv6-client预定义服务匹配的传入流量,其余均拒绝。是新添加网络接口的默认区域。 external(外部区域) 允许与 ssh 预定义服务匹配的传入流量,其余均拒绝。 默认将通过此区域转发的IPv4传出流量将进行地址伪装,可用于为路由器启用了伪装功能的外部网络。 home(家庭区域) 允许与ssh、ipp-client、mdns、samba-client或dhcpv6-client预定义服务匹配的传入流量,其余均拒绝。 work(工作区域) 允许与 ssh、ipp-client、dhcpv6-client 预定义服务匹配的传入流量,其余均拒绝。 dmz(隔离区域也称为非军事区域) 允许与 ssh 预定义服务匹配的传入流量,其余均拒绝。 block(限制区域) 拒绝所有传入流量。 drop(丢弃区域) 丢弃所有传入流量,并且不产生包含 ICMP的错误响应。 internal(内部区域) 默认值时与home区域相同。

最终,一个区域的安全取决于管理员在该区域设置的规则。

[En]

In the end, the security of an area depends on the rules set by the administrator in this area.

该区域就像一扇进入主机的安全门,每个区域都有不同的限制,只有符合规则的车辆才能进入。

[En]

The zone is like a security door into the host, each zone has different restrictions, and only traffic that conforms to the rules is allowed to enter.

根据网络的大小,可以使用一个或多个区域,但至少需要有一个活动区域与源地址或接口相关联。

[En]

One or more areas can be used depending on the size of the network, but at least one active area needs to be associated with a source address or interface.

默认情况下,public区域是默认区域,包含所有接口(网卡)

4、firewalld数据处理流程

firewalld对于进入系统的数据包,会根据数据包的源IP地址或传入的网络接口等条件,将数据流量转入相应区域的防火墙规则。对于进入系统的数据包,首先检查的就是其源地址
firewalld检查数据包的源地址的规则:
1、若源地址关联到特定的区域(即源地址或接口绑定的区域有冲突),则执行该区域所制定的规则。
2、若源地址未关联到特定的区域(即源地址或接口绑定的区域没有冲突),则使用传入网络接口的区域并执行该区域所制定的规则。
3、若网络接口也未关联到特定的区域(即源地址或接口都没有绑定特定的某个区域),则使用默认区域并执行该区域所制定的规则。

常用参数

--get-default-zone :显示当前默认区域
--set-default-zone= :设置默认区域

--get-active-zones :显示当前正在使用的区域及其对应的网卡接口
--get-zones :显示所有可用的区域

--get-zone-of-interface= :显示指定接口绑定的区域
--zone= --add-interface= :为指定接口绑定区域
--zone= --change-interface= :为指定的区域更改绑定的网络接口
--zone= --remove-interface= :为指定的区域删除绑定的网络接口

--list-all-zones :显示所有区域及其规则
[--zone=] --list-all :显示所有指定区域的所有规则,省略--zone=时表示仅对默认区域操作

[--zone=] --list-services :显示指定区域内允许访问的所有服务
[--zone=] --add-service= :为指定区域设置允许访问的某项服务
[--zone=] --remove-service= :删除指定区域已设置的允许访问的某项服务

[--zone=] --list-ports :显示指定区域内允许访问的所有端口号
[--zone=] --add-port=[-]/ :为指定区域设置允许访问的某个/某段端口号(包括协议名)
[--zone=] --remove-port=[-]/ :删除指定区域已设置的允许访问的端口号(包括协议名)

[--zone=] --list-icmp-blocks :显示指定区域内拒绝访问的所有 ICMP 类型
[--zone=] --add-icmp-block= :为指定区域设置拒绝访问的某项 ICMP 类型
[--zone=] --remove-icmp-block= :删除指定区域已设置的拒绝访问的某项ICMP类型
firewall-cmd --get-icmptypes :显示所有 ICMP 类型

区域管理

  1. 显示当前系统中的默认区域
[root@honey~] firewall-cmd --get-default-zone
public

linux命令__firewalld
3. 显示当前正在使用的区域及对应的网卡接口
[root@honey-slave ~] firewall-cmd --get-active-zones
public
  interfaces: ens192
  1. 设置默认区域
firewall-cmd --set-default-zone=home
firewall-cmd --get-default-zone

服务管理

  1. 查看默认区域内允许访问的所有服务
[root@honey-slave ~] firewall-cmd --list-service
cockpit dhcpv6-client ssh
  1. 添加httpd服务到public区域
[root@honey-slave ~] firewall-cmd --add-service=http --zone=public
success
[root@honey-slave ~] firewall-cmd --list-service
cockpit dhcpv6-client http ssh
  1. 查看public区域已配置规则
firewall-cmd --list-all --zone=public  这条命令和上面的显示所有规则的输出一样
  1. 删除public区域的httpd服务
[root@honey-slave ~]# firewall-cmd --remove-service=http --zone=public
success
[root@honey-slave ~]# firewall-cmd --list-service
cockpit dhcpv6-client ssh

5.

firewall-cmd --add-service=http --add-service=https --permanent
firewall-cmd --reload
firewall-cmd --list-all
添加使用 --permanent选项表示设置成永久生效,需要重新启动firewalld服务或执行firewall-cmd --reload命令 重新加载防火墙规则时才会生效。若不带有此选项,表示用于设置运行时规则,但是这些规则在系统或firewalld服务重启、停止时配置将失效。

--runtime-to-permanent:将当前的运行时配置写入规则配置文件中,使之成为永久性配置。

端口管理

  1. 允许TCP的433端口到internal区域
[root@honey-slave ~]# firewall-cmd --zone=internal --add-port=443/tcp
success
[root@honey-slave ~]# firewall-cmd --list-all --zone=internal
internal
  target: default
  icmp-block-inversion: no
  interfaces:
  sources:
  services: cockpit dhcpv6-client mdns samba-client ssh
  ports: 443/tcp
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:
  1. 从internal区域将tcp的433端口移除
[root@honey-slave ~] firewall-cmd --zone=internal --remove-port=443/tcp
success
  1. 允许UDP的2048-2050端口到默认区域
[root@honey-slave ~] firewall-cmd --add-port=2048-2050/udp
success
[root@honey-slave ~] firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens192
  sources:
  services: cockpit dhcpv6-client ssh
  ports: 55210-55212/tcp 9091/tcp 80/tcp 443/tcp 9988/tcp 30100-30105/tcp 35000-36000/tcp 2048-2050/udp

其他命令

重新加载防火墙配置 firewall-cmd --reload  规则更改后必须重新加载生效

查看防火墙运行状态 firewall-cmd --state   等于#systemctl status firewalld

查看所有区域配置 firewall-cmd --list-all-zones

查看防火墙默认区域配置 firewall-cmd --list-all

查看防火墙默认区域名 firewall-cmd --get-default-zone

设置防火强默认区域 firewall-cmd --set-default-zone=public

把网卡分配给区域 firewall-cmd --zone=public --add-interface=ens32

查看指定网卡所在区域 firewall-cmd --get-zone-of-interface=ens32

更改网卡所属区域 firewall-cmd --zone=public --change-interface=ens32

应急模式管理 _** (加–permanent参数才会写入配置文件以永久生效)_ **:

拒绝所有流量 firewall-cmd --panic-on  不能轻易用

取消应急模式 firewall-cmd --panic-off(但需要重启firewalld后才可以远程ssh)

查看是否为应急模式 firewall-cmd --query-panic

linux命令__firewalld

协议添加示例 _ (加–permanent参数才会写入配置文件以永久生效)_ _ _

添加协议 firewall-cmd --add-protocol=icmp

取消协议 firewall-cmd --remove-protocol=icmp

查看添加的协议 firewall-cmd --list-protocols
[root@honey-slave ~] firewall-cmd --add-protocol=icmp
success
[root@honey-slave ~] firewall-cmd --list-protocols
icmp
[root@honey-slave ~] firewall-cmd --remove-protocol=icmp
success
[root@honey-slave ~] firewall-cmd --list-protocols

[root@honey-slave ~]#

端口流量转发示例 _ (加–permanent参数才会写入配置文件以永久生效)_ _ _

将原本访问本机888端口的流量转发到本机22端口:

[root@honey-slave ~] firewall-cmd --zone=drop --add-forward-port=port=888:proto=tcp:toport=22
success

将原本访问本机888端口的流量转发到ip为10.0.83.33的主机的22端口(需要开启masquerade):

[root@honey-slave ~] firewall-cmd --zone=drop --add-masquerade
success
[root@honey-slave ~] firewall-cmd --zone=drop --add-forward-port=port=888:proto=tcp:toport=22:toaddr=10.0.83.33
success

测试端口转发功能是否生效:在客户端尝试访问192.168.2.210主机的888端口,连上去后发现实际连接的是10.0.83.33主机,测试OK。

富规则临时添加示例 _ (加–permanent参数才会写入配置文件以永久生效)_ _ _

允许10.0.83.33和10.0.81.29主机的所有流量,以及协议为tcp,端口为2889:

[root@honey-slave ~] firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address=10.0.81.29 port protocol="tcp" port="2889" accept" --permanent
success
[root@honey-slave ~] firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address=10.0.83.33 port protocol="tcp" port="2889" accept" --permanent

允许10.0.83.33主机的icmp协议,即允许10.0.83.33主机ping:

firewall-cmd --add-rich-rule="rule family="ipv4" source address="10.0.83.33" protocol value="icmp" accept"

取消允许10.0.81.29主机的所有流量

firewall-cmd --zone=drop --remove-rich-rule="rule family="ipv4" source address="10.0.81.29" accept"

允许192.168.2.208主机访问ssh服务

firewall-cmd --zone=drop --add-rich-rule="rule family="ipv4" source address="192.168.2.208" service name="ssh" accept"

禁止192.168.2.208访问https服务,并返回错误信息:

firewall-cmd --zone=drop --add-rich-rule="rule family="ipv4" source address="192.168.2.208" service name="https" reject"

允许192.168.2.0/24网段的主机访问22端口

firewall-cmd --zone=drop --add-rich-rule="rule family="ipv4" source address="192.168.2.0/24" port protocol="tcp" port="22" accept"

允许任意地址的主机访问5601端口

firewall-cmd --zone=drop --add-rich-rule="rule family="ipv4" port  protocol="tcp" port="5601" accept"

每分钟允许2个新连接访问ftp服务

[root@honey-slave ~] firewall-cmd --add-rich-rule="rule service name=ftp limit value=2/m accept"
success
[root@honey-slave ~] firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens192
  sources:
  services: cockpit dhcpv6-client ssh
  ports: 55210-55212/tcp 9091/tcp 80/tcp 443/tcp 9988/tcp 30100-30105/tcp 35000-36000/tcp 2048-2050/udp
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:
    rule service name="ftp" accept limit value="2/m"

允许新的ipv4和ipv6连接ftp,并使用日志和审核,每分钟允许访问一次:

firewall-cmd --add-rich-rule="rule service name=ftp log limit value="1/m" audit accept"

拒绝来自192.168.2.0/24网段的连接,10秒后自动取消:

firewall-cmd --add-rich-rule="rule family=ipv4 source address=192.168.2.0/24 reject" --timeout=10

将来自192.168.2.0/24网段访问本机80端口的流量转发到本机的22端口:

firewall-cmd --zone=drop --add-rich-rule="rule family=ipv4 source address=192.168.2.0/24 forward-port port=80 protocol=tcp to-port=22"

列出当前active zone的各种属性值

firewall-cmd –list-[option]

option可以取下面的值
interfaces
sources
services
ports
protocols
forward-ports
source-ports
icmp-blocks
rich-rules

[root@honey-slave ~] firewall-cmd --list-rich-rules
rule family="ipv4" source address="10.0.83.33" port port="3888" protocol="tcp" accept
rule family="ipv4" source address="192.168.2.208" protocol value="icmp" accept
rule service name="ftp" accept limit value="2/m"
rule service name="ftp" log limit value="1/m" audit accept
[root@honey-slave ~]# firewall-cmd --list-ports
55210-55212/tcp 9091/tcp 80/tcp 443/tcp 9988/tcp 30100-30105/tcp 35000-36000/tcp 2048-2050/udp

Original: https://www.cnblogs.com/ivanlee717/p/16325854.html
Author: ivanlee717
Title: linux命令__firewalld

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/523479/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球