APP下载

CentOS 8平台Firewalld防火墙技术研究

2022-11-24周莉

电脑知识与技术 2022年28期
关键词:IP地址网关仓库

周莉

(苏州市职业大学计算机工程学院,江苏 苏州 215000)

1 引言

互联网的出现和普及为人们的生活和工作带来了很多便利,但与此同时,网络信息安全问题也频繁出现,构建防火墙是构筑安全网络的最基本手段之一,防火墙简单易行、工作可靠、适应性强,正得到越来越广泛的应用。Red Hat于2019年9月发布CentOS 8正式版,包含更大的可伸缩性和虚拟化特性,并全面改进系统资源分配和节能。在CentOS 8系统中,Fire⁃walld防火墙取代了iptables防火墙,Firewalld提供了支持网络/防火墙区域定义网络链接,以及接口安全等级的动态防火墙管理工具,支持IPv4、IPv6防火墙设置以及以太网桥接,并且拥有运行时配置和永久配置选项[1]。

2 防火墙的类别

计算机防火墙技术是计算机安全发展中必不可少的部分。在信息安全的基础上,计算机防火墙技术能够有效防止计算机网络节点受到攻击,从而避免数据被篡改与盗窃。在现有的计算机网络安全中,防火墙技术能够帮计算机与互联网之间构建一道安全屏障,合理运用防火墙技术能够保障计算机网络正常安全运行,计算机防火墙技术能够对计算机内部与外部运行的各个模块进行安全控制,在内网与外网中发挥管控作用,有效地杜绝了计算机网络中信息数据的混淆,从而为提高网络安全性创造有利条件[2]。

3 Firewalld防火墙

Firewalld基于Linux Netfilter机制,也是CentOS 8 Stream默认的一款防火墙管理工具,它提供在特定防火墙区域定义接口安全等级和网络链接的管理功能,也支持允许服务或者应用程序直接添加防火墙规则接口的功能。

Firewalld支持动态更新技术并引入了区域的概念,区域是firewalld预先准备的防火墙策略模板,区域(Zone)定义了网络连接的可信等级,数据包要进入到内核必须通过这些zone中的一个、而不同的zone里定义的规则不一样,即信任度不一样,过滤的强度也不一样。不同区域之间是对待数据包的默认行为不同。用户可以根据不同的联网场景选择加入对应的区域,网络管理员也可将网络划分成不同的区域,制定不同区域之间访问控制策略来控制不同区域间传送的数据流。可以根据网卡所连接的网络安全性来判断到底使用哪个zone,一张网卡同时只能绑定到一个zone。firewalld配置方法主要有3种:图形化工具firewallconfig、命令行工具firewall-cmd和直接编辑xml文件。例如Web服务器不再使用默认端口80,而使用自定义的8080端口,可以通过service的配置文件进行修改:

#cp/usr/lib/firewalld/services/http.xml/etc/firewalld/services///复制模板

#vi/etc/firewalld/services/http.xml//编制配置文件

//修改服务的工作端口为8080

4 Firewalld防火墙部署设计

本文以中小型企业的防火墙部署为项目,分析中小型企业的网络需求主要是内部网络的普通主机能够安全运行并安全地访问Internet,系统管理员在内部网络中对构建企业网站的Web服务器可安全访问实现运维,企业的Web能够服务器对外开放,企业的网络结构和IP地址的分配对外保密,外部网络主机不能随意访问企业网络并无法得知企业的网络结构和IP地址分配等信息。本文部署设计主要考虑以下几个方面。

4.1 Firewalld防火墙部署拓扑结构

本文部署方案包括企业内网,企业DMZ区域和外网三种典型的网络,DMZ中搭建一台Web服务器代表企业官网,外网搭建一台Web服务器代表Internet上的常见服务器,三个网络通过网关相连接,网关上使用Firewalld架设企业防火墙,Firewalld选择三个区域分别对应三个网络,隔离区域、外部区域和信任区域。拓扑结构如图1所示。隔离区域又可称为非军事访问区,此区域内可公开访问,可以有限地进入内部网络,仅仅接收经过选择的连接,可以在隔离区域中定义特定的服务才允许被外部访问;外部区域为路由器启用了伪装功能的外部网,不能信任来自网络的其他计算,只接收经过选择的连接;信任区域允许所有网络通信通过,是最被信任的,即使没有设置任何服务,通信也是被允许的。

