Firewalld防火墙基础

Firewalld概述

firewalld简介

firewalld 的作用是为包过滤机制提供匹配规则(或称为策略),通过各种不同的规则告诉netfilter对来自指定源,前往指定目的或具有某些协议特征的数据包采取何种处理方式。为了更加方便地组织和管理防火墙,firewald 提供了支持网络区域所定义的网络链接以及接口安全等级的动态防火墙管理工具。它支持IPv4、IPV6 防火墙设置以及以太网桥,并且拥有两种配置模式:运行时配置与永久配置。它还支持服务或应用程序直接添加防火墙规则接口。

firewalld和iptables的关系

firewalld 自身并不具备防火墙的功能,而是和 iptables 一样需要通过内核的 netfilter 来实现。也就是说 firewalld 和 iptables 一样,他们的作用都是用于维护规则,而真正使用规则干活的是内核的 netfilter,只不过 firewalld 和iptables 的结构以及使用方法不一样罢了。系统提供了图形化的配置工具 firewall-config、system-config-firewal,提供命令行客户端 firewall-cmd,用于配置 firewalld 永久性或非永久性运行时间的改变:它依次用 iptables工具与执行数据包筛选的内核中的 Netfilter通信。firewalld 和 iptables 的逻辑关系如图 1.1所示。

从图 1.1 中可以看到,iptables 服务和 firewalld 都是通过 iptables 命令与内核的 netfilter进行交互的。在 centos7 中,我们仍然可以使用iptables 命令来管理我们的防火墙。唯一不同的是当我们重启服务器或重启 firewalld 时,iptables 命令管理的规则不会自动加载,反而会被 firewalld 的规则代替。


3.firewalld与iptables service 的区别


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

Firewalld网络区域

firewalld 将所有的网络数据流量划分为多个区域,从而简化防火墙管理。根据数据包的源 IP地址或传入网络接口等条件,将数据流量转入相应区域的防火墙规则。对于进入系统的数据包,首先检查的就是其源地址。
若源地址关联到特定的区域,则执行该区域所制定的规则。
若源地址未关联到特定的区域,则使用传入网络接口的区域并执行该区域所制定的规则。
若网络接口未关联到特定的区域,则使用默认区域并执行该区域所制定的规则。
默认区域不是单独的区域,而是指向系统上定义的某个其他区域。默认情况下,默认区域是 public,但是系统管理员可以更改默认区域。以上匹配规则,按照先后顺序,第一个匹配的规则胜出。
在每个区域中都可以配置其要打开或者关闭的一系列服务或端口,firewalld 的每个预定义的区域都设置了默认打开的服务。表 1-1 中列出了 frewalld 的预定义区域说明。

Firewalld防火墙的配置方法

在 CentOS7 系统中,可以使用三种方式配置 firewalld 防火墙:
firewall-config 图形工具。
firewall-cmd 命令行工具。
/etc/firewalld/中的配置文件。
通常情况下,不建议直接编辑配置文件。所以本章我们只介绍 firewall-config 图形工具与 firewall-cmd 命令行工具的配置方法。

firewalld-config图形工具

firewall-config 图形化配置工具支持防火墙所有的特性,系统管理员可以通过它来改变系统或用户策略。通过 firewall-config 图形化配置工具,可以实现配置防火墙允许通过的服务、端口、伪装、端口转发、ICMP 过滤器等功能。在 CentOS7 系统中单击“应用程序”中的“杂项”,选择“防火墙"即可打开如图 1.2 所示的 firewall-config 工作界面,或者直接在终端中输入 firewall-config 命令也可以打开此界面。

