基于IMD的包过滤防火墙原理与实现 by PiggyXP【小猪】

包过滤防火墙的设计与实现 防火墙是一种保护网络的行之有效的安全机制 是保护区的一道安全防线它能够将保护区以外的非法入侵及访问拒之门外对于资金少又有科研人员的单位可采用源代码开放的免费的Linux netfilter/iptables 构建防火墙. 立即下载

一、前言
二、IMD中间层技术介绍
三、passthru例程分析
四、部分演示代码
五、驱动编译与安装
六. 总结



一、前言

    前段时间,在安全焦点上看到了TOo2y朋友写的《基于SPI的数据报过滤原理与实现》,很是不错。文章中提到的基于SPI的数据报拦截技术是在用户级的。用户级的拦截有其优势,实现方便、便于移植、通用性强,但是,用户级并不能得到所有的数据报。本文提到的基于IMD的数据报过滤则是属于内核级的,它建立在网络驱动上面。
    其实两个月前就想写这篇文章了,可惜这个技术是我一年前做的,好久不用,已经忘的差不多了,所以一直没有写。不过,近来正巧有个课题,牵扯到了中间层驱动。于是,重新拾起丢了有一年的DDK,啃了起来。这期间,真的要非常感谢linxder的帮忙,让我少走了一些弯路,否则,我真的要从头学起了。废话不多说了,切入正题。
    


二、中间层驱动技术介绍

    中间层驱动,英文为NDIS intermediate driver。

    1)内核级网络驱动介绍
        Microsoft Windows 2000支持三种基本的内核级网络驱动,这三层driver顺序从下到上依次为:
        1. Miniport NIC drivers:微端口网卡驱动,位于最底层,直接操纵网卡并且对高层驱动提供接口。
        2. Intermediate drivers:IMD中间层驱动,这就是今天的主角,位于1和3之间,具体的作用下面就会介绍。
        3. Protocol drivers:高层协议驱动,俗称为TDI(传输驱动程序接口),高于前面两层,直接面向用户级,
                     为用户提供网络服务,也就是绝大多数程序所用到的网络接口。

    
    2)IMD驱动            
    IMD中间层,它的实质很简单,最经典的描述莫过于下面的话:
    
    An intermediate driver is typically layered over one or more NDIS NIC drivers and under a transport driver (possibly multilayered) that supports TDI at its upper edge.
    An NDIS intermediate driver exports MiniportXxx functions at its upper edge and ProtocolXxx functions at its lower edge.(见DDK文档)
    
    中间层插入网卡和协议层之间,对上面的协议层表现为一个虚拟的微端口网卡结构,而对下面的网卡则表现为一个协议层的结构。所以,无论是网卡接收并上传的数据报,还是上层要下送至网卡发送的数据报,无一例外地要经过中间层。
    

    3)IMD包过滤技术
    前面我们已经看到,所有的数据报都要经过中间层,所以,我们可以在中间层加入我们想要过滤的数据报的特征,实现基于中间层驱动的内核级包过滤。
    
    这样做的优势非常明显,首先,在驱动级别上做过滤,无须组包,速度快,效率自然就高;其次,所有的数据报无一例外,只要网卡上传的数据报均可以截获,避免了用户级无法得到所有数据报的缺点。当然,世界上没有完美的事情。IMD包过滤技术也存在其不可避免的缺点,与操作系统版本关系密切,与硬件联系大,可移植性低。我在调试这个驱动的时候,就碰到了无数次蓝屏,无数次重启动,进了几次安全模式,甚至还为此重新安装了一次系统。
    
    正是由于上面的一些问题,现在市面上还没有见到有厂家推出基于IMD的实用型防火墙,大部分都是在实验室中的作品,或许真的是要做到通用性很难吧,不过还是希望能尽快见到这样的产品面世。
    
    
    