图1 firewalld防火墙部署拓扑结构图

4.2 管理员如何进行部署管理

管理员通过SSH进行管理,SSH为Secure Shell Client的缩写,是一种基于传输层和应用层上的安全协议,由于SSH对远程传输过程中的信息进行了数据加密,因此SSH可以解决数据在网络上明文传输的问题,有效地避免数据在传输过程中被监听或截取,客户端可安全地远程管理网络设备或服务器。管理员通过SSH来远程管理,通过切换SSH侦听端口是保护Linux服务器上远程登录的一种简单而有效方法[3],可将SSH的默认端口22改为30000。

4.3 其他安全考虑

在设置防火墙规则时考虑企业网络的安全需求,主要包括禁止网络上的主机ping防火墙,DMZ中的Web服务器拒绝ping,安装SSL模块,Web服务器只支持https访问,过滤未加密的HTTP流量;内网主机通过网关访问外网,同时网关防火墙对内网数据进行地址转换,NAT是指为了实现内外网络之间的通信而将IP数据报中的一个IP地址转换为另一个IP地址的过程[4].NAT技术在客观上屏蔽了企业内部网络的真实IP地址,一定程度上保护了内部网络不受到外部网络的主动攻击[5],CentOS 8中firewalld自动进行源地址转换,将内网地址转换为外网地址,实现隐藏内部IP的作用;firewalld也可以实现目的地址替换,当外网主机访问DMZ中主机时,浏览器中输入的IP地址是网关的外网地址,网关防火墙会将目标地址替换为DMZ中的Web服务器,从而实现隐藏DMZ中服务器IP地址的作用。

5 Firewalld防火墙部署应用

5.1 网络搭建

通过VMware Workstations工具搭建网络环境,创建三个虚拟网络,以模拟企业网络环境,三个网络通过网关相连,创建4台虚拟机,安装CentOS 8 Stream系统,其中作为网关的虚拟机是一台三网卡主机,为这4台虚拟机配置如表1所示的静态IP地址。

表1 Firewalld防火墙部署主机配置表

5.2 软件仓库的建立

在本实验中使用yum软件仓库安装软件,yum安装可以使用本地yum源或者网络源,本地访问CentOS官方网站速度较为缓慢,通过互联网搜索得知国内较为常用的镜像站[6]:mirrors.163.com,但为了保证yum仓库源的稳定和可靠,采用配置本地yum仓库源的方式解决问题,CentOS 8以上附带2个软件存储库:BaseOS和AppStream(应用程序流),其中BaseOS存储库由存在最小操作系统所需的必需软件包组成,App⁃Stream包括其余的软件包,这两个软件存储库存放在光盘根目录的BaseOS和AppStream目录中,为了保证需要的软件包能正确安装我们配置了两个yum源,这两部分内容你可以放到一个文件里,也可以分别放在两个文件中,配置yum软件仓库的步骤如下。

第1步:使用【cd/etc/yum.repos.d/】命令进入yum软件仓库的配置文件目录;

第2步:备份默认Yum配置文件,在修改配置文件之前,先备份要修改的文件;

第3步:使用【vim centos8.repo】命令创建一个名为centos8.repo的新配置文件,新建的文件必须以.repo为后缀,逐项写入以下配置参数并保存退出:

[cs-media-BaseOS]#yum软件仓库唯一标识符,避免与其他仓库冲突

name=BaseOS#yum软件仓库的名称描述,存放最小操作系统所需的必需软件

baseurl=file:///mnt/cdrom/BaseOS

//提供的方式包括FTP(ftp://..)、HTTP(http://..)、本地(file:///),指定本地yum源

gpgcheck=0

enabled=1

[cs-media-AppStream]#yum软件仓库唯一标识符,避免与其他仓库冲突

name=AppStream #yum软件仓库的名称描述,其他软件

