标签:iptables
防火墙,顾名思义就起到阻隔危险的一道墙。在linux中体现为实现访问控制的功能的一种工具,按工作的位置分为主机防火墙和网络防火墙,工作于网络或主机的边缘(通信报文的进出口),对于进出本网络或主机的报文根据事先定义的检查规则作匹配检测,对于能够被规则匹配到的报文作出相应处理。按在实现方式又分为硬件的和软件的防火墙。
iptables的前身叫ipfirewall (内核1.x时代),是从freeBSD上移植过来的,能够工作在内核当中的,对数据包进行检测的一款简易访问控制工具。但是ipfirewall工作功能极其有限,当内核发展到2.x系列的时候,软件更名为ipchains,它可以定义多条规则,将他们串起来,共同发挥作用,而现在,它叫做iptables,可以将规则组成一个列表,实现绝对详细的访问控制功能。
iptables工作在用户空间中,定义规则的工具,本身并不算是防火墙。它们定义的规则,可以让在内核空间当中的netfilter来读取,并且实现让防火墙工作。而放入内核的地方必须要是特定的位置,必须是tcp/ip的协议栈经过的地方。而这个tcp/ip协议栈必须经过的地方,可以实现读取规则的地方就叫做 netfilter.(网络过滤器)
1.进入本机的网络接口
2.数据包从内核流入用户空间的
3.内核空间中:从一个网络接口进来,到另一个网络接口去的
4.数据包从用户空间流出到内核空间的
5.离开本机的网络接口
1.PREROUTING (路由前) 2.INPUT (数据包流入口) 3.FORWARD (转发关卡) 4.OUTPUT(数据包出口) 5.POSTROUTING(路由后)
这是NetFilter规定的五个内置规则链,任何一个数据包,只要经过本机,必将经过这五个链中的其中一个链。另外还有自定义链,自定义链是起到对内置链拓展和补充的功能,实现规则片段化管理的目的,自定义链必须被这五个链调用才能生效。
流入本机:prerouting --> input ==> 用户空间进程; 流出本机:用户空间进程==> output --> postrouting; 转发:prerouting --> forward --> postrouting;
当我们定义策略的时候,要分别定义多条功能,其中:定义数据包中允许或者不允许的策略,是filter过滤的功能,而定义地址转换的功能的则是nat选项。为了让这些功能交替工作,我们制定出了“表”这个定义,来定义、区分各种不同的工作功能和处理方式。
分别是:filter:过滤,mangle;拆解报文,按需修改,nat:IP层地址和传输层地址转换,raw:关闭中nat表上启用的连接追踪机制.
按表能使用在那些链上面的对应关系。
filter:INPUT,FORWARD,OUTPUT
mangle:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING
nat:PREROUTING,INPUT,OUTPUT,POSTROUTING;
raw:PREROUTING,OUTPUT
同一链上的不同的表的规则的应用优先级(高-->低):
raw
managle
nat
filter
一般定义策略常使用的表就是filter和nat这两个。
组成部分:根据策略的匹配条件尝试匹配报文,对匹配成功的报文根据策略定义的处理动作做出处理
匹配条件:基本匹配,扩展匹配
处理动作(target):基本处理动作,扩展处理动作,自定义处理动作
iptables定义策略的方式比较复杂:
命令格式:iptables [-t table] SUBCOMMAND chain [matches...] [target]
-t table:raw, mangle, nat, [filter]
SUBCOMMAND:定义如何对规则进行管理
chain:指定你接下来的规则到底是在哪个链上操作的
CRETIRIA:指定匹配标准
-j ACTION :指定如何进行处理
-N: new,新增一条自定义链; -X:delete,删除自定义的空链; -P:policy,设置链的默认策略; 可设置的默认策略: ACCEPT:接受 DROP:丢弃 REJECT:拒绝 -E:rename,重命名自定义的未被引用(引用计数为0)的链;
-A:append,追加,默认为最后一个; -I:insert,插入,默认为第一个; -D:delete,删除 (1) rule specification (2) rule number -R:replace,替换 -F:flush,清洗,不会清洗默认规则 -Z:zero,置0; iptables的每条规则都有两个计数器: (1) 由本规则匹配到的所有的packets; (2) 由本规则匹配到的所有的bytes; S:selected,以iptables-save命令的格式显示链上的规则;
-L: list,列出规则 可跟的子选项: -n:numeric,以数字格式显示地址和端口; -v:verbose,详细信息;-vv, -vvv -x:exactly,显示计数器的精确值而非单位换算后的结果; --line-numbers:显示链上的规则的编号;
基本匹配:netfilter自带的匹配机制 [!] -s, --source address[/mask][,...]:原地址匹配 [!] -d, --destination address[/mask][,...]:目标地址匹配 [!] -i, --in-interface name:限制报文流入的接口,只能用于PREROUTING,INPUT及FORWARD; [!] -o, --out-interface name:限制报文流出的接口,只能用于OUTPUT,FORWARD及POSTROUTING; 扩展匹配:经由扩展模块引入的匹配机制,-m matchname。分为隐身拓展和显式拓展。 隐式扩展:可以不用使用-m选项专门加载相应模块;前提是要使用-p选项可匹配何种协议 显式扩展:必须由-m选项专门加载相应模块
-j targetname [per-target-options] ACCEPT, DROP, REJECT RETURN:返回调用的链 REDIRECT:端口重定向 LOG:日志 MARK:防火墙标记 DNAT:目标地址转换 SNAT:源地址转换 MASQERADE:地址伪装
定义策略的内容较多,此处不做详细描述,我做了一个思维导图,请下载查看,文件为mmap格式,可使用MindManager程序查看
思维导图下载链接:http://www.luolongji.com/Iptables.netfilter.mmap
本文出自 “Puro” 博客,请务必保留此出处http://puro2016.blog.51cto.com/11222749/1769838
标签:iptables
原文地址:http://puro2016.blog.51cto.com/11222749/1769838