IPtables 学习笔记一

什么是防火墙?

所谓防火墙指的是一个由软件硬件设备组合而成、在内部网外部网专用网与公共网之间的界面上构造的保护屏障.是一种获取安全性方法的形象说法,它是一种计算机硬件和软件的结合,使InternetIntranet之间建立起一个安全网关Security Gateway),从而保护内部网免受非法用的侵入,防火墙主要由服务访问规则、验证工具、包过滤应用网关4部分组成,防火墙就是一个位于计算机和它所连接的网络之间的软件硬件。该计算机流入流出的所有网络通信数据包均要经过此防火墙。

一般防火墙有网络层防火墙和应用层防火墙,网络层防火墙可视为一种 IP 封包过滤器,运作在底层的TCP/IP协议堆栈上。应用层防火墙是在 TCP/IP 堆栈的“应用层”上运作,显然我们这里讨论的是网络层防火墙。

    

什么是iptablesnetfilter

    Linux的网络功能是在内核中实现的!但是用户不能直接调节内核中关于网络的参数,我们需要一个工具连接内核与用户,以便用户可以控制网络功能,这个工具就叫iptables。而netfilter就是在内核的TCPIP协议栈中利用规则过滤报文的架构(Framework),netfilter的架构是在整个网络流程的若干位置放置了一些检测点(HOOK),而在每个检测点上登记了一些处理函数进行处理。

注意:iptables本身不是防火墙,真正起到防火墙功能的是规则,这些规则只有放到netfilter上才能生效!!

上面提到了检测点,那么这些监测点都是在我们主机的那些位置呢?


如上图所示是5个钩子函数,

hook function: 钩子函数

    4prerouting  (实现比如地址转换NAT

    1input

    2output

    3forward

    5postrouting

注意:不是说每个钩子函数都能实现任意的功能,要做目标地址转换一定是在4prerouting进行的。要做原地址转换一定是在5postrouting进行的【因为如果用户请求的是内部主机,是不需要做原地址转换了。而假如原地址转换放在4口,则报文刚进来不管目的地址就做了地址转换。】

知道了钩子函数的位置,我们就可以在这些位置上编写规则对数据报文进行过滤。正如上文中所说的,真正起到防火墙功能的是一些规则,那么这些防火墙规则又是什么?

要了解这些规则,我们首先需要对网络协议报文有一定的了解。我们知道,常见的网络层协议有ICMP传输层有TCPUDP,应用层有HTTPFTP。那么我们的规则就是针对这些协议中的一些字段做出限制,从而达到过滤报文的功能。

比如,我们可以限制TCP数据报文中的源地址为10.2.1.1,源port8500的报文访问我们的主机。甚至,规则可以更细化,我们知道TCP有三次握手,四次断开,我们可以生成规则将TCP三次握手中的第二次握手进行转发。

在每一个钩子函数上都可以放很多规则,规则是至上而下依次检查的,就像一个链一样,因此叫做规则链。每一个钩子函数都有一个规则链。

规则链:

PREROUTING

INPUT

FORWARD

OUTPUT

POSTROUTING

我们知道,函数是为实现某些功能而存在的,钩子函数也不例外。那么五个钩子函数的功能是都一样还是有重叠,还是都不一样呢?

答案是他们是有重叠的,但又不完全一样。某些功能只能在特定位置(特定钩子函数处)实现。(比如filter功能只能在INPUTOUTPUTFORWARD位置实现,而每个位置上又是

一个规则链,这就是表的由来!)

IPTABLES一共有四个表:

filter(过滤):表

INPUT

OUTPUT

FORWARD

nat(地址转换):表

PREROUTING

OUTPUT

POSTROUTING

mangle(拆开、修改、封装):表

PREROUTING

INPUT

FORWARD

OUTPUT

POSTROUTING

raw():表

PREROUTING

OUTPUT

注意:比如Input口既可以实现filter也可以实现mangle,但是它们不能放在一起(就是说不能交叉存放一个mangle一个filter交替)!【但是它们可以按照类来存放,是有先后顺序的每个口不一样】

具体顺序如下表:

PREROUTING

INPUT

FORWARD

OUTPUT

POSTROUTING

Raw

Mangle

Mangle

Raw

Mangle

Mangle

Filter

Filter

Mangle

Nat

Nat

Nat

Filter

以上便是IPTABLES45链。

那么除了以上的默认链,我们能否使用自定义链?

    可以使用自定链,但只在被默认链调用时才能发挥作用,而且如果没有自定义链中的任何规则匹配,还应该有返回机制;

    用户可以删除自定义的空链,但是默认链无法删除

那么为什么要自定义链?

    当链上有大量的规则时,每个包进来都会检测一遍,消耗大量的时间,但是,我们有自定义链后,只有访问web服务的我们才调到自定义链去检测,不涉及web访问的服务就直接经过主链。

另外每个规则都有两个内置的计数器:

被匹配的报文个数

被匹配的报文大小之和(2K+8K=10K

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值