iptables
2016-05-03 20:37
197 查看
什么是防火墙?
防火墙,顾名思义就起到阻隔危险的一道墙。在linux中体现为实现访问控制的功能的一种工具,按工作的位置分为主机防火墙和网络防火墙,工作于网络或主机的边缘(通信报文的进出口),对于进出本网络或主机的报文根据事先定义的检查规则作匹配检测,对于能够被规则匹配到的报文作出相应处理。按在实现方式又分为硬件的和软件的防火墙。iptables的前身叫ipfirewall (内核1.x时代),是从freeBSD上移植过来的,能够工作在内核当中的,对数据包进行检测的一款简易访问控制工具。但是ipfirewall工作功能极其有限,当内核发展到2.x系列的时候,软件更名为ipchains,它可以定义多条规则,将他们串起来,共同发挥作用,而现在,它叫做iptables,可以将规则组成一个列表,实现绝对详细的访问控制功能。
iptables工作在用户空间中,定义规则的工具,本身并不算是防火墙。它们定义的规则,可以让在内核空间当中的netfilter来读取,并且实现让防火墙工作。而放入内核的地方必须要是特定的位置,必须是tcp/ip的协议栈经过的地方。而这个tcp/ip协议栈必须经过的地方,可以实现读取规则的地方就叫做 netfilter.(网络过滤器)
iptables 一共有5个这样的位置
1.进入本机的网络接口
2.数据包从内核流入用户空间的
3.内核空间中:从一个网络接口进来,到另一个网络接口去的
4.数据包从用户空间流出到内核空间的
5.离开本机的网络接口
这五个位置也被称为五个钩子函数(hook functions),也叫五个规则链。
1.PREROUTING (路由前) 2.INPUT (数据包流入口) 3.FORWARD (转发关卡) 4.OUTPUT(数据包出口) 5.POSTROUTING(路由后)这是NetFilter规定的五个内置规则链,任何一个数据包,只要经过本机,必将经过这五个链中的其中一个链。另外还有自定义链,自定义链是起到对内置链拓展和补充的功能,实现规则片段化管理的目的,自定义链必须被这五个链调用才能生效。
数据报文流向:
流入本机:prerouting --> input ==> 用户空间进程; 流出本机:用户空间进程==> output --> postrouting; 转发:prerouting --> forward --> postrouting;
防火墙策略
当我们定义策略的时候,要分别定义多条功能,其中:定义数据包中允许或者不允许的策略,是filter过滤的功能,而定义地址转换的功能的则是nat选项。为了让这些功能交替工作,我们制定出了“表”这个定义,来定义、区分各种不同的工作功能和处理方式。iptables一共有4表
分别是: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这两个。
iptables策略
组成部分:根据策略的匹配条件尝试匹配报文,对匹配成功的报文根据策略定义的处理动作做出处理匹配条件:基本匹配,扩展匹配
处理动作(target):基本处理动作,扩展处理动作,自定义处理动作
策略的写法:
iptables定义策略的方式比较复杂:命令格式:iptables [-t table] SUBCOMMAND chain [matches...] [target]
-t table:raw, mangle, nat, [filter]
SUBCOMMAND:定义如何对规则进行管理
chain:指定你接下来的规则到底是在哪个链上操作的
CRETIRIA:指定匹配标准
-j ACTION :指定如何进行处理
SUBCOMMAND:
链管理:
-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
实际运用
相关文章推荐
- Linux下主机充当防火墙的巧妙应用之iptables
- 系统管理员需知的 16 个 iptables 使用技巧
- iptables做策略屏蔽QQ与MSN
- Nginx+iptables屏蔽访问Web页面过于频繁的IP(防DDOS,恶意访问,采集器)
- Shell脚本实现监控iptables规则是否被修改
- 修改iptables防火墙规则解决vsftp登录后不显示文件目录的问题
- 一键配置CentOS iptables防火墙的Shell脚本分享
- CentOS 7 下使用 iptables
- linux增加iptables防火墙规则的示例
- Linux防火墙iptables入门教程
- linux服务器下通过iptables+Denyhost抵御暴力破解的配置方法
- CentOS最严格iptables规则
- 簡單認識 snort rules 條件格式 IDS
- 簡單使用 psad 端口功擊偵測系統 iptables snort
- 簡單設定 kernel 選項在使用 iptables 前
- iptables之SNAT和DNAT
- Rancher docker0: iptables: No chain/target/match
- 9个常用iptables配置实例
- Debian系统关闭iptables的conntrack跟踪
- iptables简易脚本