返回介绍

4.7. Linux 防火墙

发布于 2024-05-13 12:47:55 字数 19635 浏览 0 评论 0 收藏 0

4.7.1. 概念

众所周知,企业内网和外部公网相比,外部的公网环境更加恶劣,罪恶丛生。防火墙就是通过制定一些有顺序的规则,并管制进入到我们网域内的主机资料封包的一种机制。

  • 在公网与企业内网之间充当保护屏障的防火墙虽然有软件或硬件之分,但主要功能都是依据策略对穿越防火墙自身的流量进行过滤。防火墙策略可以基于流量的源地址、端口号、协议、应用等信息来定制,然后防火墙使用预先定制的策略规则监控出入的流量,若流量与某一条策略规则相匹配,则执行相应的处理,反之则丢弃。这样一来,就可以保证仅有合法的流量在企业内网和外部公网之间流动了。
  • 防火墙分为硬件防火墙和软件防火墙。硬件防火墙是由厂商设计好的,其作业系统主要提供封包资料的过滤机制为主,并将其他不必要的功能拿掉。软件防火墙本身就是在保护系统网络安全的一种软件(称为机制),例如 Netfilter, TCP Wrappers 都可以称为软件防火墙。
  • 目前在 RHEL-7 系统中,firewalld 防火墙取代了 iptables 防火墙。其实,iptables 与 firewalld 都不是真正的防火墙,它们都只是用来定义防火墙策略的防火墙管理工具而已,或者说,它们只是一种服务。与 Linux 内核集成的 IP 信息包过滤系统。防火墙在做数据包过滤决定时,有一套遵循和组成的规则,这些规则存储在专用的数据包过滤表中,而这些表集成在 Linux 内核中。
  • iptables 服务会把配置好的防火墙策略交由内核层面的 netfilter 网络过滤器来处理,而 firewalld 服务则是把配置好的防火墙策略交由内核层面的 nftables 包过滤框架来处理。换句话说,当前在 Linux 系统中其实存在多个防火墙管理工具,旨在方便运维人员管理 Linux 系统中的防火墙策略,我们只需要配置妥当其中的一个就足够了。虽然这些工具各有优劣,但它们在防火墙策略的配置思路上是保持一致的。
  • iptables 组件是一种工具,也称为用户空间(userspace),它使插入、修改和除去信息包过滤表中的规则变得容易。
  • Netfilter 组件也称为内核空间(kernelspace),是内核的一部分,由一些信息包过滤表组成,这些表包含内核用来控制信息包过滤处理的规则集。

4.7.2. 防火墙类别

按照防火墙管理的范围,将防火墙分为网域型与单一主机型的控管。在单一主机型的控管方面,主要的防火墙有封包过滤型的 Netfilter 与依照服务软件程式作为分析的 TCP Wrappers 两种。对于区域性防火墙而言,由于此类防火墙都是当作路由器角色,因此防火墙主要有封包过滤的 Netfilter 与利用代理服务器(proxy server) 进行存取代理的方式。

4.7.2.1. Netfilter

所谓的封包过滤,即分析进入主机的网络封包,将封包的表头信息提出来进行分析,已决定放行或禁止访问的机制。
在 Linux 上面我们使用核心内建的 Netfilter 这个机制,而 Netfilter 提供了 iptables 这个软件来作为防火墙封包过滤的指令。

4.7.2.2. TCP Wrappers

  • 通过服务器程序的外挂 (tcpd) 来处置,与封包过滤不同的是, 这种机制主要是分析谁对某程序进行存取,然后透过规则去分析该服务器程序谁能够联机、谁不能联机。
  • 与程序的名称有关,举例来说,FTP 可以启动在非正规的 port 21 进行监听,当你透过 Linux 内建的 TCP wrappers 限制 FTP 时, 那么你只要知道 FTP 的软件名称 (vsftpd) ,然后对他作限制,则不管 FTP 启动在哪个端口,都会被该规则管理的。
  • TCP wrappers 就是透过 /etc/hosts.allow, /etc/hosts.deny 来管理的一个类似防火墙的机制, 但并非所有的软件都可以透过这两个文件来控管,只有底下的软件才能够透过这两个文件来管理防火墙规则,分别是:
    • 由 super daemon (xinetd) 所管理的服务:就是配置文件在 etc/xinetd.d 里面的服务
    • 有支援 libwrap.so 模块的服务
  •  

