IP防火墙(IPFW)和Netfilter防火墙机制的不同
IPFW是Linux较老的防火墙,主要使用ipfwadm和ipchains.
它和iptables的区别包括:
iptables是高度模块化的,个别模块有时必须被明确地加载日志记录是一个规则目标而不是命令选项连接状态跟踪可以被维护。地址和端口转换与数据包过滤划逻辑分离的功能实现完全的源地址和目的地址转换伪装是一个术语,用来指一种特殊形式的源地址NAT无须ipmasqadm这样的第三方软件,直接支持端口转发和目的地址转换
是重要的区别是数据包如何被操作系统所路由或转发出去的,这构成了防火墙规则集如何被建立的细微差别.
IPFW数据包传输:
Netfilter数据包传输:
_____ Incoming / \ Outgoing -->[Routing ]--->|FORWARD|-------> [Decision] \_____/ ^ | | v ____ ___ / \ / \ |OUTPUT| |INPUT| \____/ \___/ ^ | | ----> Local Process ----
iptables基本介绍
Netfilter防火墙有三个独立的表:filter,nat和mangle,iptables的概念是在处理不同类型的数据包时使用各自不同的规则表。
在这些表中,防火墙通过规则链来构建,链中的每一项都是一条独立的iptables命令。
规则链可以是INPUT规则链,OUTPU规则链,FORWARD规则链或用户自定义规则链。另外规则链也可以是一个包含在nat表或mangle表中的专用规则链。
filter表是默认的表。其他的表需要使用命令行选项指定。
在默认的filter表中,有一条用于处理输入或即将传入防火墙的数据的规则链,一条用于处理输出或即将离开防火墙的数据的规则链,一条用于处理转发或通过防火墙被送出的数据的规则链,和其他由用户命名并配置的规则链,通常称为用户自定义规则链。nat表和mangle表有专门的规则链。
filter表特性:
基础filter表的功能包括:
对三个内置规则链(INPUT,OUTPUT,FORWARD)和用户自定义规则链的操作; 帮助 目标处置(接受ACCEPT或丢弃DROP) 对IP报头协议域,源地址和目的地址,输入和输出接口,以及分片处理的匹配操作 TCP,UDP,ICMP报头字段的匹配操作filter表有两种功能扩展:目标(target)扩展和匹配扩展。目标扩展包括REJECT数据包处置;BALANCE,MIRROR,TEE,IDLETIMER,AUDIT,CLASSIFY和CLUSTERIP目标;以及CONNMARK,TRACE,LOG,和ULONG功能。
匹配扩展支持以下匹配:
当前的连接状端口列表(由多端口模块支持)硬件以太网MAC源地址或物理设备地址类型,链路层数据包类型或IP地址范围IPsec数据包的各个部分或IPsec策略ICMP类型数据包的长度数据包的到达时间每第n个数据包或随机的数据包数据包发送者的用户,组,进程或进程组IDIP报头的服务类型(TOS)字段(可在mangle表中被设置)IP报头的TTL部分iptables mark字段(由mangle表设置)限制频率的数据包匹配其内建的规则链包括:
INPUTOUTPUTFORWARD
NAT表特性:
nat数据包传输如下图所示:
nat表包含了源地址和目的地址转换以及端口转换的规则。这些规则在功能上与防火墙filter规则不同。内建的规则链包括:
PREROUTING:规则链在数据包传递到路由功能前,修改传入数据包的目的地址(DNAT)。目的地址可以更改为本地主机(透明代理,端口重定向)或用于主机转发的其他主机(Linux中的ipmasqadm功能,端口转发)或均分负载。OUTPUT:规则链在做出路由决定(DNAT,REDIRECT)前为本地产生的传出数据包指定目的地的更改。这样做通常是为了透明地重定向一个传出数据包到一个本地代理,但它也能用于不同主机的端口转发。POSTROUTING:规则链指定将要通过盒子(SNAT,MASQUEREAD)路由出去的传出数据包的源地址更改。此更改在路由决定之后才被应用。
mangle表特性
mangle表允许对数据包进行标记或将由Netfilter维护的值与数据包进行关联,以及在发送数据包到目的地址前对数据包进行修改。
mangle表有5个内建的链:
PREROUTING:指定了对到达接口的传入数据包所做的修改,它在任何路由或本地交付决定出之前进行。INPUT:指定了对数据包进行处理时所做的修改,但这要在PREROUTING规则链被遍历之后。POSTROUTING:指定了对离开防火墙的数据包所做的修改,它在OUTPUT链之后进行。FORWARD:对通过防火墙进行转发的数据包所做的修改。OUTPUT:对本地产生的传出数据包所做的修改。对于TOS字段来说,本地Linux路由器能够被配置用以支持mangle表或本地主机设置的TOS标志。
在iptables文档中关于数据包标记的信息很少,除此之外,它也被用于Linux服务质量(QOS)的实现,且被用作iptables模块间的通讯标志。
