精华内容
下载资源
问答
  • 在外部数据包经过过滤
    2020-12-23 01:22:41

    Tcpdump过滤数据包实例

    笔者维护的一台邮件服务器,发现老是有人上来连接25端口,用了几种软件,如iptraf及wireshark,etherape发现效果均不理想,还是Tcpdump更直观方便,如命令tcpdump tcp port 25 and host 211.147.1.11 > awstat.txt,即可生成一份详细的连接报告。感觉tcpdump还是很实用的,下面举出例子说明下它的使用方法:(抚)    (1) 想要截获所有210.27.48.1的主机收到的和发出的所有的数据包:

    #tcpdump host 210.27.48.1

    (2) 想要截获主机210.27.48.1和主机210.27.48.2或210.27.48.3的通信,使用命令(在命令行中使用括号时,一定要转义

    #tcpdump host 210.27.48.1 and \(210.27.48.2 or 210.27.48.3 \)

    (3) 如果想要获取主机210.27.48.1除了和主机210.27.48.2之外所有主机通信的ip包,使用命令:

    #tcpdump ip host 210.27.48.1 and !210.27.48.2

    (4) 如果想要获取主机210.27.48.1接收或发出的smtp包,使用如下命令:

    #tcpdump tcp port 25 and host 210.27.48.1 #这条注意,很多书上都传错了,之前有一个and,不然运行时出现syntax报错。

    (5)如果怀疑系统正受到拒绝服务(Dos)攻击,网络管理员可以通过截获发往本机的所有ICMP包,来确实目前是否有大量的ping指令流向服务器,此时可用如下指令:

    #tcpmdump icmp -n -i eth0   #用此命令测试时发现有联系的只有二个DNS,很正常

    tcpdump 的输出结果介绍

    ———————————————

    下面我们介绍几种典型的tcpdump命令的输出信息

    (1) 数据链路层头信息

    使用命令#tcpdump –e host ice

    ice是一台装有linux的主机,她的MAC地址是0:90:27:58:AF:1A

    H219是一台装有SOLARIC的SUN工作站,它的MAC地址是8:0:20:79:5B:46;上一条命令的输出结果如下所示:

    21:50:12.847509 eth0 < 8:0:20:79:5b:46 0:90:27:58:af:1a ip 60: h219.33357 > ice. telnet 0:0(0) ack 22535 win 8760 (DF)

    分析:21:50:12是显示的时间, 847509是ID号,eth0 表示从网络接口设备发送数据包, 8:0:20:79:5b:46是主机H219的MAC地址,它表明是从源地址H219发来的数据包. 0:90:27:58:af:1a 是主机ICE的MAC地址,表示该数据包的目的地址是ICE . ip是表明该数据包是IP数据包,60是数据包的长度, h219.33357 > ice. telnet表明该数据包是从主机H219的33357端口发往主机ICE的TELNET(23)端口. ack 22535表明对序列号是222535的包进行响应. win 8760表明发送窗口的大小是8760.

    (2) ARP包的TCPDUMP输出信息

    使用命令#tcpdump arp

    得到的输出结果是:

    22:32:42.802509 eth0 > arp who-has route tell ice (0:90:27:58:af:1a)

    22:32:42.802902 eth0 < arp reply route is-at 0:90:27:12:10:66 (0:90:27:58:af:1a)

    分析: 22:32:42是时间戳, 802509是ID号, eth0 >表明从主机发出该数据包, arp表明是ARP请求包, who-has route tell ice表明是主机ICE请求主机ROUTE的MAC地址。 0:90:27:58:af:1a是主机ICE的MAC地址。

    (3) TCP包的输出信息

    用TCPDUMP捕获的TCP包的一般输出信息是:

    src > dst: flags data-seqno ack window urgent options

    src > dst:表明从源地址到目的地址, flags是TCP包中的标志信息,S 是SYN标志, F (FIN), P (PUSH) , R (RST) "." (没有标记); data-seqno是数据包中的数据的顺序号, ack是下次期望的顺序号, window是接收缓存的窗口大小, urgent表明数据包中是否有紧急指针.Options是选项.

    (4) UDP包的输出信息

    用TCPDUMP捕获的UDP包的一般输出信息是:

    route.port1 > ice.port2: udp lenth

    UDP十分简单,上面的输出行表明从主机ROUTE的port1端口发出的一个UDP数据包到主机ICE的port2端口,类型是UDP, 包的长度是lenth

    第一种是关于类型的关键字,主要包括host,net,port, 例如 host 210.27.48.2,指明 210.27.48.2是一台主机,net 202.0.0.0 指明 202.0.0.0是一个网络地址,port 23 指明端口号是23。如果没有指定类型,缺省的类型是host.

    第二种是确定传输方向的关键字,主要包括src , dst ,dst or src, dst and src ,这些关键字指明了传输的方向。举例说明,src 210.27.48.2 ,指明ip包中源地址是210.27.48.2 , dst net 202.0.0.0 指明目的网络地址是202.0.0.0 。如果没有指明方向关键字,则缺省是src or dst关键字。

    第三种是协议的关键字,主要包括fddi,ip,arp,rarp,tcp,udp等类型。Fddi指明是在FDDI(分布式光纤数据接口网络)上的特定 的网络协议,实际上它是"ether"的别名,fddi和ether具有类似的源地址和目的地址,所以可以将fddi协议包当作ether的包进行处理和 分析。其他的几个关键字就是指明了监听的包的协议内容。如果没有指定任何协议,则tcpdump将会监听所有协议的信息包。

    除了这三种类型的关键字之外,其他重要的关键字如下:gateway, broadcast,less,greater,还有三种逻辑运算,取非运算是 ‘not ‘ ‘! ‘, 与运算是’and’,’&&’;或运算 是’or’ ,’││’;这些关键字可以组合起来构成强大的组合条件来满足人们的需要,下面举几个例子来说明。

    普通情况下,直接启动tcpdump将监视第一个网络界面上所有流过的数据包。

    tcpdump采用命令行方式,它的命令格式为:

    tcpdump [ -adeflnNOpqStvx ] [ -c 数量 ] [ -F 文件名 ]

    [ -i 网络接口 ] [ -r 文件名] [ -s snaplen ][ -T 类型 ] [ -w 文件名 ][表达式 ]tcpdump的选项介绍

    ———————————————

    -a       将网络地址和广播地址转变成名字;

    -d       将匹配信息包的代码以人们能够理解的汇编格式给出;

    -dd      将匹配信息包的代码以c语言程序段的格式给出;

    -ddd     将匹配信息包的代码以十进制的形式给出;

    -e       在输出行打印出数据链路层的头部信息;

    -f       将外部的Internet地址以数字的形式打印出来;

    -l       使标准输出变为缓冲行形式;

    -n       不把网络地址转换成名字;

    -t 在输出的每一行不打印时间戳;

    -v 输出一个稍微详细的信息,例如在ip包中可以包括ttl和服务类型的信息;

    -vv 输出详细的报文信息;

    -c 在收到指定的包的数目后,tcpdump就会停止;

    -F 从指定的文件中读取表达式,忽略其它的表达式;

    -i 指定监听的网络接口;

    -r 从指定的文件中读取包(这些包一般通过-w选项产生);

    -w 直接将包写入文件中,并不分析和打印出来;

    -T 将监听到的包直接解释为指定的类型的报文,常见的类型有rpc(远程过程调用)和snmp(简单网络管理协议;)

    tcpdump的表达式介绍———————————————

    表达式是一个正则表达式,tcpdump利用它作为过滤报文的条件,如果一个报文满足表达式的条件,则这个报文将会被捕获。如果没有给出任何条件,则网络上所有的信息包将会被截获。

    在表达式中一般如下几种类型的关键字,一种是关于类型的关键字,主要包括host, net, port, 例如host 210.27.48.2,指明210.27.48.2是一台主机,net 202.0.0.0指明202.0.0.0是一个网络地址,port 23指明端口号是23。如果没有指定类型,缺省的类型是host.

    第二种是确定传输方向的关键字,主要包括src, dst, dst or src, dst and src,这些关键字指明了传输的方向。举例说明,src 210.27.48.2,指明ip包中源地址是210.27.48.2,dst net 202.0.0.0指明目的网络地址是202.0.0.0。如果没有指明方向关键字,则缺省是src or dst关键字。

    第三种是协议的关键字,主要包括fddi, ip ,arp, rarp, tcp, udp等类型。fddi指明是在FDDI(分布式光纤数据接口网络)上的特定的网络协议,实际上它是"ether"的别名,fddi和ether具有类似的源地址和目的地址,所以可以将fddi协议包当作ether的包进行处理和分析。

    其他的几个关键字就是指明了监听的包的协议内容。如果没有指定任何协议,则tcpdump将会监听所有协议的信息包。

    除了这三种类型的关键字之外,其他重要的关键字如下:gateway, broadcast, less, greater还有三种逻辑运算,取非运算是 ‘not’, ‘!’;与运算是‘and’, ‘&&’; 或运算是‘or’, ‘||

    by 抚琴煮酒

    更多相关内容
  • 防火墙之数据包过滤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

    展开全文
  • 数据包过滤原理

    千次阅读 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

    展开全文
  • 数据包过滤 2、路由控制 ACL+Router-policy 3、流量控制 ACL+QOS 基于ACL的包过滤 定义 对进出的数据包逐包检查,丢弃或允许通过,包过滤必须配置接口的某个方向上才能生效,一个接口的一个方向只能配置一个包过滤...
  • APE使用外部(使用python脚本)和内部过滤器来动态地自动替换文本,或者简单地注入/编辑请求和响应。 APE易于使用和配置! 高级数据包编辑器基于原始数据包编辑器(http://www.packeteditor.com/)。可以下位置...
  • 过滤防火墙:包过滤防火墙不检查数据区,包过滤防火墙不建立连接状态表,前后报文无关,应用层控制很弱。 应用网关防火墙:不检查IP、TCP标头,不建立连接状态表,网络层保护比较弱。 状态检测防火墙:不检查...
  • python抓数据包

    2020-11-29 13:00:30
    pysharkpyshark是一款针对tshark的python封装器,pyshark的帮助下,广大研究人员可以使用wireshark的解析器来进行python数据包解析。 扩展文档:【pyshark】虽然目前社区也有多款针对python包的解析模块,但...
  • 嗅探(窃听网络上流经的数据包)

    千次阅读 2020-04-01 21:32:24
    嗅探(窃听网络上流经的数据包) 当你舒适的坐家里,惬意的享受网络给你带来的便利,收取你的EMAIL,购买你喜欢的物品的时候,你是否会想到你的朋友给你的信件,你的信用卡帐号变成了一个又一个的信息包网络上不停...
  • 第三章主要阐述数据包在客户端局域网中的传输;第四章详细阐述数据互联网中是如何传输的;本章讲接入端局域网中的通信。 实现需求 前面讲到了数据传输到互联网中;接下来本章将继续延续这个思路,对数据传输到...
  • 中断下半部分软中断处理将数据包交给内核态的 OvS Bridge(Datapath)处理Linux 虚拟 “网线”(veth)的工作原理Linux bridge 经 veth 将数据包发给虚拟机 tap 口 数据包从物理网卡进入虚拟机的流程 顶层视角 ...
  • 已有的数据包中提取源IP和目的IP地址?WinPcap用于实现。WinPcap是一个功能强大的网络开发库,它可以实现许多功能:获取可用的网络适配器;获取指定适配器的信息(如名称和描述信息);捕获指定网卡的数据包;发送...
  • 数据包传输过程

    千次阅读 2019-06-09 23:14:59
    第一个 什么是FTP? FTP是英文File Transfer ...复杂的原因,是因为FTP协议要用到两个TCP连接,一个是命令链路,用来FTP客户端与服务器之间传递命令;另一个是数据链路,用来上传或下载数据。 FTP协议有两种...
  • 本节书摘来自异步社区《Linux防火墙(第4版)》一书中的第2章...如果您的环境代表了一个可信赖的环境,那么过滤传出数据包可能看上去并不像过滤传入数据包那样重要。您的系统不会对无法穿过防火墙的消息进行响应。住...
  • Wireshark数据包分析浅析

    千次阅读 多人点赞 2020-01-19 12:12:42
    Wireshark数据包分析 数据包分析器又名嗅探(Sniffers),是一种网络流量数据分析的手段,常见于网络安全领域使用,也有用于业务分析...探测由内部和外部的用户滥用网络资源 探测网络入侵后的影响 监测链接互联网宽...
  • cd00r.c:https中

    2021-05-21 09:48:55
    简介标准后门和远程访问服务有一个主要缺点:他们正在监听的端口系统控制台上以及从外部(通过端口扫描)都可以看到。 我最喜欢的后门之一是cd00r(来自phenoelit.de)。 该后门将不会任何端口上进行侦听,直到...
  • 第四章 网络安全技术

    2020-08-13 16:20:51
    硬件外形是多网络接口的机架服务器,网络拓扑图中所使用红墙的图标来表示 网络防火墙:用于两个或者多个网路之间数据流的监控,通常使用专门的硬件实现,并安装特定的软件 主机防火墙:多指安装主机中的软件,...
  • ACL包过滤

    2022-03-10 11:19:11
    一、ACL包过滤 1、ACL 定义 访问控制列表 用于数据流的匹配和筛选 ...入方向:只对从外部进入的数据包过滤 出方向:只对从内部发出的数据包过滤过滤的工作流程 数据包到达接口检查是否应用了A...
  • 拥有关键业务服务的大型企业可能已经利用流和数据包数据来监控他们的环境,即使只使用基本的数据包分析工具。 流和数据包数据是收集线索以修复性能问题的基础数据源(查看事件、日志和系统日志以获取更多来源)。...
  • TCPDump工具使用与UDP数据包分析

    千次阅读 2021-10-24 11:48:07
    1、了解网络数据包分析工具TCPDump使用; 2、熟悉UDP数据包结构 预备知识 Linux作为网络服务器,特别是作为路由器和网关时,数据的采集和分析是必不可少的。 tcpdump是一个用于截取网络分组,并输出分组内容的...
  • 显示过滤表达式中操作符: == eq 等于 != ne 不等于 &gt; gt 高于 &lt; lt 低于 &gt;= ge 不高于 &lt;= le 不低于   contains 包含某个...
  • tcpdump使用详解及数据包分析

    万次阅读 2018-03-20 15:16:49
    tcpdump使用与数据分析 语法 tcpdump(选项) 选项 ...-A 以ASCII码方式显示每一个数据包(不会显示数据包中链路层头部信息). 抓取包含网页数据的... tcpdump将接受到count个数据包后退出. -C file-size ...
  • 源地址:... wireshark 数据包分析技巧总结 wireshark 过滤表达式的比较运算符一览 (类 C 形式和对应的英语形式) enighish C-like 含义和实例 eq 
  • 目录数据包过滤包过滤优点包过滤缺点应用代理应用代理优点应用代理缺点网络IP地址转换(NAT) 数据包过滤 网络上的数据都是以包为单位进行传输的,每一个数据包中都会包含一些特定...数据包过滤可以防止外部不合法...
  • 过滤规则包过滤防火墙实验需要用到的虚拟机 包过滤防火墙 iptables 工具 具有四个功能(表) raw mangle 这两个表实现数据流量的跟踪与整型 nat --网络地址转换 filter --过滤 实验 需要用到的虚拟机 一台xp,两台...
  • 数据包过滤(packet Filtering)技术是网络层对数据包进行选择,选择的依据是系统内设置的过滤逻辑,称为访问控制表。通过检查数据流中每个数据包的源地址和目的地址,所用的端口号和协议状态等因素,或他们的组合来...
  • Wireshark 基础 | 捕获过滤

    千次阅读 2021-10-05 09:23:20
    Wireshark 基础系列 | 捕获过滤
  • 【网络编程】---C++实现原始套接字捕获数据包

    千次阅读 多人点赞 2019-12-18 18:09:21
    【网络编程】—C++实现原始套接字捕获数据包 引言:通过创建原始套接字,获取本地可用的Ip地址,选择捕获数据包使用的网卡,绑定本地地址后,设置网卡为混杂模式,实现循环接收并显示数据来实现捕获数据包。 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 29,740
精华内容 11,896
热门标签
关键字:

在外部数据包经过过滤