企业级iptalbes防火墙(1)
一、IPtables介绍
Netfilter/Iptables(以下简称Iptables)是unix/linux自带的一款优秀且开放源代码的完全自由的基于包过滤的防火墙工具,它的功能十分强大,使用非常灵活,可以对流入和流出服务器的数据包进行很精细的控制。
netfilter:内核态,即不以文件和形式存在(kernal space)的防火墙。--是实现防火墙的功能
iptables:用户态,在/sbin/iptables存在(User space)的防火墙。操作上二者没有区分。
用户和内核交互的一个工具就是iptables。
**注:**iptables主要工作在OSI七层的3.4层。七层的控制可以使用squid代理+iptables。
实际生产环境中:
关闭Linux自身防火墙。(解决安全问题尽量不给服务器配置外网IP.需要访问的话,就使用代理转发。)因为高并发,iptables会加大延迟。
除非并发小,服务器必须处于公网。考虑开启防火墙。
大并发的情况,不能开iptables,影响性能,利用硬件防火墙提升架构安全
1.iptables工作原理分类:
主机防火墙:主要是用来防范单台主机的进出报文;
网络防火墙:工作与一个网络的边缘,能够实现对进出本网络的所有主机报文加以防护;
================================================================================
iptables缺点:
(1)防火墙虽然可以过滤互联网的数据包,但却无法过滤内部网络的数据包。因此若有人从内部网络攻击时,防火墙没有作用。
(2)电脑本身的操作系统亦可能因一些系统漏洞,使入侵者可以利用这些漏洞绕过防火墙过滤,从而入侵电脑。
(3)防火墙无法有效阻挡病毒攻击,尤其是隐藏在数据中的病毒。
(4)正常状况下,所有互联网的数据包软件都应经过防火墙的过滤,这将造成网络交通的瓶颈。例如在攻击性数据包出现时,攻击者会不时寄出数据包,让防火墙疲于过滤数据包,而使一些合法数据包软件亦无法正常进出防火墙。
PS:没有绝对安全的操作系统,虽然防火墙有这些缺点,但还是能阻挡大多数来自于外网的攻击!
2. iptables工作流程
1、防火墙是一层层过滤的。实际是按照配置规则的顺序从上到下,从前到后进行过滤的。
2、如果匹配上了规则,即明确表明是阻止还是通过,此时数据包就不在向下匹配新规则了。
3、如果所有规则中没有明确表明是阻止还是通过这个数据包,也就是没有匹配上规则,向下进行匹配,直到匹配默认规则得到明确的阻止还是通过。
4、防火墙的默认规则是对应链的所有的规则执行完以后才会执行的(最后执行的规则)。
二、iptables概念
一、iptables名词和术语
1. 什么是 Netfilter/iptables ?
举个例子,如果把Netfilter看成是某个小区的一栋楼。那么表(tables)就是楼里的其中的一套房子。这套房子"表(tables)"属于这栋“Netfilter/iptables”。
2. 什么是表(tables)?
表(tables)是链的容器,即所有的链(chains)都属于其对应的表(tables).如上,如果把Netfilter看成是某个小区的一栋楼.那么表(tables)就是楼里的其中的一套房子。
3 什么是链(chains)?
链(chains)是规则(Policys)的容器。接上,如果把表(tables)当作有一套房子,那么链(chains)就可以说是房子里的家具(柜子等)。
4 什么是规则(Policy)?
规则(Policy)就比较容易理解了,就是iptables系列过滤信息的规范和具体方法条款了.可以理解为柜子如何增加并摆放柜子东西等。
基本术语如下表格所示:
Netfilter/iptables | 表(tables**)** | 链(chains**)** | 规则(Policy**)** |
---|---|---|---|
一栋楼 | 楼里的房子 | 房子里的柜子 | 柜子里衣服,摆放规则 |
三、iptables 表和链
默认情况下,iptables根据功能和表的定义划分包含三个表,filter,nat,mangle,其每个表又包含不同的操作链(chains )。 实际iptables包含4张表和五个链,主要记住filter即可。
1、四个表:
必须是小写
raw ------------追踪数据包, ----此表用处较少,可以忽略不计
mangle -------- 给数据打标记,做标记
nat ---------网络地址转换即来源与目的的IP地址和port的转换。应用:和主机本身无关
filter --------做过滤的,防火墙里面用的最多的表。
表的应用顺序:raw-》mangle-》nat-》filter
2、五个链
五链:(必须是大写)链里面写的是规则。
PREROUTING ---------------------进路由之前数据包
INPUT -----------------就是过滤进来的数据包(输入)
FORWARD -----------------转发
OUTPUT ---------------发出去的数据包
POSTROUTING --------------路由之后修改数据包
所有的访问都是按顺序:
入站:比如访问自身的web服务流量。先PREROUTING(是否改地址),再INPUT(是否允许)到达程序。
转发:经过linux网关的流量.先PREROUTING(是否改地址),然后路由。转发给FORWARD(转发或者丢弃),最后经过POSTROUTING(看看改不改地址。)
出站:源自linux自身的流量.先OUTPUT,然后路由。再给POSTROUTING(是否改IP)。
规则顺序:ACL逐条匹配,匹配即停止。
3、四表五链
raw表里面:
PREROUTING
OUTPUT
总结:数据包跟踪 内核模块iptables_raw
===============================================
mangel表里面有5个链:
PREROUTING
INPUT
FORWARD
OUTPUT
POSTROUTING
路由标记用的表。内核模块iptables_mangle
=====================================================
nat表里面的链:
PREROUTING
INPUT
OUTPUT
POSTROUTING
转换地址的表(改IP,改端口。当网关使用的linux。保护内外网流量。内核模块叫iptable_nat)
==========================================
filter表有三个链:重点
INPUT #负责过滤所有目标是本机地址的数据包通俗来说:就是过滤进入主机的数据包
FORWARD #负责转发流经主机的数据包。起到转发的作用
OUTPUT #处理所有源地址是本机地址的数据包通俗的讲:就是处理从主机发出的数据包
总结:根据规则来处理数据包,如转或者丢。就是实现主机型防火墙的主要表。
内核模块 iptable_filter