1、基本介绍
是集成在Linux2.4.X版本内核中的包过滤防火墙系统,可以实现数据包过滤、网络地址转换及数据包管理功能。netfilter位于Linux内核空间,是Linux内核内部的一系列钩子,这些钩子允许数据表过滤函数挂载到系统内核中。iptables是用户工具,由于netfilter位于内核空间中,用户通常无法接触内核和修改内核,此时就需要一个像iptables这样的命令行工具。
iptables默认维护着四个表和五个链,所有的防火墙策略规则都将分别写入这些表与链中。
2、配置文件
/etc/sysconfig/iptables 防火墙规则保存文件
/etc/sysctl.conf 内核参数配置文件
/etc/services 各种服务所对应的标准端口信息
3、规则表
NPUT链、FORWARD链、OUTPUT链; 配置规则时,不指定表时,iptables默认修改filter表中的规则。
PREROUTING链、POSTROUTING链、OUTPUT链;
PREROUTING链、POSTROUTING链、INPUT链、OUTPUT链、FORWARD链;
PREROUTING链、OUTPUT链。
4、链
(1)INPUT链 当接收到访问防火墙本机地址的数据包时,应用此规则链中的策略;
(2)OUTPUT链 当防火墙本机向外发送数据包时,应用此规则链中的策略;
(3)FORWARD 当接收到需要通过防火墙中转发送给其他地址的数据包时,应用此规则链中的策略;
(4)PREROUTING 在对数据包作路由选择之前,应用此规则连中的策略(所有的数据包进来时,都先由这个链处理);
(5)POSTROUTING 在对数据包作路由选择之后,应用此规则连中的策略(所有的数据包出去时,都先由这个链处理)。
INPUT链和OUTPUT链主要应用在“主机防火墙”中,即主要针对服务器本机进行保护的防火墙;FORWARD链、PREROUTING链和POSTROUTING链主要应用在“网络型防火墙”中,例如使用Linux防火墙作为网关。
5、数据包过滤工作流程
(1)规则表应用优先级
raw-->mangle-->nat-->filter
(2)入站数据流向
数据包到达防火墙后首先被PREROUTING链处理(是否修改数据包地址等),然后进行路由选择(判断数据包发往何处),如果数据包的目标地址是防火墙本机(如:Internet用户访问网关 的Web服务端口),那么内核将其传递给INPUT链进行处理(决定是否允许通过等)。
(3)转发数据流向
来自外界的数据包到达防火墙后首先被PREROUTTING链处理,然后再进行路由选择;如果数据包的目标地址是其他的外部地址(如局域网用户通过网关访问QQ服务器),则内核将其传递给FORWARD链进行处理(允许转发,拦截,丢弃),最后交给POSTROUTING链(是否修改数据包的地址等)进行处理。
(4)出站数据流向
防火墙本机向外部地址发送的数据包(如在防火墙主机中测试公网DNS服务时),首先被OUTPUT链处理,然后进行路由选择,再交给POSTROUTING链(是否修改数据包的地址等)进行处理。