1.首先我们来简单的认识一下防火墙:
防火墙(Firewall),也称防护墙,是由Check Point创立者Gil Shwed于1993年发明并引入国际互联网(US5606668(A)1993-12-15)。防火墙是位于内部网和外部网之间的屏障,它按照系统管理员预先定义好的规则来控制数据包的进出。防火墙是系统的第一道防线,其作用是防止非法用户的进入。下面让我们一起简单的了解一下三种防火墙:
第一种:软件防火墙
软件防火墙运行于特定的计算机上,它需要客户预先安装好的计算机操作系统的支持,一般来说这台计算机就是整个网络的网关。俗称“个人防火墙”。软件防火墙就像其它的软件产品一样需要先在计算机上安装并做好配置才可以使用。防火墙厂商中做网络版软件防火墙最出名的莫过于Checkpoint。使用这类防火墙,需要网管对所工作的操作系统平台比较熟悉。
第二种:硬件防火墙
这里说的硬件防火墙是指“所谓的硬件防火墙”。之所以加上"所谓"二字是针对芯片级防火墙说的了。它们最大的差别在于是否基于专用的硬件平台。目前,市场上大多数防火墙都是这种所谓的硬件防火墙,他们都基于PC架构,就是说,它们和普通的家庭用的PC没有太大区别。在这些PC架构计算机上运行一些经过裁剪和简化的操作系统,最常用的有老版本的Unix、Linux和FreeBSD系统。值得注意的是,由于此类防火墙采用的依然是别人的内核,因此依然会受到OS(操作系统)本身的安全性影响。传统硬件防火墙一般至少应具备三个端口,分别接内网,外网和DMZ区(非军事化区),现在一些新的硬件防火墙往往扩展了端口,常见四端口防火墙一般将第四个端口做为配置口、管理端口。很多防火墙还可以进一步扩展端口数目。
第三种:芯片级防火墙
芯片级防火墙基于专门的硬件平台,没有操作系统。专有的ASIC芯片促使它们比其他种类的防火墙速度更快,处理能力更强,性能更高。做这类防火墙最出名的厂商有NetScreen、FortiNet、Cisco等。这类防火墙由于是专用OS(操作系统),因此防火墙本身的漏洞比较少,不过价格相对比较高昂。
下面是从不同的方面来对防火墙进行的一些划分:
从软、硬件形式上分为 软件防火墙和硬件防火墙以及芯片级防火墙;
从防火墙技术分为 “包过滤型”和“应用代理型”两大类;
从防火墙结构分为单一主机防火墙、路由器集成式防火墙和分布式防火墙三种;
按防火墙的应用部署位置分为边界防火墙、个人防火墙和混合防火墙三大类;
按防火墙性能分为百兆级防火墙和千兆级防火墙两类。
防火墙功能:
可以保护易受攻击服务;
控制内外网之间网络系统的访问;
集中管理内网的安全性,降低管理成本;
提高网络的保密性和私有性;
记录网络的使用状态,为安全规划和网络维护提供依据。
2.了解Linux防火墙: 防火墙的核心是数据报文的过滤,工作在主机或者网络的边缘,对进出的数据报文进行检查、监控并且能够根据事先定义的匹配条件和规则做出相应的动作的组件、机制或者系统。**Linux一般都是作为服务器系统来使用,对外提供一些基于网络的服务,通常我们都需要对服务器进行一些网络访问控制(常见的访问控制包括:哪些ip可以访问服务器、可以使用哪些协议访问服务器、可以通过哪些接口访问服务器,是否通过数据包进行修改等。比如:服务器可能受到来自于某个ip攻击,这时就需要禁止所有来自ip的访问)**这类似于防火墙的功能,所以我们称之为Linux防火墙服务。
接着我们认识一下基于操作系统的四层模型,防火墙是在哪一层工作的:
**Linux内核集成了网络控制功能,通过netfilter模块(netfilter提供了一个抽象、通用化的框架,作为中间件,为每种网络协议(IPv4、IPv6等)定义一套钩子函数)来实现网络访问控制功能。**防火墙的核心是数据报文过滤,网络模块由内核实现,而过滤的实现必须在内核中,而用户是无法直接访问内核,更别说把过滤规则放置到内核中,因此在TCP/IP协议栈上,选取了几个不同的位置,开放给用户空间的应用程序,该应用程序可以通过系统调用将规则发送到指定的内核位置,我们Linux操作系统上为大家提供的应用程序是iptables程序、firewalld程序对netfilter进行控制管理。
iptables 是一个应用层的应用程序,它通过 netfilter 放出的接口来对存放在内核内存中的 XXtables(Netfilter的配置表)进行修改。这个XXtables由表tables、链chains、规则rules组成,iptables(RHEL 7版本之前)在应用层负责修改这个规则文件。类似的应用程序还有firewalld(RHEL 7版本之后) 。
netfilter可以对数据进行允许、丢弃、拒绝等三个可执行的动作。netfilter支持通过五元组(源ip数据报文从哪来、目的ip数据报文从哪去、源端口、目的端口、传输协议)、使用接口、连接状态(new established related invalid)等对数据包进行分类。
iptables service的工作原理:首先对旧的防火墙规则进行了清空,然后重新完整地加载所有新的防火墙规则,而如果配置了规则需要 reload 内核模块的话,过程背后还会包含卸载和重新加载内核模块的动作,而不幸的是,这个动作很可能对运行中的系统产生额外的不良影响,特别是在网络非常繁忙的系统中并且iptables只支持针对IPv4进行设置。
Firewalld的工作原理:如果我们哪怕只修改一条规则也要进行所有规则的重新载入的模式称为静态防火墙的话,那么firewalld 所提供的模式就可以叫做动态防火墙,它的出现就是为了解决这一问题,任何规则的变更都不需要对整个防火墙规则列表进行重新加载,只需要将变更部分保存并更新到运行中的 iptables 即可,它具备对IPv4 和IP v6防火墙设置的支持。3.简单了解Linux防火墙服务的工作原理及netfilter配置表的的配置信息:
Hook Point:我们可以理解为回调函数点,当数据包到达触发回调函数点的位置时,会主动调用我们的回调函数,使我们有机会能在数据包路由的时候改变它们的方向、内容。