三、passthru代码分析
    
    到这里,你或许已经非常想看看到底怎么来实现基于IMD的包过滤防火墙了,不过,你肯定会迟疑,如果让我们自己写整个中间层驱动的话,是不是有些太艰难了啊?况且,我只是个搞网络安全的,我不是专门写驱动的,让我完成一个驱动程序,还要对上层协议伪装成一个网卡,对下层伪装成一个协议层,这不是要命么?
    
    呵呵,其实微软很不错的,在提出这项技术之后,其DDK中附带了一个中间层驱动的例程,就是passthru。passthru实现了一个中间层的基本功能,对下表现为一个协议层的驱动,对上表现为一个虚拟网卡,安装passthru驱动之后,你可以在硬件管理中的网卡中看到一个虚拟网卡。不过,passthru只是插入到网卡和上层协议中间,却未做任何工作,也就是说,passthru只是让所有的数据报原原本本地流经自己而已。我们要想实现中间层包过滤的功能,需要对passthru进行修改。
    
    想想我们要实现的包过滤的功能,我们只需要在中间层接收到数据报的时候进行规则判断就可以了,而在passthru中,接收数据报是用protocol.c文件中的PtReceive和PtReceivePacket这两个函数来实现的。根据微软的解释,微软建议接收包用PtReceivePacket函数,因为可以得到更高的效率,然而,为了向下兼容,也保留了PtReceive函数给老的网卡使用。所以,在一块网卡上,只可能有一个函数在工作,这要取决于你的网卡型号了。巧的是,我的两台机器的网卡应用的函数正巧不一样。同样是IBM的机器,一台P4 1.5G的机器的网卡是Realtek RTL8139(A) PCI Fast Ethernet Adapter,另外一台P4 2.0G的机器的网卡是Intel(R) PRO/100 VE Network Connection,其中Realtek网卡用的是PtReceive来接包,而Intel的网卡是用PtReceivePacket来接包。
    
    现在我们知道了哪个函数负责接收数据报,那么我们就可以对这个函数进行修改了。从兼容和通用性考虑,我们需要对PtReceive和PtReceivePacket函数进行修改,其中加上我们需要判断的规则进行过滤,下面就贴详细的代码了。
    
    
    
