firewalld防火墙概念(形态、分类、区域)相关综合示例

news2024/11/17 8:26:28

目录

防火墙

概念

形态

内核态:netfilter

用户态:iptables、firewalld

防火墙分类

firewalld网络区域

区域划分

使用图形化界面配置防火墙

端口配置

协议配置

源端口配置

永久配置恢复默认防火墙规则

配置防火墙相关命令

示例

实验环境

网关基本配置

内网Web服务器基本配置

内网测试机基本配置

外网测试机基本配置

操作步骤

1:基本环境配置

(1)修改网关服务器(web服务器)的主机名

(2)开启网关服务器的路由转发功能

(3)配置内网Web服务器主机名

2:内网Web服务器环境搭建

(1)安装httpd和mod_ssl软件包

(2)启用并启动httpd服务,关闭SELinux

(3)创建网站首页测试页index.html

(4)更改ssh的4监听地址,并重启sshd服务,

3:在内网服务器上启动并配置firewalld防火墙

(1)在网站服务器上启动firewalld防火墙并将默认区域设置为dmz区域

(2)为dmz区域打开https服务机添加TCP的12345端口

(3)将预定义的ssh服务移除

(4)禁止ping

(5)重新加载firewalld配置

4:在网关服务器上配置firewalld防火墙

(1)验证firewalld在网关服务器上启动并正常运行

(2)设置默认区域为external区域,并查看配置结果

(3)将ens37网卡配置到trusted区域,将ens38网卡配置到dmz区域

(4)查看配置情况

(5)在企业内网测试计算机上访问网站服务器

(6)关闭网关服务器的SELinux,并更改ssh的监听端口,并重启服务

(7)在网关服务器上配置external区域添加TCP的12345端口

(8)在网关服务器上配置external区域移除ssh服务

(9)在网关服务器上配置external区域禁止ping

(10)在网关服务器上重新加载防火墙激活配置

(11)在外网测试计算机上通过ssh登陆网关外部接口地址的12345

(12)在内网测试计算机上ssh登陆web网站服务器的12345端口


防火墙

概念

  • 支持网络区域所定义的网络链接以及接口安全等级的动态防火墙管理工具
  • 支持IPv4、IPv6防火墙设置以及以太网桥
  • 支持服务或应用程序直接添加防火墙规则接口
  • 拥有两种配置模式
    • 运行时配置:添加的策略立即生效,不用重载防火墙,策略临时存在(重启后失效)
    • 永久配置:添加的策略需要重载防火墙才会生效,策略永远存在

形态

不管是什么防火墙,只要是在Linux中运行的防火墙,就有两种形态

  • 内核态:netfilter
    • 指的是操作系统内核运行的环境,具有最高权限和直接访问系统硬件的能力。在内核态运行的代码可以执行高级的系统操作。
    • netfilter:是Linux内核的一个框架,用于实现网络数据包的过滤和修改。它提供了对数据包进行处理的接口,可以用于实现防火墙功能、网络地址转换(NAT)等。
    • 通常netfilter被firewalld和iptables管理
  • 用户态:iptables、firewalld
    • 是指操作系统提供给应用程序运行的环境,应用程序在用户态运行,不能直接访问硬件,必须通过系统调用等方式访问操作系统提供的服务。
    • iptables:是Linux系统中一个传统的命令行工具,用于配置IPv4数据包过滤规则和网络地址转换(NAT)规则。iptables配置的规则会被netfilter在内核态中执行。
    • firewalld:是一个动态管理防火墙的工具,提供了简化配置和管理防火墙规则的方式。它作为用户态程序运行,并与内核态中的netfilter交互,实现网络安全策略。

防火墙分类

  • 包过滤防火墙:匹配数据包内的关键字,进行过滤
  • 状态话防火墙(思科、华为等设备 )

firewalld网络区域

  • 区域如同进入主机的安全门,每个区域都具有不同限制程度的规则
  • 可以使用一个或多个区域,但是任何一个活跃区域至少需要关联源地址或接口
  • 默认情况下,public区域是默认区域,包含所有接口(网卡)