4.7.2.3. Proxy Server

代理服务器是一种网络服务,它可以『代理』用户的需求,而代为前往服务器取得相关的资料。
一般 proxy 主机通常仅开放 port 80, 21, 20 等 WWW 与 FTP 的埠口而已,而且通常 Proxy 就架设在路由器上面,因此可以完整的掌控局域网络内的对外联机。

4.7.3. Linux 的封包过滤软件:iptables

4.7.3.1. 历史背景

在早期的 Linux 系统中,默认使用的是 iptables 防火墙管理服务来配置防火墙。尽管新型的 firewalld 防火墙管理服务已经被投入使用多年,但是大量的企业在生产环境中依然出于各种原因而继续使用 iptables。

4.7.3.2. iptables 表与规则链

iptables 的表格与相关链示意图:

iptables_02.png

iptables 预设的情况下,Linux 的 iptables 至少就有三个表格,包括管理本机进出的 filter 、管理后端主机 (防火墙内部的其他计算机) 的 nat 、管理特殊旗标使用的 mangle (较少使用) 。

  • filter:主要和主机自身有关,主要负责防火墙功能过滤本机流入流出的数据包是默认使用的 table。
    • INPUT:过滤进入主机的数据包。
    • OUTPUT:主要与我们 Linux 本机所要送出的封包有关。
    • FORWARD:负责转发流经主机但不进入本机的数据包,和 NAT table 关系很大。
  • nat:是 Network Address Translation 的缩写, 这个表格主要在进行来源与目的之 IP 或 port 的转换,主要与 Linux 主机后的局域网络内计算机有相关。
    • PREROUTING:在进行路由判断之前所要进行的规则(DNAT/REDIRECT)
    • POSTROUTING:在进行路由判断之后所要进行的规则(SNAT/MASQUERADE)
    • OUTPUT:与发送出去的封包有关
    Table 16: NAT 表
    snat地址转换
    dnat标地址转换
    pnat标端口转换
  • mangle:这个表格主要是与特殊的封包的路由旗标有关,将报文拆开来并修改报文标志位,最后封装起来。早期仅有 PREROUTING 及 OUTPUT 链,不过从 kernel 2.4.18 之后加入了 INPUT 及 FORWARD 链。


所以说,如果你的 Linux 是作为 www 服务,那么要开放客户端对你的 www 要求有响应,就得要处理 filter 的 INPUT 链; 而如果你的 Linux 是作为局域网络的路由器,那么就得要分析 nat 的各个链以及 filter 的 FORWARD 链才行。也就是说, 其实各个表格的链结之间是有关系的!简单的关系可以由下图这么看:

iptables_03.gif

从上面的图示可以看出 iptables 可以控制三种封包的流向:

  • 封包进入 Linux 主机使用资源 (路径 A): 在路由判断后确定是向 Linux 主机要求数据的封包,主要就会透过 filter 的 INPUT 链来进行控管;
  • 封包经由 Linux 主机的转递,没有使用主机资源,而是向后端主机流动 (路径 B): 在路由判断之前进行封包表头的修订作业后,发现到封包主要是要透过防火墙而去后端,此时封包就会透过路径 B 来跑动。 也就是说,该封包的目标并非我们的 Linux 本机。主要经过的链是 filter 的 FORWARD 以及 nat 的 POSTROUTING, PREROUTING。
  • 封包由 Linux 本机发送出去 (路径 C): 例如响应客户端的要求,或者是 Linux 本机主动送出的封包,都是透过路径 C 来跑的。先是透过路由判断, 决定了输出的路径后,再透过 filter 的 OUTPUT 链来传送的!当然,最终还是会经过 nat 的 POSTROUTING 链。

