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,natmangle,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个数据包或随机的数据包
  • 数据包发送者的用户,组,进程或进程组ID
  • IP报头的服务类型(TOS)字段(可在mangle表中被设置)
  • IP报头的TTL部分
  • iptables mark字段(由mangle表设置)
  • 限制频率的数据包匹配

其内建的规则链包括:

  • INPUT
  • OUTPUT
  • FORWARD


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模块间的通讯标志。

更多相关文章

  1. linux下安装 tomcat 和配置防火墙开放8080端口
  2. Linux Centos 7 有关防火墙命令
  3. 【linux】Centos7 防火墙操作
  4. linux 中 开放端口,以及防火墙的相关命令
  5. linux怎么关闭iptables linux如何关闭防火墙
  6. Mac OSX ipfw 防火墙配置-封端口
  7. Linux防火墙配置
  8. SQLSERVER的中文排序规则
  9. linux下mysql开启远程访问权限及防火墙开放3306端口

随机推荐

  1. 拓扑排序原理与解题套路
  2. 动画:什么是 BF 算法 ?
  3. 高考前一天,六月六号,加一!
  4. 前 K 个高频元素告诉你桶排序有啥用
  5. 看《长安十二时辰》可以了解哪些算法知识
  6. 你知道什么是漂亮排序法吗?哦,知道,不就是臭
  7. Hard 级别难度?桶排序几行代码搞定!
  8. 面试官,你再问我滑动窗口问题试试?我有解题
  9. 扫雷与算法:如何随机化的布雷(一)
  10. 趣味算法图解,高清无码图免费下载