Linux防火墙之基本原理

本系列文章主要讲述Linux防火墙的基本原理和基础使用方法:

1.什么是防火墙:

当我们把计算机连入互联网与其他计算机进行通信时,这无疑也将自己的信息暴露了,那就意味着可能会有一些心怀不轨的人会利用这些信息来攻击自己的主机,尤其是作为一台服务器向互联网用户提供服务时,就迫切需要一种隔离和保护机制,来隔离外部网络,达到保护自我的目的。而这种隔离机制就叫做防火墙。那显而易见,既然要达到隔离机制,那就要工作在边缘地带,根据其所处的位置,我们可以将其分为网络防火墙(工作在网络入口位置)和主机防火墙(工作于主机之上)。

2.Linux之上的防火墙:

在Linux之上,为了达到隔离机制,同样需要防火墙,Linux之上的实现方式是工作于内核空间的netfilter,以及工作于用户空间提供给用户定义防火墙策略的iptables,那他们基本的工作原理是什么呢?

对一个数据包的基本处理过程是:

 主机通过物理网卡接收数据包,通过解分装数据包,查看数据包的ip首部信息判断是否是发送给本机的,如果是则数据包从内核空间转交给监听在某个对应端口号上的应用程序,从而完成通信。

 当本机要向某主机发送数据时,从tcp/ip协议栈的上层通过层层分装之后,通过向内核发起系统调用,从而将数据包交给物理网卡,由物理网卡向外发送数据包。

 当解分装数据包查看ip首部信息后,发现该数据包是要通过本机进行转发,那么本机通过查看路由表,从而进行对数据包的转发。

正是基于对数据包的处理机制,Linux防火墙正是在这些数据包必经之处对其进行检查,然后根据用户定义的规则进行相应的处理。linux上通过五个钩子函数prerouting,iuput,output,forward,postrouting对应五条定义规则的链prerouting,input,output,forward,postrouting从而实现对数据包进行处理,之所以叫做钩子函数是因为当一个数据包到达时,这几个函数像钩子一样将其勾住,从上而下对其进行检查,从而决定对数据包的处理动作。如下图所示,在linux内核之中,对数据包的处理要经过prerouting,路由选择,从而判断数据是进入本机,或者是通过本机转发,对于本机发送的数据则是从用户空间进入内核空间,经过postrouting之后流出本机。而linux之中的防火墙netfilter不仅提供fileter(数据包过滤)功能,还有其他三个功能,分别是raw(与连接追踪机制有关),mangle(修改数据包的首部信息),nat(地址转换),这四个功能对应四个表。于是总结来说就是:linux的netfilter功能提供四个表对应四个功能,通过往每个功能上的链来指定规则,从而达到对数据包实现不同的处理。

iptables-routing.jpg

(该图取自互联网)

根据上图我们可以清晰的看到:

数据报文的流向:

 . 流入本机:PREROUTING –> INPUT 

 . 由本机流出:OUTPUT –> POSTROUTING

 . 转发:PREROUTING –> FORWARD –> POSTROUTING

路由功能发生的时刻:

 . 报文进入本机后:判断目标主机是本机或其他主机

 . 报文离开本机之前:判断经由哪个接口送往下一站

每个表上所能对应的链,需要强调的是每个位置能实现的表(功能)在图中从上而下代表处理的优先级是递减的,总结为:

 . raw:prerouting,output

 . mangle:prerouting,forward,postrouting,input,output

 . nat:prerouting,postrouting,output

 . filter:input,output,forward

以上就是netfilter的基本工作原理,而要想通过netfilter来实现安全策略,重点就是选择数据包经过的不同位置上基于端口号,目的地址,源地址等来实现过滤以保证主机的安全。

原创文章,作者:zhangbao,如若转载,请注明出处:http://www.178linux.com/54775

(0)
zhangbaozhangbao
上一篇 2016-12-27 12:01
下一篇 2016-12-27 12:53

相关推荐

  • 磁盘管理之MBR与GPT分区

    磁盘管理之MBR与GPT分区 2016-08-26 zanghonglei%1 $ S 磁盘管理之MBR与GPT分区 linux下的文件分为常规文件和设备文件,常规文件一定在某一个设备上被存储,不论这个设备是真实的还是虚拟的,这里的设备是linux中vfs层中的设备,也就是设备文件中的设备,vfs层的设备分为字符设备和块设备,字符设备可以类比为一个…

    Linux干货 2016-08-29
  • 基于ssl功能实现mysql主从复制

    基于ssl功能实现mysql主从复制         证书准备:                                  CA证书…

    2016-11-22
  • 第二周作业

    作业

    Linux干货 2018-03-20
  • 安装 VMware Workstation

    1.第一步 打开安装包所在位置 2.第二步 开始安装 ai      上面的路径看个人习惯修改,然后点击下一步 3.安装完成后,点击输入许可证秘钥  打开Vmware注册码生成器  安装成功

    2017-07-11
  • Nginx作为web服务器的使用配置

    概述     Nginx是一款免费开源的web服务器,同时也可以作为http、imap/pop3协议进行反代服务器,本篇介绍一些nginx作为web服务器方面的相关配置,具体包含:     1、nginx基础概念介绍     2、nginx…

    Linux干货 2016-10-27
  • nfs的简单配置及引用

    nfs: Network File System RPC:Remote Procedure Call NFS: sun公司研发, 协议;     NFSv1,没有走出实验室     NFSv2(不安全), NF…

    Linux干货 2016-10-19