四、部分演示代码

    我们的目的是在调用接受数据报函数的时候能执行我们的过滤代码,所以,我们要在函数代码中添加我们自己的代码,下面用过滤特定协议类型的数据报来做演示。
    
    首先修改PtReceive,看一下protocol.c文件中函数的代码,代码中用NdisGetReceivedPacket函数得到一个PNDIS_PACKET的结构Packet,数据报内容就存放在这个结构中的链表内。我们定义一个PUCHAR结构的pPacketContent,然后用下面的代码获得整个数据报的内容:
    
        //---------------------------------------------------------
        int        PacketSize;
    PUCHAR        pPacketContent;
    PUCHAR        pBuf;
    UINT         BufLength;
    MDL    *     pNext;
    UINT         i;
    
    //把数据包内容从Packet拷贝到pPacketContent

    NdisQueryPacket( Packet,NULL,NULL,NULL,&PacketSize);
    
    Status= NdisAllocateMemory( &pPacketContent, 2000, 0,HighestAcceptableMax);
    if (Status!=NDIS_STATUS_SUCCESS ) return Status;
    NdisZeroMemory (pPacketContent, 2000);
    
    NdisQueryBufferSafe(Packet->Private.Head, &pBuf, &BufLength, 32 );
    NdisMoveMemory(pPacketContent, pBuf, BufLength);

    i = BufLength;
    pNext = Packet->Private.Head;
    
    for(;;)
    {
        if(pNext == Packet->Private.Tail)
            break;
            pNext = pNext->Next;   //指针后移
            if(pNext == NULL)
                break;

            NdisQueryBufferSafe(pNext,&pBuf,&BufLength,32);
            NdisMoveMemory(pPacketContent+i,pBuf,BufLength);
            i+=BufLength;
    }
    
    //数据拷贝完毕
    //---------------------------------------------------------
    
    
    现在,我们已经在PtReceive函数中得到了数据报的内容,存放在pPacketContent中,数据报的格式你可以去查书。通常,在以太网中,得到的数据报大致是如下结构,以太帧头14个字节,放在pPacketContent[0]到pPacketContent[13]中,其中前六个字节是目的MAC地址,然后六个字节源MAC地址,然后两个字节是协议类型,通常的协议类型有0x08 0x00 ->IP,0x08 0x06 ->ARP,0x08 0x35 ->RARP,所以,可以通过pPacketContent[12]和pPacketContent[13]来判断协议类型。如果是IP包,然后pPacketContent中存放的是IP头,根据IP头的格式,可以得到第23个字节pPacketContent[23]表示传输层协议:1 ->ICMP,2 ->IGMP,6 ->TCP,17 ->UDP,剩下的就是数据报内容了。因为我们只是做演示,所以只要知道这几个标志性的就好了,其他的你可以根据你的需要扩展。我们通过pPacketContent中的内容可以做些规则,比如过滤ICMP包,我们只要比较pPacketContent[12]和pPacketContent[13]还有pPacketContent[23]这三个标志位就可以了,如果不是ICMP包,那么不做任何工作,如果匹配了,那就返回一个NDIS_STATUS_NOT_ACCEPTED,将包丢弃,释放pPacketContent,就可以过滤ICMP包了,下面就是过滤规则的代码。
    
        //---------------------------------------------------------
        //规则标志位(1表示过滤,0表示放行,你可以通过改这个数值来配置规则)
    UINT        ICMP = 1;     //ICMP数据报规则
    UINT        IGMP = 0;    //IGMP数据报规则
    UINT        TCP = 0;    //TCP数据报规则
    UINT        UDP = 0;    //UDP数据报规则
    
        //规则判断
    if (ICMP == 1)
    {
        if(((char *)pPacketContent)[12] == 8 &&
            ((char *)pPacketContent)[13] == 0 &&
                ((char *)pPacketContent)[23] == 1)
        {
            DbgPrint("ICMP被拦截!/n");
            NdisFreeMemory(pPacketContent, 2000, 0);
            return NDIS_STATUS_NOT_ACCEPTED;
        }
    }
    
    if (IGMP == 1)
    {
        if(((char *)pPacketContent)[12] == 8 &&
            ((char *)pPacketContent)[13] == 0 &&
                ((char *)pPacketContent)[23] == 2)
        {
            DbgPrint("IGMP被拦截!/n");
            NdisFreeMemory(pPacketContent, 2000, 0);
            return NDIS_STATUS_NOT_ACCEPTED;
        }
    }
    
    if (TCP == 1)
    {
        if(((char *)pPacketContent)[12] == 8 &&
            ((char *)pPacketContent)[13] == 0 &&
                ((char *)pPacketContent)[23] == 6)
        {
            DbgPrint("TCP被拦截!/n");
            NdisFreeMemory(pPacketContent, 2000, 0);
            return NDIS_STATUS_NOT_ACCEPTED;
        }
    }
    
    if (UDP == 1)
    {
        if(((char *)pPacketContent)[12] == 8 &&
            ((char *)pPacketContent)[13] == 0 &&
                ((char *)pPacketContent)[23] == 17)
        {
            DbgPrint("UDP被拦截!/n");
            NdisFreeMemory(pPacketContent, 2000, 0);
            return NDIS_STATUS_NOT_ACCEPTED;
        }
    }

    //规则判断结束
    //---------------------------------------------------------        

    
    到这里,PtReceive函数已经修改完了,只要调用PtReceive函数接收数据报的时候,就可以执行我们的规则了,下面修改PtReceivePacket函数,其实上面的修改代码内容都是一样的,只不过PtReceivePacket函数跟PtReceive函数不太一样,PtReceivePacket直接在入口参数中就得到了PNDIS_PACKET的结构Packet,存放了数据报的所有内容,所以,直接将上面的代码粘到函数PtReceivePacket的代码中就可以了。到现在,无论是网卡调用哪一个接收函数,都可以执行我们需要的规则。
    
    其实,上面所定义的规则是很简单的,因为只作为演示用,而我的课题嘛,嘿嘿,就不是那么简单了。其实在pPacketContent已经得到了所有的数据报内容,我们可以随意扩展规则。比如,过滤指定IP、指定端口的数据报,至于具体应该设置哪个位置,你只要去找一本介绍数据报结构的书看一下就知道了,呵呵。
    
    
    