由于 mangle 这个表格很少被使用,如果 mangle 拿掉的话,那就容易看的多了:

iptables_04.gif

4.7.3.3. iptables 策略和语法

4.7.3.3.1. 策略

防火墙会从上至下的顺序来读取配置的策略规则,在找到匹配项后就立即结束匹配工作并去执行匹配项中定义的行为(即放行或阻止)。如果在读取完所有的策略规则之后没有匹配项,就去执行默认的策略。防火墙策略规则的设置有两种:一种是“通”(即放行),一种是“堵”(即阻止 iptables 服务把用于处理或过滤流量的策略条目称之为规则,多条规则可以组成一个规则链,而规则链则依据数据包处理位置的不同进行分类,具体如下:

  • 在进行路由选择前处理数据包(PREROUTING);
  • 处理流入的数据包(INPUT);
  • 处理流出的数据包(OUTPUT);
  • 处理转发的数据包(FORWARD);
  • 在进行路由选择后处理数据包(POSTROUTING)。

    一般来说,从内网向外网发送的流量一般都是可控且良性的,因此我们使用最多的就是 INPUT 规则链,该规则链可以增大黑客人员从外网入侵内网的难度。

    iptables 服务的术语:

    • ACCEPT(允许流量通过)
    • REJECT(拒绝流量通过,拒绝流量后再回复一条"您的信息已经收到,但是被扔掉了"),把 Linux 系统中的防火墙策略设置为 REJECT 拒绝动作后,流量发送方会看到端口不可达的响应。
    • LOG(记录日志信息)
    • DROP(拒绝流量通过,直接将流量丢弃不响应)。把 Linux 系统中的防火墙策略修改成 DROP 拒绝动作后,流量发送方会看到响应超时的提醒。但是流量发送方无法判断流量是被拒绝,还是接收方主机当前不在线。

4.7.3.3.2. 语法应用

规则的查看和清除

# iptables [-t tables] [-L] [-nv]
选项与参数:
-t :后面接 table ,例如 nat 或 filter ,若省略此项目,则使用默认的 filter
-L :列出目前的 table 的规则
-n :不进行 IP 与 HOSTNAME 的反查,显示讯息的速度会快很多!
-v :列出更多的信息,包括通过该规则的封包总位数、相关的网络接口等
// 范例:列出 filter table 三条链的规则
# iptables -L -n
Chain INPUT (policy ACCEPT) <==针对 INPUT 链,且预设政策为可接受
target     prot opt source               destination         
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:3306
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            state NEW tcp dpt:22
REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibited

Chain FORWARD (policy DROP) <==针对 FORWARD 链,且预设政策为可接受
target     prot opt source               destination         
DOCKER-USER  all  --  0.0.0.0/0            0.0.0.0/0           
DOCKER-ISOLATION-STAGE-1  all  --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            ctstate RELATED,ESTABLISHED
DOCKER     all  --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            ctstate RELATED,ESTABLISHED
DOCKER     all  --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            ctstate RELATED,ESTABLISHED
DOCKER     all  --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            ctstate RELATED,ESTABLISHED
DOCKER     all  --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT) <==针对 OUTPUT 链,且预设政策为可接受
target     prot opt source               destination         

Chain DOCKER (4 references) <==针对 DOCKER 链
target     prot opt source               destination         
ACCEPT     tcp  --  0.0.0.0/0            172.21.0.2           tcp dpt:80
ACCEPT     tcp  --  0.0.0.0/0            172.18.0.2           tcp dpt:9021

Chain DOCKER-ISOLATION-STAGE-1 (1 references)
target     prot opt source               destination         
DOCKER-ISOLATION-STAGE-2  all  --  0.0.0.0/0            0.0.0.0/0           
DOCKER-ISOLATION-STAGE-2  all  --  0.0.0.0/0            0.0.0.0/0           
DOCKER-ISOLATION-STAGE-2  all  --  0.0.0.0/0            0.0.0.0/0           
DOCKER-ISOLATION-STAGE-2  all  --  0.0.0.0/0            0.0.0.0/0           
RETURN     all  --  0.0.0.0/0            0.0.0.0/0           

