防火墙基本原理详解

news2024/11/24 10:58:49

df4ba34f9c084dbc96271743f116ef6b.jpg


 概要

 

防火墙是可信和不可信网络之间的一道屏障,通常用在LAN和WAN之间。它通常放置在转发路径中,目的是让所有数据包都必须由防火墙检查,然后根据策略来决定是丢弃或允许这些数据包通过。例如:

b57b86bfaa8d4667acd7edf16b33f3e8.png

 如上图,LAN有一台主机和一台交换机SW1。在右侧,有一台路由器R1连接到运营商的路由器ISP1。防火墙位于两者之间,这样就可以保证LAN的安全。路由器是可选的,主要是取决于所连的WAN。例如,如果您的 ISP 提供电缆,那么您可能有一个带有以太网连接的电缆调制解调器,也可以直接连接到您的防火墙。当它是无线连接时,您可能需要那里的路由器进行连接。如果您需要配置(高级)路由,如 BGP,您就需要路由器。大多数防火墙支持一些基本路由选项:静态路由、默认路由,有时还支持 RIP、OSPF 或 EIGRP 等路由协议。

我们在这里谈论硬件防火墙。还有软件防火墙,例如 Microsoft Windows 预装的防火墙。它具有与我们的硬件防火墙类似的功能。

 

1、状态过滤

防火墙,如路由器,可以使用访问控制列表来检查源、目地址/端口号。然而,大多数路由器不会在过滤上花太多时间……当它们收到数据包时,就检查数据包的源目信息是否与访问控制列表中的条目匹配,如果匹配,它们会允许或丢弃该数据包。无论他们收到一个数据包还是数千个数据包,每个数据包都会单独处理,不进行跟踪之前是否检查过的数据包,这称为无状态过滤。

与之相反的就是,有状态过滤。防火墙会跟踪所有入向和出向的连接。例如:

  • 局域网里有台电脑,作为邮箱客户端,通过互联网去访问邮箱服务器,邮箱客户端起初会进行TCP三次握手,经过防火墙,就知道它们的源目信息,防火墙会跟踪这些信息,当邮箱服务器要进行响应客户端的请求时,防火墙就会自动允许这部分的流量通过防火墙,最终到达客户端。

  • 一个 Web 服务器位于防火墙后面,它是一个繁忙的服务器,平均每秒从不同的 IP 地址接受 20 个新的 TCP 连接。防火墙会跟踪所有连接,一旦发现每秒请求超过 10 个新 TCP 连接的源 IP 地址,它将丢弃来自该源 IP 地址的所有流量,防止 DoS(拒绝服务)。

 

2、数据包检测

大多数防火墙支持进行数据包(深度)检查。简单的访问控制列表仅能检查源、目标地址/端口,即 OSI 模型的第 3 层和第 4 层。数据包深度检查意味着防火墙可以检查 OSI 模型的第 7 层。这就意味着防火墙查看应用程序数据甚至负载:

f9f427e4e48240789ed478a8f1db813f.png上面你看到网络(IP)和传输层(TCP)被标记为红色,应用层被标记为绿色。这个示例是来自捕获web浏览器请求页面的数据包。

 

3、安全区

默认情况下,Cisco 路由器将允许并转发它们收到的所有数据包,前提是需要匹配它们的路由表中的路由。如果你想进行限制,你必须配置一些ACL。如果设备有很多接口或很多条ACL需要配置,这会成为网工的噩梦。这是一个例子:

074be27a56d94aa58e412c62e6fd38fb.png

 上面的路由器有两个入站方向ACL来阻止来自主机的一些流量。此外,还有两个ACL,来防止来自 Internet 的流量进入我们的网络。我们还可以复用一些ACL,但记得将ACL应用到四个接口。

接下来有个更好的解决方案,防火墙可以结合安全区域来工作。这是一个例子:

967607da28e2453b9d32304edf03c6a9.png上面我们有两个安全区域:

  • inside:这是LAN区域。

  • outside:这是WAN区域        接口已分配到正确的安全区域。这些区域有两个简单的规则:

  • 允许从“高”安全级域到“低”安全级别的流量。

  • 拒绝从“低”安全级别到“高”安全级别的流量。

LAN是我们信任的网络,所以具有很高的安全级别。WAN 不受信任,因此它的安全级别较低。这意味着来自从LAN去往WAN的流量将被允许。从 WAN 到 LAN 的流量将被拒绝。由于防火墙是有状态的,它会跟踪传出连接并允许其返回的流量。

