iptables简单介绍

iptables简单介绍



什么是防火墙?

防火墙是工做在主机或网络边缘,可以对其所匹配到的报文根据事先定义好的规则做出相应处理的组件,能够是软件,也能够是硬件,还能软硬结合实现。服务器

UNIX/Linux中对防火墙的实现

早期在openBSD中经过内核中的ipfw实现简单的数据报过滤功能、后来在Linux 2.2内核中使用ipchains来取代,意为链、后来在Linux 2.4内核中被iptables所取代,意为表。网络

netfilter/iptables原理

事实上Linux 2.6实现防火墙是经过内核中的netfilter框架完成的,iptables其实不止指的是一个在用户空间的应用程序,其实仍是内核中的一个存放特定规则的模块,因此iptables的全称应该为netfilter/iptables架构

netfilter的钩子函数

网络防火墙通常都设置在整个网络的边缘,才能对全部出入的数据报进行分析和进行相应的处理,做为一个主机防火墙应该在数据报文出入主机时在TCP/IP协议栈的特定位置对数据报文进行拦截并执行对应动做,那么在netfilter架构中分别有五个位置能够做为防火墙的拦截点,咱们称它们为hook function(钩子函数)。并发

数据流通过netfilter大体路程图

下载.png

四表五链

五链

PREROUTING

数据报文进入TCP/IP协议栈路由选择前会被PREROUTING“钩”住,分析其数据包对其相应操做,注意PREROUTING链不能对数据包进行过滤,PREROUTING链是整个netfilter框架中的第一关框架

INPUT

经过PREROUTING后进行路由选择若是数据包是进入本机内部,则转发到INPUT链,INPUT链可以经过实现定义好的规则对数据包进行筛选若是被匹配则执行相应动做,INPUT链能够对数据包进行过滤,INPUT链是数据报文进入用户空间的必经之路ide

FORWARD

经过PREROUTING后进行路由选择若是数据包只是经过本机进行转发,则转发到FORWARD链,FORWARD链可以经过事先定义好的规则对数据包进行匹配检查并执行相应动做,INPUT链能够对数据包进行过滤,正是有了FORWARDiptables才可以做为一个网络防火墙运行在网络边缘对进出网络的数据报文进行过滤函数

OUTPUT

数据包从用户空间的进程经过路由选择特定的网卡接口后转到OUTPUT链,OUTPUT链可以经过实现定义好的规则对数据报文进行匹配检查并执行相应动做,OUTPUT链能够对数据包进行过滤高并发

POSTROUTING

数据包从OUTPUTFORWARD转发而来,到达netfilter框架中的最后一关,分析数据包并执行对应动做,和POSTROUTING同样不能对数据包进行过滤spa

四表

iptables之因此被称为iptables是其过滤数据包的规则是经过四张表的来定义code

filter

整个iptables最关键的表,实现数据包的过滤,能够由INPUT,FORWARD,OUTPUT这三个可以实现过滤功能的链组成

nat

学过网络的同窗应该都知道NAT(Network Address Translation)网络地址转换,正是应为有了这项技术才使得咱们现今还可以有IPv4可使用,在iptables中也能够实现NAT的相关功能, 例如SNAT, DNAT, MASQUERADE等功能,nat表能够由PREROUTING, FORWARD, POSTROUTING组成

mangle

mangle能够对匹配到的报文的数据报进行拆解,作出修改,从新封装等操做,通常咱们用的不多,五个链都能实现mangle的功能

raw

raw关闭NAT的链接追踪机制,防止在高并发的访问下服务器的内存溢出致使故障,可由PREROUTING,OUTPUT实现

定义规则的”潜规则”

添加规则时的考量点

  1. 实现哪些功能: 判断添加在哪张表上

  2. 报文的流经路径: 判断添加在哪一个链上

链上规则的次序

1.同类规则(访问同一程序),匹配范围小的放在上面 
2.不一样类的规则(访问不一样应用), 匹配到报文频率高的放上面 
3.将那些可由一条规则描述的多个规则合并成一个 
4.设置默认策略

总结

本文只对iptables进行原理方面的简单介绍,做者水平不高,若是发现错误还望海涵并及时通知我,在这里不胜感激。 做者:AnyISalIn 感谢:MageEdu

相关文章
相关标签/搜索