防火墙基本原理详解

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.hqwc.cn/news/9457.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2023再更新下百度蜘蛛最新UA(User Agent)

其实百度蜘蛛的UA一直没什么变化,有不少朋友以为百度蜘蛛修改特征了,我查了下日志,把最新的UA整理出来给大家。 百度UA信息: Mozilla/5.0 (compatible; Baiduspider/2.0; http://www.baidu.com/search/spider.html) 神码ai在了…

github上传文件及其问题解决

文章目录 1. github上上传文件夹2. <filename> does not have a commit checked out3. this exceeds GitHubs file size limit of 100.00 MB4. error: src refspec master does not match any 1. github上上传文件夹 首先在github上create a new repository&#xff0c;…

线程 线程池

大屏展示 10个线程同时查询统计各个表&#xff0c;并行处理&#xff0c; 主线程 把任务投递 给 线程池&#xff0c;线程池中调出一个线程去处理 希望以一种 轻量级的 方式 实现 "i" 线程安全 &#xff1a; compareAndSwap() : 针对某个变量实现 或 -- 确保线程安全 …

使用finalshell连接Linux服务器出现的问题

第一次使用finalshell远程连接Linux服务器的过程、遇到的问题及解决方案 首先建立连接 ![在这里插入图片描述](https://img-blog.csdnimg.cn/d8836dcd8a224bf093ebdac031f763d5.png 然后问题来了 出现以下问题&#xff1a; java.net.ConnectException: Connection refused:…

一桩关于Json序列化引发的惨案(Go系统)

文章目录 前言突然崩了排查问题关于go的json库什么是反射 解决大结构体序列化的性能问题干掉大结构体减少反射使用一些好用的第三方序列化包 自定义序列化 写在最后 前言 一个风和日丽的下午&#xff0c;线上系统突然开始报警&#xff08;系统温馨提示&#xff0c;您的服务接口…

MongoDB常用操作

一、MongoDB常用操作&#xff08;一&#xff09; 1、INSERT > db.User.save({name:zhangsan,age:21,sex:true}) > db.User.find() _id组合 Objectld是、id”的默认类型。Objectld使用12字节的存储空间&#xff0c;每个字节二位十六进制数字&#xff0c;是一个24位的字…

CCF-CSP真题《202303-3 LDAP》思路+python,c++满分题解

想查看其他题的真题及题解的同学可以前往查看&#xff1a;CCF-CSP真题附题解大全 试题编号&#xff1a;202303-3试题名称&#xff1a;LDAP时间限制&#xff1a;12.0s内存限制&#xff1a;1.0GB问题描述&#xff1a; 题目背景 西西艾弗岛运营公司是一家负责维护和运营岛上基础设…

实验:验证TCP套接字传输的数据不存在数据边界

来源&#xff1a;《TCP/IP网络编程》 学习ing 自己动手&#xff0c;把坑踩一遍&#xff0c;也可以学习到很多。 Linux环境下: 客户端&#xff1a; #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <…

8.4.2 【Linux】XFS 文件系统还原 xfsrestore

xfsdump 的复原使用的是 xfsrestore 这个指令。 用 xfsrestore 观察 xfsdump 后的备份数据内容 要找出 xfsdump 的内容就使用 xfsrestore -I 来查阅即可&#xff01;不需要加任何参数&#xff01;因为 xfsdump与 xfsrestore 都会到 /var/lib/xfsdump/inventory/ 里面去捞数据来…

C/C++开发,opencv基于FileStorage读写文件介绍及示例

目录 一、FileStorage类 1.1 FileStorage类说明 1.2 FileStorage类写入说明 1.3 FileStorage类读取说明 二、FileStorage类应用示例 2.1 应用代码 2.2 工程组织&#xff08;Makefile&#xff09; 2.3 编译及测试 一、FileStorage类 1.1 FileStorage类说明 FileStorage类在ope…

Linux搭建Discuz论坛

环境&#xff1a;redhat 9 mysql 8 Discuz 3.5 题目要求&#xff1a;在 bbs.example.com 主机上创建 Discuz 论坛&#xff0c;数据库服务器使用 db.example.com 主机的 bbs 数据库实例&#xff0c;该实例由 MySQL数据库软件提供服务。 题目要求没有说是在一台虚拟机…

jenkins使用ftp工具,上传文件至服务器报错“Could not write file”

一、错误说明 使用ftp上传文件 ERROR: Exception when publishing, exception message [Could not write file. Server message: [553 Could not create file.]]11:12:45 FTP: Connecting from host [test-xxx-java-user-service-3-932ft-hsb69-t5wmf] 11:12:45 FTP: Conne…