您的位置:首页 > 运维架构 > Linux

iptables:传统的Linux防火墙管理程序

2017-04-04 23:13 633 查看
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个数据包或随机的数据包
数据包发送者的用户,组,进程或进程组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模块间的通讯标志。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ipfw iptables filter nat mangle