baseurl=file:///mnt/cdrom/AppStream

//提供的方式包括FTP(ftp://..)、HTTP(http://..)、本地(file:///),指定本地有

gpgcheck=0 #设置此源是否校验文件,1为校验,0为不校验。

enabled=1#设置此源是否可用,1为可用,0为禁用

第4步:按配置参数的路径挂载光盘,使用【mount/dev/cdrom//media/cdrom/】命令。挂载成功后可以通过【ls/mnt/】命令在/mnt目录下看到光盘中的文件。

第5步:使用【yum list】命令查看当前的yum源。

5.3 DMZ-Web的配置

在DMZ-Web主机上安装Apache用以搭建Web服务器,安装SSL模块并强制要求使用HTTPS访问Web,HTTPS是超文本传输协议HTTP和SSL/TLS协议的组合,它提供了web网站的安全通信需求,目前各大浏览器产商、搜索引擎公司以及相关研究组织的一系列项目与决策都推动着HTTPS的快速发展[7]。本实验中将Apache和SSL设置开机启动,编辑网站测试页,在浏览器地址栏中输入localhost或127.0.0.1测试Web服务器是否正常工作,SSH默认端口为22,更改SSH的监听端口为30000,具体步骤如下。

首先,使用软件仓库安装Apache服务器和SSL模块,通过systemctl的enable设置Web服务器开机自启动,使用systemclt命令启动httpd服务,设置网站测试页index.html的内容,确认SSL模块已安装正确并能正常使用。

# yum-y install httpd mod_ssl//安 装httpd和mod_ssl

#systemctl start httpd//启动httpd服务

#systemctl enable httpd//设置为开机自启动

#vim/var/www/html/index.html//网站测试首页

this is dmz web

//apachectl-M|grep ssl#确定安装的mod_ssl已经被启用了

ssl_module(shared)

其次,SELinux相关设置。SELinux的全称Secu⁃rity Enhance Linux,是一个集成在linux内核中的一个安全模块,可以根据需要启用或关闭它,SELinux是基于MAC强制访问机制的安全模型,也就是一个进程对具体文件访问权限是由SELinux安全策略库文件中完成定义,当一个用户运行一个程序访问文件系统资源时,通过系统资源的上下文进行区分,只有进程主体的上下文与访问对象的上下文匹配时,才能访问此资源,它适用于应用服务要求较高的Linux环境,能够防止黑客通过应用程序的漏洞来破坏操作系统环境[8]。SELinux在策略中允许SSH使用22号端口,本文将SSH的工作端口从22号端口改为30000号端口需要使用SELinux管理配置工具semanage来修改SE⁃Linux设置以允许SSH使用端口30000。

#yum provides semanage

#yum-y install policycoreutils-python//安 装se⁃manage工具

# semanage port-l|grep ssh查看登记在SE⁃Linux中是否登记SSH端口

ssh_port_t tcp 22

//可知SELinux目前仅允许SSH使用22号端口

semanage port-a-t ssh_port_t-p tcp 30000

//在Selinux中设置允许SSH使用端口30000

semanage port-l|grep ssh//再次查看登记在SELinux中是否登记SSH端口

ssh_port_t tcp 30000,22

//在SELinux中已登记SSH使用30000号tcp端口

再次,修改配置文件/etc/ssh/sshd_config,设置SSH的工作端口;

# vim/etc/ssh/sshd_config #更改SSH的侦听端口:

Port 30000//将改行前的注释符号’#‘去掉,将SSH的侦听端口改为30000

#systemctl restart sshd//重新启动SSH服务

防火墙规则配置主要包括设置默认区域为dmz,开启https服务,开放ssh所在的30000端口,拒绝ping,配置如下:

# firewall-cmd--set-default-zone=dmz//设置默认区域

#firewall-cmd--zone=dmz--add-service=https–permanent

//在DMZ区域上允许https服务通过

#firewall-cmd--zone=dmz--add-port=30000/tcp–permanent

//防火墙允许对tcp 30000端口的访问通过

#firewall-cmd --add-icmp-block=echo-request--zone=dmz–permanent

//防火墙禁止ping命令通过

