操作系统:Linux 下的防火墙
一 简介
最近由于产品架构升级需要,在做一些环境搭建的事情。很久没做这类基础部署相关的工作,对操作系统和基础配置都有些生疏。恰好操作的过程中遇到一个与防火墙相关的问题,所以就以此为题,整理一下对防火墙的理解,和常见操作。
二 防火墙
2.1 起源
防火墙(Firewall),也称防护墙,是由 Check Point 的创立者 Gil Shwed 于 1993 年发明并引入国际互联网(US5606668(A)1993-12-15)。
防火墙是通过有机结合各类用于安全管理与筛选的软件和硬件设备,帮助计算机网络于其内、外网之间构建一道相对隔绝的保护屏障,以保护用户资料与信息安全性的一种技术。
2.2 基本准则
防火墙遵循的两个基本准则:第一,它会拒绝所有未经说明允许的命令。防火墙的审查基础的逐项审阅,任何一个服务请求和应用操作都将被逐一审查符合允许的命令后才可能执行,这样的操作方法为保证内部计算机安全性提供了切实可行的办法。反而言之,用户可以申请的服务和服务数量是有限的,提高了安全性的同时也就减弱可用性。第二,它会允许所有未经说明拒绝的命令。
2.3 发展历程
随着计算机技术的进步防火墙技术也在不断发展,简单整理其发展历程如下:
2.3.1 第一代防火墙
第一代防火墙采用包过滤技术,由于几乎与路由器同时出现,所以也称为包过滤(Packet filter)防火墙或路由器防火墙。
2.3.2 第二代防火墙
1989 年,贝尔实验室的 Dave Presotto 和 Howard Trickey 推出了第二代防火墙,即电路层防火墙。
2.3.3 第三代防火墙
在第二代防火墙推出的同时,也提出了第三代防火墙的概念,即应用层防火墙(代理防火墙)的初步结构。所以在有些描述中,也会把这两种防火墙合一为第二代防火墙。
2.3.4 第四代防火墙
1992 年,USC 信息科学院的 BobBraden 开发出基于动态包过滤(Dynamic packet filter)技术的第四代防火墙,后来演变为目前所说的状态监视(Stateful inspection)技术。
1994 年,以色列的 CheckPoint 公司开发出了第一个采用这种技术的商业化产品。
2.3.5 第五代防火墙
1998 年,NAI 公司推出了一种自适应代理(Adaptive proxy)技术,并在 Gauntlet Firewall for NT 中得以实现,被称为第五代防火墙。
2.4 防火墙未来的技术发展趋势
随着新的网络攻击的出现,防火墙技术也有了新的发展方向。目前看主要包括包过滤技术、防火墙体系结构、防火墙系统管理三方面。
详细内容可阅读文档:防火墙的发展史。
三 Linux 下的防火墙
在这里,我们将会讨论熟悉的 iptables 和 firewall,这两个 Linux 下的防火墙工具包。
3.1 iptables
3.1.1 Iptables 介绍
iptables,即 IP 信息包过滤系统,是与 Linux 内核集成的 IP 信息包过滤系统。如果 Linux 系统连接到因特网或 LAN、服务器或连接 LAN 和因特网的代理服务器, 则该系统有利于在 Linux 系统上更好地控制 IP 信息包过滤和防火墙配置。Iptables 有两种应用模式:主机防火墙,NAT 路由器。
netfilter/iptables IP 信息包过滤系统是一种功能强大的工具,可用于添加、编辑和除去规则,这些规则是在做信息包过滤决定时,防火墙所遵循和组成的规则。这些规则存储在专用的信 息包过滤表中,而这些表集成在 Linux 内核中。在信息包过滤表中,规则被分组放在我们所谓的链(chain)中。
虽然 netfilter/iptables IP 信息包过滤系统被称为单个实体,但它实际上由两个组件 netfilter 和 iptables 组成。netfilter 组件也称为内核空间(kernelspace),是内核的一部分。它提供了一系列的表(tables),每个表由若干个链(chains)组成,每条链可以由一条或若干条规则(rules)组成,其规则由一些信息包过滤表组成,这些表包含内核用来控制信息包过滤处理的规则集。即 iptables 把有次序的规则 "链(chains)" 应用到网络包上。链的集合就构成了"表(tables)",用于处理特殊类型的流量。
Netfilter 支持以下方式对数据包进行分类:源 IP 地址、目标 IP 地址、使用接口、使用协议、端口号、连接状态。
3.1.2 Iptables 防火墙基本原理
Linux Iptables 防火墙的原理主要是对数据包的控制,下图展示了 netfilter 五条链相互关系,即 iptables 数据包转发流程图:
3.2 firewall
3.2.1 firewall 简介
RHEL7 系统中,firewalld 防火墙取代了 iptables 防火墙。我们都知道 iptables 的防火墙策略是交由内核层面的 netfilter 网络过滤器来处理的,而 firewalld 则是交由内核层面的 nftables 包过滤框架来处理。
与 iptables 相比,firewalld 支持动态更新技术并加入了区域(zone)概念。简单来说,区域就是 firewalld 预先准备了几套防火墙策略集合(策略模板),用户可以根据生产场景的不同而选择合适的策略集合,从而实现防火墙策略之间的快速切换。
3.2.2 终端命令
firewall 的操作,可以通过 firewall-cmd 命令来完成。常用命令如下:
3.2.2.1 启动、重启、停止命令
3.2.2.2 重新加载
3.2.2.3 查看 firewalld 的运行状态
3.2.2.4 开放/取消端口
3.2.2.5 其他常用命令
参考文献
版权声明: 本文为 InfoQ 作者【程序员架构进阶】的原创文章。
原文链接:【http://xie.infoq.cn/article/e17d5845520ebcfcd7a1c3fd8】。文章转载请联系作者。
评论