一、iptables防火墙简介

Netfilter/Iptables(以下简称Iptables)是unix/linux自带的一款优秀且开放源代码的安全自由的基于包过滤的防火墙工具,它的功能十分强大,使用非常灵活,可以对流入和流出服务器的数据包进行很精细的控制。特别是它可以在一台非常低的硬件配置下跑的非常好
Iptables是Linux2.4及2.6内核中集成的服务。其功能与安全性比其ipfwadm,ipchains强大的多,iptables主要工作在OSI七层的二、三、四层,如果重新编译内核,iptables也可以支持7层控制(squid代理+iptables)

  • 强调:
    如果并发比较大,或者日PV多的情况下,开启防火墙要注意,很可能导致网站访问缓慢
    大并发(并发1万,PV日3000万)要么购买硬件防火墙,要么不开iptables防火墙

二、iptables 名词和术语

1. 容器:包含和被包含的关系

容器:装东西的器皿,docker容器技术,将镜像装在了一个系统中,这个系统就称为容器
iptables称为一个容器—装着防火墙的表
防火墙的表又是一个容器—装着防火墙的链
防火墙的链也是一个容器—装着防火墙的规则
iptables—表—链—规则

2. 规则: 防火墙一条一条安全策略

防火墙匹配规则流程:参见防火墙工作流程图

  1. 防火墙是层层过滤的,实际是按照配置规则的顺序从上到下,从前到后进行过滤的。
  2. 如果匹配上规则,即明确表示是阻止还是通过,数据包就不再向下匹配新的规则。
  3. 如果规则中没有明确表明是阻止还是通过的,也就是没有匹配规则,向下进行匹配,直到匹配默认规则得到明确的阻止还是通过。
  4. 防火墙的默认规则是所有规则执行完才执行的。

3. 防火墙工作流程图

iptables是采用数据包过滤机制工作的,所以它会对请求的数据包的包头数据进行分析,并根据我们预先设定的规则来进行匹配是否可以进入到主机。

4. 四表五链

iptables表(tables)和链(chains)

  • Filter表 实现防火墙安全过滤功能
  • Nat表 负责数据包改写,网关共享上网、IP和端口映射
  • Mangle表 对数据进行表决包含所有链,实际用的不多,忽略
  • RAW表 用处很少和Mangle一样,直接忽略

三、filter表和NAT表详述

对于filter表的控制是我们实现本机防火墙的重要手段,特别是对INPUT链的控制

1. filter表

  1. 作用
    主要和主机自身有关,真正负责主机防火墙功能的(过滤流入流出主机的数据包)。filter表是iptables默认使用的表。这个表定义了三个链(Chains):
  2. 企业工作场景:
    主机防火墙|
  3. 链的作用
  • INPUT
    负责过滤所有目标地址是本机地址的数据包。通俗的讲,就是过滤进入主机的数据包
  • FORWARD
    负责转发流经主机的数据包。起转发的作用,和LVS的NAT模式关系很大
  • OUTPUT
    处理所有源地址是本机地址的数据包,通俗的讲,就是处理从主机发出去的数据包。

2. NAT表

  1. 作用
    nat表负责网络地址转换,即来源与目的ip地址和port的转换。应用:和主机本身无关。一般用于局域网共享上网或者特殊的端口转换服务相关。
    这个表定义了三个链(Chains),nat功能就相当于网络的acl控制。和网络交换机:Acl类似。
  2. NAT功能一般企业工作场景
  • 用于做企业路由或网关(iptibles),共享上网(POSTROUTING)
  • 做内部外部IP地址一对一映射(dmz),硬件防火墙映射IP到内部服务器,ftp服务。(PREROUTING)
  • web,单个端口的映射,直接映射80端口(PREROUTING)。
  1. 链的作用
  • OUTPUT
    和主机发出去的数据包有关.改变主机发出数据包的目标地址。
  • PREROUTING
    在数据包到达防火墙时进行路由判断之前执行的规则,作用是改变数据包的目的地址、目的端口等。
    例如:把公网IP:124.42.60.113映射到局域网的10.0.0.19服务器上。如果是web眼务,可以把80转为局域网的服务器上9000端口。
  • POSTROUTING
    在数据包离开防火墙时进行路由判断之后执行的规则,作用改变数据包的源地址、源端口等。
    例如:我们现在的笔记本和虚拟机都是10.0.0.0/24,就是出网的时候被我们企业路由器把源地址改成了公网地址了。生产应用:局域网共享上网。

四、iptables表和链工作流程图

1.全流程图

2.简化流程图[仅filter表,NAT表]