Linux-iptables防火墙研究

防火墙的分类

  1. 包过滤防火墙

  2. 代理服务型防火墙

网络资料重点

一、总结下防火墙的实现原理:

Netfilter在TCP/IP协议栈中安装钩子点(HOOK),Iptables用来在钩子点处安放钩子函数(HOOK FUNCTION),每个钩子函数用来过滤处理数据包。

二、规则表

按照防火墙策略的不同用途,iptables管理着四个不同的规则表,其功能分别由独立的内核模块实现。

filter表,包含三个规则链:INPUT,FORWARD,OUTPUT。

filter 表主要用于对数据包进行过滤,根据具体的规则决定是否放行该数据包。

filter 表对应的内核模块为 iptable_filter。

nat表,包含三个规则链:PREROUTING,POSTROUTING,OUTPUT。

nat (Network Address Translation,网络地址转换)表主要用于修改数据包的IP地址、端口号等信息。

nat 表对应的内核模块为 iptable_nat。

mangle表,包含五个规则链:PREROUTING,POSTROUTING,INPUT,OUTPUT,FORWARD。

mangle表主要用于修改数据包的TOS(Type Of Service,服务类型)、TTL(Time To Live,生存周期)指以及为数据包设置Mark标记,以实现Qos(Quality Of Service,服务质量)调整以及策略路由等应用,由于需要相应的路由设备支持,因此应用并不广泛。

mangle 表对应的内核模块为 iptable_mangle。

raw表,包含两条规则链:OUTPUT、PREROUTING。

raw表是自1.2.9以后版本的iptables新增的表,主要用于决定数据包是否被状态跟踪机制处理。在匹配数据包时,raw表的规则要优先于其他表。

raw表对应的内核模块为iptable_raw。

Ps:在iptables的四个规则表中,mangle表和raw的表应用相对较少,下面主要介绍filter表和nat表的防火墙应用

三、规则链

在处理各种数据包时,根据防火墙规则的不同介入时机,iptables供涉及5种默认规则链,其应用时间点分别对应如下。

INPUT链:当接收到防火墙本机地址的数据包(入站)时,应用此链中的规则。

OUTPUT链:当防火墙本机向外发送数据包(出战)时,应用次链中的规则。

FORWARD链:当接收到需要通过防火墙发送给其他地址的数据包(转发)时,应用次链中的规则。

PREROUTING链:在对数据包作路由选择之前,应用次链中的规则。

POSTROUTING链:在对数据包作路由选择之后,应用次链中的规则。

Ps:期中INPUT、OUTPUT链更多的应用在“主机防火墙”中,即主要针对服务器本机进出数据的安全控制;而FORWARD、PREROUTING、POSTROUTING链更多的应用在“网络防火墙”中,特别是防火墙服务器作为网关使用时的情况。

四、当数据包抵达防火墙时,将依次应用raw、mangle、nat和filter表中对应链内的规则;当数据包进入系统时,系统首先根据路由表决定将数据包发给哪一条链,则可能有以下3种情况:

  • 数据包的目的地址是本机,则系统将数据包送往INPUT链,如果通过规则检查,则该包被发给相应的本地进程处理;如果没有通过规则检查,系统将丢弃该包。
  • 数据包的上的地址不是本机,也就是说这个包将被转发,则系统将数据包送往FORWARD链,如果通过规则检查,该包被发给相应的本地进程处理;如果没有通过规则检查,系统将丢弃该包。
  • 数据包是由本地系统进程产生的,则系统将其送往OUTPUT链,如果通过规则检查,则该包被发给相应的本地进程处理;如果没有通过规则检查,系统将丢弃该包。

五、linux防火墙工作流程

909891-81d4f8a9f43e5366.JPG
Linux防火墙的工作流程.JPG

重要理解点

  1. iptables只是一个管理内核包过滤的工具,可以加入、插入或删除核心包过滤表格(链)中的规则。实际上真正执行这些过滤规则的是netfilter(linux核心中一个通用架构)及其相关模块(如iptables模块和nat模块)。
    netfilter是linux核心中一个通用架构,它提供一系列的“表”(tables),每个表由若干“链”(chains)组成,而每条链中可以由一条或数条规则(rule)组成。可以这样理解,netfilter是表的容器,表是链的容器,链是规则的容器。
    系统缺省的表为“filter”,该表中包含了INPUT、FORWARD和OUTPUT 3个链。每一条链中可以有一条或数条规则,每一条规则都是这样定义的:“如果数据包头符合这样的条件,就这样处理这个数据包”。当一个数据包到达一个链时,系统就会从第一条规则开始检查,看是否符合该规则所定义的条件,如果满足,系统将根据该条规则所定义的方法处理该数据包;如果不满足则继续检查下一条规则;最后,如果数据包不符合该链中任何一条规则,系统就会根据该链预先定义的策略(policy)来处理该数据包

  2. 内核2.4之后使用全新的内核包过虑管理工具--iptables

  3. filter表、nat表和mangle表,分别用于实现包过滤,网络地址转换和包重构的功能.raw表是1.2.9以后版本的iptables新增的表

  4. 通常情况下,只要在规则链中找到一条相匹配的规则,则不再继续检查该链内后面的规则;但使用LOG处理方式的规则是一个特例,因为LOG只是一个辅助动作,并没有真正的处理数据包

问题

  1. 防火墙策略一般分为两种,一种叫“通”策略,一种叫“堵”策略,通策略,默认门是关着的,必须要定义谁能进。堵策略则是,大门是洞开的,但是你必须有身份认证,否则不能进。所以我们要定义,让进来的进来,让出去的出去,所以通,是要全通,而堵,则是要选择。设置拦截规则的时候是使用还是的形式?
  2. python-iptables库可以选择用python写,也可以使用shell写

下一篇讲介绍iptable的具体使用规则,不详细之处,还请指教.刚开始学习接触linux,做个总结

参考网站:
http://blog.csdn.net/u010726042/article/details/52575636
http://blog.csdn.net/bripengandre/article/details/3667376
http://blog.csdn.net/u010801439/article/details/73733139
http://blog.csdn.net/linux512/article/details/39050049
http://www.cnblogs.com/yi-meng/p/3213925.html
https://linux.cn/article-4904-1.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值