firewall-confg 工作界面主要分为三个部分,上面是主菜单,中间是配置选项,下面是区域、服务、IPsets、ICMP 类型、直接配置、锁定白名单设置选项卡。其中,ICMP 类型、直接配置和锁定白名单选项卡只在从“查看"下拉菜单中选择之后才能看见。最底部是状态栏从左到右显示了四个信息,依次是连接状态、默认区域、锁定状态、应急模式。
firewall-config 主菜单包括四个菜单项:文件、选项、査看、帮助。其中,“选项”菜单是最重要的,主要包括以下几个选项。
重新加载防火墙:重新加载防火墙规则,当前的永久配置将变成新的运行时配置。例如,所有的当前运行的配置规则如果没有在永久配置中操作,系统重新加载后就会丢失。更改连接区域:更改网络连接的所属区域和接口。
改变默认区域:更改网络连接的默认区域。
应急模式:表示丢弃所有的数据包。
锁定:可以对防火墙的配置进行加锁,只允许白名单上的应用程序进行修改。图 1.3 中的“配置”选项包括运行时和永久两种。运行时配置为当前使用的配置规则,永久配置规则在系统或服务重启时生效。在 firewall-config 界面中主要需要了解的是区域、服务、ICMP 等设置的选项卡。

1“区域”选项卡


“区域”选项卡是一个主要设置的界面。“区域”选项卡下面还包含服务、端口、协议、源端口、伪装等一系列子选项卡。所以说,区域是服务、端口、协议、IP 伪装、ICMP 过滤等组合的意思,同时区域也可以绑定到接口和源地址。

(1)“服务"子选项卡
“服务"子选项卡可以定义区域中哪些服务是可信的,可信的服务可以被绑定到该区域的任意连接、接口和源地址访问,如图1.3所示。

(2)“端口"子选项卡
“端口"子选项卡用于设置允许访问的主机或网络访问的端口范围,如图 1.4 所示。

(3)"协议"子选项卡用于添加所有主机或网络均可访问的协议,如图 1.5 所示。

(4)"源端口"子选项卡可以添加额外的源端口或范围,连接到这台主机的所有主机或网络均可访问,如图 1.6所示。设置源端口时,可以设置某一个端口号或者是端口范围,同时还需要选择对应的 TCP 或 UDP 协议。

“伪装”子选项卡用于把私有网络地址映射到公有的IP地址,该功能目前只适用于IPv4,如图 1.7 所示。

(6)"端口转发"子选项卡可以将指定端口映射到另一个端口或其他主机的指定端口,如图1.8所示。在设置端口转发时同样需要选择协议类型,且该功能也仅支持IPV4。

7)“ICMP 过滤器”子选项卡:ICMP 主要用于在联网的计算机间发送出错信息,但也发送类似 ping 请求以及回应等信息。在“ICMP 过滤器”子选项卡中可以选择应该被拒绝的ICMP 类型,其他所有的ICMP 类型则被允许通过防火墙。默认设置是没有限制,如图1.9所示。

"区域"选项卡中除了上文中所描述的子选项卡,还有其他的子选项卡。这里仅介绍了常用的,其他的就不多做介绍了。
2.“服务”选项卡
服务是端口、协议、模块和目标地址的组合,并且“服务"选项卡只能在"永久"配置视图中修改,“运行时"配置中的服务是不可以修改的。与“区域"选项卡不同,“服务”选项卡仅包含五个子选项卡。其中,“端口”"协议”“"源端口"这些子选项卡的作用及配置方法与“区域”选项卡中的相同。
“模块"子选项卡是用于设置网络过滤的辅助模块,如图 1.10 所示。

“目标地址”子选项卡:如果某服务指定了目标地址,服务项目仅限于目标地址和类型如果 IPv4 与 IPv6 均为空,则没有限制,如图 1.11 所示。

3.改变防火墙设置
要立刻改变现在的防火墙设置,须确定当前视图设定在运行时。或者,从下拉菜单中选择永久(Permanent)如见图 1.12所示,编辑下次启动系统或者防火墙重新加载时执行的设定。
在运行时(Runtime)模式下更改防火墙的设定时,一旦您启动或者清除连接服务器的复选框,选择立即生效。在 Permanent模式下更改防火墙的设定,仅仅在重新加载防火墙或者系统重启之后生效。可以使用文件菜单下的重新加载图标,或者点击 选项菜单,选择 重新加载防火墙

4.修改默认分区
要设定一个将要被分配新接口的分区作为默认值,则启动firewall-config,从菜单栏选择选项卡,由下拉菜单中选择修改默认区域,出现默认区域窗口如图1.13所示。从给出的列表中选择您需要用的分区作为默认分区,点击确定按钮即可。