五、驱动编译与安装

    前面谈了那么多,其实都是在说IMD包过滤的实现和驱动代码,但是,我已经修改了代码,怎么编译和安装呢?
    
    这一部分就解决驱动编译和安装的问题。我们用passthru的代码,对接收数据报的部分做了修改。然后,我们用DDK自带的builder工具来编译。我一般是用开始菜单中DDK程序组中的Free Build Environment,到passthru目录下执行build -cz来编译passthru,得到passthru.sys文件,然后再到NTDDK/src/network/config/filter目录下,执行build -cz来得到sfilter.dll,然后再加上passthru目录下的netsf.inf和netsf_m.inf,一共四个文件。这样,驱动安装所需要的文件就全了。
    
    打开网络属性,添加服务,找到passthru目录下,安装,弹出没有数字签名的警告,不理,继续安装,最后,你会发现,网络属性中增加了一个名为Sample Filter的组件,同时,硬件管理器中的网卡下增加了一个Sample Filter Miniport的设备。如果你已经到了这里,并且系统没有出现蓝屏和死机,那么恭喜你,你已经成功地安装上了中间层驱动,并且已经发挥包过滤作用了。
    
    
    
六. 总结

    难得我写了那么多,现在做一个总结吧。上文中的代码,我只是用来做演示的,只用来说明基于IMD的包过滤防火墙原理与实现,其实需要做的工作还有很多,驱动上面碰到的问题会很多,并且常常伴随着的是蓝屏,死机,甚至要重装系统。
    
    你也许会问,那我每次改一下规则难道还要重新再安装一遍驱动么,况且,必须重启动一次,旧的驱动才彻底卸载掉,多麻烦啊。呵呵,其实是中间层驱动是可以跟应用层的程序结合的。首先你要在驱动中指定好规则,应用层的程序通过DeviceIoControl传递指令到驱动中,可以控制驱动的规则标志位。
    
    特别推荐驱动开发网(www.driverdevelop.com)论坛的ndis网络接口开发版,这里是国内水平最高的地方,所有的与驱动有关的问题你都可以在那里得到解决。
    
    最后,附带说一句,调试驱动的时候先做好处理系统后事的准备,对于出现的任何系统问题也好,硬盘问题也好,我不负任何责任,呵呵。
    
    欢迎访问我们团队的站点:711网络安全小组  http://www.cpyy.net

posted on 2004年05月27日 11:28 AM

防火墙的过滤算法 主要研究如何通过基于Windows操作系统内核的包过滤防火墙系统来实现网络安全 防护。基于操作系统内核的包过滤防火墙系统是基于网络层实现的包过滤防火墙系统.该系统要求 能够对所有进出计算机的IP数据包进行灵活控制,实现包过滤的核心问题是如何截获所有的IP数据 包。首先介绍了包过滤防火墙的基本结构和原理,然后在剖析操作系统内核的基础上,研究并设计了 基于Windows操作系统内核的包过滤防火墙系统。 立即下载

相关推荐

Veeam Backup 13 通过UI界面高效备份VMware ESXi虚拟机的完整指南