区域划分
  • 阻塞区域(block):任何传入的网络数据包都将被阻止。
  • 隔离区域(DMZ):隔离区域也称为非军事区域,内外网络之间增加的一层网络,起到缓冲作用。对于隔离区域,只有选择接受传入的网络连接。
  • 丢弃区域(drop):任何传入的网络连接都被拒绝。
  • 外部区域(external):不相信网络上的其他计算机,不会损害你的计算机。只有选择接受传入的网络连接。
  • 家庭区域(home):相信网络上的其他计算机,不会损害你的计算机。
  • 内部区域(internal):信任网络上的其他计算机,不会损害你的计算机。只有选择接受传入的网络连接。
  • 公共区域(public):不相信网络上的任何计算机,只有选择接受传入的网络连接。
  • 信任区域(trusted):所有的网络连接都可以接受。
  • 工作区域(work):相信网络上的其他计算机,不会损害你的计算机。

使用图形化界面配置防火墙

实验环境:两台安装桌面的Linux虚拟机(CentOS 7),这里实验中称为201和202主机

在201主机配置 输入firewall-config命令打开防火墙配置窗口

使用yum -y install httpd命令安装测试软件包

开启该服务,并添加测试的index文件

在防火墙配置的窗口中,将http服务打开,允许http流量通过,如果不开启http服务,防火墙会过滤http流量,其他主机就无法访问到201主机的http服务

因为当前是运行时配置,所以也不需要重启防火墙

在202主机测试

202能否访问到201主机的http服务

在201主机配置

如果使用永久配置,将http服务开启后也其他主机的http流量也不能通过防火墙

所以在永久配置的方式下需要修改策略后重载防火墙,策略就永久生效了,重载后添加的策略也不会失效

在202主机测试

端口配置

在201主机配置

需要注意的是,在设置规则之前,要确定接口属于哪个区域,以及用户要访问的是哪个接口,设置对应区域

双击接口

选择区域

如果服务的端口不是默认端口,就要去指定端口号

首先关闭服务

设置端口号

来到202主机测试还是可以访问

协议配置

如果设置为允许tcp协议的流量通过

凡是用TCP协议发布的服务,用户都可以访问

测试结果:

源端口配置

源端口:指的是发送数据包的应用程序或服务使用的端口号。当数据包从发送方发送到网络时,它会携带这个源端口信息,这样接收方可以确定数据包的来源。

作用:控制网络流量,只允许特定源端口的数据包通过防火墙,或者阻止某些源端口的数据包流入网络。这种配置可以帮助限制或允许特定应用程序或服务的访问。

当防火墙过滤流量时,就去查找数据包里的源端口,如果源端口的端口号在指定的范围内,就允许通过

永久配置恢复默认防火墙规则

防火墙各个区域默认规则的存放位置在cd /usr/lib/firewalld/zones/

防火墙实时使用的规则存放在cd /etc/firewalld/zones/

在201主机配置

把配置模式修改为永久,随便允许几个服务

此时在/etc/firewalld/zones下就可以看到internal.xml文件

如果想要恢复已经修改的规则到默认的初始规则,通过cp命令将默认文件覆盖到实时文件就行了

配置防火墙相关命令

命令

说明

firewall-cmd --state

查询防火墙状态

firewall-cmd --get-zones

获取当前所有区域

firewall-cmd --get-service

获取所有能管理的服务

这里的服务都是默认端口,如果服务的端口被修改了,就不能直接管理该服务

firewall-cmd --get-default-zone

当前接口默认属于哪个区域

firewall-cmd --set-default-zone=internal

将当前接口的默认区域修改为internal

firewall-cmd --get-active-zones

查询当前被激活的区域

firewall-cmd --get-zone-of-interface=ens33

查询指定接口所在的区域

firewall-cmd --zone=dmz --list-interface

列出指定区域有哪些接口

firewall-cmd --zone=dmz --add-service=http

为指定区域添加支持的服务

firewall-cmd --zone=dmz --remove-service=http

删除该区域的指定服务的默认端口

firewall-cmd --zone=dmz --list-services

列出指定区域支持的服务

firewall-cmd --zone=dmz --add-port=80/tcp

添加端口号策略

为同一个服务添加访问端口时,要把对应部署的服务默认端口删除

firewall-cmd --zone=dmz --change-interface=ens33

修改指定接口的所在区域为dmz

firewall-cmd --zone=dmz --add-service=http --permanent

为dmz区域以永久时的方式部署http服务

firewall-cmd --zone=dmz --remove-interface=ens38

删除dmz区域的ens38接口

firewall-cmd --list-all --zone=dmz

列出指定区域的全部信息

firewall-cmd --reload

重载防火墙

示例

实验环境

准备四台Linux CentOS 7虚拟机,分别作为:内网测试机、网关(Server-PT)、内网服务器、外网测试机(Internet测试机)