1.3.2 firewall-cmd 命令
1.firewalld 服务管理
在安装 CentOS7 系统时,会自动安装 firewalld 和图形化工具firewall-config。执行以下命令可以启动 firewalld 并设置为开机自启动状态。

如果 firewalld 正在运行,通过 systemctl status firewalld 或 firewall-cmd 命令可以查看其运行状态。

如果想要禁用 firewalld,执行以下命令即可实现。

获取预定义信息

firewal-cmd 预定义信息主要包括三种:可用的区域、可用的服务以及可用的ICMP 阻塞类型,具体的查看命令如下所示。

firewall-cmd --get-icmptypes 命令的执行结果中各种阻塞类型的含义分别如下所示。
destination-unreachable:目的地址不可达。
echo-reply:应答回应(pong)。
parameter-problem:参数问题。
redirect:重新定向。
router-advertisement:路由器通告
router-solicitation:路由器征寻。
source-quench:源端抑制。
time-exceeded:超时。
timestamp-reply:时间戳应答回应
timestamp-request:时间戳请求。

3.区域管理
使用 firewall-cmd 命令可以实现获取和管理区域,为指定区域绑定网络接口等功能。表1-2 中列出了 firewall-cmd 命令的区域管理选项说明。

具体操作如下所示。
(1)显示当前系统中的默认区域。

显示默认区域的所有规则

显示网络接口ens33对应区域

将网络接口ens33对应区域更改为internal区域

显示所有激活区域

4.服务管理
为了方便管理,firewalld 预先定义了很多服务,存放在 /usr/lib/firewalld/services/ 目录中,服务通过单个的XML配置文件来指定。这些配置文件则按以下格式命名:service-name.xml,每个文件对应一项具体的网络服务,如 ssh 服务等。与之对应的配置文件中记录了各项服务所使用的 tcp/udp 端口。在最新版本的 firewalld 中默认已经定义了70 多种服务供我们使用,对于每个网络区域,均可以配置允许访问的服务。当默认提供的服务不适用或者需要自定义某项服务的端口时,我们需要将 service 配置文件放置在/etc/firewalld/services! 日录中。service 配置具有以下优点。

通过服务名字来管理规则更加人性化。
通过服务来组织端口分组的模式更加高效,如果一个服务使用了若干个网络端口,则服务的配置文件就相当于提供了到这些端口的规则管理的批量操作快捷方式。

具体操作如下所示。
(1)为默认区域设置允许访问的服务。

(2)为internal 区域设置允许访问的服务。

5.端口管理
在进行服务配置时,预定义的网络服务可以使用服务名配置,服务所涉及的端口就会自动打开。但是,对于非预定义的服务只能手动为指定的区域添加端口。例如,执行以下操作即可实现在 internal 区域打开 443/TCP 端口。

若想实现在 internal 区域禁止 443/TCP 端口访问,可执行以下命令。

6.两种配置模式
前面提到 firewall-cmd 命令工具有两种配置模式:运行时模式(Runtime mode)表示当前内存中运行的防火墙配置,在系统或firewalld 服务重启、停止时配置将失效;永久模式(Permanent mode)表示重启防火墙或重新加载防火墙时的规则配置,是永久存储在配置文件中的。
firewall-cmd 命令工具与配置模式相关的选项有三个。
--reload:重新加载防火墙规则并保持状态信息,即将永久配置应用为运行时配置

--permanent:带有此选项的命令用于设置永久性规则,这些规则只有在重新启动firewalld 或重新加载防火墙规则时才会生效;若不带有此选项,表示用于设置运行时规则。
--runtime-to-permanent:将当前的运行时配置写入规则配置文件中,使之成为永久性配置。
1.3.3 Firewalld 防火墙案例
1.实验环境

2.需求描述
本案例需求描述如下。
禁止主机 ping 服务器
只允许 192.168.8.130 主机访问 SSH 服务
允许所有主机访问 Apache 服务
3.实验步骤(1)网络参数配置
根据图 1.14 配置基本网络参数。
(2)开启 Firewalld 防火墙