如果您想例外,也可以允许从 WAN 到 LAN 的流量,这就需要通过访问控制列表来完成了。

大多数公司将拥有一台或多台服务器,这些服务器大部分是需要从 Internet来访问。如邮件服务器。为了安全,我们没有将它们放在内部(LAN),而是放在称为DMZ(非军事区)的第三个区域。看看下面的图片:

36fad66ac14f4e6398cac5574779db85.pngDMZ 安全区域的安全级别介于 INSIDE 和 OUTSIDE 之间。这意味着:

  • 允许从 INSIDE 到 OUTSIDE 的流量。

  • 允许从 INSIDE 到 DMZ 的流量。

  • 允许从 DMZ 到 OUTSIDE 的流量。

  • 从 DMZ 到 INSIDE 的流量被拒绝。

  • 从外部到 DMZ 的流量被拒绝。

  • 从外部到内部的流量被拒绝。

为确保来自 OUTSIDE 的流量能够到达 DMZ 中的服务器,我们将使用一个访问列表,该列表只允许流量流向 DMZ 中服务器使用的 IP 地址(和端口号)。此设置非常安全,如果您在 DMZ 中的其中一台服务器遭到黑客攻击,您的 INSIDE 网络仍然是安全的。

 

4、总结

您现在已经了解了防火墙的基础知识。防火墙使用状态过滤来跟踪所有入站和出站连接。他们还能够(主要看防火墙型号)检查 OSI 模型的第 7 层、应用程序的有效负载。

防火墙还使用安全区域,允许来自高安全级别的流量进入较低安全级别。从低安全级别到高安全级别的流量将被拒绝,可以使用访问控制列表进行特例处理。

 

欢迎转发点赞收藏,感谢🙏

---END---

 

 

 

 

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

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

相关文章

【业务功能篇38】上篇:Springboot+activiti7 工作流引擎 增加网关组件、Assignment分配权限

在前面的一篇文章中,简单举例了一个 工单电子流,【业务功能篇36】Springbootactiviti7 工作流引擎_studyday1的博客-CSDN博客仅有一个子任务,这种一般是针对比较简单的一个遗留问题记录场景,今天再介绍一个,相对比较复…

为什么放弃Java后,没有使用Kotlin,新的开发语言正在席卷而来

放弃Java后,没有使用Kotlin 从 Java 到Kotlin,Kotlin作为Android官方支持语言,获得了更多的关注和采用! 这几年,Kotlin的发展势头很猛,可以说由 Java 转 Kotlin 早已势不可挡。 那么Kotlin有哪些优势可以…

AI视觉赢未来|深眸科技出席元宇宙装备展,“智与质”实现双重升级

6月29日,2023昆山元宇宙国际装备展在昆山国际会展中心圆满落幕,此次展会不仅为我们呈现最先进的元宇宙装备、最前沿的元宇宙技术、最潮流的元宇宙应用,还为工业元宇宙的发展蓄势赋能。 浙江深眸科技有限公司(以下简称深眸科技&am…

数据太大了?快来试试这款地理空间数据云管理平台

四维轻云是一款网页版地理空间数据云管理平台,用户能够在线管理、浏览及分享倾斜模型(.osgb)、激光点云(.las)、正射影像(dom)、数字高程模型(dem)等数据。目前,平台具有数据管理、场景编辑、空间测量、团队协作、加密分享、素材库等功能。 项目管理 四…

【Linux】什么是文件系统及inode?如何创建软硬链接?软硬链接有什么作用?

inode软硬链接创建软硬链接理解硬链接理解软链接 inode 了解一下文件系统: Linux ext2文件系统,上图为磁盘文件系统图(内核内存映像肯定有所不同),磁盘是典型的块设备,硬盘分区被 划分为一个个的block。…

【Qt】程序异常结束。The process was ended forcefully.(解决方法不一样哦)

环境 系统:win10 64bit Qt:5.14.1 编译器:MinGW 32-bit 问题 Qt工程编译正常,但无法调试,报错:程序异常结束。The process was ended forcefully. 步骤 已尝试网上方法仍然不行的,可以直接…

为什么JDK动态代理只能代理接口?

在Java中,动态代理是一种机制,允许在运行时动态地创建代理对象来代替某个实际对象,从而在其前后执行额外的逻辑。 为什么JDK动态代理只能代理接口实现类,原因是JDK动态代理是基于接口实现的。 当你使用Proxy类创建代理对象时&am…

第一章:Linux常用命令+VIM+SSH介绍+SSH密钥登录

目录 一、Linux常用命令 1)# 与 $ 提示的区别 2)ifconfig 3) su 4) cd 5) 目录查看 6) 查看文件内容 7)创建目录及文件 8)复制和移动 9)其他 10) …

