防火墙的基本概念(2)
- 防火墙
- 1.4 何为防火墙
- 1.5 防火墙的判断依据
- 1.5.1 各层数据包包头的信息
- Linux iptables
- 1.6 防火墙的分类
- 【转载】
防火墙
1.4 何为防火墙
无防火墙网络环境如下图:
当主机A发送数据包给主机B时,不管数据包的内容是什么,主机B都会照单全收。即便是攻击性的数据包,主机B也会将其收下。如果主机B存在漏洞或者缺陷,那么这个攻击数据包可能会使整台计算机瞬间瘫痪。
有防火墙网络环境如下图:
从某种角度来看,这个架构中的防火墙就像是一个路由器,只是这个路由器可以选择将某些数据包进行过滤,只将过滤后的数据包转发给另一边,如此即可达到保护防火墙后主机的目的。这也就是第一代防火墙的思路,即包过滤。
第一代防火墙:包过滤防火墙
包过滤( Packet Filter )是在网络层中根据事先设置的安全访问策略(过滤规则) ,检查每一个数据包的源IP地址、目的IP地址以及IP分组头部的其他各种标志信息(如协议、服务类型等) , 确定是否允许该数据包通过。
由于包过滤防火墙不检查更高层数据,因此这种防火墙不能阻止利用了特定应用的漏洞或功能所进行的攻击。
包过滤防火墙对利用 TCP / IP 规范和协议栈存在的问题进行的攻击没有很好的应对措施(网络层地址假冒、无法阻止ip欺骗)。
大多数包过滤防火墙不支持高级的用户认证机制。
第二代防火墙:代理防火墙
代理防火墙并不是真正意义上的互联网路由器,它是一个运行一个或多个应用层网关(Application-Layer Gateways, ALG)的主机,也叫应用网关防火墙,该主机有多个网络接口,能够在应用层中继两个连接之间的特定类型的流量。它通常不像路由器那样做IP转发,但现如今也出现了结合了各种功能的更复杂的代理防火墙。
所有进出网络的应用程序报文都必须通过应用网关。当某应用客户进程向服务器发送一份请求报文时,先发送给应用网关,应用网关在应用层打开该报文,查看该请求是否合法(可根据应用层用户标识ID或其他应用层信息来确定)。如果请求合法,应用网关以客户进程的身份将请求报文转发给原始服务器。如果不合法,报文则被丢弃。
第三代防火墙:状态检测防火墙
状态检测防火墙采用了状态检测包过滤的技术,是传统包过滤上的功能扩展。状态检测防火墙在网络层有一个检查引擎截获数据包并抽取出与应用层状态有关的信息,并以此为依据决定对该连接是接受还是拒绝。这种技术提供了高度安全的解决方案,同时具有较好的适应性和扩展性。
状态检测防火墙一般也包括一些代理级的服务,它们提供附加的对特定应用程序数据内容的支持。
状态检测技术最适合提供对UDP协议的有限支持。它将所有通过防火墙的UDP分组均视为一个虚连接,当反向应答分组送达时,就认为一个虚拟连接已经建立。
状态检测防火墙克服了包过滤防火墙和应用代理服务器的局限性,不仅仅检测“to”和“from”的地址,而且不要求每个访问的应用都有代理。
第四代防火墙:UTM 统一威胁管理
统一威胁管理,融合了IPS入侵防御系统,AV网关防病毒,上网行为管理,防DDOS攻击等特性,为了更好的解决来自企业内部、外部的攻击威胁提供了强有力保障(UTM包含入侵防御和内容过滤)
- 入侵防御(IPS)
入侵防御是一种安全机制,通过分析网络流量,检测入侵(包括缓冲区溢出攻击、木马、蠕虫等),并通过一定的响应方式,实时地中止入侵行为,保护企业信息系统和网络架构免受侵害。
入侵防御是种既能发现又能阻止入侵行为的新安全防御技术。通过检测发现网络入侵后,能自动丢弃入侵报文或者阻断攻击源,从而从根本上避免攻击行为。
第五代防火墙:NG 下一代防火墙
下一代防火墙,即Next Generation Firewall,简称NG Firewall。
Gartner介绍为应对当前与未来新一代的网络安全威胁认为防火墙必需要再一次升级为“下一代防火墙”。
下一代防火墙需具有下列最低属性:
- 支持在线BITW(线缆中的块)配置,同时不会干扰网络运行。
- 可作为网络流量检测与网络安全策略执行的平台,并具有下列最低特性:
- 标准的第一代防火墙功能:具有数据包过滤、网络地址转换(NAT)、协议状态检查等。
- 集成式IPS网络防御系统,支持基于漏洞的签名与基于威胁的签名。
- 业务识别与全栈可视性:采用非端口与协议vs仅端口、协议与服务的方式,识别应用程序并在应用层执行网络安全策略。
- 可收集防火墙外的各类信息,用于改进阻止决策,或作为优化阻止规则的基础。
1.5 防火墙的判断依据
防火墙的任务简单描述就是“放行合法”或者“封锁不合法”的数据包,但是随着计算机技术的发展,尤其是针对TCP/IP协议的设计缺陷的攻击,第一代包过滤防火墙已经不能很好的履行职能,因此诞生了第二类防火墙,代理,或者说地址转换防火墙。
因此,现今的防火墙判断依据依然从包过滤增加到通过检测,限制和更改经过防火墙的数据流,经可能的对外屏蔽网络内部的信息和结构来实现网络的安全保护。
1.5.1 各层数据包包头的信息
在防火墙的匹配条件中,最基本且最简单的就是数据包各层包头里面的信息,这里将根据各层不同包头内的信息来说明。
- 链路层
该层对应OSI七层模型物理层与数据链路层,含有协议Ethernet和IEEE,两者最重要的信息就是MAC地址。理论上MAC地址作为计算机唯一的地址,可以通过Source MAC判断来源主机。但是现在已经有软件可以做到修改MAC地址,因此对于Source MAC的判断愈加困难。 - 网络层
该层对应OSI七层模型网络层,含有协议IP,该协议最重要的信息为IP地址。除了IP地址外,Header Length、Differentiated服务、Total Length、Flags、Time to Live(TTL)、Protocol都能作为过滤条件。 - 传输层
该层对应OSI七层模型传输层,含有协议TCP和UDP,两者最重要的信息是端口。除了端口外,Header Length、Flags都能作为过滤条件。
Linux iptables
netfilter/iptables(简称为iptables)组成Linux平台下的包过滤防火墙,与大多数的Linux软件一样,这个包过滤防火墙是免费的,它可以代替昂贵的商业防火墙解决方案,完成封包过滤、封包重定向和网络地址转换(NAT)等功能。
iptables和netfilter的关系:
iptables只是Linux防火墙的管理工具,位于/sbin/iptables。实现防火墙功能的是 netfilter,它是Linux内核中实现包过滤的内部结构。
iptables传输数据包的过程
- 当一个数据包进入网卡时,它首先进入PREROUTING链,内核根据数据包目的IP判断是否需要转送出去。
- 如果数据包就是进入本机的,到达INPUT链。数据包到了INPUT链后,任何进程都会收到它。本机上运行的程序可以发送数据包,这些数据包会经过OUTPUT链,然后到达POSTROUTING链输出。
- 如果数据包是要转发出去的,且内核允许转发,数据包就经过FORWARD链,然后到达POSTROUTING链输出。
iptables的规则表和链
-
表(tables)提供特定的功能
iptables内置了4个表,即filter表、nat表、mangle表和raw表,分别用于实现包过滤,网络地址转换、包重构(修改)和数据跟踪处理。 -
链(chains)是数据包传播的路径
当一个数据包到达一个链时,iptables就会从链中第一条规则开始检查,看该数据包是否满足规则所定义的条件。如果满足,系统就会根据 该条规则所定义的方法处理该数据包;否则iptables将继续检查下一条规则,如果该数据包不符合链中任一条规则,iptables就会根据该链预先定 义的默认策略来处理数据包。 -
规则表
- filter表——三个链:INPUT、FORWARD、OUTPUT,用于过滤数据包 内核模块:iptables_filter.
- Nat表——三个链:PREROUTING、POSTROUTING、OUTPUT,用于网络地址转换(IP、端口) 内核模块:iptable_nat
- Mangle表——五个链:PREROUTING、POSTROUTING、INPUT、OUTPUT、FORWARD,用于修改数据包的服务类型、TTL、并且可以配置路由实现QOS内核模块:iptable_mangle
- Raw表——两个链:OUTPUT、PREROUTING,用于决定数据包是否被状态跟踪机制处理 内核模块:iptable_raw
-
规则链
- INPUT——进来的数据包应用此规则链中的策略
- OUTPUT——外出的数据包应用此规则链中的策略
- FORWARD——转发数据包时应用此规则链中的策略
- PREROUTING——对数据包作路由选择前应用此链中的规则
- POSTROUTING——对数据包作路由选择后应用此链中的规则
-
规则表之间的优先顺序
Raw——mangle——nat——filter
iptables命令管理控制选项
iptables --helpUsage: iptables -[ACD] chain rule-specification [options]iptables -I chain [rulenum] rule-specification [options]iptables -R chain rulenum rule-specification [options]iptables -D chain rulenum [options]iptables -[LS] [chain [rulenum]] [options]iptables -[FZ] [chain] [options]iptables -[NX] chainiptables -E old-chain-name new-chain-nameiptables -P chain target [options]iptables -h (print this help information)Commands:
Either long or short options are allowed.--append -A chain Append to chain--check -C chain Check for the existence of a rule--delete -D chain Delete matching rule from chain--delete -D chain rulenumDelete rule rulenum (1 = first) from chain--insert -I chain [rulenum]Insert in chain as rulenum (default 1=first)--replace -R chain rulenumReplace rule rulenum (1 = first) in chain--list -L [chain [rulenum]]List the rules in a chain or all chains--list-rules -S [chain [rulenum]]Print the rules in a chain or all chains--flush -F [chain] Delete all rules in chain or all chains--zero -Z [chain [rulenum]]Zero counters in chain or all chains--new -N chain Create a new user-defined chain--delete-chain-X [chain] Delete a user-defined chain--policy -P chain targetChange policy on chain to target--rename-chain-E old-chain new-chainChange chain name, (moving any references)Options:--ipv4 -4 Nothing (line is ignored by ip6tables-restore)--ipv6 -6 Error (line is ignored by iptables-restore)
[!] --protocol -p proto protocol: by number or name, eg. `tcp'
[!] --source -s address[/mask][...]source specification
[!] --destination -d address[/mask][...]destination specification
[!] --in-interface -i input name[+]network interface name ([+] for wildcard)--jump -j targettarget for rule (may load target extension)--goto -g chainjump to chain with no return--match -m matchextended match (may load extension)--numeric -n numeric output of addresses and ports
[!] --out-interface -o output name[+]network interface name ([+] for wildcard)--table -t table table to manipulate (default: `filter')--verbose -v verbose mode--wait -w [seconds] maximum wait to acquire xtables lock before give up--line-numbers print line numbers when listing--exact -x expand numbers (display exact values)
[!] --fragment -f match second or further fragments only--modprobe=<command> try to insert modules using this command--set-counters -c PKTS BYTES set the counter during insert/append
[!] --version -V print package version.
示例:
只允许管理员从192.168.184.0/24网段使用SSH远程登录防火墙主机。
iptables -A INPUT -p tcp --dport 22 -s 192.168.184.0/24 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j DROP
1.6 防火墙的分类
防火墙的分类方法,主要有以下6种:
- 软硬件形式分类:软件防火墙、硬件防火墙、芯片级防火墙。
- 防火墙技术分类:包过滤型防火墙、代理型防火墙。
- 防火墙结构分类:单一主机防火墙、路由集成式防火墙、分布式防火墙。
- 防火墙的应用部署位置分类:边界防火墙、个人防火墙、混合防火墙。
- 防火墙性能分类:百兆级防火墙、千兆级防火墙。
- 防火墙使用方法分类:网络层防火墙、物理层防火墙、链路层防火墙。
有需要网络安全资料和学习路线的朋友可以私信博主。
或者加博主WeChat:
【leaning柚子茶】jyd_224
【转载】
防火墙的基本概念(2)防火墙——leaning柚子茶