本文提供了一份使用Veeam Backup 13图形化界面高效备份VMware ESXi虚拟机的完整指南。内容涵盖从环境准备、添加vCenter/ESXi主机、配置备份存储库,到创建备份任务、设置保留策略与计划,以及执行备份和验证成功的关键步骤。通过直观的UI操作,管理员可以轻松实现虚拟机数据的可靠保护与快速恢复。

weixin_29322553的博客 438

NDIS中间层的驱动包截获技术教程

<br /><br /><br />NDIS(Network Driver Interface Specification)是网络驱动程序接口规范的简称。它横跨传输层、网络层和数据链路层,定义了网卡或网卡驱动程序与上层协议驱动程序之间的通信接口规范,屏蔽了底层物理硬件的不同,使上层的协议驱动程序可以和底层任何型号的网卡通信。NDIS为网络驱动程序创建了一个完整的开发环境,只需调用NDIS函数,而不用考虑操作系统的内核以及与其他驱动程序的接口问题,从而使得网络驱动程序可以从与操作系统的复杂通讯中分离,极大地方

yxyhack's blog 9104

华硕ROG玩家国度安装Ubuntu双系统避坑指南:安全启动密钥那些事儿

本文详细解析了在华硕ROG玩家国度设备上安装Ubuntu双系统时,如何正确处理BIOS中的安全启动(Secure Boot)与密钥管理,避免常见的引导失败和Windows系统无法启动问题。指南提供了从数据备份、启动盘制作到BIOS精细设置(如将OS Type改为Other OS而非简单关闭Secure Boot)以及分区规划的完整流程,确保两个系统都能稳定共存。

weixin_29219189的博客 754

Ndis 网络发包收包

<br />版权信息:<br /><br />本文来自internet,转载这里供网络编程爱好者学习和研究使用,请尊重作者的劳动成果。未经授权而在商业上使用原作者的文章属侵权行为,后果由使用者自负,本人不承担任何法律责任。<br /> <br /> <br />window网口驱动编程<br /> <br />一、    前言<br /> <br />RTL8139 可能是目前最受欢迎的网卡,它的价格便宜,功能上也还能接受。虽然在效能上有时会略不及Intel 的 eepro100,但因为价格实在太便宜了,所

smilestone322的专栏 3671

四阶龙格库塔方法求解一次常微分方程组