根据下图的说明,将4台虚拟机的IP地址和网关都改为图中一样

网关基本配置

再为作为网关的虚拟机添加两个网卡,并将网络模式更改为下图

用ens33网卡的配置文件通过cp命令拷贝为另外两个网卡配置文件,并修改三个网卡的接口为如下IP地址

因为网卡直接不能使用相同的uuid所以在网卡配置文件内也要把uuid的行给删掉或者注释掉

如果内网测试机和内网Web服务器同时不能ping通网关,那就可能是网关服务器的VMnet1和VMnet8这两个网卡的顺序与主机里的ens36、ens37的顺序不对

把两个网卡桥接模式换一下试试,就成功了

内网Web服务器基本配置

修改该虚拟机网络模式

修改IP地址和网关

内网测试机基本配置

修改该虚拟机网络模式

修改IP地址和网关

外网测试机基本配置

修改网络模式

因为外网的主机,网关地址一定是自己私网中的网关地址,所以外网测试机只需要配置IP地址,不需要配置网关地址

操作步骤

1:基本环境配置

(1)修改网关服务器(web服务器)的主机名
hostnamectl set-hostname gateway-server bash
(2)开启网关服务器的路由转发功能

修改对应配置文件:

vim /etc/sysctl.conf

在末尾添加:

net.ipv4.ip_forward=1

使用sysctl -p命令重载内核配置文件

(3)配置内网Web服务器主机名
hostnamectl set-hostname web bash

2:内网Web服务器环境搭建

(1)安装httpd和mod_ssl软件包
yum install -y httpd mod_ssl
  • http默认端口:80
  • https默认端口:443
(2)启用并启动httpd服务,关闭SELinux
[root@localhost ~]# systemctl enable httpd [root@localhost ~]# systemctl start httpd [root@localhost ~]# setenforce 0
(3)创建网站首页测试页index.html
echo "Test Web" > /var/www/html/index.html
(4)更改ssh的4监听地址,并重启sshd服务,

打开ssh配置文件

vim /etc/ssh/sshd_config

修改端口号为12345:Port 12345

不启用DNS:UseDNS no

重启服务systemctl restart sshd

3:在内网服务器上启动并配置firewalld防火墙