filewalld高级配置

关于iptables的知识

IP 数据包过滤系统是一种功能强大的工具,可用于添加、编辑和除去规则,这些规则是在做数据包过滤决定时,防火墙所遵循和组成的规则。这些规则存储在专用的数据包过滤表中,而这些表集成在 Linux 内核中。在数据包过滤表中,规则被分组放在我们所谓的链(chain)中。
虽然 netfilter/iptables IP 数据包过滤系统被称为单个实体,但它实际上由两个组件netfilter 和iptables 组成。
(1).netfilter 组件也称为内核空间(kernelspace),是内核的一部分,由一些数据包过滤表组成,这些表包含内核用来控制数据包过滤处理的规则集。(2).iptables 组件是一种工具,也称为用户空间(userspace),它使插入、修改和除去数据包过滤表中的规则变得容易。
iptables 包含4个表,5个链。其中表是按照对数据包的操作区分的,链是按照不同的Hook(挂钩)点来区分的,表和链实际上是netfilter的两个维度。

filewalld中理解直接规则

将 iptables 的规则插入到 firewalld 的管理区域中,这种方式写的规则叫直接规则。
将某个IP范围列入黑名单在这个例子中首先自定义了一个叫 blacklist 的链,然后将所有来自 192.168.10.0/24 的数据包都指向了这个链,最后定义了这个链的规则:首先进行记录,然后drop,记录的方法是使用“blacklisted:"前缀并且限制 1分钟记录一次。(1)创建一个黑名单,并为这个黑名单创建一个链,链名为blacklist
[root@localhost ~]# firewall-cmd --direct --permanent --add-chain ipv4 raw blacklist
(2)将来自192.168.10.0/24 的数据包指向这个链[root@localhost ~]# firewall-cmd --direct --permanent --add-rule ipv4 raW PREROUTING 0 -S192.168.10.0/24 -j blacklist
(3)每分钟记录一次日志(-m limit --limit 1/min 每分钟记录一次日志)[root@localhost ~]#t firewall-cmd --direct --permanent --add-rule ipv4 raw blacklist 0 -m limit--limit 1/min -j LoG --log-prefix "blacklisted"

(4)设置这个链的规则为 DROP[root@localhost ~]# firewall-cmd --direct --permanent --add-rule ipv4 raw blacklist 1 -jDROP
(5)重启firewalld(重启或重载后生效)[root@localhost ~]# systemctl restart firewalld
(6)查看直接规则
[root@localhost ~]# cat /etc/firewalld/direct.xml<?xml version="1.0" encoding="utf-8"?>
<direct><chain table="raw" ipv="ipv4" chain="blacklist"/><rule priority="0" table="raw" ipv="ipv4" chan="PREROUTING">-S 192.168.10.0/24-jblacklist</rule>
<rule priority="1" table="raw" ipv="ipv4" chain="blacklist">-j DROP</rule>/direct

注释:
lpv4:这个属性非常简单,表示ip的版本
table:chain 和 rule 节点中的 table 属性就是 iptables/ip6tables 中的 tablechain:chain 中的 chain 属性用于指定一个自定义链的名字,注意,不可与己有链重名;rule 中的 chain 属性既可以是内建的(也就是 iptables/ip6tables 中的五条链),也可以是在 direct 中自定义的 chain
priority:优先级,用于设置不同rue 的优先级,就像 iptables 中规则的前后顺序,数字越小优先级越高
args: rule 和 passthrough 中的 args 就是 iptables/ip6tables 中的一条具体的规则,不过他们可以使用我们自定义的 chain。
备注:用其他主机 ping它,然后查看 messages 日志文件,会看到相关的日志条目

备注:
清空直接规则
/etc/firewalld/direct.xml

使用富语言