四阶龙格库塔方法求解一次常微分方程组一、写在前面二、四阶龙格库塔方法三、使用四阶龙格库塔方法求解一次常微分方程组 一、写在前面 龙格库塔方法是数值求解常微分非线性方程的有利工具,计算精度较高,通过缩短步进距离和增加阶数可以进一步控制误差范围。工程上较为常用的是四阶龙格库塔算法(R-K4),在计算收敛的情况下往往可以得到比较好的结果。 二、四阶龙格库塔方法 这里简单介绍一下算法的具体实现过程,不做详细的推导。其求解的问题是形如方程: y˙=f(y,t),其中t∈[t0,t1]初值y(t0)=c0 \dot{y

HelloWorldTM的博客 2万+

Linux服务器上后台运行jupyter notebook/Lab

1 安装配置教程2 后台运行jupyter3 更改运行环境kernel4 SSH端口转发 1 安装配置教程 可以参考:https://www.cnblogs.com/thousfeet/p/10647102.html 2 后台运行jupyter screen -S jupyter # 新建一个名为jupyter的后台screen # 在base环境下,先 cd 到指定文件目录 jupyter notebook # or jupyter lab 3 更改运行环境kernel 需要手动为每个环境添加内.

strivequeen的博客 1835

基于IMD的包过滤防火墙原理与实现

一、前言二、IMD中间层技术介绍三、passthru例程分析四、部分演示代码五、驱动编译与安装六. 总结一、前言    前段时间,在安全焦点上看到了TOo2y朋友写的《基于SPI的数据报过滤原理与实现》,很是不错。文章中提到的基于SPI的数据报拦截技术是在用户级的。用户级的拦截有其优势,实现方便、便于移植、通用性强,但是,用户级并不能得到所有的数据报。本文提到的基于IMD的数据报过滤则是属于内核级

小猪的网络编程 5125

ADC INL&DNL测试方法和实例

本文介绍了一种可操作的ADC INL和DNL的测试方法--直方图法(也称码密度法)。并实际使用该方法测试了两款芯片的ADC INL和DNL

APTCHIP的博客 1万+

NDIS中间层驱动程序

概要:开发一个NDIS驱动是一项相对复杂的工作,这一方面是由于核心驱动本身有更多的限制和要求,有更多的“游戏规则”要求开发者理解和掌 握,NDIS的复杂性把难度更是提高了,本文以PassThru为例,加上自己的理解,讲述了NDIS驱动的处理过程和在PassThru的基础上进行扩 展的基本方法,本文并不是一个入门读物,所以没有提及任何核心驱动开发的相关知识,本文主要讲述的是NDIS中间层对数据包处理

firebird321的专栏 4312

XCKU060光纤卡学习资料保存:基于kintex UltraScale XCKU060的双路QSFP+光纤PCIe 卡

基于kintex UltraScale XCKU060的双路QSFP+光纤PCIe 卡 一、板卡概述 本板卡系我司自主研发,基于XilinxUltraScaleKintex系列FPGAXCKU060-FFVA1156-2-I架构,支持PCIEGen3x8模式的高速信号处理板卡,搭配两路40GQSFP+接口,两组64-bitDDR4,每组容量8Gbyte,可稳定运行在2400MT/s。板卡具有自控上电顺序,BP...

3075

Mac Pro M2芯片成功安装麒麟银河高级服务器虚拟机

本人用的是1、Macbook m2pro芯片 16G+5123、安装homebrew、wegt、qemu。

vagatable_XX的博客 3300

NDIS函数大全手册

无连接微端口的上层函数 DriverEntry 由操作系统调用来激活和初始化微端口驱动程序 MiniportAllocateComple 调用它来指示以前调用的NdisMAllocateMemoryAsync已经完成 MiniportCheckForHang 检查NIC的内部状态 MiniportDisableInterrupt 禁止NIC产生中断 MiniportEnableInterrupt 允许NIC产生中断 MiniportHalt 重新分配和重新注册NIC占用的资源并且终止NIC以使.

hutao1101175783的专栏 1097

虚幻商城 蓝图汇总

虚幻引擎是一个非常强大和灵活的游戏开发工具,拥有众多的蓝图可以帮助我们更高效地工作。

一碗清深的博客 1508

基于VC++包过滤技术防火墙设计与实现

这种技术是在网络中适当的位置对数据包实施有选择的通过,选择依据,即为系统内设置的过滤规则(通常称为访问控制表-----Access Control List),只有满足过滤规则的数据包才被转发至相应的网络接口,其余数据包则被从数据流中删除。本文主要研究个人安全防御系统中包过滤系统的设计与实现,通过对现有包过滤技术深入的研究与分析,发现其中的不足之处,并在设计实现的过程中对其进行改进和完善。1全面深入的研究现有的包过滤技术,分析比较每一种包过滤技术的优缺点,结合个人安全防御系统的特点确定所要使用的技术。

毕业作品网站 1893

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

基于VC++的包过滤防火墙系统设计与实现

本文研究了基于包过滤技术的防火墙系统设计与实现。系统采用VC++6.0开发环境,利用MFC框架构建用户界面,通过IP过滤驱动程序实现核心功能。主要功能模块包括:规则管理(添加/删除/显示)、规则存储(文件保存/加载)、规则安装/卸载等。系统通过设置IP地址、端口号、协议等过滤条件,实现对网络数据包的拦截或放行。测试结果表明,该系统能够有效按照用户定义的规则进行网络数据包过滤,达到了预期的安全防护效果。

毕业作品网站 2371

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

windows下中间层NDIS驱动中NDIS_PACKET和NDIS_BUFFERD的关系

[cpp] view plain copy //      // NDIS_PACKET结构的定义     //      typedef struct _NDIS_PACKET     {     NDIS_PACKET_PRIVATE Private;     //这个其实是一个链表结构,Private.Head指向第一个链表,Private.Tail

u011386637的博客 914

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

个人总结NDIS中NDIS_PACKET,NDIS_BUFFER的关系

个人总结NDIS中NDIS_PACKET,NDIS_BUFFER的关系 // // NDIS_PACKET结构的定义 // typedef struct _NDIS_PACKET { NDIS_PACKET_PRIVATE Private; //这个其实是一个链表结构,Private.Head指向第一...

weixin_30640769的博客 212

网络安全:包过滤防火墙和代理防火墙(应用网关防火墙)

防火墙 包过滤防火墙 代理防火墙 应用网关防火墙 HTTP代理 SOCKS协议

azsx02的博客 3万+

【转帖】NDIS_PACKET结构讨论

 [翻译][NDIS]NDIS_PACKET结构讨论[一] 译者:feikoo 作者:NDIS.com 日期:2006-4-3 这篇文章的目的是探讨一下在网络上截取的包(如IP包)与在NDIS驱动中代表相同内容的NDIS_PACKET之间的关系。 标准化组织:我们经常在新闻组上看到如下的内容:         1.微软的开发文档是如何描述Window2000网络

floweronwarmbed的专栏 2240

包过滤技术防火墙

在于利用路由器监视并过滤网络上流入流出的IP数据包,并拒绝发送可疑的包。由于Internet(因特网/公网) 与Intranet(内部网/内网) 的连接,多数都要使用路由器,所以路由器成为内外通信的必经端口。路由器的厂商在路由器上加入IP过滤功能,因此,过滤路由器也可以称作“包过滤路由器”或“筛选路由器”。防火墙常常就是这样一个具备“包过滤功能”的简单路由器。具备“包过滤功能”的防火墙,应该是足够安全的,但前提是要配置合理。然而一个包过滤规则是否完全严密及必要,则是很难判定的。

2301_79448933的博客 1534

防火墙原理介绍大全

我们分析其主要的原因,在于内网用户的使用问题,很多的用户上班时间使用BT下载、浏览一些不正规的网站,这样都会引起内网的诸多问题,比如病毒,很多病毒传播都是使用者不良行为而造成的。一种被强化的可以防御进攻的计算机,被暴露于因特网之上,作为进入内部网络的一个检查点,以达到把整个网络的安全问题集中在某个主机上解决,从而省时省力,不用考虑其它主机的安全的目的。例如,如果传入的包包含视频数据流,而防火墙可能已经记录了有关信息,是关于位于特定IP 地址的应用程序最近向发出包的源地址请求视频信号的信息。

Hacker_Fuchen的博客 986

防火墙技术基础篇:什么是包过滤技术

当数据在网络中传输时,它们被分割成小的单元,称为数据包。防火墙的包过滤是一种基本的网络安全技术,用于检查这些数据包并根据预定义的规则决定是否允许它们通过防火墙。防火墙包过滤是一种关键的网络安全技术,它工作在网络层,用于控制进出一个网络的数据包。通过检查每个数据包的头部信息(比如源IP地址、目的IP地址、端口号以及协议类型等),包过滤防火墙能够决定哪些数据包被允许通过,哪些被阻止或丢弃。

qq_39241682的博客 4594

防火墙的原理与应用场景

一、防火墙的原理二、防火墙的应用场景

m0_71322636的博客 1436
上一篇: 手把手教你玩转ARP包【数据包的游戏系列之一】 by PiggyXP【小猪】
下一篇: 创建SvcHost.exe调用的服务原理与实践 by PiggyXP
XmagicX
博客等级 码龄24年 13粉丝 78原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值