Linux操作系统中的防火墙技术及其应用

概述

在众多的网络防火墙产品中,Linux操作系统上的防火墙软件特点 显著。它们和Linux一样,具有强大的功能,大多是开放软件,不仅可免费使用而 且源代码公开。这些优势是其他防火墙产品不可比拟的。选用这类软件确实是最 低硬件需求的可靠、高效的解决方案。但用户最关心的还是安全系统的性能,有 关部门根据网络安全调查和分析曾得出结论:网络上的安全漏洞和隐患绝大部分 是因网络设置不当引起的。使用Linux平台上的这些优秀软件同样也存在这样的问 题。要使系统安全高效地运行,安装人员和管理人员必须能够理解该软件产品的 运行机制并能深入分析所采用的防火墙设置策略会不会被人利用。本文仅对Linux 平台上的IP包过滤防火墙软件Ipchains进行探讨。

防火墙的基本模型

基于TCP/IP协议簇的Internet网际互联完全依赖于网络层以上的协议栈( 网络层的IP协议、传输控制协议TCP/UDP协议和应用层协议)。考虑到网络防火墙 是为了保持网络连通性而设立的安全机制,因此防火墙技术就是通过分析、控制 网络以上层协议特征,实现被保护网络所需安全策略的技术。构建防火墙有三类 基本模型:即应用代理网关、电路级网关(Circuit Level Gateway)和网络层防火 墙。它们涉及的技术有应用代理技术和包过滤技术等。

应用代理网关允许 内部网络上的用户通过防火墙非直接地访问Internet。它根据用户的请求代替用 户与目的地进行连接。由于应用代理网关在应用层进行代理,所以它可以对应用 协议进行控制,而且还可以在应用级进行记录。它比网络级防火墙的安全措施更 加严格,因为它能提供更详细的审计报告、跟踪用户和应用进程以及IP包的参数 。然而,采用应用层防火墙对网络性能有较大影响。由于对任何用户的请求都要 求应用代理进程为其提供应用服务,所以速度较慢,并且不如网络层防火墙那样 透明以及维护不便等。在Linux上实现这种防火墙模型的软件有squid等。

电路级网关与应用代理网关类似,但进行的代理通常与应用无关。这样就失去了 详尽记录和精确定义规则的能力。电路级网关是一台运行网关应用程序的设备, 它只支持TCP/IP应用,使用TCP端口实现网络资源和用户应用程序之间的通信。它 还要求客户端使用特殊软件才能为应用到应用的通信服务。SOCKS是Linux上实现 这类防火墙模型的软件。

网络层的IP包过滤防火墙在IP包水平上工作。它 根据在每个包中的源地址、目的地址和包类型等信息控制包的流动。更彻底的过 滤过程是检查包中的源、目的端口号以及连接状态等信息。这种防火墙比较安全 ,但缺少足够的记录信息。它可以阻止外部网络访问被保护的内部网络,但不能 记录谁访问了公开的系统,以及谁从内部网络访问Internet。在Linux内核中支持 IP包过滤,所以不需要增加其他软件就可以构建包过滤防火墙,Ipchains软件包 是Linux平台上一个功能强大的包过滤策略管理软件,用于设置可靠的防火墙系统 。

Ipchains及IP伪装原理

在Linux系统上,支持包过滤的核心中有 三个规则列表,这些列表称为防火墙链。三个链分别称为输入链、输出链和转发 链。当一个包从Internet进入配置了防火墙的Linux主机,内核使用输入链决定该 包的取舍。如果该包没有被丢弃,则内核继而调用转发链决定是否将包发送到某 个出口,最后包要被发出前,内核通过输出链来做决定。

图1 Ipchains 流程图

一个链是一系列规则的列表。每个规则规定:如果包的 包头与规则相匹配,那么对包进行相应的处理。如果该规则与包不匹配,则引入 链中的下一条规则。最后,如果没有要引入的规则,内核根据内置策略决定如何 做。在一个有安全意识的系统中,该规则通常告诉内核将包拒绝或丢弃。

通过适当配置IP过滤规则,即三条链的过滤策略,该防火墙可以控制输入的包来 自信任的IP网段,也可配置为只对外开放指定的TCP/UDP端口号。这些策略可分别 指定到防火墙主机的某固定接口设备如以太网卡、PPP连接等。除这三条链外,我 们还可以配置用户自定义的规则链。在三条链的执行中可随时跳转到自定义链执 行,完成后再回到主链,这使过滤规则可以相当灵活。

在防火墙链中有一 些特殊的跳转目标值如下表所示:

在防 火墙链中的IP伪装是一个比包过滤策略更加安全的解决方案,它同时解决了 Internet中IP地址资源不足的问题。IP伪装是指当一台计算机访问Internet时能 够将其IP地址伪装成其他地址的机制。如果连接到Internet上的一个Linux主机具 有IP伪装功能,那么与该Linux计算机无论是在同一个局域网上还是通过PPP连接 的,尽管它们没有正式的IP地址,都可与Internet连接。这意味着可将一系列主 机藏在一个网关系统之后来访问Internet,它们的访问在外界看来是不可见的。

由于要伪装的主机没有正式的IP地址,可以使用IANA(Internet Assigned Numbers Authority)保留的私有网络地址,即:

10.0.0.0~ 10.255.255.255????1个A类地址

172.16.0.0~172.31.255.255???16个连 续B类地址

192.168.0.0~192.168.255.255??255个连续C类地址