1:什么是富语言
不需要使用 iptables 语法,而是使用高级语言配置防火墙规则的机制成为富语言。
规则排序
测试和调试
3:理解富规则命令
4:规则配置举例
(1)为认证报头协议 AH 使用新的 IPv4 和 IPv6 连接[root@localhost ~]# firewall-cmd --add-rich-rule='rule protocol value=ah accept'
(2)允许新的IPv4 和IPv6 连接 http,并使用审核每分钟记录一次[root@localhost ~]# firewall-cmd --add-rich-rule='rule service name=http log prefix=httpaccesslimit value=1/m audit accept'
注意:
开启日志记录后
[root@localhost ~]# cat /var/log/messages
Jan 14 11:27:29 192 kernel: 'httpaccess'N=ens33 OUT=MAC=00:0c:29:85:a0:bd:00:0c:29:5e:d3:72:08:00 SRC=192.168.10.102 DST=192.168.10.101LEN=60 TOS=0x00 PREC=0xO0 TTL=64 ID=60222 DF PROTO=TCP SPT=53168 DPT=80WINDOW=29200 RES=0x00 SYN URGP=0

(3)允许来自 192.168.0.0/24地址的TFTP 协议的IPv4连接,并且使用系统日志每分钟记录一次
[root@locahost ~]# firewall-cmd --add-rich='rule family="ipv4" source address="192.168.0.0/24'service name="tftp" log prefix="tftp" level="info" limit value="1/m" accept'
(4)为 RADIUS 协议拒绝所有来自 1:2:3:4:6::的新的IPv6 连接,日志前缀为“dns”,级别为info,并每分钟最多记录3次。接受来自其他发起段新的IPv6连接[root@localhost ~]# firewall-cmd .-add-rich-rule='rule family="ipv6" source address="1:2:3:6::service name="raduis" log prefix="dns" level="info" limit value="3/m" reject'
(5)将源192.168.2.2地址加入白名单,以允许来自这个源地址的所有连接[root@localhost~]#firewall-cmd--add-rich-rule='rule family="ipv4"sourceaddress="192.168.2.2" accept
(6)拒绝(删除)来自 public 区域中IP 地址为 192.168.0.11 的所有流量root@localhost ~]#firewall-cmd--zone=public -add-rich-rule='rule family=ipv4 sourceaddress=192.168.10.202/32 reject'

