防火墙、Iptables、netfilter/iptables、NAT 概述 - 如果你真的想做一件事,你一定会找到方法; 如果你不想做一件事,你一定会找到借口。 - ITeye技术网站
一、防火墙的简介
- 防火墙是指设置在不同网络或网络安全域之间的一系列部件的组合,它能增强机构内部网络的安全性。它通过访问控制机制,确定哪些内部服务允许外部访问,以及 允许哪些外部请求可以访问内部服务。它可以根据网络传输的类型决定IP包是否可以传进或传出内部网
- 防火墙通过审查经过的每一个数据包,判断它是否有相匹配的过滤规则,根据规则的先后顺序进行一一比较,直到满足其中的一条规则为止,然后依据控制机制做出相应的动作。如果都不满足,则将数据包丢弃,从而保护网络的安全
- 防火墙可以被认为是这样一对机制:一种机制是拦阻传输流通行,另一种机制是允许传输流通过。一些防火墙偏重拦阻传输流的通行,而另一些防火墙则偏重允许传输流通过
二、防火墙的功能
- 可以保护易受攻击的服务
- 控制内外网之间网络系统的访问
- 集中管理内网的安全性,降低管理成本
- 提高网络的保密性和私有性
- 记录网络的使用状态,为安全规划和网络维护提供依据
三、防火墙的类型
防火墙技术根据防范的方式和侧重点的不同而分为很多种类型,但总体来讲可分为:包过滤防火墙、代理服务器(例如:squid代理服务器)两种类型
1、包过滤防火墙(网络层)
工作原理
通过检查数据流中的每个数据包的源地址、目的地址、源端口、目的端口、协议状态等因素来确定数据包是否允许通过
2、代理服务器防火墙(应用层)
工作原理
代理服务型防火墙是在应用层上实现防火墙功能的。它能提供部分与传输有关的状态,能完全提供与应用相关的状态和部分传输的信息,它还能处理和管理信息,例 如:当代理服务器收到用户对某个网站的访问请求,先检查这个请求是否符合控制规则,如果符合ACL,则替用户取回所需要的信息再转给用户
一、iptables的简介
netfilter/iptables(简称为iptables)组成Linux平台下的包过滤防火墙,与大多数的Linux软件一样,这个包过滤防火墙是免费的,它可以代替昂贵的商业防火墙解决方案,完成封包过滤、封包重定向和网络地址转换(NAT)等功能
netfilter/iptables IP 信息包过滤系统被称为单个实体,但它实际上由两个组件 netfilter和 iptables 组成。
netfilter 组件也称为 内核空间(kernelspace),是内核的一部分,由一些信息包过滤表组成, 这些表包含内核用来控制信息包过滤处理的规则集。
iptables 组件是一种工具,也称为 用户空间(userspace),它使插入、修改和除去信息包过滤表中的规则变得容易。 除非您正在使用 Red Hat Linux 7.1 或更高版本,否则需要从 netfilter.org 下载该工具并安装使用它。
通过使用用户空间,可以构建自己的定制规则,这些规则存储在内核空间的信息包过滤表中。
二、iptables的基础知识(表->链->规则)
1、规则(rules)
它其实就是网络管理员预定义的条件,规则一般的定义为“如果数据包头符合这样的条件,就这样处理这个数据包”。规则存储在内核空间的信息包过滤表中,这些规 则分别指定了源地址、目的地址、传输协议(如TCP、UDP、ICMP)和服务类型(如HTTP、FTP和SMTP)等。当数据包与规则匹配 时,iptables就根据规则所定义的方法来处理这些数据包,如放行(accept)、拒绝(reject)和丢弃(drop)等。配置防火墙的主要工 作就是添加、修改和删除这些规则
2、链(chains)
它是数据包传播的路径,每一条链其实就是众多规则中的一个检查清单,每一条链中可以有一条或数条规则。当一个数据包到达一个链时,iptables就会从链中第一条规则开始检查(即:检查的顺序:从上到下),看该数据包是否满足规则所定义的条件。如果满足,系统就会根据该条规则所定义的方法处理该数据包;否则iptables将继续检查 下一条规则,如果该数据包不符合链中任一条规则,iptables就会根据该链预先定义的默认策略来处理数据包
3、表(tables)
它提供特定的功能,iptables内置了4个表,即filter表、nat表、mangle表和raw表,分别用于实现包过滤,网络地址转换、包重构(修改)和数据跟踪处理
如图可得到:
1)这4个表的优先级别:raw > mangle > nat > filter
2)每个表有相关的链
- raw表有2个链:prerouting、output
- mangle表有5个链:prerouting、postrouting、input、output、forward
- nat表有3个链:prerouting、postrouting、output
- filter表中有3个链:input、output、forward
最常用的链:input(进入)、output(出去)、forward(转发),而prerouting与postrouting用于网络地址转换(NAT)
4、iptables传输数据包的过程
第一种:prerouting? ->? forward? -->? postrouting
第二种:prerouting? ->? input -> localost(本地) -> output? ->? postrouting
1、什么是NAT
NAT 英文全称是Network Address Translation,称是网络地址转换,它是一个IETF标准,允许一个机构以一个地址出现在Internet上。NAT将每个局域网节点的地址转换成一个IP地址,反之亦然。它也可以应用到防火墙技术里,把个别IP地址隐藏起来不被外界发现,使外界无法直接访问内部网络设备,同时,它还帮助网络可以超越地址的限制,合理地安排网络中的公有Internet地址和私有IP地址的使用
2、NAT的类型
1) 静态NAT(Static NAT,SNAT)(局域网的IP==>广域网的IP)
静态NAT设置起来最为简单和最容易实现的一种,内部网络中的每个主机都被永久映射成外部网络中的某个合法的地址
2)动态地址NAT(Pooled NAT,DNAT)(广域网的IP==>局域网的IP)
动态地址NAT是在外部网络中定义了一系列的合法地址,采用动态分配的方法映射到内部网络
动态地址NAT只是转换IP地址,它为每一个内部的IP地址分配一个临时的外部IP地址,主要应用于拨号,对于频繁的远程联接也可以采用动态NAT
3)网络地址端口转换NAPT(Port-Level NAT)
NAPT是把内部地址映射到外部网络的一个IP地址的不同端口上
最熟悉的一种转换方式。NAPT普遍应用于接入设备中,它可以将中小型的网络隐藏在一个合法的IP地址后面。NAPT与动态地址NAT不同,它将内部连接映射到外部网络中的一个单独的IP地址上,同时在该地址上加上一个由NAT设备选定的TCP端口号