Chain DOCKER-ISOLATION-STAGE-2 (4 references)
target     prot opt source               destination         
DROP       all  --  0.0.0.0/0            0.0.0.0/0           
DROP       all  --  0.0.0.0/0            0.0.0.0/0           
DROP       all  --  0.0.0.0/0            0.0.0.0/0           
DROP       all  --  0.0.0.0/0            0.0.0.0/0           
RETURN     all  --  0.0.0.0/0            0.0.0.0/0           

Chain DOCKER-USER (1 references)
target     prot opt source               destination         
RETURN     all  --  0.0.0.0/0            0.0.0.0/0

5 个检查点(内置链)

  • PREROUTING
  • INPUT
  • FORWORD
  • OUTPUT
  • POSTROUTING

说明栏

  • target:代表进行的动作, ACCEPT 是放行,而 REJECT 则是拒绝,此外,尚有 DROP (丢弃) 的项目!
  • prot:代表使用的封包协议,主要有 tcp, udp 及 icmp 三种封包格式;
  • opt:额外的选项说明;
  • source :代表此规则是针对哪个『来源 IP』进行限制;
  • destination :代表此规则是针对哪个『目标 IP』进行限制
// 范例:列出 nat table 三条链的规则
# iptables -t nat -L -n
# iptables -nvL –line-number
-L 查看当前表的所有规则,默认查看的是 filter 表,如果要查看 NAT 表,可以加上-t NAT 参数
-n 不对 ip 地址进行反查,加上这个参数显示速度会快很多
-v 输出详细信息,包含通过该规则的数据包数量,总字节数及相应的网络接口
–line-number 显示规则的序列号,这个参数在删除或修改规则时会用到
// 清空已有的防火墙规则链
# iptables -F
# iptables -X
# iptables -Z

规则配置

// 把 INPUT 规则链的默认策略设置为拒绝
$ iptables -P INPUT DROP
规则链的默认策略拒绝动作只能是 DROP,而不能是 REJECT。
//向 INPUT 链中添加允许 ICMP 流量进入的策略规则
$ iptables -I INPUT -p icmp -j ACCEPT
在日常运维工作中,经常会使用 ping 命令来检查对方主机是否在线,而向防火墙的 INPUT 规则链中添加一条允许 ICMP 流量进入的策略规则就默认允许了
这种 ping 命令检测行为。
// 删除 INPUT 规则链中刚刚加入的那条策略(允许 ICMP 流量),并把默认策略设置为允许
$ iptables -D INPUT 1
$ iptables -P INPUT ACCEPT
// 将 INPUT 规则链设置为只允许指定网段的主机访问本机的 22 端口,拒绝来自其他所有主机的流量
$ iptables -I INPUT -s 192.168.10.0/24 -p tcp --dport 22 -j ACCEPT
$ iptables -A INPUT -p tcp --dport 22 -j REJECT
// 向 INPUT 规则链中添加拒绝所有人访问本机 12345 端口的策略规则
$ iptables -I INPUT -p tcp --dport 12345 -j REJECT
$ iptables -I INPUT -p udp --dport 12345 -j REJECT
// 向 INPUT 规则链中添加拒绝 192.168.10.5 主机访问本机 80 端口(Web 服务)的策略规则
$ iptables -I INPUT -p tcp -s 192.168.10.5 --dport 80 -j REJECT
// 向 INPUT 规则链中添加拒绝所有主机访问本机 1000~1024 端口的策略规则
$ iptables -A INPUT -p tcp --dport 1000:1024 -j REJECT
$ iptables -A INPUT -p udp --dport 1000:1024 -j REJECT
// 保存防火墙策略命令,使其永久生效
$ service iptables save

4.7.4. Linux 的封包过滤软件:Firewalld

