linux防火墙iptables简单介绍
关于防火墙的简单了解:
iptables防火墙是由Netfilter项目开发(http:/).iptables目前已发展成为一个功能强大的防火墙,可与专有的商业防火墙相媲美。
iptables提供能了全面的协议状态跟踪,数据包的应用层检查,速率限制和一个功能强大的机制已制定过滤策略。
关于iptables和Netfilter之间的关系:
Linux提供的所有包过滤和包修改设施的官方项目名称Netfilter,此术语也指linux内核里面的一个框架,可以用于在不同阶段将函数挂接(hook)进网络栈.简单的理解就是,Netfilter提供了一个框架,iptables在它之上建立了防火墙功能。
linux的绝大多数功能都是以模块的形式扩充出来的,Netfilter也是以模块的形式存在于linux中,当linux多了一个Netfilter模块,linux防火墙功能也就多了一项。
其实不仅是Netfilter有模块,iptables也有模块,这些模块就位于/lib64/xtables/(32bit系统在/lib/xtables/)目录下,其中以libxt开头的是iptables模块,这些模块与Netfilter模块是一一相对应的,例如/lib/modules/`uname -r`/kernel/net/netfilter/xt_conntrack.ko模块,在/lib64/xtables/libxt_conntrack.so与之相对应。当下达与xt_conntrack.ko相关的指令时,iptables会根据libxt_conntrack.so模块的指示去检查语法是否正确。并将Netfilter相应模块载入到系统内存,iptables最后将规则写入到规则数据库中。
Netfilter本身并不对数据包进行过滤,它只是允许过滤的数据包的函数挂接的内核中合适的位置。Netfilter项目在内核中还提供了一些基础设施,比如链接跟踪和日志记录,任何iptables策略都可以使用这些设施来执行特定数据包的处理。
有关Netfilter的工作位置:
Netfilter模块存放的目录:
/lib/modules/`uname -r`/kernel/net/ipv4/netfilter/
/lib/modules/`uname -r`/kernel/net/ipv6/netfilter/
以上两个目录中的模块都与协议有关,因此在使用时应该注意相应的协议
/lib/modules/`uname -r/kernel/net/netfilter/
经过Netfilter组织的努力与协议无关的模块就存放在上面的目录,可同时应用于ipv4和ipv6的网络环境
链路层:根据链路层数据包包头的内容在防火墙中依规则进行过滤,例匹配MAC地址
网络层:根据数据包IP包头的内容作为过滤条件,例如:IP包头的长度,协议....
传输层:根据传输层包头的内容进行匹配,例如TCP包头的内容中的来源端端口号,目的端端口号,TCP包头的整体长度....
netfilter的工作位置如图:
Netfilter的结构:
现根据图介绍表以及相应表中的链:
- INPUT链:当一个数据包有内核中的路由计算确定为指向本地系统,它将经过INPUT检查
- OUTPUT链:保留给linux系统自身生成的数据包
- FORWARD:经过linux系统路由的数据包(即iptables用于连接两个网络,且两个网络数据包过iptables防火墙)
- nat表:网络地址转换,允许一个整体机构以一个共有IP出现在Internet上
- POSTROUTING链:修改数据包来源端IP
- PREROUTING链:修改目的端IP
- OUTPUT链:定义本机进程产生的本地数据包的目的NAT规则
- mangle:通过mangle机制修改经过防火墙内的数据包的内容
- PREROUTING链:
- INPUT链:
- FORWARD链:
- OUTPUT链:
- POSTROUTING链:
- raw:是数据包快速的穿过防火墙,以提高防火墙的性能
- PREROUTING链:
- OUTPUT链:
iptables目标:
- ACCEPT----允许数据包通过
- DROP----丢弃数据包,不对对数据包作进一步处理,对接收栈,就好像数据包从未来过
- REJECT----丢弃数据包,同时发送适当的响应报文
- LOG----将数据包信息记录到syslog
- RETURN----在调用链中继续处理数据包
iptables匹配:
- --source(-s)----匹配源IP或网络
- --destination(-d)----匹配目标IP或网络
- --protocol(-p)----匹配协议
- --in-interface(-i)----流入接口
- --out-interface(-o)----流出接口
- --state----匹配一组链接状态
- --string----匹配应用层数据字节序列
- --comment----在内核中存为一个规则的注释数据
关于翻过墙的简单介绍到此结束,下篇再具体介绍附上一张Netfilter的完整结构图:
阅读(3000) | 评论(0) | 转发(2) |