防火墙配置后,需要重新加载firewalld配置,并查看所有的配置是否生效,配置如下:

#firewall-cmd–reload

5.4 网关的设置

为网关主机添加三张网卡ens36、ens33和ens37,分别连接外网、内网和DMZ区域,在防火墙中设置三张网卡对应的区域并进行保存,配置如下:

#firewall-cmd--set-default-zone=external//设置默认区域为external

#firewall-cmd--change-interface=ens33--zone=trusted

//将ens33添加到external区域

#firewall-cmd--change-interface=ens37--zone=dmz//将ens37添加到dmz区域

#firewall-cmd--runtime-to-permanent//将当前配置保存到文件中

区域配置完成后,更改SSH的侦听端口,设置Se⁃linux策略,并重启服务,将新的SSH服务端口加入防火墙配置中,将原来定义的ssh服务规则从防火墙配置中删除:

#firewall-cmd--zone=external--add-port=30000/tcp--permanent

//防火墙允许对tcp 30000端口的访问通过

#firewall-cmd--zone=external--remove-service=ssh–permanent/

/在防火墙中将SSH服务使用的22号端口禁用

配置external区域禁止ping操作,重新加载防火墙配置,使所有的防火墙配置生效,配置如下:

#firewall-cmd--zone=external--add-icmp-block=echo-request–permanent

设置源地址替换,外网主机通过访问HTTPS访问网关地址,能够访问到DMZ中的Web服务器:

#firewall-cmd--zone=external--add-forwardport=port=443:proto=tcp:toaddr=192.168.31.252

//对网关外网网卡的443(HTTPS)的访问重新定向到192.168.31.252

重新加载防火墙规则,核查规则是否都添加成功

#firewall-cmd--reload//重新加载

#firewall-cmd--list-all//显示重新加载后的防火墙规则

5.5 外网主机配置

在外网主机上使用yum工具安装Web服务器和抓包工具wireshark,配置如下:

#yum install-y httpd//安装Web服务器

#yum install-y wireshark//安装抓包工具wire⁃shark

5.6 防火墙的测试

首先,内网主机在终端中通过SSH命令行访问DMZ-Web,测试Web服务器是否正常工作;

#ssh-p30000 alice@192.168.31.252 #使用ssh命令登录192.168.31.252的30000端口,用户名为alice

alice@192.168.31.252's password:#输入alice的密码

hello,this is alice #登录成功,可以执行文件传输、下载等多种服务

Activate the web console with:systemctl enable--now cockpit.socket

Last login:Thu Mar 24 08:59:42 2022 from 192.168.30.10

$exit

logout

Connection to 192.168.31.252 closed.

其次,在内网主机和外网主机上打开浏览器用http协议访问web站点,此时失败,之后改用https成功访问,说明内网主机和外网主机必须使用HTTPS才能访问DMZ-Web站点的部署目标已实现;

再次,在外网主机上打开浏览器用https访问网关的外网地址,可以访问到DMZ中的Web服务器,说明浏览器NAT目的地址成功;

最后,观察网关NAT处理,在外网主机上安装抓包软件wireshark,启动并选择抓获tcp报文,在内网主机上访问外网web,通过wireshark抓获的tcp报文分析可以看到,内网IP报文的源地址192.168.30.10替换为202.3.3.254,说明内网隐藏网络架构的目标已实现。

6 结束语

综上所述,在互联网高速发展的时代,网络安全的重要性日益突出,防火墙作为一项基本的网络安全基础得到越来越广泛的应用,本文重点分析开源软件CentOS 8平台上的firewalld防火墙,结合中小企业典型应用提出部署方案,对Linux运维人员具有一定参考价值。

猜你喜欢

IP地址网关仓库
仓库里的小偷
填满仓库的方法
基于改进RPS技术的IPSEC VPN网关设计
四行仓库的悲壮往事
铁路远动系统几种组网方式IP地址的申请和设置
基于SNMP的IP地址管理系统开发与应用
LTE Small Cell网关及虚拟网关技术研究
消防设备
应对气候变化需要打通“网关”
一种实时高效的伺服控制网关设计