(1)在网站服务器上启动firewalld防火墙并将默认区域设置为dmz区域
[root@localhost ~]# systemctl start firewalld [root@localhost ~]# systemctl enable firewalld 
[root@localhost ~]# systemctl status firewalld [root@localhost ~]# firewall-cmd --set-default-zone=dmz
(2)为dmz区域打开https服务机添加TCP的12345端口
[root@localhost ~]# firewall-cmd --zone=dmz --add-service=http --permanent
[root@localhost ~]# firewall-cmd --zone=dmz --add-service=https --permanent
[root@localhost ~]# firewall-cmd --zone=dmz --add-port=12345/tcp --permanent
(3)将预定义的ssh服务移除
[root@localhost ~]# firewall-cmd --zone=dmz --remove-service=ssh --permanent
(4)禁止ping
[root@localhost ~]# firewall-cmd --add-icmp-block=echo-request --zone=dmz --permanent
(5)重新加载firewalld配置
[root@localhost ~]# firewall-cmd --reload
success
[root@localhost ~]# firewall-cmd --list-all --zone=dmz
dmz (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens33
  sources: 
  services: http https
  ports: 12345/tcp
  protocols: 
  masquerade: no
  forward-ports: 
  sourceports: 
  icmp-blocks: echo-request
  rich rules: 

4:在网关服务器上配置firewalld防火墙

(1)验证firewalld在网关服务器上启动并正常运行
[root@localhost ~]# firewall-cmd --state running
[root@localhost ~]# systemctl enable firewalld
(2)设置默认区域为external区域,并查看配置结果

 masquerade: yes (地址伪装;把数据包里的源地址转换为公有地址,external区域默认开启此策略)

[root@localhost ~]# firewall-cmd --set-default-zone=external
success
[root@localhost ~]# firewall-cmd --list-all
external (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens33 ens37 ens38
  sources: 
  services: ssh
  ports: 
  protocols: 
  masquerade: yes (地址伪装;把数据包里的源地址转换为公有地址,external区域默认开启此策略)
  forward-ports: 
  sourceports: 
  icmp-blocks: 
  rich rules:
(3)将ens37网卡配置到trusted区域,将ens38网卡配置到dmz区域
[root@localhost ~]# firewall-cmd --change-interface=ens36 --zone=trusted --permanent
[root@localhost ~]# firewall-cmd --change-interface=ens37 --zone=dmz --permanent
(4)查看配置情况
[root@localhost ~]# firewall-cmd --get-active-zones
dmz
  interfaces: ens37
external
  interfaces: ens33
trusted
  interfaces: ens36
(5)在企业内网测试计算机上访问网站服务器
curl 192.168.2.10
(6)关闭网关服务器的SELinux,并更改ssh的监听端口,并重启服务
[root@localhost ~]# setenforce 0
[root@localhost ~]# vim /etc/ssh/sshd_config 
修改端口号为12345:Port 12345
不启用DNS:UseDNS no
# 重启服务
[root@localhost ~]# systemctl restart sshd
(7)在网关服务器上配置external区域添加TCP的12345端口
[root@localhost ~]# firewall-cmd --zone=external --add-port=12345/tcp --permanent
(8)在网关服务器上配置external区域移除ssh服务
[root@localhost ~]# firewall-cmd --zone=external --remove-service=ssh --permanent
(9)在网关服务器上配置external区域禁止ping
[root@localhost ~]# firewall-cmd --zone=external --add-icmp-block=echo-request --permanent
(10)在网关服务器上重新加载防火墙激活配置
[root@localhost ~]# 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1884323.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

谷粒商城篇章10 -- P262-P291/P295-P310 -- 订单服务(支付)【分布式高级篇七】

目录 1 页面环境搭建 1.1 静态资源上传到nginx 1.2 SwitchHosts增加配置 1.3 网关配置 1.4 订单模块基础配置 1.4.1 引入 thymeleaf 依赖 1.4.2 application.yml配置 1.4.3 bootstrap.properties配置 1.4.4 开启nacos注册发现和远程调用 1.5 修改各个页面的静态资源路…

Hadoop权威指南-读书笔记-01-初识Hadoop

Hadoop权威指南-读书笔记 记录一下读这本书的时候觉得有意思或者重要的点~ 第一章—初识Hadoop Tips: 这个引例很有哲理嘻嘻😄,道出了分布式的灵魂。 1.1 数据!数据! 这一小节主要介绍了进入大数据时代,面…

使用简鹿音频格式转换器轻松将MP3转换为WAV音频

在音频处理领域,不同的格式有其特定的应用场景。有时,我们可能需要将MP3格式的音频转换为WAV格式,以满足特定的播放或编辑需求。简鹿音频格式转换器就是一款能够帮助我们轻松实现这一转换目标的工具。 为什么选择 WAV 格式? WAV …

CentOS中使用SSH远程登录

CentOS中使用SSH远程登录 准备工作SSH概述SSH服务的安装与启动建立SSH连接SSH配置文件修改SSH默认端口SSH文件传输 准备工作 两台安装CentOS系统的虚拟机 客户机(192.168.239.128) 服务器(192.168.239.129) SSH概述 Secure S…

【RabbitMQ实战】Springboot 整合RabbitMQ组件,多种编码示例,带你实践 看完这一篇就够了

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、对RabbitMQ管理界面深入了解1、在这个界面里面我们可以做些什么? 二、编码练习(1)使用direct exchange(直连型交换机)&a…

【深圳大学算法设计与分析】 实验六 最大流应用问题 FF -> EK -> Dinic

目录 一、实验目的: 二、内容:棒球赛问题 三、实验要求 四、提交要求 ———————— 问题分析解释: ———————— 算法简解: Ford–Fulkerson 增广 Edmonds–Karp 算法 Dinic算法 Dinic和EK的区别: …

DDPM(Denoising Diffusion Probabilistic Models)

DDPM(Denoising Diffusion Probabilistic Models) 笔记来源: 1.Denoising Diffusion Probabilistic Models 2.大白话AI | 图像生成模型DDPM | 扩散模型 | 生成模型 | 概率扩散去噪生成模型 3.pytorch-stable-diffusion 扩散模型正向过程&am…

Kafka-服务端-网络层-源码流程

整体架构如下所示: responseQueue不在RequestChannel中,在Processor中,每个Processor内部有一个responseQueue 客户端发送的请求被Acceptor转发给Processor处理处理器将请求放到RequestChannel的requestQueue中KafkaRequestHandler取出reque…

易校网校园综合跑腿小程序源码修复运营版

简介: 易校网校园综合跑腿小程序源码修复运营版,带服务端客户端前端文档说明。 源码安装方法: 需要准备小程序服务号 服务器 备案域名 校园网跑腿小程序源码需要准备 1.小程序 2.服务器(推荐配置2h4g3m) 3.域名…

安卓实现微信聊天气泡

一搜没一个能用的&#xff0c;我来&#xff1a; 布局文件&#xff1a; <?xml version"1.0" encoding"utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android"http://schemas.android.com/apk/res/android"xml…

第十二章 路由器静态路由配置

实验目标 掌握静态路由的配置方法和技巧&#xff1b; 掌握通过静态路由方式实现网络的连通性&#xff1b; 熟悉广域网线缆的链接方式&#xff1b; 实验背景 学校有新旧两个校区&#xff0c; 每个校区是一个独立的局域网&#xff0c; 为了使新旧校区能够正常相互…

CTFHUB-SSRF-上传文件

通过file协议访问flag.php文件内容 ?urlfile:///var/www/html/flag.php 右键查看页面源代码&#xff0c;发现需要从内部上传一个文件这样才能正常获取到flag ?urlhttp://127.0.0.1/flag.php 发现无提交按钮&#xff0c;构造一个 <input type"submit" name&qu…

HarmonyOS开发探索:使用Snapshot Insight分析ArkTS内存问题

识别内存问题 当怀疑应用存在内存问题的时候&#xff0c;首先使用DevEco Profiler的Allocation Insight来度量内存在问题场景下的大小变化以及整体趋势&#xff0c;初步定界问题出现的位置&#xff08;Native Heap/ArkTS Heap/dev等&#xff09;。 在初步识别内存问题出现的位置…

阿里云物联网应用层开发:第二部分,云产品流转

文章目录 哔哩哔哩视频教程1、云产品流转概述2、我们需要创建多少个云产品流转&#xff1f;3、阿里云物联网平台产品云流转实现3-1 创建数据源3-2 创建数据目的3-2 创建解析器,并关联数据、编写脚本 哔哩哔哩视频教程 【阿里云物联网综合开发&#xff0c;STM32ESP8266微信小程…

2024年道路运输安全员(企业管理人员)备考题库资料。

46.危险货物道路运输随车携带的单据&#xff0c;下列选项不属于的是&#xff08;&#xff09;。 A.道路运输危险货物安全卡 B.运单或者电子运单 C.道路危险货物运输从业资格证 D.车辆检测报告 答案&#xff1a;D 47.危险货物运输驾驶人员在24小时内实际驾驶车辆时间累计不…

opengl箱子的显示

VS环境配置&#xff1a; /JMC /ifcOutput "Debug\" /GS /analyze- /W3 /Zc:wchar_t /I"D:\Template\glfwtemplate\glfwtemplate\assimp" /I"D:\Template\glfwtemplate\glfwtemplate\glm" /I"D:\Template\glfwtemplate\glfwtemplate\LearnOp…

接口测试流程及测试点!

一、什么时候开展接口测试 1.项目处于开发阶段&#xff0c;前后端联调接口是否请求的通&#xff1f;&#xff08;对应数据库增删改查&#xff09;--开发自测 2.有接口需求文档&#xff0c;开发已完成联调&#xff08;可以转测&#xff09;&#xff0c;功能测试展开之前 3.专…

ctfshow-web入门-命令执行(web75-web77)

目录 1、web75 2、web76 3、web77 1、web75 使用 glob 协议绕过 open_basedir&#xff0c;读取根目录下的文件&#xff0c;payload&#xff1a; c?><?php $anew DirectoryIterator("glob:///*"); foreach($a as $f) {echo($f->__toString(). ); } ex…

如何用大模型RAG做医疗问答系统

代码参考 https://github.com/honeyandme/RAGQnASystemhttps://github.com/LongxingTan/open-retrievals TLDR if 疾病症状 in entities and 疾病 not in entities:sql_q "match (a:疾病)-[r:疾病的症状]->(b:疾病症状 {名称:%s}) return a.名称" % (entitie…

Cosine 余弦相似度并行计算的数学原理与Python实现

背景 Cosine 我在LLM与RAG系列课程已经讲了很多次了&#xff0c;这里不在熬述&#xff0c;它在LLM分析中&#xff0c;尤其是在语义相似度的计算中至关重要&#xff0c;在dot attention机制中&#xff0c;也会看到他的身影。这里讲的是纯数学上的运算与python是如何运用相关库进…