概念
Firewalld(Dynamic Firewall Manager of Linux systems, Linux 系统的动态防火墙管理器),服务是默认的防火墙配置管理工具,它拥有基于 CLI(命令行界面)和基于 GUI(图形用户界面)的两种管理方式。相较于传统的防火墙管理配置工具,firewalld 支持动态更新技术并加入了区域(zone)的概念。简单来说,区域就是 firewalld 预先准备了几套防火墙策略集合(策略模板),用户可以根据生产场景的不同而选择合适的策略集合,从而实现防火墙策略之间的快速切换。

Table 17: firewalld 中常用的区域名称及策略规则
区域默认规则策略
trusted允许所有的数据包
home拒绝流入的流量,除非与流出的流量相关;而如果流量与 ssh、mdns、ipp-client、amba-client 与 dhcpv6-client 服务相关,则允许流量
internal等同于 home 区域
work拒绝流入的流量,除非与流出的流量相关;而如果流量与 ssh、ipp-client 与 dhcpv6-client 服务相关,则允许流量
public拒绝流入的流量,除非与流出的流量相关;而如果流量与 ssh、dhcpv6-client 服务相关,则允许流量
external拒绝流入的流量,除非与流出的流量相关;而如果流量与 ssh 服务相关,则允许流量
dmz拒绝流入的流量,除非与流出的流量相关;而如果流量与 ssh 服务相关,则允许流量
block拒绝流入的流量,除非与流出的流量相关
drop拒绝流入的流量,除非与流出的流量相关

命令行管理工具(firewall-cmd)

firewall-cmd 是 firewalld 防火墙配置管理工具的 CLI(命令行界面)版本。

Table 18: firewall-cmd 命令中使用的参数以及作用
参数作用
–get-default-zone查询默认的区域名称
–set-default-zone=<区域名称>设置默认的区域,使其永久生效
–get-zones显示可用的区域
–get-services显示预先定义的服务
–get-active-zones显示当前正在使用的区域与网卡名称
–add-source=将源自此 IP 或子网的流量导向指定的区域
–remove-source=不再将源自此 IP 或子网的流量导向某个指定区域
–add-interface=<网卡名称>将源自该网卡的所有流量都导向某个指定区域
–change-interface=<网卡名称>将某个网卡与区域进行关联
–list-all显示当前区域的网卡配置参数、资源、端口以及服务等信息
–list-all-zones显示所有区域的网卡配置参数、资源、端口以及服务等信息
–add-service=<服务名>设置默认区域允许该服务的流量
–add-port=<端口号/协议>设置默认区域允许该端口的流量
–remove-service=<服务名>设置默认区域不再允许该服务的流量
–remove-port=<端口号/协议>设置默认区域不再允许该端口的流量
–reload让“永久生效”的配置规则立即生效,并覆盖当前的配置规则
–panic-on开启应急状况模式
–panic-off关闭应急状况模式

使用 firewalld 配置的防火墙策略默认为运行时(Runtime)模式,又称为当前生效模式,而且随着系统的重启会失效。如果想让配置策略一直存在,就需要使用永久(Permanent)模式了,方法就是在用 firewall-cmd 命令正常设置防火墙策略时添加–permanent 参数,这样配置的防火墙策略就可以永久生效了。但是,永久生效模式有一个“不近人情”的特点,就是使用它设置的策略只有在系统重启之后才能自动生效。如果想让配置的策略立生效,需要手动执行 firewall-cmd –reload 命令。

查看 firewalld 服务当前所使用的区域

# firewall-cmd --get-default-zone

查询 eno16777728 网卡在 firewalld 服务中的区域

# firewall-cmd --get-zone-of-interface=eno16777728

把 firewalld 服务中 eno16777728 网卡的默认区域修改为 external,并在系统重启后生效。分别查看当前与永久模式下的区域名称

# firewall-cmd --permanent --zone=external --change-interface=eno16777728
# firewall-cmd --get-zone-of-interface=eno16777728
# firewall-cmd --permanent --get-zone-of-interface=eno16777728

