iptables:传统的Linux防火墙管理程序
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模块间的通讯标志。
更多相关文章
- linux下安装 tomcat 和配置防火墙开放8080端口
- Linux Centos 7 有关防火墙命令
- 【linux】Centos7 防火墙操作
- linux 中 开放端口,以及防火墙的相关命令
- linux怎么关闭iptables linux如何关闭防火墙
- Mac OSX ipfw 防火墙配置-封端口
- Linux防火墙配置
- SQLSERVER的中文排序规则
- linux下mysql开启远程访问权限及防火墙开放3306端口