精华内容
下载资源
问答
  • 数据包过滤原理

    千次阅读 2013-04-08 14:56:00
     数据包过滤技术,顾名思义是网络中适当的位置对数据包实施有选择的通过,选择依据,即为系统内设置的过滤规则(通常称为访问控制表——Access Ccntrol List),只有满足过滤规则的数据包才被转发至相应...

      数据包过滤技术是防火墙最常用的技术。对于一个充满危险的网络,过滤路由器提供了一种方法,用这种方法可以阻塞某些主机和网络连入内部网络,也可以用它来限制内部人员对一些危险和色情站点的访问。
      数据包过滤技术,顾名思义是在网络中适当的位置对数据包实施有选择的通过,选择依据,即为系统内设置的过滤规则(通常称为访问控制表——Access Ccntrol List),只有满足过滤规则的数据包才被转发至相应的网络接口,其余数据包则被从数据流中删除。
      数据包过滤可以控制站点与站点、站点与网络和网络与网络之间的相互访问,但不能控制传输的数据内容,因为内容是应用层数据,不是包过滤系统所能辨认的,数据包过滤允许你在单个地方为整个网络提供特别的保护。
      包过滤检查模块深入到系统的网络层和数据链路层之间。因为数据链路层是事实上的网卡(NIC),网络层是第一层协议堆栈,所以防火墙位于软件层次的最底层,如下图所示。

    图  包过滤模型

      通过检查模块,防火墙能拦截和检查所有出站的数据。防火墙检查模块首先验证这个包是否符合过滤规则,不管是否符合过滤规则,防火墙一般要记录数据包情况,不符合规则的包要进行报警或通知管理员。对丢弃的数据包,防火墙可以给发方一个消息,也可以不给,这要取决于包过滤策略。包检查模块能检查包中的所有信息,一般是网络层的IP头和传输层的头。包过滤一般要检查下面几项:

      IP源地址;
      IP目标地址;
      协议类型(TCP包、UDP包和ICMP包);
      TCP或UDP的源端口;
      TCP或UDP的目标端口;
      ICMP消息类型;
      TCP报头中的ACK位。
     

      包过滤在本地端接收数据包时,一般不保留上下文,只根据目前数据包的内容做决定。根据不同的防火墙的类型,包过滤可能在进入、输出时或这两个时刻都进行。可以拟定一个要接受的设备和服务的清单,一个不接受的设备和服务的清单,组成访问控制表。
          1 . 设置步骤
          配置包过滤有三步:
               (1)必须知道什么是应该和不应该被允许的,即必须制定一个安全策略。
               (2)必须正式规定允许的包类型、包字段的逻辑表达。
               (3)必须用防火墙支持的语法重写表达式。
         2. 按地址过滤
                下面是一个最简单的数据包过滤方式,它按照源地址进行过滤。比如说,认为网络202.110.8.0是一个危险的网络,那么就可以用源地址过滤禁止内部主机和该网络进行通信。下表是根据上面的政策所制定的规则。

    规则方向  源地址目标地址动作
    A内部网络202.110.8.0拒绝
    B202.110.8.0内部网络拒绝

    表:过滤规则示例      

      很容易看出这种方式没有利用全部信息,所以是不科学的,下面将要讲一种更为先进的过滤方式——按服务过滤。

         3. 按服务过滤
      假设安全策略是禁止外部主机访问内部的E-mail服务器(SMTP,端口25),允许内部主机访问外部主机,实现这种的过滤的访问控制规则类似下表。
      规则按从前到后的顺序匹配,字段中的“*”代表任意值,没有被过滤器规则明确允许的包将被拒绝。就是说,每一条规则集都跟随一条含蓄的规则,就像下表中的规则C。这与一般原则是一致的:没有明确允许的就被禁止。

    规则 方向 动作 源地址 源端口 目的地址 目的端口 注释
    A 进 拒绝 M * E-mail 25 不信任
    B 出 允许 * * * * 允许联接
    C 双向 拒绝 * * * * 缺省状态

    任何一种协议都是建立在双方的基础上的,信息流也是双向的。规则总是成对出现的,而且在讲解规则时也是成对讲解的原因。

    4.包过滤实例
      无疑按服务过滤的安全性要比单纯按地址过滤高。
      下面,将通过一个例子来讲解这种过滤方式。第一,假设处于一个类网络116.111.4.0,认为站点202.208.5.6上有黄色的BBS,所以希望阻止网络中的用户访问该点的BBS;再假设这个站点的BBS服务是通过Telnet方式提供的,那么需要阻止到那个站点的出站Telnet服务,对于Internet的其他站点,允许内部的网用户通过Telnet方式访问,但不允许其他站点以Telnet方式访问网络。第二,为了由发电子邮件,允许SMTP出站入站服务,邮件服务器是IP地址为116.111.4.1。第三,对于WWW服务,允许内部网用户访问Internet上任何网络和站点,但只允许一个公司的网络访问内部WWW服务器,内部WWW服务器的IP地址为116.111.4.5,因为你们是合作伙伴关系,那个公司的网络为98.120.7.0。

    参考:http://www.elecfans.com/dianzichangshi/2009061669433.html

    转载于:https://www.cnblogs.com/weiw/archive/2013/04/08/3007491.html

    展开全文
  • 防火墙之数据包过滤iptables

    千次阅读 2019-09-23 15:58:52
    内容简介 防火墙的概述 1、iptables简介 2、iptables基础 ...它通过访问控制机制,确定哪些内部服务允许外部访问,以及允许哪些外部请求可以访问内部服务。它可以根据网络传输的类型决定IP包是否可以传进或...

    内容简介 
    防火墙的概述 
    1、iptables简介 
    2、iptables基础 
    3、iptables语法 
    4、iptables实例

    案例详解 
    (一)防火墙的简介 
    防火墙是指设置在不同网络或网络安全域之间的一系列部件的组合,它能增强机构内部网络的安全性。它通过访问控制机制,确定哪些内部服务允许外部访问,以及允许哪些外部请求可以访问内部服务。它可以根据网络传输的类型决定IP包是否可以传进或传出内部网。 
    防火墙通过审查经过的每一个数据包,判断它是否有相匹配的过滤规则,根据规则的先后顺序进行一一比较,直到满足其中的一条规则为止,然后依据控制机制做出相应的动作。如果都不满足,则将数据包丢弃,从而保护网络的安全。 
    防火墙可以被认为是这样一对机制:一种机制是拦阻传输流通行,另一种机制是允许传输流通过。一些防火墙偏重拦阻传输流的通行,而另一些防火墙则偏重允许传输流通过。 
    通过使用防火墙可以实现以下功能:可以保护易受攻击的服务;控制内外网之间网络系统的访问;集中管理内网的安全性,降低管理成本;提高网络的保密性和私有性;记录网络的使用状态,为安全规划和网络维护提供依据。(图1) 
    这里写图片描述 
    防火墙的分类 
    防火墙技术根据防范的方式和侧重点的不同而分为很多种类型,但总体来讲可分为包过滤防火墙和代理服务器两种类型。 
    防火墙的工作原理 
    1.包过滤防火墙工作原理(图2) 
    图片2 
    2.代理服务型防火墙工作原理 
    代理服务型防火墙是在应用层上实现防火墙功能的。它能提供部分与传输有关的状态,能完全提供与应用相关的状态和部分传输的信息,它还能处理和管理信息。 
    iptables简介 
    netfilter/iptables(简称为iptables)组成Linux平台下的包过滤防火墙,与大多数的Linux软件一样,这个包过滤防火墙是免费的,它可以代替昂贵的商业防火墙解决方案,完成封包过滤、封包重定向和网络地址转换(NAT)等功能。 
    (二)iptables基础 
    规则(rules)其实就是网络管理员预定义的条件,规则一般的定义为“如果数据包头符合这样的条件,就这样处理这个数据包”。规则存储在内核空间的信息包过滤表中,这些规则分别指定了源地址、目的地址、传输协议(如TCP、UDP、ICMP)和服务类型(如HTTP、FTP和SMTP)等。当数据包与规则匹配时,iptables就根据规则所定义的方法来处理这些数据包,如放行(accept)、拒绝(reject)和丢弃(drop)等。配置防火墙的主要工作就是添加、修改和删除这些规则。 
    链(chains)是数据包传播的路径,每一条链其实就是众多规则中的一个检查清单,每一条链中可以有一条或数条规则。当一个数据包到达一个链时,iptables就会从链中第一条规则开始检查,看该数据包是否满足规则所定义的条件。如果满足,系统就会根据该条规则所定义的方法处理该数据包;否则iptables将继续检查下一条规则,如果该数据包不符合链中任一条规则,iptables就会根据该链预先定义的默认策略来处理数据包。 
    表(tables)提供特定的功能,iptables内置了4个表,即filter表、nat表、mangle表和raw表,分别用于实现包过滤,网络地址转换、包重构(修改)和数据跟踪处理。 
    Iptables表、链、规则(图3) 
    图片3
    iptables传输数据包的过程 
    ① 当一个数据包进入网卡时,它首先进入PREROUTING链,内核根据数据包目的IP判断是否需要转送出去。 
    ② 如果数据包就是进入本机的,它就会沿着图向下移动,到达INPUT链。数据包到了INPUT链后,任何进程都会收到它。本机上运行的程序可以发送数据包,这些数据包会经过OUTPUT链,然后到达POSTROUTING链输出。 
    ③ 如果数据包是要转发出去的,且内核允许转发,数据包就会如图所示向右移动,经过FORWARD链,然后到达POSTROUTING链输出。(图4) 
    图片4 
    iptables命令格式 
    iptables的命令格式较为复杂,一般的格式如下: 
    iptables [-t table] 命令 [chain] [rules] [-j target] 
    table——指定表明 
    命令——对链的操作命令 
    chain——链名 
    rules——规则 
    target——动作如何进行 
    1.表选项

    表选项用于指定命令应用于哪个iptables内置表,iptables内置包括filter表、nat表、mangle表和raw表。

    2.命令选项iptables命令格式

    命令 说明 
    -P或–policy <链名> 定义默认策略 
    -L或–list <链名> 查看iptables规则列表 
    -A或—append <链名> 在规则列表的最后增加1条规则 
    -I或–insert <链名> 在指定的位置插入1条规则 
    -D或–delete <链名> 从规则列表中删除1条规则 
    -R或–replace <链名> 替换规则列表中的某条规则 
    -F或–flush <链名> 删除表中所有规则 
    -Z或–zero <链名> 将表中数据包计数器和流量计数器归零

    3.匹配选项

    匹配 说明 
    -i或–in-interface <网络接口名> 指定数据包从哪个网络接口进入,如ppp0、eth0和eth1等 
    -o或–out-interface <网络接口名> 指定数据包从哪块网络接口输出,如ppp0、eth0和eth1等 
    -p或—proto协议类型 < 协议类型> 指定数据包匹配的协议,如TCP、UDP和ICMP等 
    -s或–source <源地址或子网> 指定数据包匹配的源地址 
    –sport <源端口号> 指定数据包匹配的源端口号,可以使用“起始端口号:结束端口号”的格式指定一个范围的端口 
    -d或–destination <目标地址或子网> 指定数据包匹配的目标地址 
    –dport目标端口号 指定数据包匹配的目标端口号,可以使用“起始端口号:结束端口号”的格式指定一个范围的端口

    4.动作选项

    动作 说明 ACCEPT 接受数据包 DROP 丢弃数据包 REDIRECT 
    与DROP基本一样,区别在于它除了阻塞包之外, 还向发送者返回错误信息。 SNAT 源地址转换,即改变数据包的源地址 DNAT 
    目标地址转换,即改变数据包的目的地址 MASQUERADE 
    IP伪装,即是常说的NAT技术,MASQUERADE只能用于ADSL等拨号上网的IP伪装,也就是主机的IP是由ISP分配动态的;如果主机的IP地址是静态固定的,就要使用SNAT 
    LOG 日志功能,将符合规则的数据包的相关信息记录在日志中,以便管理员的分析和排错

    iptables命令格式(图5) 
    图片5 
    iptables过滤条件(图6) 
    图片6 
    iptables的语法 
    1.定义默认策略 
    当数据包不符合链中任一条规则时,iptables将根据该链预先定义的默认策略来处理数据包,默认策略的定义格式如下。

    iptables [-t表名] <-P> <链名> <动作> ?参数说明如下。 
    [-t表名]:指默认策略将应用于哪个表,可以使用filter、nat和mangle,如果没有指定使用哪个表,iptables就默认使用filter表。 
    <-P>:定义默认策略。 
    <链名>:指默认策略将应用于哪个链,可以使用INPUT、OUTPUT、FORWARD、PREROUTING、OUTPUT和POSTROUTING。 <动作>:处理数据包的动作,可以使用ACCEPT(接受数据包)和DROP(丢弃数据包)。

    2.查看iptables规则 
    查看iptables规则的命令格式为:

    iptables [-t表名] <-L> [链名] 参数说明如下。 
    [-t表名]:指查看哪个表的规则列表,表名用可以使用filter、nat和mangle,如果没有指定使用哪个表,iptables就默认查看filter表的规则列表。 
    <-L>:查看指定表和指定链的规则列表。 
    [链名]:指查看指定表中哪个链的规则列表,可以使用INPUT、OUTPUT、FORWARD、PREROUTING、OUTPUT和POSTROUTING,如果不指明哪个链,则将查看某个表中所有链的规则列表。

    3.增加、插入、删除和替换规则 
    相关规则定义的格式为:

    iptables [-t表名] <-A | I | D | R> 链名 [规则编号] [-i | o 网卡名称] [-p 协议类型] 
    [-s 源IP地址 | 源子网] [–sport 源端口号] [-d目标IP地址 | 目标子网] [–dport目标端口号] 
    <-j动作> 参数说明如下。 
    [-t表名]:定义默认策略将应用于哪个表,可以使用filter、nat和mangle,如果没有指定使用哪个表,iptables就默认使用filter表。 
    -A:新增加一条规则,该规则将会增加到规则列表的最后一行,该参数不能使用规则编号。 
    -I:插入一条规则,原本该位置上的规则将会往后顺序移动,如果没有指定规则编号,则在第一条规则前插入。 
    -D:从规则列表中删除一条规则,可以输入完整规则,或直接指定规则编号加以删除。 
    -R:替换某条规则,规则被替换并不会改变顺序,必须要指定替换的规则编号。 <链名>:指定查看指定表中哪个链的规则列表,可以使用INPUT、OUTPUT、FORWARD、PREROUTING、OUTPUT和POSTROUTING。 
    [规则编号]:规则编号用于插入、删除和替换规则时用,编号是按照规则列表的顺序排列,规则列表中第一条规则的编号为1。 [-i | o 
    网卡名称]:i是指定数据包从哪块网卡进入,o是指定数据包从哪块网卡输出。网卡名称可以使用ppp0、eth0和eth1等。 [-p 
    协议类型]:可以指定规则应用的协议,包含TCP、UDP和ICMP等。 [-s 源IP地址 | 源子网]:源主机的IP地址或子网地址。 
    [–sport 源端口号]:数据包的IP的源端口号。 [-d目标IP地址 | 目标子网]:目标主机的IP地址或子网地址。 
    [–dport目标端口号]:数据包的IP的目标端口号。 <-j动作>:处理数据包的动作,各个动作的详细说明可以参考前面的说明。

    4.清除规则和计数器 
    在新建规则时,往往需要清除原有的、旧的规则,以免它们影 ?响新设定的规则。如果规则比较多,一条条删除就会十分麻烦, ?这时可以使用iptables提供的清除规则参数达到快速删除所有的规 ?则的目的。

    定义参数的格式为: iptables [-t表名] <-F | Z> 参数说明如下。 
    [-t表名]:指定默认策略将应用于哪个表,可以使用filter、nat和mangle,如果没有指定使用哪个表,iptables就默认使用filter表。 
    -F:删除指定表中所有规则。 
    -Z:将指定表中的数据包计数器和流量计数器归零。

    NAT的定义 
    NAT英文全称是Network Address Translation,称是网络地址转换,它是一个IETF标准,允许一个机构以一个地址出现在Internet上。NAT将每个局域网节点的地址转换成一个IP地址,反之亦然。它也可以应用到防火墙技术里,把个别IP地址隐藏起来不被外界发现,使外界无法直接访问内部网络设备,同时,它还帮助网络可以超越地址的限制,合理地安排网络中的公有Internet 地址和私有IP地址的使用。 
    NAT的类型 
    静态NAT(Static NAT)

    静态NAT设置起来最为简单和最容易实现的一种,内部网络中的每个主机都被永久映射成外部网络中的某个合法的地址。

    动态地址NAT(Pooled NAT)

    动态地址NAT是在外部网络中定义了一系列的合法地址,采用动态分配的方法映射到内部网络。 
    动态地址NAT只是转换IP地址,它为每一个内部的IP地址分配一个临时的外部IP地址,主要应用于拨号,对于频繁的远程联接也可以采用动态NAT。

    网络地址端口转换NAPT(Port-Level NAT)

    NAPT是把内部地址映射到外部网络的一个IP地址的不同端口上。 
    最熟悉的一种转换方式。NAPT普遍应用于接入设备中,它可以将中小型的网络隐藏在一个合法的IP地址后面。NAPT与动态地址NAT不同,它将内部连接映射到外部网络中的一个单独的IP地址上,同时在该地址上加上一个由NAT设备选定的TCP端口号。

    (三)iptables实例 
    禁止客户机访问不健康网站 
    【例1】添加iptables规则禁止用户访问域名为www.sexy.com的网站。

    iptables -I FORWARD -d www.sexy.com -j DROP
    • 1

    【例2】添加iptables规则禁止用户访问IP地址为20.20.20.20的网站。

    iptables -I FORWARD -d 20.20.20.20 -j DROP
    • 1

    禁止某些客户机上网 
    【例1】添加iptables规则禁止IP地址为192.168.1.X的客户机上网。

    iptables -I FORWARD -s 192.168.1.X -j DROP
    • 1

    【例2】添加iptables规则禁止192.168.1.0子网里所有的客户机上网。

    iptables -I FORWARD -s 192.168.1.0/24 -j DROP
    • 1

    禁止客户机访问某些服务 
    【例1】禁止192.168.1.0子网里所有的客户机使用FTP协议下载。

    iptables -I FORWARD -s 192.168.1.0/24 -p tcp --dport 21 -j DROP
    • 1

    【例2】禁止192.168.1.0子网里所有的客户机使用Telnet协议连接远程计算机。

    iptables -I FORWARD -s 192.168.1.0/24 -p tcp --dport 23 -j DROP
    • 1

    强制访问指定的站点 
    【例】强制所有的客户机访问192.168.1.x这台Web服务器。

    iptables -t nat -I PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.x:80
    • 1

    禁止使用ICMP协议 
    【例】禁止Internet上的计算机通过ICMP协议ping到NAT服务器的ppp0接口,但允许内网的客户机通过ICMP协议ping的计算机。

    iptables -I INPUT -i ppp0 -p icmp -j DROP
    • 1

    发布内部网络服务器 
    【例1】发布内网10.0.0.3主机的Web服务,Internet用户通过访问防火墙的IP地址即可访问该主机的Web服务。

    iptables -t nat -I PREROUTING -p tcp --dport 80 -j DNAT --to-destination 10.0.0.3:80
    • 1

    【例2】发布内网10.0.0.3主机的终端服务(使用的是TCP协议的3389端口),Internet用户通过访问防火墙的IP地址访问该机的终端服务。

    iptables -t nat -I PREROUTING -p tcp --dport 3389 -j DNAT --to-destination 10.0.0.3:3389
    • 1

    【案例2】做为服务端的基本配置:SSH DNS WWW FTP EMAIL (图7) 
    这里写图片描述 
    【案例3】做为网关的基本配置:SSH DNS WWW FTP EMAIL NAT )SNAT DNAT)限速 (图8) 
    这里写图片描述

    视频教程地址: 
    http://www.boobooke.com/v/bbk3903 
    http://www.boobooke.com/v/bbk3904 
    http://www.boobooke.com/v/bbk3905 
    http://www.boobooke.com/v/bbk3906 
    http://www.boobooke.com/v/bbk3907 
    http://www.boobooke.com/v/bbk3930

    展开全文
  • 本节书摘来自异步社区《Linux防火墙(第4版)》一书中的第2章,第2.1节,...第2章 数据包过滤防火墙概念 什么是防火墙?过去的几年里,这个术语的含义已经发生了改变。根据RFC 2647“Benchmarking Terminology fo...

    本节书摘来自异步社区《Linux防火墙(第4版)》一书中的第2章,第2.1节,作者:【美】Steve Suehring(史蒂夫 苏哈林)著,更多章节内容可以访问云栖社区“异步社区”公众号查看

    第2章 数据包过滤防火墙概念

    什么是防火墙?过去的几年里,这个术语的含义已经发生了改变。根据RFC 2647“Benchmarking Terminology for Firewall Performance”,防火墙是“一台或一组设备,用以在网络间实施访问控制策略”。这个定义非常的宽泛,事实上有意如此。一个防火墙能够包含OSI模型中的很多层,并且可能会涉及进行数据包过滤的设备。它可以实施数据包检查和过滤,在更高的层次中对某应用程序实现某一策略,或做更多类似的事情。

    一个无状态防火墙(不维护状态的防火墙,stateless firewall)通常仅仅在OSI模型的IP层(第三层)中执行一些数据包过滤,尽管有时这种类型的防火墙也会涉及更高层的协议。一个这种设备类型的例子可能包括一个边界路由器,它位于网络的边缘,实现了一个或更多的存取列表来防止各种类型的恶意流量进入本网络。有些人可能会说这种设备根本不是防火墙。然而,它看上去的确与RFC的定义相符。

    一个边界路由器的访问列表可能会依据数据包所到达的接口的不同实现许多不同的策略。它通常会过滤连接到互联网的网络边界处的特定的数据包。这些数据包将会在本章中稍后进行讨论。

    与无状态的防火墙相对的是状态防火墙(stateful firewall)。一个状态防火墙会对看到的一个会话中之前的数据包进行追踪,并基于此连接中已经看到的内容对数据包应用访问策略。状态防火墙隐含着它也拥有无状态防火墙所拥有的基础数据包过滤能力。一个状态防火墙会追踪一个TCP三次握手的阶段,并且会拒绝那些看上去对于三次握手来说失序的数据包。作为无连接协议,UDP对于状态防火墙来说处理起来会比较棘手,由于该通信过程中没有状态可言。然而,状态防火墙会跟踪最近的UDP报文交换以确定已经收到的某个数据包与一个近期发出的数据包相关。

    一个应用层网关(Application-Level Gateway,ALG)有时被写为Application-Layer Gateway,它是另外一种形式的防火墙。与了解网络层以及传输层的无状态防火墙不同,应用层网关主要在OSI模型中的应用层(第七层)进行操作。应用层网关通常对于被传递的应用程序数据有较为深刻的了解,因此它能够寻找到任何与正被检查的应用程序的日常流量有偏差的部分。

    一个应用层网关通常处在客户端和真实的服务器之间,并且主要目的是模仿服务器到客户端的行为。实际上,本地流量从不会离开本地LAN,而远处的流量也从不会进入本地LAN。

    应用层网关有时也指的是一个模块,或是协助另一个防火墙的软件。许多防火墙与FTP ALG一起运行以支持FTP的主动模式数据通道,这种模式下客户端向FTP服务器发送用于连接的本地端口,以便服务器打开数据通道。服务器初始化到来的数据通道(然而,通常,客户端初始化所有连接)。应用层网关时常需要传递多媒体协议通过防火墙,因为多媒体会话通常使用由双方初始化的多个连接,并且通常会同时使用TCP和UDP。

    ALG是一种代理。另一种形式的代理是链路层代理(circuit-level proxy)。链路层代理通常不具有应用层相关的知识,但它们能够实施存取和授权策略,并且它们充当原本的端到端连接中的终端点的作用。SOCKS是一个链路层代理的例子。代理服务器会扮演连接中两方的终端点的角色(既作为客户端从真实服务器处接收数据,又扮演服务器发送数据到真实的客户端),但服务器并没有任何应用相关的知识。

    在这些例子中,防火墙的目的是实施您定义的访问控制或安全策略。安全策略对访问控制来说至关重要——在您的控制下,谁被允许而谁不被允许在服务器和网络上执行一些动作。

    虽然对于防火墙来说,并没有明确的要求,但防火墙很多时候都执行了一些额外的任务,这些任务可能包含网络地址转换(Network Address Translation,NAT)、反病毒检测、事件通知、URL过滤、用户验证以及网络层加密。

    本书的内容涵盖了数据包过滤防火墙、静态与动态防火墙、无状态与状态防火墙。所有这些提到的手段都是用来控制哪个服务能够由哪个用户访问。每种方法基于OSI参考模型里不同层次中的可用信息,都有其各自的优势和长处。

    第1章介绍了防火墙所基于的概念和信息。本章会介绍这些信息在实现防火墙规则时是如何被使用的。

    2.1 一个数据包过滤防火墙

    在最基本的层面上,数据包过滤防火墙由一系列接受和拒绝的规则组成。这些规则明确地定义了哪些数据包被允许而哪些不被允许通过网络接口。防火墙规则使用第1章介绍的数据包报头来决定是否将数据包传递到它的目的地,还是静默地丢弃数据包,或拦截数据包并向发送的计算机返回一个错误条件。这些规则能够基于广泛的因素,包括源IP地址、目的IP地址、源端口、目的端口(更常用)、单个数据包的一部分如TCP报头、协议类型、MAC地址等。

    MAC地址过滤在连接到互联网的防火墙中是不常见的。使用MAC地址过滤,防火墙可以阻挡或允许某些特定的MAC地址。然而,您十有八九可能仅仅看到一个MAC地址,这个地址来自于您防火墙上游的路由器。这意味着,只要您的防火墙可以看到,那么互联网上的所有主机看起来都有着同样的MAC地址。对于新防火墙管理员来说,一个常见的错误便是尝试在互联网防火墙中尝试使用MAC地址过滤。

    使用混合的TCP/IP参考模型,则数据包过滤防火墙工作在网络层和传输层。如图2.1所示。

    screenshot

    管理防火墙的总体思路是:当您已经连接到互联网时,您需要十分仔细地控制到底允许什么在互联网和计算机之间传播。在连接到互联网的外部接口中,您应尽可能准确和明确地单独过滤从外部进入的数据和从内部发出的数据。

    对于单一计算机的配置来说,将网络接口想象成一组I/O对可能会有所帮助。防火墙独立地过滤接口上进入和发出的数据。输入过滤器(input filter)和输出过滤器(output filter)能够,且基本上可以具有完全不同的规则。图2.2描述了规则处理的流程图。

    这听上去挺强大,确实这样,但它却并不是绝对没错的安全机制。这只是故事的一部分,只是多层数据安全方法中的一层,并不是所有的应用程序通信协议都会提供自身以进行数据包过滤。

    这种类型的过滤对于细粒度的验证和存取控制来说太过于低级。这些安全服务必须在更高的层次中提供。IP不具有查证发送者是否是他/她所声称的那个人的能力。在这一层中仅有的可用的识别信息是IP数据报头中的源地址。而源地址可以被轻易地修改。再向上一层,网络层和传输层都无法检查应用数据是否正确。然而,相比于能够更容易、更方便地在更高层次所做的控制,数据包层次允许在直接端口存取、数据包内容以及正确的通信协议方面进行更强力、更简单的控制。

    没有了数据包层次的过滤,更高层的过滤以及代理安全措施将变得残缺或不起作用。至少在某种程度上,它们必须依赖下层通信协议的正确性。安全协议栈中的每一层都提供了其他层所不能提供的能力。
    screenshot

    展开全文
  • 本节书摘来自异步社区《Linux防火墙(第4版)》一书中的第2章...如果您的环境代表了一个可信赖的环境,那么过滤传出数据包可能看上去并不像过滤传入数据包那样重要。您的系统不会对无法穿过防火墙的消息进行响应。住...

    本节书摘来自异步社区《Linux防火墙(第4版)》一书中的第2章,第2.5节,作者:【美】Steve Suehring(史蒂夫 苏哈林)著,更多章节内容可以访问云栖社区“异步社区”公众号查看

    2.5 过滤传出数据包

    如果您的环境代表了一个可信赖的环境,那么过滤传出数据包可能看上去并不像过滤传入数据包那样重要。您的系统不会对无法穿过防火墙的消息进行响应。住宅站点通常采用这种方式。然而,哪怕是对住宅站点来说,对称的过滤也很重要,尤其是当防火墙保护着运行微软公司Windows系统的计算机。对于商用站点来说,传出过滤的重要性是毫无争议的。

    如果您的防火墙保护着由微软公司Windows系统构成的局域网,那么控制传出流量将变得更加重要。被盗用的Windows计算机已在历史上(并将继续)被用于协助DoS攻击和其他对外部的攻击。特别是基于这个原因,对离开您的网络的数据包进行过滤是十分重要的。

    过滤传出消息也能够让您运行局域网服务而不致将它泄漏到互联网中,这些数据包不属于那里。这不仅仅是禁止外部访问本地局域网服务的问题。也是不要将本地系统的信息广播到互联网的问题。例子是如果您在运行着本地的DHCPD、NTP、SMB或者其他用于内部的服务。其他令人讨厌的服务可能在广播wall或syslogd消息。

    一个相关的源头是某些个人电脑软件,它们有时会忽略互联网服务端口协议和保留的分配。这相当于一个连接到互联网的计算机上运行着面向局域网使用而设计的程序。

    最后的原因就是简单地保持本地的流量本地化,那些不应离开局域网但却可以这样做的流量。保持本地流量本地化从安全角度来说是一个好主意,但也是保护带宽的一种手段。

    2.5.1 本地源地址过滤
    基于源地址进行传出数据包过滤是容易的。对于小型站点或连接到互联网的单一计算机来说,源地址总是您计算机正常使用时的IP地址。没有原因应允许一个拥有其他源地址的传出数据包传出,防火墙应该阻止它。

    对于那些IP地址由他们的ISP动态分配的人来说,在地址分配阶段存在短暂的异常。这个异常针对DHCP,主机广播消息时使用0.0.0.0作为它的源地址。

    对于那些在局域网中,而防火墙计算机使用动态分配的IP地址的人来说,限制传出数据包包含防火墙计算机源地址的行为是强制性的。它能避免许多常见的配置错误,这些错误对于远程主机来说像是源地址欺骗或非法源地址。

    如果您的用户或他们的软件不是100%值得信赖的,那么保证本地流量仅包含合法的、本地地址是很重要的,它能避免被用来作为源地址欺骗参与到DoS攻击中。

    最后的一点尤其重要。RFC 2827,“Network Ingress Filtering:Defeating Denial of Service AttacksWhich Employ IP Source Address Spoofing”(更新的RFC 3704,“Ingress Filtering for Multihomed Networks”)是讨论这一点的当前的“最佳实践”。理想情况下,每个路由器都应过滤明显非法的源地址并保证离开本地网络的流量仅包含属于本地网络的可路由的源地址。

    2.5.2 远程目的地址过滤
    同传入数据包过滤一样,您可能想要只允许特定种类的寻址到特定远程网络或个人计算机的传出数据包通过。这种情况下,防火墙规则将定义特定的IP地址或一个有限目的IP地址的范围,仅有这些数据包能够被允许通过。

    第一类由目的地址过滤的传出数据包是去往您所联系的远程服务器的数据包。尽管有些数据包,例如那些发往Web或FTP服务器的,可能去往互联网的任何角落,但其他远程服务只会由您的ISP或特定的受信任的主机合法地提供。可能仅由您的ISP提供的服务的例子是邮件服务(例如SMTP或POP3)、DNS服务、DHCP动态IP地址分配和Usenet新闻服务。

    第二类由目的地址过滤的传出数据包是发往远程客户端的数据包,这些客户端访问您的站点提供的服务。再次的,尽管一些传出服务连接,例如从您本地Web服务发出的响应可能会到达任何地方,但其他本地服务只会向一少部分受信任的远程站点或朋友们提供。受限制的本地服务的例子是:telnet、SSH、基于Samba的服务、通过portmap访问的RPC服务。防火墙规则不仅拒绝针对这些服务的到来的连接,而且会拒绝从这些服务向任何人传出的响应。

    2.5.3 本地源端口过滤
    “显式地定义您网络中的哪个服务端口能够被用于传出连接”有两个目的:一个是针对您的客户端程序,另一个则是针对您的服务器程序。指定您传出连接允许的源端口有助于保证您的程序正确地工作,它也能保护其他人使其不受任何不应传递至互联网的本地网络流量的影响。

    从您的本地客户端发起的传出连接将总是从非特权源端口号发出。在防火墙规则中将您的客户端限制为非特权端口有助于通过保证您的客户端程序按预期运行以保护其他人免受您这端存在的潜在的错误的影响。

    从您的本地服务器程序发出的传出数据包将总是从分配给它们的服务端口号发出,并且只响应接收到的请求。“在防火墙层次里限制您的服务器仅使用分配给它们的端口”可以保证您的服务器在协议层面正确地工作。更重要的是,它能帮助保护任何您可能从外部访问的私有的本地网络服务。它还能保护远程站点免受本应限制在您的本地系统的网络流量的打扰。

    2.5.4 远程目的端口过滤
    您的本地客户端程序被设计用来连接到通过已分配的服务端口提供服务的网络服务器。从这个角度看,限制您的本地客户端仅连接到相关的服务器服务端口号能保证协议的正确性。限制您的客户端连接到特定的目标端口还有一些其他的目的:第一,它帮助防止本地的、私有网络客户端无意中试图访问互联网上的服务器。第二,它能禁止传出的错误,端口扫描和其他可能来源于您的站点的恶作剧。

    您的本地服务器程序将几乎总是参与到由非特权端口发起的连接中。防火墙规则将限制您服务器的流量仅能传出到非特权目的端口。

    2.5.5 传出TCP连接状态过滤
    传出的TCP数据包接受规则可以使用TCP连接相关的连接状态,就像传入规则做的那样。所有的TCP连接都遵循同样的连接状态集合,这在客户端和服务器间可能会有不同。

    从本地客户端传出的TCP数据包将在第一个发出的数据包中设置SYN标志,这是三次握手的一部分。最初的连接请求将设置SYN标志,但不设置ACK标志。您的本地客户端防火墙规则将允许设置了SYN标志或ACK标志的传出数据包。

    从本地服务器传出的数据包将总是响应由远程客户端程序发起的连接请求。每个从您的服务器发出的数据包都会设置ACK标志。您的本地服务器防火墙规则将要求所有从您的服务器传出的数据包都设置了ACK标志。

    展开全文
  • 源地址:... wireshark 数据包分析技巧总结 wireshark 过滤表达式的比较运算符一览 (类 C 形式和对应的英语形式) enighish C-like 含义和实例 eq 
  • 本节书摘来自异步社区《Linux防火墙(第4版...2.4 过滤传入的数据包 外部网卡I/O对中的输入端、输入规则集,对于保护您的站点而言,是更值得注意的。就像前面提到的那样,您能够基于源地址、目的地址、源端口、目的...
  • 过滤防火墙:包过滤防火墙不检查数据区,包过滤防火墙不建立连接状态表,前后报文无关,应用层控制很弱。 应用网关防火墙:不检查IP、TCP标头,不建立连接状态表,网络层保护比较弱。 状态检测防火墙:不检查...
  • 第三章主要阐述数据包在客户端局域网中的传输;第四章详细阐述数据互联网中是如何传输的;本章讲接入端局域网中的通信。 实现需求 前面讲到了数据传输到互联网中;接下来本章将继续延续这个思路,对数据传输到...
  • Wireshark数据包分析浅析

    千次阅读 2020-01-19 12:12:42
    Wireshark数据包分析 数据包分析器又名嗅探(Sniffers),是一种网络流量数据分析的手段,常见于网络安全领域使用,也有用于业务分析...探测由内部和外部的用户滥用网络资源 探测网络入侵后的影响 监测链接互联网宽...
  • 对放到防火墙的数据包进行过滤 检查是否匹配到现有会话,根据源地址,目的地址,源端口,目的端口,协议,唯一的会话token确定是否属于同一个会话。如果匹配到现有会话, 则跳过路由,策略查找过程,直接根据之前的...
  • APE使用外部(使用python脚本)和内部过滤器来动态地自动替换文本,或者简单地注入/编辑请求和响应。 APE易于使用和配置! 高级数据包编辑器基于原始数据包编辑器(http://www.packeteditor.com/)。可以下位置...
  • 数据包传输过程

    千次阅读 2019-06-09 23:14:59
    第一个 什么是FTP? FTP是英文File Transfer ...复杂的原因,是因为FTP协议要用到两个TCP连接,一个是命令链路,用来FTP客户端与服务器之间传递命令;另一个是数据链路,用来上传或下载数据。 FTP协议有两种...
  • Linux系统数据包转发

    万次阅读 2016-09-07 19:15:07
    出于安全考虑,Linux系统默认是禁止数据包转发的。所谓转发即当主机拥有多于一块的网卡时,其中一块收到数据包,根据数据包的目的ip地址将包发往本机另一网卡,该网卡根据路由表继续发送数据包。这通常就是路由器所...
  • Linux 中的网络数据包捕获

    千次阅读 2013-09-19 15:40:56
    开始之前 关于本教程 目前,信息要通过管道(也就是网络)传输,需要花很多时间封装数据包中。本教程 中,我们将这些数据包传输过程中捕获它们,捕获...由于我们将要研究的几种数据包过滤机制都是内核
  • 数据包过滤 2、路由控制 ACL+Router-policy 3、流量控制 ACL+QOS 基于ACL的包过滤 定义 对进出的数据包逐包检查,丢弃或允许通过,包过滤必须配置接口的某个方向上才能生效,一个接口的一个方向只能配置一个包过滤...
  • 中断下半部分软中断处理将数据包交给内核态的 OvS Bridge(Datapath)处理Linux 虚拟 “网线”(veth)的工作原理Linux bridge 经 veth 将数据包发给虚拟机 tap 口 数据包从物理网卡进入虚拟机的流程 顶层视角 ...
  • tcpdump使用详解及数据包分析

    万次阅读 2018-03-20 15:16:49
    tcpdump使用与数据分析 语法 tcpdump(选项) 选项 ...-A 以ASCII码方式显示每一个数据包(不会显示数据包中链路层头部信息). 抓取包含网页数据的... tcpdump将接受到count个数据包后退出. -C file-size ...
  • 网络数据包传输过程总结

    万次阅读 多人点赞 2016-03-01 13:39:17
    一、数据包是如何网络中传输的 我们电脑上的数据,是如何“走”到远端的另一台电脑的呢?这是个最基础的问题,可能很多人回答不上来,尽管我们每天都使用网络。这里我们以一个最简单的“ping”命令,来解释一...
  • tcpdump 网络数据包分析工具

    千次阅读 2013-03-28 13:10:01
    简介 用简单的话来定义tcpdump,就是:dump the traffic on a ...它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。   实用命令实例 默认启动 tcpdump
  • 它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。tcpdump是一个用于截取网络分组,并输出分组内容的工具。tcpdump凭借强大的功能和灵活的截取策略,使其成为...
  • Tracert命令 路由跟踪数据包解析

    万次阅读 2019-01-28 15:43:10
    Tracertet 命令作为一个路由跟踪、诊断实用程序,DOS和UNIX系统下都有此命令,它通过发送 Internet 控制消息协议 (ICMP) 回显请求和回显答复消息,产生关于经过每个路由器的命令行报告输出,从而跟踪路径。...
  • 1)下载tcpdump工具 ...它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。Android系统是基于Linux,可以使用tcpdump来抓取数据包。由于普通用户不能正常...
  • wireshark 数据包分析技巧总结

    千次阅读 2018-08-24 11:27:08
    摘抄自: http://blog.51cto.com/shayi1983/1558161 wireshark 过滤表达式的比较运算符一览 (类 C 形式和对应的英语形式) enighish C-like 含义和实例 eq == 等于 ip.src == 10.0.0.5 ne ...
  • 配置Wireshark抓取https数据包 解密SSL

    万次阅读 热门讨论 2018-07-02 17:46:41
    1、某些浏览器支持将 TLS 会话中使用的对称密钥保存在外部文件中,可供 Wireshark 加密使用,本文测试使用最新版的Chrome浏览器 版本 67.0.3396.99(正式版本) (64 位)   2、配置环境变量,SSLKEYLOGFILE C:...
  • 深度数据包检测(DPI) --SDN

    千次阅读 2014-09-18 22:40:48
    深度数据包检测(DPI)技术显著地加强了当前网络的安全性和管理性能,但是如果能和软件定义网络(SDN)结合起来...DPI是一种网络数据包过滤技术。数据包传递到一个审查点,DPI技术会检查该数据包,搜索不匹配协议
  • 简介 用简单的话来定义tcpdump,就是:dump the traffic on a...它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。   实用命令实例 默认启动 tc
  • 数据包传输的全过程

    万次阅读 2014-11-17 16:16:17
    第一个 什么是FTP? FTP是英文File Transfer Protocol的...复杂的原因,是因为FTP协议要用到两个TCP连接,一个是命令链路,用来FTP客户端与服务器之间传递命令;另一个是数据链路,用来上传或下载数据。  

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 26,604
精华内容 10,641
关键字:

在外部数据包经过过滤