把 firewalld 服务的当前默认区域设置为 public

# firewall-cmd --set-default-zone=public
# firewall-cmd --get-default-zone

启动/关闭 firewalld 防火墙服务的应急状况模式,阻断一切网络连接(当远程控制服务器时请慎用)

# firewall-cmd --panic-on
# firewall-cmd --panic-off

查询 public 区域是否允许请求 SSH 和 HTTPS 协议的流量

# firewall-cmd --zone=public --query-service=ssh
# firewall-cmd --zone=public --query-service=https

把 firewalld 服务中请求 HTTPS 协议的流量设置为永久允许,并立即生效

# firewall-cmd --zone=public --add-service=https
# firewall-cmd --permanent --zone=public --add-service=https
# firewall-cmd --reload

把 firewalld 服务中请求 HTTP 协议的流量设置为永久拒绝,并立即生效:

# firewall-cmd --permanent --zone=public --remove-service=http
# firewall-cmd --reload 

把在 firewalld 服务中访问 8080 和 8081 端口的流量策略设置为允许,但仅限当前生效

# firewall-cmd --zone=public --add-port=8080-8081/tcp
# firewall-cmd --zone=public --list-ports

把原本访问本机 888 端口的流量转发到 22 端口,要且求当前和长期均有效

流量转发命令格式为:
# firewall-cmd --permanent --zone=<区域> --add-forward-port=port=<源端口号>:proto=<协议>:toport=<目标端口号>:toaddr=<目标 IP 地址>
# firewall-cmd --permanent --zone=public --add-forward-port=port=888:proto=tcp:toport=22:toaddr=192.168.10.10
# firewall-cmd --reload

firewalld 中的富规则表示更细致、更详细的防火墙策略配置,它可以针对系统服务、端口号、源地址和目标地址等诸多信息进行更有针对性的策略配置。它的优先级在所有的防火墙策略中也是最高的。比如,我们可以在 firewalld 服务中配置一条富规则,使其拒绝 192.168.10.0/24 网段的所有用户访问本机的 ssh 服务(22 端口):

$ sudo firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="192.168.10.0/24" service name="ssh" reject"

4.7.5. 服务的访问控制列表

TCP Wrappers 是 RHEL 7 系统中默认启用的一款流量监控程序,它能够根据来访主机的地址与本机的目标服务程序作出允许或拒绝的操作。换句话说,Linux 系统中其实有两个层面的防火墙,第一种是前面讲到的基于 TCP/IP 协议的流量过滤工具,而 TCP Wrappers 服务则是能允许或禁止 Linux 系统提供服务的防火墙,从而在更高层面保护了 Linux 系统的安全运行。
TCP Wrappers 服务的防火墙策略由两个控制列表文件所控制。系统将会先检查允许控制列表文件(/etc/hosts.allow),如果匹配到相应的允许策略则放行流量;如果没有匹配,则去进一步匹配拒绝控制列表文件(/etc/hosts.deny),若找到匹配项则拒绝该流量。如果这两个文件全都没有匹配到,则默认放行流量。

Table 19: TCP Wrappers 服务的控制列表文件中常用的参数
客户端类型示例满足示例的客户端列表
单一主机192.168.10.10IP 地址为 192.168.10.10 的主机
指定网段192.168.10.IP 段为 192.168.10.0/24 的主机
指定网段192.168.10.0/255.255.255.0IP 段为 192.168.10.0/24 的主机
指定 DNS 后缀.linuxprobe.com所有 DNS 后缀为.linuxprobe.com 的主机
指定主机名称www.linuxprobe.com主机名称为 www.linuxprobe.com 的主机
指定所有客户端ALL所有主机全部包括在内

在配置 TCP Wrappers 服务时需要遵循两个原则:

  • 编写拒绝策略规则时,填写的是服务名称,而非协议名称;
  • 建议先编写拒绝策略规则,再编写允许策略规则,以便直观地看到相应的效果。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文