在 防火墙的转发链配置了IP伪装后,当内部网络上的主机向Internet发出访问的IP 包时,内核将包中的源IP地址换成网关的IP地址,并记录被伪装的IP地址,然后 转发这个包。当这个包的应答IP包从Internet进入网关时,内核会进行去IP伪装 的操作,将目的地址替换成内部地址。IP伪装规则只能配置于转发链,通过适当 配置参数可对一个网段、某台主机、某个接口设备、某种协议或协议的某些端口 进行IP伪装。IP伪装对外部屏蔽了内部网络的细节,外部甚至不知到内部网络的 存在,因此安全性更好。

时间: 2024-09-16 00:50:39

Linux操作系统中的防火墙技术及其应用的相关文章

一起谈.NET技术,在 Linux 操作系统中运行 ASP.NET 4 (中)

在 Linux 操作系统中运行 ASP.NET 4(上)已经讲解了如果在 Oracle VM VirtualBox 4.0 中安装 openSUSE 11.3 操作系统.现在让我们对刚刚安装好的 openSUSE 11.3 操作系统进行必要的配置吧. 如上图所示,点击计算机 –> YaST,然后: 输入 root 口令后,点击继续,进入YaST2 Control Center: 如上图所示,点击安全和用户中的Sudo项目,进入Sudo 配置: sudo 规则: 如上图所示,点击添加按钮,进入新的

一起谈.NET技术,在 Linux 操作系统中运行 ASP.NET 4(上)

目前最流行的 Linux 操作系统发行版是 Ubuntu.但是我们这次是要在 Linux 操作系统中运行 ASP.NET 的,所以选择了 openSUSE.我准备在 Oracle VM VirtualBox 中安装 openSUSE 11.3 操作系统. 首先到 openSUSE 官方网站下载 openSUSE-11.3-DVD-x86_64.iso 文件. 然后运行 Oracle VM VirtualBox 4.0,新建一个 openSuse 虚拟机并按下图进行设置: 为了使宿主机能够从网络上

一起谈.NET技术,在 Linux 操作系统中运行 ASP.NET 4 (下)

"在 Linux 操作系统中运行 ASP.NET 4 (中)"中已经配置好了 openSUSE 11.3 操作系统. 现在,我们进入"GNOME 终端",使用 ifconfig 命令验证一下本虚拟的 IP 地址就是一开始我们在宽带路由器中为它分配的静态地址. ben@linux-nyhn:~> /sbin/ifconfigeth0 Link encap:Ethernet HWaddr 08:00:27:51:5B:0B inet addr:192.168.1.

在 Linux 操作系统中运行 ASP.NET 4 (中)

在 Linux 操作系统中运行 ASP.NET 4(上)已经讲解了如果在 Oracle VM VirtualBox 4.0 中安装 openSUSE 11.3 操作系统.现在让我们对刚刚安装好的 openSUSE 11.3 操作系统进行必要的配置吧. 如上图所示,点击计算机 –> YaST,然后: 输入 root 口令后,点击继续,进入YaST2 Control Center: 如上图所示,点击安全和用户中的Sudo项目,进入Sudo 配置: sudo 规则: 如上图所示,点击添加按钮,进入新的

Linux操作系统中运行ASP.NET 4

<在openSUSE下ASP.NET 4开发环境配置>中已经配置好了 openSUSE 11.3 操作系统. 现在,我们进入"GNOME 终端",使用 ifconfig 命令验证一下本虚拟的 IP 地址就是一开始我们在宽带路由器中为它分配的静态地址. ben@linux-nyhn:~> /sbin/ifconfig   eth0      Link encap:Ethernet  HWaddr 08:00:27:51:5B:0B               inet 

linux操作系统中的编码问题

今天又碰到了难缠的python编码问题,首先主要还是linux操作系统中的编码问题. 无论怎么样,我都没办法在linux的vim中利用中文输入法打出中文? vim中的set encoding,set fileencoding, set fileencodings 各种设置了还是无法打出中文,还是出 现乱码? 这时就要考虑linux系统编码的问题,利用locale命令查看一下linux系统的编码.LC_ALL的设置会覆盖所 偶LC_*的设定,直接忽略LANG.如果未设置LC_ALL,则LC_*按照

Linux操作系统中超级权限控制的应用

  在Linux操作系统中,root的权限是最高的,也被称为超级权限的拥有者.普通用户无法执行的操作,root用户都能完成,所以也被称之为超级管理用户. 在系统中,每个文件.目录和进程,都归属于某一个用户,没有用户许可其它普通用户是无法操作的,但对root除外.root用户的特权性还表现在root可以超越任何用户和用户组来对 文件或目录进行读取.修改或删除(在系统正常的许可范围内);对可执行程序的执行.终止;对硬件设备的添加.创建和移除等;也可以对文件和目录进行属主和权限进行修改,以适合系统管理

在 Linux 操作系统中运行 ASP.NET 4 (下)

"在 Linux 操作系统中运行 ASP.NET 4 (中)"中已经配置好了 openSUSE 11.3 操作系统. 现在,我们进入"GNOME 终端",使用 ifconfig 命令验证一下本虚拟的 IP 地址就是一开始我们在宽带路由器中为它分配的静态地址. ben@linux-nyhn:~> /sbin/ifconfig eth0 Link encap:Ethernet HWaddr 08:00:27:51:5B:0B inet addr:192.168.1

在 Linux 操作系统中运行 ASP.NET 4(上“.NET研究”)

目前最流行的 Linux 操作系统发行版是 Ubuntu.但是我们这次是要在 Linux 操作系统中运行 ASP.NET 的,所以选择了 openSUSE.我准备在 Oracle VM VirtualBox 中安装 openSUSE 11.3 操作系统. 首先到 openSUSE 官方网站下载 openSUSE-11.3-DVD-x86_64.iso 文件. 然后运行 Oracle VM VirtualBox 4.0,新建一个 openSuse 虚拟机并按下图进行设置: 为了使宿主机能够从网络上