​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链是数据报文进入用户空间的必经之路

FORWARD

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

OUTPUT

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

POSTROUTING

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

四表

iptables之所以被称为iptables是其过滤数据包的规则是通过四张表的来定义

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

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

(0)
Net18-AnyISalInNet18-AnyISalIn
上一篇 2016-03-31 18:24
下一篇 2016-03-31 22:40

相关推荐

  • 关于linux的小小心得

    1、命令行历史  history(history显示当前终端的历史记录)    (1) 保存你输入的命令历史。 可以用它来重复执行命令    (2) 登录shell时, 会读取命令历史文件中记录下的命令 ~/.bash_history    (3)登录进shell后新执行的命令只…

    Linux干货 2017-07-15
  • 包管理及源码安装Apache

    一,概述 yum 仓库的安装 在/etc/yum.repos.d/目录下创建后缀名为repo的配置文件 [CentOS7] name= baseurl= gpgcheck= enabled= 配置文件基本包含的四个要求 安装及升级本地程序包: * localinstall rpmfile1 [rpmfile2] […] (用install替代) …

    Linux干货 2016-09-01
  • Raid的工作原理

    1,什么是Raid Raid的基本原理就是把多个磁盘组合到一起,组成一个磁盘组,使性能达到或超过一个容量巨大价格昂工艺的磁盘,当然基于硬件的RAID解决方案比基于软件RAID技术在使用性能和服务性能上稍胜一筹,具体表现在检测和修复多位错误的能力、错误磁盘自动检测和阵列重建等方面。 2.RAID级别介绍;一般常用的RAID阶层,分别是RAID 0、RAID1、…

    Linux干货 2017-06-19
  • 基于pxe部署系统

    一、前言 在生产环境中,我们经常遇到需要部署部署多台服务器。如果我们每部署一台服务器都要拿着系统盘到机房部署,守在服务器面前,那么我们的效率是十分低下的。况且有时候机房并不在我们身边。那么我们可以通过让机房值班人员为每台服务器配置好远程管理卡,运维人员通过远程管理卡,远程登入服务器进行操作。 二、pxe原理 pxe原理是通过服务器上网卡中支持的pxe启动,通…

    Linux干货 2015-09-14
  • bash脚本编程class 1

    命令集构成的shell与变量赋予其的灵活性     一.shell脚本的基本构成和调用方式   shell脚本由基本文件构成,调用shell文件有两种方式:bash+file.sh或source+file.sh的绝对路径,其中后一种需要对文件添加用户执行权限。这两种调用方式都能执行shell文件,但是所执行的位置不同,…

    Linux干货 2016-08-15
  • N25 第三周作业

    1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。 [jizo@jizo ~]$ who | cut -d" " -f1 | uniq jizo  2、取出最后登录到当前系统的用户的相关信息。 [root@jizo ~]# who | tail -l jizo     …

    Linux干货 2016-12-18