iptables: 包过滤型的防火墙
Firewall(防火墙):隔离工具,工作于主机或网络边缘,对于进出本主机或本网络的报文根据事先定义的检查规则作匹配检测,对于能够被规则匹配到的报文作出相应处理的组件;下图是iptables内部数据包流向图,理解该图对iptables有重要作用,接下来我们来分析iptables链表及功能详细介绍。
iptables 5个内置的链:
PREROUTING
INPUT
FORWARD
OUTPUT
POSTROUTING
内置链的功能:
filter:过滤,防火墙;
nat:network address translation;用于修改源IP或目标IP,也可以改端口;
mangle:拆解报文,做出修改,并重新封装起来;
raw:关闭nat表上启用的连接追踪机制;
功能<--链
raw:PREROUTING, OUTPUT
mangle:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING
nat:PREROUTING,[INPUT,]OUTPUT,POSTROUTING
filter:INPUT,FORWARD,OUTPUT
报文流向:
流入本机:PREROUTING --> INPUT
由本机流出:OUTPUT --> POSTROUTING
转发:PREROUTING --> FORWARD --> POSTROUTING
路由功能发生的时刻:
报文进入本机后:
判断目标主机是?
报文离开本机之前:
判断经由哪个接口送往下一站?
iptables/netfilter
规则:
组成部分:根据规则匹配条件来尝试匹配报文,一旦匹配成功,就由规则定义的处理动作作出处理;
匹配条件:
基本匹配条件
扩展匹配条件
处理动作:
基本处理动作
扩展处理动作
自定义处理机制
iptables的链:内置链和自定义链
内置链:对应于hook function
自定义链接:用于内置链的扩展和补充,可实现更灵活的规则管理机制;
添加规则时需要考量的点:
(1) 要实现哪种功能:判断添加到哪个表上;
(2) 报文流经的路径:判断添加到哪个链上;
链:链上的规则次序,即为检查的次序;因此,隐含一定的应用法则:
(1) 同类规则(访问同一应用),匹配范围小的放上面;
(2) 不同类的规则(访问不同应用),匹配到报文频率较大的放在上面;
(3) 将那些可由一条规则描述的多个规则合并起来;
(4) 设置默认策略;