时间:2022-10-09 12:44编辑:九州下载来源:www.wzjsgs.com
包过滤防火墙是用一个软件查看所流经的数据包的包头(header),由此决定整个包的命运。它可能会决定丢弃(DROP)这个包,可能会接受(ACCEPT)这个包(让这个包通过),也可能执行其它更复杂的动作。
在 Linux 系统下,包过滤功能是内建于核心的(作为一个核心模块,或者直接内建),同时还有一些可以运用于数据包之上的技巧,不过最常用的依然是查看包头以决定包的命运。 包过滤防火墙将对每一个接收到的包做出允许或拒绝的决定。具体地讲,它针对每一个数据包的包头,按照包过滤规则进行判定,与规则相匹配的包依据路由信息继续转发,否则就丢弃。包过滤是在 IP 层实现的,包过滤根据数据包的源 IP 地址、目的 IP 地址、协议类型(TCP 包、UDP 包、ICMP 包)、源端口、目的端口等包头信息及数据包传输方向等信息来判断是否允许数据包通过。 包过滤也包括与服务相关的过滤,这是指基于特定的服务进行包过滤,由于绝大多数服务的监听都驻留在特定 TCP/UDP 端口,因此,为阻断所有进入特定服务的链接,防火墙只需将所有包含特定 TCP/UDP 目的端口的包丢弃即可。
工作层次
包过滤是一种内置于 Linux 内核路由功能之上的防火墙类型,其防火墙工作在网络层。
工作原理
使用过滤器
数据包过滤用在内部主机和外部主机之间, 过滤系统是一台路由器或是一台主机。过滤系统根据过滤规则来决定是否让数据包通过。用于过滤数据包的路由器被称为过滤路由器。
数据包信息的过滤
数据包过滤是通过对数据包的 IP 头和 TCP 头或 UDP 头的检查来实现的,主要信息有:
* IP 源地址
* IP 目标地址
* 协议(TCP 包、UDP 包和 ICMP 包)
* TCP 或 UDP 包的源端口
* TCP 或 UDP 包的目标端口
* ICMP 消息类型
* TCP 包头中的 ACK 位
* 数据包到达的端口
* 数据包出去的端口
在 TCP/IP 中,存在着一些标准的服务端口号,例如,HTTP 的端口号为 80。通过屏蔽特定的端口可以禁止特定的服务。包过滤系统可以阻塞内部主机和外部主机或另外一个网络之间的连接,例如,可以阻塞一些被视为是有敌意的或不可信的主机或网络连接到内部网络中。
过滤策略
* 拒绝来自某主机或某网段的所有连接。
* 允许来自某主机或某网段的所有连接。
* 拒绝来自某主机或某网段的指定端口的连接。
* 允许来自某主机或某网段的指定端口的连接。
* 拒绝本地主机或本地网络与其它主机或其它网络的所有连接。
* 允许本地主机或本地网络与其它主机或其它网络的所有连接。
* 拒绝本地主机或本地网络与其它主机或其它网络的指定端口的连接。
* 允许本地主机或本地网络与其它主机或其它网络的指定端口的连接。
基本过程
下面做个简单的叙述:
(1)包过滤规则必须被包过滤设备端口存储起来。
(2)当包到达端口时,对包报头进行语法分析。大多数包过滤设备只检查 IP、TCP、或 UDP 报头中的字段。
(3)包过滤规则以特殊的方式存储。应用于包的规则的顺序与包过滤器规则存储顺序必须相同。
(4)若一条规则阻止包传输或接收,则此包便不被允许。
(5)若一条规则允许包传输或接收,则此包便可以被继续处理。
(6)若包不满足任何一条规则,则此包便被阻塞。
技术优点
→对于一个小型的、不太复杂的站点,包过滤比较容易实现。
→因为过滤路由器工作在 IP 层和 TCP 层,所以处理包的速度比代理服务器快。
→过滤路由器为用户提供了一种透明的服务,用户不需要改变客户端的任何应用程序,也不需要用户学习任何新的东西。因为过滤路由器工作在 IP 层和 TCP 层,而 IP 层和 TCP 层与应用层的问题毫不相关。所以,过滤路由器有时也被称为“包过滤网关”或“透明网关”,之所被称为网关,是因为包过滤路由器和传统路由器不同,它涉及到了传输层。
→过滤路由器在价格上一般比代理服务器便宜。
专业数据统计,95%的用户会因为[不安全]提示而放弃访问,从而给网站造成用户流失。问题就出在不安全的HTTP 明文传输协议上。2018年2月初,谷歌旗下Chrome浏览器宣布“封杀”HTTP协议的网站,并将这些网站标示为“Not Secure”(不安全)。
2023-03-03 21:141、do-while语句是一种后测试循环语句,即循环体中的代码执行后才会对退出条件进行求值。2、循环体内的代码至少执行一次。do-while的语法如下:do{ statement }while(expression)下面是一个例子:letxhs=0 do{ xhs+=2 }while(xhs<10)在上面的
2023-02-26 12:191、while语句是一种先测试循环语句,即先检测退出条件,再执行循环体内的代码。2、while循环体内的代码有可能不会执行。下面是 while 循环的语法:while(expression){ statement }实例leti=0 while(i<10){ i+=2 }在这个例子中,变量 xhs 从 0 开
2023-02-26 12:181、for语句也是先测试语句,只不过增加了进入循环之前的初始化代码.以及循环执行后要执行的表达式(loop-expression),语法如下:for(initialization;expression;loop-expression){ statement }下面是一个用例:letxhsLength=10 for(letxhs=0;xh
2023-02-26 12:17说明1、for-of语句是一种严格的迭代语句,用于遍历可迭代对象的元素。2、for-of循环将按照可迭代对象的next()方法产生值的顺序迭代元素。关于可迭代对象,请参考ES6系列的Iterator。如果尝试迭代的变量不支持迭代,for-of语句就会出错。语法:只
2023-02-26 12:16说明1、switch语句可用于所有的数据类型(在许多语言中,它只能用于数值),因此可以使用字符串甚至对象。2、条件值不一定是常量,或者是一个变量或者一个表达式。实例switch('helloxhsRookies'){ case'hello'+'xhsRookies&#
2023-02-26 12:15发布日期:2022-10-29人气:641
发布日期:2022-10-10人气:555
发布日期:2022-09-29人气:335
发布日期:2022-09-04人气:311
发布日期:2023-01-16人气:226
发布日期:2022-10-02人气:149
发布日期:2022-11-07人气:145