[root@localhost ~]# firewall-cmd--zone=public--remove-rich-rule='rule family=ipv4 sourceaddress=192.168.10.202/32 reject'
(7)丢弃来自默认区域中任何位置的所有传入的ipsecesp 协议包[root@localhost ~]# firewall-cmd --add-rich-rule='rule protocol value="esp" drop
(8)在 192.168.1.0/24 子网的 dmz 区域中,接收端口 7900--1905 的所有 TCP 包[root@locahost ~#firewall-cmd --zone=dmz -add-rich-rule='rule family=ipv4 sourceaddress=192.168.1.0/24 port port=7900-1905 protocol=tcp accept'
(9)接受从 work 区域到 ssh 的新连接,以 notice 级别且每分钟最多三条信息的方式将新连接记录到 syslog
[root@localhost ~]# firewall-cmd -zone=work --add-rich-rule='rule service name=ssh logprefix="ssh" level="notice" limit value="3/m" accept'
(10)在接下来的 5min 内,拒绝从默认区域中的子网 192.168.2.0/24 到 DNS 的新连接,并且拒绝的连接将记录到 audit 系统,且每小时最多一条消息[root@localhost ~]# firewall-cmd --add-rich-rule='rule family=ipv4 sourceaddress=192.168.2.0/24 service name=dns audit limit value="1/h" reject'--timeout=300

配置firewall防火墙的地址伪装和端口转发

实验环境

实验描述
实验需求
ens33 分配到 external 区域、ens37 分配到 trusted 区域、ens38 分配到 dmz 区域网站服务器和网关服务器通过 ssh 来远程管理,并修改端口号为 12345服务器开启 https,
web 服务器拒绝 ping,网关服务器拒绝来自互联网上的 ping公司内网用户需要通过网关服务器共享上网互联网用户需要访问 dmz 区域的 web 服务
实验过程

基本配置

1:基本环境配置按照实验 TOP 设置各个服务器网卡的|P 地址
(1)在网关服务器上配置主机名[root@localhost ~]# hostname gateway-server[root@localhost ~]# vi/etc/hostname
gateway-server
(2)开启网关服务器的路由转发功能[root@localhost ~]# vi /etc/sysctl.confnet.ipv4.ip forward=1[root@localhost ~]# sysctl -p
(3)配置 web 服务器的主机名[root@localhost ~]# vi /etc/hostnameweb

2:网站服务器环境的搭建
(1)验证 firewalld 在网站服务器上是否启动并且正常运行[root@web ~]#systemctl status firewalld
(2)安装 httpd 和 mod ssl 软件包[root@web ~]#yum install -y httpd mod ssl
(3)启用并启动 httpd 服务[root@web ~]# systemctl start httpd[root@web ~]#systemctl enable httpd
(4)创建网站首页测试页index.html[root@web ~]# vi /var/www/html/index.htmltest web
(5)更改 ssh 的监听端口,并重启服务,关闭 SELinux[root@web ~]#setenforce 0[root@web ~]# vi /etc/ssh/sshd configPort 12345
[root@web ~]# systemctl restart sshd
3:在网站服务器上配置 firewalld 防火墙(1)设置默认区域为 dmz 区域
[root@web ~]# firewall-cmd --set-default-zone=dmz

(2)为 dmz 区域打开 https 服务并添加 TCP 的 12345 端口[root@web ~]# firewall-cmd --zone=dmz --add-service=https --permanent[root@web ~]# firewall-cmd --zone=dmz --add-port=12345/tcp --permanent
(3)禁止 ping
[root@web ~]# firewall-cmd --add-icmp-block=echo-request --zone=dmz --permanent
(4)因为预定于的 ssh 服务已经更改了端口,所以要将预定于 ssh 服务移除[root@web ~]#firewall-cmd --zone=dmz --remove-service=ssh --permanent

(5)重新加载 firewalld 配置。并査看之前的配置[root@web ~]#firewall-cmd --reload[root@web ~]# firewall-cmd --list-alldmz (active)
target: defaulticmp-block-inversion: no
interfaces: ens33
sources:
services: httpsports:12345/tcp
protocols:
masquerade:no
forward-ports:
sourceports:
icmp-blocks: echo-request
rich rules:
4:在网关服务器上配置 firewalld 防火墙
(1)验证firewalld 在网关服务器上是否启动并且正在运行[root@gateway-server ~]# systemctl status firewalld

(2)设置默认区域为 external 区域,并查看配置结果[root@gateway-server ~]# firewall-cmd --set-default-zone=external[root@gateway-server~]#firewall-cmd --list-all
external (active)
target: default
icmp-block-inversion: no
interfaces: ens33 ens37 ens38
sources:
services:ssh
ports:
protocols:
masquerade: yes
forward-ports:
sourceports.icmp-blocks:rich rules:
(3)将 ens37 网卡配置到 trusted 区域,将 ens38 配置到 dmz 区域[root@gateway-server ~]# firewall-cmd --change-interface=ens37 --zone=trusted --permanent[root@gateway-server ~]# firewall-cmd --change-interface=ens38 --zone=dmz --permanent
(4)查看配置情况

[root@gateway-server ~]#firewall-cmd --get-active-zone
dmz
interfaces: ens38
external
interfaces: ens33
trusted
interfaces: ens37
(5)在企业内网测试计算机上访问网站服务器https:192.168.2.10
(6)关闭 SELinux,更改 ssh 的监听端口,并重启服务[root@gateway-server~]#setenforce 0
[root@gateway-server ~]# vi /etc/ssh/sshd config
Port 12345
[root@gateway-server ~]#systemctl restart sshd
(7)配置 external 区域添加 TCP 的 12345 端口[root@gateway-server ~]# firewall-cmd --zone=external --add-port=12345/tcp --permanent
(8)配置 external 区域移除 ssh 服务[root@gateway-server ~]# firewall-cmd --zone=external --remove-service=ssh --permanent
(9)配置 external 区域禁止 ping
[root@gateway-server ~]#firewall-cmd--zone=external--add-icmp-block=echo-request
--permanent

(10)重新加载防火墙配置
[root@gateway-server~]#firewall-cmd --reload
(11)在互联网测试机上通过 ssh 登录网关玩不接口地址的 12345 端口[root@localhost ~]# ssh -p 12345 100.1.1.10
(12)在企业内网测试机上 ssh 登录 web 网站服务器的 12345 端口[root@localhost ~]# ssh -p 12345 192.168.2.10

配置IP伪装与端口转发

1:内网用户通过网关服务器共享上网
(1)外网测试机搭建网站服务,并添加测试网页
[root@localhost ~]# hostname internet[root@localhost ~]# bash
[root@internet ~]# yum install -y httpd
[root@internet ~]#vi /var/www/html/index.htmlinternet web
[root@internet ~]#systemctl enable httpd[root@internet ~l#systemctl start httpd
[root@192 ~l# firewall-cmd --add-service=http --permanent[root@192 ~]#firewall-cmd --reload
(2)在企业内网测试机上访问外网网站,结果是可以访问的http://100.1.1.20
(3)在 dmz的网站服务器上测试,同样可以访问http://100.1.1.20

(4)查看网关服务器的 external 区域是否开启了地址伪装root@internet ~]#firewall-cmd --list-all --zone=externalexternal
target: default
icmp-block-inversion:no
interfaces:
sources:
services:ssh
ports:
protocols:
masquerade:yes
forward-ports:
sourceports:
icmp-blocks:
rich rules:
(5)源地址 192.168.1.0/24 网段的地址开启 |P 伪装
在网关服务器上关闭 external 的地址伪装,添加富规则,要求 external 区域内源地址为192.168.1.0/24 网段的地址开启地址 IP 伪装[root@gateway-server ~]# firewall-cmd --remove-masquerade --zone=external --permanent[root@gateway-server ~]# firewall-cmd --zone=external --add-rich-rule='rule family=ipv4 sourceaddress=192.168.1.0/24 masquerade'--permanent
[root@192 ~]# firewall-cmd --reload

(6)在dmz的网站服务器上测试访问外网,应该不能访问外网,但内网可以http://100.1.1.20
2:配置端口转发实现互联网用户访问内部 web 服务器(1)在网关服务器上配置端口转发
root@gateway-server~#firewall-cmd--zone=externa--add-forward-port=port=443:proto=tcp:toaddr=192.168.2.10 --permanent
(2)在互联网测试机上访问内部web 服务器,可以访问成功https://100.1.1.10
(3)端口转发也可以使用富规则,这样就可以更大程度的控制端口转发规则,如给内网白web 服务器申请了一个新的公网 ip 地址 100.1.1.15,需要将新的公网地址 100.1.1.15 配置石网关服务器的外网接口 ens33 上,作为第二个 |p 地址[root@gateway-server ~]#vi /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
BOOTPROTO=static
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR1=100.1.1.15
PREFIX1=24
IPADDRO=100.1.1.10
PREFIX=24
[root@gateway-server ~]# systemctl restart network
[root@gateway-server~]#ip add
1: lo: <LOOPBACK,UP,LOWER UP> mtu 65536 qdisc noqueue state UNKNOWN glen 1link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lo
valid lft forever preferred lft foreverinet6 ::1/128 scope host

valid lft forever preferred lft forever2: ens33: <BROADCAST,MULTICAST,UP,LOWER UP> mtu 1500 qdisc pfifo fast state Up glen 1000link/ether 00:0c:29:ae:7f:64 brd ff:ff:ff:ff:ff:ffinet 100.1.1.10/8 brd 100.255.255.255 scope global ens33valid lft forever preferred lft foreverinet 100.1.1.15/24 brd 100.1.1.255 scope global ens33
valid lft forever preferred lft forever
使用富规则配置端口转发
[root@gateway-server ~]# firewall-cmd --zone=external --add-rich-rule='rule family=ipv4destination address=100.1.1.15/32 forward-port port=443 protocol=tcp to-addr=192.168.2.10
在互联网测试机上访问,可以访问成功https://100.1.1.15

  • 33
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值