Git 上传Github 超时问题

提交代码到GitHub总是超时,偶尔会直接上传成功。 提供一下解决方案 1.首先找到网络 2. 找到代理 3. 把自动检查设置全部关闭,然后打开手动设置代理,然后输入ip地址和你代理的端口号,保存即可。 4. 最后使用git push origin mast…

多边形偏移算法【Polygon Offsetting】

在本教程中,我们将描述一种膨胀或收缩多边形的算法。 推荐:用 NSDT设计器 快速搭建可编程3D场景。 1、一般形式的同调 为了简单起见,让我们从一个形状开始,一个正方形。 我们可能熟悉通过放大或缩小形状来缩放形状的想法。 从技术…

Jmeter实现生成全局参数-随机数

我在做项目的过程中,用的比较多的是【前置处理中】-用户参数 步骤一:添加参数处理器 步骤二:填写项目中可能会用到的一些参数(固定的或者随机的都可以) teacher_name${__RandomString(1,赵钱孙李周吴郑王冯陈褚卫蒋沈…

Python指定函数参数和返回值的类型

先看一个简单的示例: # name指定为str类型,返回值为str类型 def greeting(name: str) -> str:return hello: nameif __name__ __main__:print(函数参数类型、返回值类型基本使用)s greeting(张三)print(s)try:s greeting(123) # 可以传递其他类…

学习网页设计html个人总结

学习网页设计html个人总结篇一 我在网上进行的逻辑教学工作已经完成了,闲暇无事之余,便想将个人的主页——《思东书屋》重新进行一下规划和设计,为此购买了几本有关网页设计和制作的书籍,开始学习网页的基本语言HTML。尽管网页制作…

postgresql 数据库 索引 介绍

postgresql 数据库 索引 介绍 文章目录 postgresql 数据库 索引 介绍前言一 什么是索引?二 简介三 索引的种类B-treeHash索引GiST索引GIN 索引BRIN 索引SP-GiST索引 CREATE INDEX1.大纲2.描述3. 参数UNIQUECONCURRENTLYIF NOT EXISTSINCLUDEnameONLYmethodcolumn_na…

Mysql之账号管理、建库以及四大引擎详解

目录 一、MySql数据库引擎 1.1 什么是数据库引擎? 1.2 MySQL常见数据库引擎 1.2.1.InnoDB(MySQL默认引擎) 1.2.2.MyISAM 1.2.3.MEMORY(Heap) 1.3 存储引擎查看 二、建库 2.1.默认数据库介绍 2.2.建库 2.3.查看数据库 2.4.删除数…

【嵌入式Qt开发入门】如何使用Qt进行文本读写——QFile读写文本

在很多时候我们需要读写文本文件进行读写,比如写个 Mp3 音乐播放器需要读 Mp3 歌词里的文本,比如修改了一个 txt 文件后保存,就需要对这个文件进行读写操作。本文介绍简单的文本文件读写,内容精简,让大家了解文本读写的…

linux 内核的学习

一、启动流程 二、进程调度 进程 进程控制块(pid)结构体 重要的信息 进程标识符 pid 状态:任务状态 优先级:相对其他进程 程序计数器:程序中即将被执行的下一条指令的地址 内存指针:包括程序代码…

echarts 柱状体点击空白处

点击红框里的空白区域: 再data里定义的idlist变量:idList: [800, 300, 500, 400, 800, 300, 500, 400, 800, 300, 500, 400, 800, 300,500, 400, 800, 300, 500, 400,]//以下是js代码var chartDom document.getElementById(echartsOne)this.myChart echarts.init…

数据产品经理的职业发展机会

在当今的数字时代,数据产品经理已成为许多企业中不可或缺的角色。随着越来越多的企业开始将数据应用于业务决策和产品开发中,数据产品经理的需求也不断增加。因此,学习成为一名数据产品经理成为了许多人的热门选择。下面说一说关于如何学习数…

tty(imx serial)(二)

基于linux-3.14.16 基于imx分析 一、串口设备注册 注册了一个uart设备驱动,和一个平台设备驱动 先一个一个看 1、serial_imx_driver平台设备驱动 看看匹配的设备树,imx6qdl.dtsi定义了很多,我们只看一个 如上图,设备树描述了…