谁能把嵌入式系统开发的各个大小分支罗列一下...

构建在嵌入式Linux上的Linux防火墙的研究与实现 - 下载频道
- CSDN.NET
&&&&构建在嵌入式Linux上的Linux防火墙的研究与实现
构建在嵌入式Linux上的Linux防火墙的研究与实现
第一章绪论
第一章绪论
随着 计 算 机技术的快速发展,网络应用己经在全球得以推广,人类己经进入
了网络时代。网络己经成为人们日常生活中不可缺少的一部分,并在国民经济中
发挥着日益重要的作用。信息网络涉及到国家的政府、军事、文教等堵多领域,
其中存贮、传输和处理的信息有许多是重要的政府宏观调控决策、商业经济信
息、银行资金转帐、股票证券、能源数据、科研数据等重要信息,有很多是敏感
信息,甚至是国家机密。所以难免会吸引来自世界各地的各种人为攻击“,。
近 年 来 ,计算机犯罪案件急剧上升,计算机犯罪己经成为普遍的国际性问
题。据美国AB联合会调查和专家估计,美国每年计算机犯罪造成的经济损失高
达150亿美元。因此,网络的安全问题越来越受到人们的重视,成为了人们日
益关注且必须解决的问题。防火墙作为一种网络或系统之间强制实行的访问控制
机制,是确保网络安全的重要手段。防火墙技术是实现计算机安全的一种非常重
要的技术,同时它也是目前最为流行也是使用最为广泛的一种网络安全技术127
防火 墙 是 一个系统,主要用来执行两个网络之间的访问控制策略。它可为各
类企业网络提供必要的访问控制,又不至成为网络的瓶颈,并通过安全策略控制
进出系统的数据,保护企业的关键资源。安全策略建立了全方位的防御体系来保
护机构的信息资源。为了保护内部网络不受到Internet网络的非法入侵,防火墙
常常被放到了内部网和外部网之间,所有来自和去往Internet的信息都必须经过
防火墙并接受检查。防火墙必须只允许授权的合法数据(即防火墙系统安全策略
允许的数据)通过,并且防火墙本身必须不受各种攻击和能够免于渗透。因此,
构建一个自身安全稳定而且有效抵制外部网络的侵入的高性能的防火墙变得日益
重要起来川。
华南理工大学工学硕士学位i}文
1.2立论依据
近年 来 , 随着网络的迅速发展,如何提供一个安全的网络是人们及待解决的
fol题 。随着宽带网络逐渐进入企业和个人的家庭,因此构建一个安全、稳定和低
成本的适用于中小防火墙具有很大的市场前景和实用价值。
综观 防 火 墙技术和产品的发展,防火墙从最初的简单的包过滤防火墙,在网
络层对IF数据包进行选择,过滤一般是依据一个IF数据包的下列各域进行:
IF源地址,计目的地址,协议类型,TGP/UDP源端口和月的端口等,为了增强
安全性尤其是对应用内容的过滤而发展到代理服务型防火墙、,由于工作于应用
层,一方面它可以对各种协议数据进行全面细致检查,提供更强的过滤功能和身
份认证功能,因而能提供更好的安全保障,但另一方面它的工作效率明显比不上
包过滤防火墙,而且对每种服务都必须制定相应代理,加重服务器的-h作量,应
用起来不方便且容易成为网络的瓶颈。im此为了解决代理服务型坊火墙的效率问
题而发展到状态检测防火墙,状态检测防火墙除了对IF数据包进行过滤外,il
根据数据的流的状态进行包的选择‘,,。因此它比简单包过滤更安全0又比代理服
务型防火墙高效。
Lin ux 内 核所内嵌防火墙Netfilter为用户提供一个开放的、扩展性好内
核防火墙,它采用更好的框架结构(framework)重新构造,它拥有状态检测过滤
功能“,,还可实现完整的动态NAT,它拥有基于用户及MAC地址的过滤、包速率
限制等功能。,L采用了开放的结构,用户可以直接扩展功能和实现,一些高级功能
‘”。更值得提出的是,Netfilter可以对数据包魔用层的一些内容进行过滤,基
于k,可以实现对FITTP的ur王、FTP的目录名等等应用层iri内容进行过滤,兼
顾了性能和安全性。Netfilter的模块化设计,使Netfilter更容易进行功能
扩展,根据需要加入新的功能。lptables是Netfilter上的包选择系统,用来
完成对数据包的处理,工ptables的工具有多种如:AGT, Knetfilter,
gSshidld等等,但经实验表明,还是Iptables自身的配置工具扣tables是
最为配置灵活和好用豹‘“。但是iptables是命令行的,因此配置起来还不是很
第一章绪论
方便。基于此,本论文的一个重要豹工作是要设计一个灵活,设置简便的用户界
防火 墙 的 稳定性还取决于其操作系统的稳健,为了增强防火墙产品的可靠
性,防火墙不能只是建立在桌面系统上的,这样就要求构建一个嵌入式系统环
境。嵌入式系统(Embedded System)被定义为:以应用为中心,以计算机技术为
基础,软释硬件可裁剪,适应对功能、可靠性、成本、体积、功耗严格要求O3专
用计算机系统。理想的嵌入式操作系统的特点是:适应于多种CPU和多种硬件
平台:性能稳定,裁剪性很好;开发和使用都很容易,生成的代码质量高,可靠
性好;有一定的实时处理能力,并且能接入internet{0l& Linux是个天生的网络
操作系统,成熟而且稳定。Unux是开放源代码的,任何人都可以修改它,或者
用它开发自己的产A。 Linux系统是可以定制的、,系统内枝最小时目前只有
13011。一个带有中文系统以及图形化界面的核心程序也可以做到不足1MB,
而且同样稳定。因此,Linux作为嵌入式系统新的选择,是非常有潜力的。嵌入
式Linux,成为了国际软件界的一个新宠。而基于嵌入式Linux的网络产品,其
价挤低廉,将为企业提供更为廉价的pq络方案(10)e 现有的R入式Linux的版本
很多,如PocketLinux. MidoriLinux和Bluecat等等、,但往往不能适应实际
的应用要求,因此,本论文针对这个问题进行研究,实现了针对防火墙应用的嵌
入式Linux平台及防火墙的开发。
研究 Li nux防火墙的还有三月份毕业的蔡志峰同学,他完成了防火墙的基
于java的JMx分层R络管理的管理界面的开发设计flit为什么本论文还要再进
行一次界面的开发呢?由于他的界面用到了三层架构,在服务器端需要安装体积
庞大的java虚拟机和Jboss服务器,这些都无法放到总共只有儿十M 大小的
flash存储器中。因此,在本论文开发了更为方便管理的,小巧的签于web的用
户管理界面。
1.3本论文的工作和意义
在论文阶段的主要工作:
华南理工大学工学硕士学位论文
本课 题 是 以研究和开发一个针对中小型网络的防火墙产品为目标的。该防火
墙基于性能优越,功能强大的Linux内核防火墙netfilter开发设计的,同时防
火墙是建立在一个根据具体应用定制的嵌入式Linux系统上的。
本 论 文 深入研究了netfilter防火墙的特点和功能,对netfilter框架和
诊tabl“ 进行了深入的研究,尤其详细介绍了该防火墙比传统防火墙拥有更高安
全性的功能:基于状态过滤和字符匹配功能。针对现有网络上的各种主要安全问
题提出了对应的在本防火墙上解决措施。
本论 文 着 重研究了针对本次防火墙应用而需要建立的嵌入式Linux的环境
的方法,并对其实现的原理和方法进行详细的描述。为了保障防火墙自身的安全
性,Linux中原有的所有不需要的应用和功能将被去除,系统中只保留防火墙必
须要用的部分和应用程序。
本论 文 对 防火墙的规则进行配置,开发和设计了本防火墙系统的友好用户界
新一 代 的 Linux防火墙可以实现基于状态检测的包过滤功能以及部分对细
粒度的内容过滤,比传统的包过滤防火墙有了更强的安全性而且有很高的性能。
基于嵌入式Linux的防火墙由于其价格低廉,功能模块化和可扩展的特点,使
其能作为产品而具有一定的竟争力。虽然嵌入式Linux的开发和应用在国外己
经是如火如茶,但在中国它还是新生事物川。而本次研究和实现本防火墙的过程
中构建的嵌入式Linux平台除了应用于本防火墙产品外,对于开发其它基于嵌
入式Linux平台的网络产品同样有适用性。
1.4本章小结
本章介绍了本论文的立论依据、概述了本论文完成的主要工作和意义。
第二章相关技术的研究
第二章相关技术的研究
2.1网络安全技术
从本 质 上 来讲,网络安全就是网络上的信息安全,是指网络系统的硬件、软件及
其系统中的数据受到保护,不受偶然的或者恶意的原因而遭到破坏、更改、泄露,系
统连续可靠正常地运行,网络服务不中断。广义来说,凡是涉及到网络上信息的保密
性、完整性、可用性、真实性和可控性的相关技术和理论都是网络安全所要研究的领
域。网络安全涉及的内容既有技术方面的问题,也有管理方面的问题,两方面相互补
充,缺一不可。
2.1.1网络安全特征
衡量 一 个 网络的安全程度可以用以下四个指标进行判别。网络安全应具有以下四
个方面的特征:
(1) 保密 性(confidentiality)
信息 不 泄 露 给 非 授 权 的 用 户 、实体或过程,或供其利用的特性。
(2) 完整 性(integirty)
数据 未 经 授 权 不 能 进行 改 变 的 特性。即信息在存储或传输过程中保持不
被修 改 、 不 被 破 坏 和 丢 失的特性。
(3) 可用 性(availability)
可被 授 权 实 体 访 问并 按 需 求 使 用的特性。即当需要时能否存取所需的信
息。 例 如 网 络 环 境 下拒绝服务、破坏网络和有关系统的正常运行等都属于对
可用 性 的 攻 击 。
{4) 可控 性(controlability)
对信 息 的 传 播 及 内 容 具有 控 制 能力。川
华南理工大学工学硕士学位论文
2.1.2网络安全关键技术
网络 安 全 技术涉及的内容是非常广泛的。从广义上讲,网络安全技术主要括以下
几个方面:主机安全技术、身份认证技术、访问控制技术、密码技术、防火墙技术、
安全审计技术、安全管理技术。其中防火墙技术是目前应用最为广泛的一种安全技
2.1.3 TCPAP协议的安全缺陷
Inte rn etll ntranet是基于TCPAP协议的计算机网络。由于TCPIIP协议在设计初期没
有考虑到安全性的问题,因此该协议本身就存在着安全缺陷。TCPIIP的安全缺陷主要
有以下几个方面:
(1) TC P/IP协议数据流采用明文传输。
因特 网 是 一 种 网间 网 技 术 , 其 实它就是把无数的局域网相连起来形成大
的m , 然 后 再 把 大 的网 连 更大的网。因特网的拓扑是一种逐步细化的树状结
构, 虽 然 因 特 网 上 的传 输 是点对点的,但一般因特网上的主机会处于一个局
域网 中 , 局 域 网 ,如 以太网、令牌网,都是广播型网络,也就是说一台主机
发布 消 息 , 网 上 任 何一 台 机器都可以收到这个消息。一般情况下,以太网卡
在收 到 发 往 别 人的 消 息时会自动丢弃消息,而不向上层传递消息。但以太网
卡的 接 收 模 式可 以 设 置成混合型(promiscuous),这样网卡就会捕捉所有
的数 据 包 中 , 并 把 这些数据包向上传递,因此数据信息很容易被可以被窃
听、 篡 改 和 伪 造 。
(2) 源 地 址欺骗(Sourcead dresssp oofing)或IP欺骗(IP sp oofing)。
IP 协议 依 据 I P头 中 的 目 的 地 址项来发送IP数据包。如果目的地址是本
地网 络 内 的 地 址 , 该IP包就被直接发送到目的地。如果目的地址不在本地
网络 内 , 该 IP 包 就 会被发送到网关,再由网关决定将其发送到何处。这是
IP 路由 IP 包的 方 法 。我们发现IP路由IP包时对IP头中提供的IP源地址不
做任 何 检 查 , 并且 认 为IP头中的IP源地址即为发送该包的机器的IP地址。
当接 收 到 该 包 的 目 的主机要与源主机进行通讯时,它以接收到的IP包的IP
头中 IP 源 地 址作 为 其发送的IP包的目的地址.来与源主机进行数据通讯。
第二章相关技术的研究
因此 攻 击 者 可 以直接修改节点的II'地址,冒充某个可信节点的IP地址,进
行攻 击 。
(3)渊路由选择欺骗(Source Routing spoofing)。
TC P/I P协 议 中 , 为 测试目的,IP数据包设置了一个选项-IP源路由功
能 〔冲 S ourceR outi鳍),该选项可以直接指明到达的节点的路由。渺源点
可以 指 定 信息包传送到目的节点的中间路由,这就提供了源路由攻击的条
件, 攻 击 者可以利用这个选项进行欺骗,进行非法连接。攻击者可以冒充可
信节 点 的 IP地址,构造一个通往某个服务器的直接路径,利用可信用户作
为通 往 服 务器的路由中最后一站,就可以向服务器发请求,对其进行攻击。
(4)路由选择信息协议攻击(RIP Attacks)。
RIP 和 O SP F协 议 用 来在网络中的路由器之间交换动态路由信息,但是
各个 节 点 对收到的信息是不检查其真实性的,因此攻击者可以在网上发布假
的路 由 信 息,利用ICMP的重定向信息欺骗路由器和主机,将正常的路由器
定义 为 失 效的路问由器,从而达到非法存取的目豹s
(5)鉴别攻击(Authentication Attacks)。
利用 T CP /IP 协 议 只 能识别II'地址而不能对节点上的用户进行有效的身
份认 证 的 缺陷,攻击者通过窃取口令从该节点上非法登录服务器。
(6)T CP序列号欺骗(TCPS equencen umbersp oofing)。
由于 T C P序 列 号 可 以预测,因此攻击者可以构造一个TCP包TT--列,这
种方 式 可 以用于扰乱正常的通信,也可以用于伪造、篡改通信的数据,甚至
可以 用 于 接管一个己经通过身份认证的会话连接,以对某个目标进行攻击。
(7) TCP序列号轰炸(TCP.SYN Flooding Attack),简称SYN攻击(SYN
A度 扣 ck )。
TC P是 一 个 面 向 连接 、可靠的传输层协议,通信双方必须通过一个三次
握手 方 式 建立一条连接,即SYN.S YN4,ACK和ACK三个协议数据包。连
按请 求 方 发出SYN数据包,接收方收到SYN后向请求方发出SYN十ACK
包, 同 时 等待对方的ACK,如果一时间没收到,接收方会在系统内存里开
辟未 完 成 的连接等待,如果有太多这样的等待,则会溢出。如果连接请求方
伪造 一 个 不存在的IP源地址发送SYN数搪包请求连接,那么接收方发送出
SY N十 A CK后其实是无法收到ACK的,当存在太多这样的米完成的连接
华南理工大学工学硕士学位论文
后, 会 导 致 接 收 无 法 建 立新的连接,只有等待超时,连接超时后机器才能恢
复接 受 新 的 连 接 。 如 果 攻击者连续地发送这种数据包,目标主机最终将资源
耗尽 , 导 致 死 机 。
(8) 易 欺 骗性(Easeo fsp oofing)。
只要 假 冒 可 信 的 主 机 I P 地 址 , 就可以使用TCP和UDP的服务。在
UN IX 环 境 , 主 机 非 法 的用户可以假冒可信主机的IP地址,用TCPlIP连到
Un ix 主 机上 , 使 用 N FS 对主机目录和文件进行访问。因为NFS只使用IP
地址 对 用 户 进 行 认 证 ,而 用同样的名字和IP地址将一台非法机器的用户设
置成 为 合 法 机 器 的 用户 是 非常容易的。同样,电子邮件更加容易被欺骗了。
网络 上 的 主 机 在 交 换 邮件 时,只是用由ASCII字符的命令行组成的简单协
议来 进 行 。 攻 击 者 只 要直 接TELNET到接收系统的SMTP端口,接收方会
相信 发 送 方 定 义 自 己 ,而 不加任何认证,这样,邮件的来源很容易被设为是
一个 假 冒 的 邮 件 地 址 。 因此,很容易伪造电子邮件。
由于 Int enret网是基于TCP/IP协议的,TCPlIP协议中存在的缺陷就导致了
Internet网的不安全性,因此,要采措施和技术夹保证网络的安个[1t
2.2防火墙技术
2.2.1防火墙的基本概念
防火 墙 是 指在两个网络之间执行的一个系统,它按照事先约定的协议,控制着网
络间相互访问的级别,即:它决定了哪些服务可以进入用户网络,哪些业务禁止进入
用户网络。
引入 防 火 墙是因为传统的子网系统会把自身暴露给NFS或NIS等先天不安全的服
务,并受到网络上其他地方的主系统的试探和攻击。在没有防火墙的环境中,网络安
全性完全依赖主系统安全性。在一定意义上,所有主系统必须通力协作来实现均匀一
致的高级安全性。子网越大,把所有主系统保持在相同安全性水平上的可管理能力就
越小。防火墙能提高主机整体的安全性。
防火 墙 可 以实施不同的服务访问政策,政策的实施有两个基本设计方针:
第二章相关技术的研究
I,没有被列为允许访ip7的服务都是被禁止的。
24没有被列为禁止访问的服务都是被允许的。
防火 墙 采 M其中的一种方针。从安全性角度考虑,第一种更可取一些,从灵活性
和使用性角度考虑,第二种更适合。
2.2,2防火墙中使用的技术
防火墙的几种关键技术如下四:
Ci )包 过 滤技术:
从 TC PI IP 协 议的 五 层 结 构 来 说,包过滋是处于第三层网络层。在第三
层, 对 经 过 的 I P数 据 包 进行检查,只允许符合规则的包通过。能检查网络
层的 IP 头和 传 输 层 的头,通常对护源地址、IP目标地址、协议类型、TCP
或 UD P 源 端 口 、T CP 或 UDP目标端Q, I CMP消息类型和TCP报头中的
AC K位 等 内 容 进 行 检查。
(2) 代 理 技术;
从 TC Pi IP 协 议的 五 层 结 构 来 说,应带代理是处于第五层应用层。代理
技术 征 对 每 个 特 定应 用都有一个程序,杰应用层实现防火墙技术。对外部网
来说 , 外 部 网 所 见 到的只是代理服务器,因为它收到的请求都是从代理服务
器来 的 , 对 内 部网 来 说,客户KA能直接访tr7 只是代理服务器,它的请求
是先 发 给 代 理 服务 器 的。
〔3 )S O CKS技术:
从 TC PI IP 协议 的 五 层 结 构 来说 ,SOCKS技术是处于第四层TCP层。
主要 Fh 一 个 运 行 于 防火墙系统上的代理服务器软件包和一个连接到各种网络
应用 程 序 的 库 文 件 包组成,SOCKS是一个电路层网关的标准,遵循SOCKS
协议 , 它 只 中 继基 子 TCP数据包。对应用层也不需要做任何改变,它需要
改变 客 户 端 的 程 序。 如果一个基于TCP的应用要通过SOCKS代理进行中
继, 必 须 首 先 将客 户 程序SOCKS化。这样的结构使得用户能根据自己的需
要定 制 代 理 软 件 ,从 而有利于增添新0应用。
(4 )状 态 检查技术:
华南灌工大学工学硕士学4ac论文
是包 过 萎惑 技 术 的 噜强 。它对CTRp五层结构m士 E履魏宽范毒豹息
:行 过 滤 。状态检测技术是防火墙近几年才鹰用的新技术,传统in包过滤防
火墉 只 是 通过检测nr包头的相关信息来决定数据流的通过述是拒绝,而状
+ 11检 测 技 术采用的是一种基于连接的状态*Vol机制,将属Tff- 连接的所有
包作 为 一 誉30体 -,数 雄流看待,fl.I成接状态表,通AR 表与状态表R共
爵凳 合 , 对表中f各个连接状态m素加以识翘,这里动态连按钦态表中的记
Aa r以 是 以前的通信倩息,也可以是其他相关应用程序的信患,因此,与传
统包 过 滤 防火墙的静AIRt滤规则表相比,它具有更好的灵活性l安全性。
(5)对 V 的支持:
VP N 技宋 秀 通 过 一 个}共拷络建 3,1 ---个 S 时 ' 安全zA接,是-条 =
过混 乱 的 公用网络的安全、稳定的f道aL rP 为信息传输提供加密措施,
f止 信 息 泄漏。
(b) NAT技术,
〕珍慈 内 部 珍 地 址考 舒外 豁护地址进行车季换,从龚实遥见内at址信PM?
藏, T大 大提高释络豹安全性。内部地址和外部@J址是两套护地址,Fq
地址 lo f以 不是真实的rp地址,可以解决lp地址资源不够的问耀.
(7)内容类型和策略感知能力:
按其 对 舆 雍 容M 感 知 能力可分为电路层感4,数据包感01命令类m感
知和 策 略 感知五种。可在骆火AJ上进童箩劣轰毒扫描私过1害策色偿息等。1吏防火
墙具 有 基 本的学习功能和知识挖掘功能。
(R)服务负载平衡、流悬分析和带宽管理:
了解 各 种 服 务所 古 通 信流量,或某一服务具体使用情况。
(势详细魏审计及完善豹-M表,
么么3防火墙分类
按P 火 坡 使瑞的技术来划分,肖分为包过滤1务火墙a电a层现A9火V,a 务母弋
瑾,:墙和 4t 检 查 P:壕 }包 澳乡}滤趁方火勇灌便络包1享滤技术,t娅 ipc lWneJX ,k-V:电
路层网关防火擒IX用了scan技术*如一些小的个人防火墙:服务代理龄火墙采用了
第二章相关技术的研究
代理技术,如Microsoft的ISA服务器。状态检查防火墙使用状态检查技术,如
Netfilter防火墙。
按照 一 般 产品分类,目前的防火墙产品可以分为软件防火墙、硬件防火墙和软硬
一体化防火墙:从适用对象来划分可分为企业级防火墙与个人防火墙。国内品牌以企
业级硬件防火墙居多。在产品等级上,包过滤型防火墙最为普遍。国外产品类别较
全,有以Cisco为典型的硬件型、以Checkpoint为典型的软件型,也有以阿尔卡特为代
表的软硬一体化型。同时,大多品牌还包括包过滤型、应用网关型和服务代理型产
2.3 Nefilter防火墙
Linux内核中自带的内核防火墙的发展经历了几个阶段如表2.1所示:
防火墙存在内核配置工具
ipfw 1.1.x ipfw
ipfw 2.0.x ipfwadm
ipchains 么2.x 婚比ains
Netfiker 2.3.15-2.4 iptables
表2-lLinux防火墙发展历程
Table2-lHistory of Linux firewall
2.3.1 Netrilter框架结构
Netfilter作为最新版本的Linux防火墙比以前任何一版
都要完善强大。Netfilter提供了一个抽象、通用化的框架,
实现就是包过滤子系统。Netfilter框架包含以下三部分:
Linux内核的防火墙子系统
该框架定义的一个子功能的
华南理工大学工学硕士学位论文
(1) 为 每 种网络协议QPv4.I M 等)定义一套钩子函数(IPv4定义了5个钩子函
数) &这 些 钩 子 函数 在 数据报流过协议栈的几个关键点被调用。在这几个点
中, 协 议 栈 将 把 数 据报 及 钩子函数标号作为参数调用netfilter框架。
(2) 内 核 的 任 何模块可以对每种协议的一个或多个钩子进行注册,实现挂接,这
样当 某 个 数 据 包 被 传 递给 netfilter框架时,内核能检测是否有任何模块对该
协议 和 钩 子 函 数 进 行 了 注册。若注册了,则调用该模块的注册时使用的回调
函数 , 这 样 这 些 模块 就有机会检查(可能还会修改)该数据包、丢弃该数据包
及指 示 n etfi lte r将 该 数据包传入用户空间的队列。
(3) 那 ye t:排队的数据包是被传递给用户空间的异步地进行处理。一个用户进程能
检查 数 据 包 , 修 改 数据包,甚至可以重新将该数据包通过离开内核的同一个
钩子 函 数 中 注 入 到 内核 中 。
所有 的 包 过滤/NAT等等都基于该框架。内核网络代码中不再有到处都是的、混乱
的修改数据包的代码了。当前netftlter框架在IPv4, Wv6及Decnet网络栈中被实现。
针对现有网络的实际应用,网络上基本都是使用的IPv4&因此,下文只对IPv4在
netfilter中的应用进行介绍。
IPv 4 数据 包在Netfilter的框架中的流程如图2-1所示,图中小圈所在位置即为
netfilter中的几个钩子函数。数据包从左边进来,首先就到了钩子函数1
NF_IP_PRE_ROUTING,然后经过路由选择,有三种可能,一种是要从另一个网络接
口出去的,另一种是到本机的,还有一种是没有路由而被丢弃的。如果是到本机的,
那么进到钩子函数2 NF_IP_LOCAL_IN.如果是要从另一个网络接口的,那么数据包
就到了钩子函数3 NFewIP F ORWARD,随后,数据包就到了钩子函数4
NF_IP-POSTesR OUTING,然后发送出去。对与本机产生的数据包,则会经过钩子函数
5 NF IP_LOCAL OUT然后再后再通过钩子函数5后再发送f本机t}33a
第二章相关技术的研究
三曰口巴巴巴巴曰巴曰巴巴翻口脚曰
..城乡.一下一气乡一一今
选介&八岁&
白书.11! !,J义勺﹃冷11.﹀
图2 .1 I P v4 包 经 过I 3etfilter框架
Figure争t Package Traver加g决t八Iter System
由于 内 核 模块可以在任何一个钩子上注册和侦听,因此模块的注册必须要定义其
注册的函数的优先级别。当任何一个钩子被核心网络代码调用时,各个模块在其上注
册的函数就会按优先级的先后被调用。这样就可以对包进行各种各样的处理了。模块
可以要求Netfilter作以下的处理:
》 NF -A CCEPT.继续传送
》 NF -D ROP:丢弃该包,不再继续传送
》 NF -S TOLEN:接管该包,不继续传送
》 NF Q UEUE:将包放到队列中,一般是转发到用户空间
》 N F_R EPEAT:再次调用钩子
那些 被 转 发到用户空间的包的排队的处理是由内核模块ipqueue,o来处理的,然
后用户进程就可以对数据报进行任何处理。处理结束以后,用户进程可以调用
nf_reinject()将该数据报重新注入N核或者设置一个对数据报的H标动作(如丢弃等)。
NetFilter的这个技术可以IM户进程进行复杂M数据报操作,从而M轻了内核空#i的复
2.3.2 LPTables二具
IPTables是一个建立在netfilter框架上的数据包选择系统。IP Tables分为两部分:
内核空间模块iptable,和用户空fad_I: 具iptablese
华南理工大学工学硕士学位论文
内核 空 间 模块是和主内核一起发布,在内核编译时和其它模块同样被编译。
ip_tables模块包括主ip_tables模块以及其它专门为NAT、日志和连接跟踪等功能的模
块。这些模块对数据包按照规则表或链(chain)进行处理。
ip_ tab les 模块可以注册新表,并要求数据包从表中“流进”。它根据不用的应用
包含三个表:filter表(用于包过滤)、nat表(用于网络地址变换)和mangle表(用
于一般的路由前包伪装)o ip_tables模块在ne目ter上注册的各个钩子及其上的汤数状
况如图2-2所示,在各个钩子上的函数的调用顺序是按照图中所示的次序来的。
--, -7r PRE-----
Co nn t ra c k
NA T (U st )
路由选择卜.一)FWD二,一
-----..&. POST--一)
NA T (S rO
&---I Conntrack
茉,·!!1,
本地 进 程
一一未~一~
OUT Conntrack
,‘!卜-···-‘,IV IN;·1 ·!‘丫
图2 -2 I P T ables注册的钩子函数
Figure2-2 Register Hook of IF Tables
数据 包 通 过川ter表时,其内容并不会被修改,只是会对其进行过滤,它只在
NP_IP-LOCAL_IN, NF-W_FORWARD和NF_IP_LOCAL_OUT这儿个钩子注册函
数。这意味着任何一个包只有在一个钩子处被过滤,这就比以前的防火墙版本ipchains
配置简单。
在 N AT 表中,对于非本地数据包,钩子NP-IF-PRE-ROUTING 和
NFPt POST_ROUTING分别被用来作为目的地址的转换和源地址的转换。
Ma ng le表
man gle 表 注册netfilter的全部五个钩子。经过该表可以对数据包中的信息进行修
改,比如TOS和TCPMSS信息。
第二章相关技术的研究
Co n ntr ac k
Co nnt rac k是连线跟踪(Connectiontr acking),它是NAT的基础,但它又作为一
个独立的模块存在,这就有利于扩展包过滤的功能使其能实现基于状态过滤。
用户 空 间 工具iptables是一个可执行的二进制程序。它只是在内存中提供一个规则
的集合,这些规则能够决定数据包在经过各个钩子时的命运。它是和内核发布分开
的。用iptables可以增加、删除和编译模块的规则。iptable:使用链(chain)来罗列在
netfilter上不同接入点所定义的规则。iptables的内建链有PREROUTING, INPUT.
OUTPUT, FORWARD和POSTROUTING,这几个内建链所在位置正好是netfilter中
NFes IPse PREes ROUTING 、NFes IPes LOCALes IN 、NF IPes LOCALes OUT
NFewIP ewFO RWARD和NF-IF-POST-ROUTING这五个钩子所在的位置n&,。数据包对链
中的规则可以是接收包或者丢弃包,当一条链中的规则全部都处理过后仍然没有匹配
的(被通过或丢弃),包会跟据链的策略来决定对包的处理。出于安全的原因,我们
通常会选用全部否定即不允许包通过作为链策略。
2.3.3 IPTables状态检查功能
工PT ab le s使用其连线跟踪技术来实现状态检查防火墙的。该技术检查每一个有效
连接的状态,并根据这些信息决定网络数据包是否能通过防火墙。它除了能够完成简
单包过滤防火墙的包过滤工作外,还将新连接状态保存在跟踪连接状态的表中,它在
协议栈低层截取数据包,然后将当前数据包及其状态(以源、目的IP地址,端口号和
协议类型为依据)与存在状态表中的信息进行比较,从而得到该数据包的控制信息,
达到保护网络安全的目的。通过溢出时间是决定连接在状态表中的生存时间,当对应
连接的溢出时间为零时,该连接会被从状态表中删除,这样的设计可以阻止一些DOS
攻击。利用状态检查功能可以提高防火墙系统的性能,因为每一个数据包首先不是和
规则库进行比较,而是和状态信息表进行比较的,只有SYN数据包才和规则库进行比
较,这种比较是在内核模式下进行的,所以速度很快。状态检查模块又截获和处理每
个试图通过防火墙的数据包保证了高度安全和数据完整。
本功 能 中 iptables用几个状态来制定规则决定对包的处理,有效的状态如下:
NEW , 表 示这个包表示用来建立一个新的连接的包,或者说,该包对应的连接在两
个方向上都没有进行过包传输:
华南工大学工学硕士学位论文
EST AB LIS HED,表示a对应的连接己经进行了双向的包传输,也就是说连接已经建
REL AT ED, 表示包发起了一个新的连接,但是这个连接和一个现有的连接有关,例
如:ETP的数据传输连接和控制连接之间就是RELATED关系。
NVA IL D& 表示包对&-的连接是未知N或者说是跟任何o连接都没关。
如果 要 在 两个网络接口之间转发一个数据包,这个数据包将以下的顺序接收规则
PRE RQ UT ING链
如果 必 要 对这个数据包进行目的网络地址转换MNAT)和mangl。处理。异时,
iptables的状态检测机制将重组分组,并且以以下某种方式跟踪其状态:
数据 包 是 否匹配状态表中的一个己经实现(ESTABLISHED)的连接。
数据 包 是 否是和状态表中某个UDP/TCP连接相关(RELATED)的一个ICMP数据包。
这个 数 据 包是否要发起一个新(NEW)的连接。
如果 数 据 和任何连接无关,就被认为是无效(INVALID)的。
FOR WA RD 链
把数 据 包 的状态和过滤表中的规财进行匹配,如巢数据包与所有的规则都羌法匹
配,就使用默认的策略进行处理。
POS TR OU TING链
如果 有 必 要,就对数据包进行源19络地址转换(SNAT)3 -
2.3.4 Ifables字符串匹配功能
Net ti ter 一个很重要的改进是引入了模块化豹架构方式*可以通过编写一今可加载
的核心模块来创建核心级代码,通过用户级代码实现控制过滤器的行为,从而扩展
IPTables的功能。在这些模块中其中有字符串模式匹配的功能,该功能是IPTables技
术的一个非常有意义的突破,它耀越了传统的包过滤防火墙的标准TCP/IP标志监视功
能。传统的防火墙可以分为包过滤和应用代理两种类型,应用代理防火墙可以分别出
应用层pt协议比如telnet, FIlTP或者sum,能够监视这些协议的有效载荷和检查命
令,但是应用代理防火墙带来了巨大的性能缺陷:当通过网络协议栈处理上层即应用
层的数据包。C]时我们需要为每一个要监控的协议编笃新的代理程序。包过滤防火墙
第二章相关技术的研究
通常只监视源地址和目的地址,源端口和目的端口,TCP/IP标志等,而完全忽略了高
层协议的有效载荷。由于上述原因,包过滤防火墙通常比应用代理防火墙的速度快。
应用代理提供了更加有力度的安全控制而包过滤可以用于更高的带宽线路满足更高的
基于 以 上 的情况,IPTables的新增功能提供了跨越两种防火墙类型的优势,避免了
各自的缺陷,它能够使得iptables工作在网络层(OSI模型的第三层)不必工作在高层
协议,但是却可以监视高层协议的内容,而不必分析应用层的通信结构。iptables的字
符串模式匹配功能能够被用来保护那些开放了易受攻击的而一般的包过滤又无法保护
的网络服务(如YAW 服务,mail服务,DNS服务,FrP服务等)。另外,iptables的
字符串模式匹配功能还能够帮助实现强制安全策略,即通过关键字来阻止访问非法的
在这 个 基 础上,我们可以实现传统包过滤防火墙所无法实现在功能,比如在
WWW服务中限制对一些URL的访问,在FTP服务中,限制对某些彻站点的访问以
及限制对具体目录的访问。对二1服务,可以对邮件发信人、收信人地址、关键字等
进行限制等等。
另外 , 我 们还可以对一些有一定特征代码请求的病毒和攻击进行匹配过滤。从而
在一定程序上阻止这些病毒和攻击。比如它能够用来阻止那些讨厌的IIS蠕虫造成得
Unix web服务器记录文件记录大量的对cmd.exe的请求,用字符匹配功能匹配包含
&cmd.ext”的包并丢弃,从而阻止这种蠕虫的攻击。还可以针对漏洞所使用的缓冲区
溢出字符串作为捕获攻击的方式[1s1
2.3.5 Netrilter防火墙对某些常见网络攻击的对策
1. IP欺骗:IP欺骗的攻击是攻击者伪造其他IP地址来对进行攻击。尤其是伪造
可信任的内部IP地址。在防火墙中设置以下规则来予以防范。
链端口入接口源地址动作
IN PUT 所有外网网卡}内部网地址禁止
本规 则 禁 止了所有从外网网卡进来的,又声称自己的地址是内部网的地址的包
这就能防止IP欺骗口
华南理工大学工学硕士学位论文
2. D oS (拒绝服务)攻击:T3oS的攻击方式有很多种,最基本的DoS攻击就是利
用合理的服务请求来占用过多的服务资源,从而使合法用户无法得到服务阴。对常见
的一些DOS攻击Netfilter都有相应的解决的对策。如
Sm urf . S murf利用了ICMP协议。Smurf是用一个偷来的帐号安装到一个计算机
上的,然后用一个伪造的源地址连续ping一个或多个计算机网络,这就导致所有计算
机所响应的那个计算机并不是实际发送这个信息包的那个计算机。这个伪造的源地
址,实际上就是攻击的目标,它将被极大数量的响应信息量所淹没。对付这种攻击可
以利用Nedilter的状态检查技术,可以只允许从内网发出去的ICMP包的回应包进来,
禁止从外网进来的ICMP,这些同时也可以阻止网络上常见的扫描攻击Ito)
SY N.I +lo culittg:该攻击用一堆的TCPS YN数据包来淹没受害者,每个SYN数据
包迫使目标服务器产生一个SM ACK应答包,然后等待ACT{的应答。这很快会导致
过量的SM ACK堆积在缓冲区,使缓冲区塞满而不能接收新的连接。Netfilter的连接
速率限制可以对付这种攻击川ptahle$可以定义SYN包每秒钟通过的个数,同时还可以
记录下来,并限制记录的频率,这样A时还可以防止太多的信息把LOG塞满。
3 源 路 由选择欺骗:攻击者利用IP数据包的一个选项可以直接指明到达节点这
个选项进行非法连接。在Nefilter可以禁止使用该选项。
2.4嵌入式系统
每个 人 都 生活在一个满是嵌入式系统的世界里,在手表、电话、手机等电器里都
有嵌入式系统。嵌入式系统小到一个芯片,大到一个标准的PC板,种类繁多,分布广
2.4.1嵌入式系统的几个发展阶段
嵌入 式 系 统的出现至今已经有3,I多年M历史,近几年来,计算机、通fa-.z 费电
子的一体化趋势H益5AR ,嵌入式技术己成分一个研究热点。纵观EW入式技术的发展
过程,大致经历四个阶段。1141
第二章相关技术的研究
第一 阶 段 是以单芯片为核心的可编程控制器形式的系统,具有与监测、伺服、指
示设 备 相 配 合 的 功 能 。 这 类 系 统 大部分应用于一些专业性强的工业控制
系统 中 , 一 般 没 有 操 作 系 统 的 支 持,通过汇编语言编程对系统进行直接
第二 阶 段 是以嵌入式CPU为基础、以简单操作系统为核心的嵌入式系统。
第三 阶 段 是以嵌入式操作系统为标志的嵌入式系统。
第四 阶 段 是以Intenret为标志的嵌入式系统。
嵌入 式 系 统技术日益完善,嵌入式操作系统己经从简单走向成熟,它与网络、
Internet结合日益密切,因而,嵌入式系统应用将日益广泛。
2.4.2嵌入式产品的分类
嵌入式产品可分为以下几类:
》 信 息 家电
》 移 动 计算设备
》 网 络 设备
》 工 控 、仿真等
2.4.3 Linux应用于嵌入式系统中的优势
目前 主 要 的嵌入式操作系统有Vxworks,p SOS,N ucleus,Q NX,P almOS和
LYNX等。由于价格低廉的关系,近年来,在嵌入式系统中PC硬件正逐步取代高端系
统硬件,这无疑给了WindowsCE很大的机会.但从技术的角度上来说,WindowsCE并
不能算是优秀的EOS (Embedded Operating System)。首先,EOS追求高效,而
WindowsCE占用过多的RAM;其次;EOS必须具有个性化,而WindowsCE是非开放
的,第三方无法实现产品的定制;最后,WindowsCE的版权费用也是厂家不得不考虑
的因素。WindowsCE的这些问题,恰恰都是Linux的优势。Linux作为嵌入式系统有如
下优势101.
(1 )L in ux的内核小却功能强大、而且效率高、稳定、名仟各:
华南理工大学工学硕士学位论文
(2) Linux的源代码是完全开放的,注释清晰并且文档齐全,非常有利于个性化
定制 ; 而 且有丰富的软件资源。
Lin ux 有 非 常 多的 文 档支持,从为初学者准备的各种教程到非常详细的
联机 帮 助 文档。Linux是互联网充分发展的产物,许多关于Linux的文档都
可以 在 I nternet上找到和下载。LinuxD ocumentP r可ect是为Linux提供系统
化的 文 档 支持的项目,在世界上许多程序员和用户的帮助下,它己经收集了
非常 详 细 的系统文档和使用文档。而且,各种关于Linux的书籍和杂志正如
雨后 春 笋 般地出现,大量的英文资料也正在翻译成中文,方便中文使用者。
在 Li nux 平 台 上 的 应用软件也不断得到扩充。许多著名的商业软件都有
了L in ux 下的版本:Applix公司和Star公司提供了多种字处理、电子表格、
图形 处 理 的应用软件;CorelW ordPerfect8 ,A dabasD 和Oracle8 数据库、
Net sca pe N avigator6 .0网络浏览器、Apache1 .3.12网络服务器、Adobe
Ac rob at R eader4 .0等等Linux下的应用程序都己经纷纷推出。
(3) Linux是完全免费的OS,使用成本低。
几 乎 所 有 的 商 业 用操作系统如Microsoft公司的Windows98/NT
Ser ver /N TW orkstation系列,都需要为每一个拷贝支付相当数量的费用。在
其下 的 应 用软件每一个都需要大量的支出来获得。商用操作系统下建立一个
开发 工 具 链,除了要为操作系统本身付费之外,还要为组成工具链的应用软
件工 具 包 支付大量的费用。但是Linux是免费软件,只要遵守GPL (GNU
Gen er alP ublicL icense)的规定,就可以免费获得拷贝。Linux下有同样遵循
GP L规 定 的C,C ++,J ava等等一系列的软件工具开发包,从功能角度上看
并不 亚 于 商用开发包,同时可以极大的降低开发成本。这点优势是其他商用
操作 系 统 无法比拟的。
(4) Linux具有跨平台的优势。
支持 包 括 X 86 , A lp ha,M otorola,S parc,M IPS,P PC,N EC和^RM
等众 多 芯 片很多CPU,包括家电业的芯片,都开始做Linux的平台移植工
(5) Linux有强大的网络功能
内核 的 结 构 在 网 络 方面是非常完整的,提供了包括十兆、百兆、千兆的
以太 网 络 ,以及无线网络、Tokenring、光纤甚至卫星的支持。Linux操作系
第二章相关技术的研究
统最 突 出 的是网络部分,基本上所有的网络协议和网络接日都可以在Linux
上找 到 , 系统的网络吞吐性能非常好。
(6) Linux支持大量的周边设备,驱动丰富。而且还有大量的开发工具,有完善
的图 形 和 文件管理机制。
(7) Linux的内核和用户界面是完全独立的。各部分可定制性都很强,能适合多
种 需 求 。
显然,这些优势使得Linux非常适合作为嵌入式操作系统。
2A.4嵌入式Linux的发展和应用前景
目前 , 嵌 入式Linux系统开发正在蓬勃兴起,并且己经开辟了很大的市场,除了
一些传统的Linux公司,像ReclHat, VA Linux等正在从事嵌入式Linux的研究之外,
一批新公司(如Lineo, TimeSys等)和一些传统的大公司(如IBM , SGI ,
Motorola, Intel等)以及一些开发专有嵌入式操作系统的公司(如Lynx)也正在进行
嵌入式Linux的研究和开发。但就目前的技术面言,嵌入式Linux的研究成果与市场的
真正需求还有一段差距。因此,要开发出真正成熟的嵌入式Linux,还需要努力。
根据 一 家 专门进行嵌入式Linux系统信息发布的网站
的调查,有52%的用户决定在未来24个月内使用Linux作为嵌入式系统的开发原型,
而只有21%的人仍然使用专有操作系统,19%的人仍然使用Windows系列操作系统做
嵌入式系统开发。这充分说明了利用以nux开发嵌入式系统的生命力。由于Linux嵌入
式系统的强大的生命力和利用价值,越来越多的公司和大学都不同程度地表现出对它
的研究兴趣。
2.5本章小结
本章 对 网 络安全概念、安全特征、安全的关键技术作了简单扼要的介绍,比较详
细罗列和描述了现有网络所用的TCP/IP协议本身先天性的安全缺陷,从而指出由于
TCP/IP的这种缺陷导致了网络不安全性,我们应该采取措施来解决这个问题。
华南理工大学工学硕士学位论文
本章 对 防 火墙的概念、技术和分类作了介绍,尤其是着重描述了防火墙中使用中
的主要技术。
本章 详 细 叙述了Netfllter框架及其包处理系统IP&Cables的结构和原理,并对其状
态检查技术进行了深入的研究,提出了利用状态检查技术对防火墙在性能和安全性上
的优势。最后还介绍了另一个功能模块一字符匹配功能的优点以及其在对提高Netfilter
防火墙的安全性方面的优势,并对其的一些很好的用途进行了描述。在此基础上本文
对网络上常见的几种攻击(IF欺骗,Dos攻击等)给出了相应的解决方法。
本章 对 嵌 入式系统的发展历程、产品分类进行了简单的介绍,然后再着重分析了
Linux在嵌入式系统中应用的优势,最后阐述了Linux嵌入式系统在国内外的发展和预
示了其将会得到更广泛的前景。
第三章系统整体设计
第三章系统整体设计
3.1系统设计目标
本防 火 墙 设计主要设计目标是开发一个基于新一代Linux内核防火墙Netfilter的适
用于中小型网络的防火墙产品。具体的设计目标为:
I 在 产 品化方面,为了实现防火墙系统的高效、安全和零维护目标,要构建适用
于防火墙这个应用的嵌入式Linux平台。
2. 设 计 一套缺省的规则的集合,这个集合可以透应大多数防火墙用户的一般的对
本企业网络安全的基本的需要。
3 实 现 用管理界面来实现对防火墙系统的网络和用户管理的配置的。
4. 实 现 用管理界面来实现对防火墙系统的规则的配置。
5. 实 现 用管理界面来实现对防火墙日志的查看、查询和处理。
3.2设计原则
系统 有 以 下设计原则:
t‘系统的平台要求是能达到本防火墙各功能的最小集合。
作为 防 火 墙这种安全产品,其自身的系统的安全性是设计中最重要的也是最为优
先考虑的因素。系统中包括的多余,不必要的部分每多一分,实际上就会给系统留下
多一分的安全隐患。因此,在Linux平台的构建的时候,要去除系统应用中所有不必
要的部分。
2 嵌入式Linux平台的安全性,稳定性和零维护目标。
用 FL AS H这种电子存储器来代替硬盘,可以提高产品的可靠性,同时采用RAM
盘等技术以减少对产品的维护从而尽量达到零维护的目标。
华南理工大学工学硕士学位论文
3.基于web的用户管理配置界bf &应用程序小巧并避免其运行对肪火墙系统的性能的
基于 w eb 的用户管理配置界'(f的好处是:客户端不需要另装客户端程序,只需要
一般的web浏览器(如IE等),方便管理。
4 独立的用户管理配置端口。
将用 户 管 理配置端口和其它端口分开,同时在规则配置的时候加以限制,这样能
增强系统整体的安全性。只有通过指定的端口;才能进入防火墙的配置管理界面,而
且进入配置瞥理界面还需要身份的认证,这样双重的安全措施以提高防火墙自身的安
3.3系统整体设计
系统 的 整 体结构如图3.1所示:
本防 火 主蠢 产品共设计了西块网卡,其中一块是接到内部M LAN上的,另一块是接
到外部网Internet上的,对于那些需要在网络内部提供对外的W W W. DAIS或EMAIL
服务的应用,为此专门开辟DMZ区,接到专用于DMZ区的网卡上。DMZ区为非军事
区,其安全性介于Internet和内网之间。开辟了DM7,区后,可以将内部网络更彻底地
与外部网络分开,外nm络不需要防问内部m络,通过规刻配置,可以彻底拒绝外部
网防问内部网,增加系统对内部网络的安全保护的能力。还有一块网卡专P7用于配置
管理的,传统土通常我们会通过接内部网的网卡接入进行配置,之所以把配置管理和
内部网使用的网卡分开,一来配置管理和内部网的流撇上不会造成相互影响,另外一
方面,可以针对配置管理的应用来时配置管理通道的网卡对其作特殊的权限限制,以
增强防火墙整体的安全性。
系统 的 嵌 入式Line二平台部分包括Linux内核、根文件系统。内核中有珍tables包
选择系统,其对数据包进行包过滤和转换等动作。用户应用程序部分包括Iptable:用户
空间工具和用户管理界面。
第三章系统整体设计
下Netfilter框架
ip tables包选择系统模块
iptables命令行规则管理工具
友好用户管理界面
配置管理通道
图3,1防火墙系统内部结构
Figure3.1 Structure of firewall
3.4系统管理界面介绍
系统 管 理 界面用来接收用户输入的信息,并对其进行处理并显示,进行系统配置
和规则配置并处理日志。管理界面包括了四个功能模块,网络参数的配置模块、用户
管理和认证模块、日志处理模块和规则显示和配置模块。在服务器端采用CGF来进行
控制。考虑到系统的高效和体积小的要求,采用了C语言来实现。
网络 参 数 配置模块主要完成对系统四个网卡的地址的配置。
用户 管 理 和认证管理模块主要完成增加、删除用户和修改密码,用户权限的管理
这几个功能。其中用户权艰有三级,从低到高有浏览规则和日志、修改规则和用户管
理。其中高一级的用户权限包含了低一级的用户权限。
日志 处 理 模块包括对日志的浏览、查询、导出和删除的功能。
华南理工大学工学硕士学位论文
规则 显 示 和配置包括系统的基本规则(输入、输出和转发规则三种规则)显示和配置
和特殊功能(包括NAT, HTP, FTP, SMTP、地址映射)进行配置。
3.5本章小结
本章 介 绍 了系统设计的目标和原则,给出了在设计目标和原则下系统的整体结
构。并介绍了系统的各个组成部份,还概要介绍了系统管理界面的设计。各部分具体
设计和实现将在下面的章节中详细介绍。
第四章嵌入式Linux平台的构建
第四章嵌入式Linux平台的构建
Lin ux 本 身是一个多用户的分时系统,要将它用于嵌入式系统,必须解决好实时化
和压缩系统规模两大问题。但是针对防火墙产品开发中所应用到的嵌入式Linux可以
不用做实时化这个步骤,因此下文介绍的是压缩系统规模的方法及技术荃础。
压缩 系 统 规模需做以下几个步骤:
(1) 系 统的引导。
(2) 跟据 实际应用而裁剪的内核。
(3) 小 的定制的文件系统。
4.1系统的引导
首先 看 一 下DOS的启动过程,在说明这个过程前,必须先说明一般IBM PC开机
时的动作(此处的开机是指11打开PC的电源)o
打开 电 源 时,PC一般是由内存中的地址FFFF:0000开始执行,这个地址一定在
ROM BIOS中,ROM BIOS一般是在FEOOOh到FFFFFh中。而此处的内容则是一个
jump指令,跳转到另一个位于ROM BIOS中的位置,开始执行一系列的动作。包括了
检查RAM,k eyboard,显示器,软硬磁盘等等,这些动作是由系统测试代码(sy stem
testco de)来执行的,随着制作BIOS厂商的不同而会有些许差异,但都是大同小异。
紧接 着 系 统测试代码之后,控制权会转移给ROM中的启动程序(ROM bootstrap
routine)。这个程序会将磁盘上的第零轨第零扇区读入到内存中的绝对位置
即07COh处,这是IBM系统PC的特性。这个扇区就是引导扇区(boot sector),引导
扇区的大小为512byte,它小而且简单,唯一的功能是从硬盘装载其它更高级的程序装
载器到内存中来,由这个装载器来将操作系统导入内存。图4-1为引导扇区的内容,其
中jmp xx用来将控制权转移给引导DOS核心的程序。
从软 盘 上 启动是很简单的,因为它只有一个引导扇区,而从硬盘启动时就相对复
杂一些,因为硬盘有可能有好几个分区,BIOS只知道读硬盘的第一个扇区,这个扇区
也可以被称为主引导扇区(MBR),它记录着其它硬盘分区的必要信息。在主引导扇
华南理工大学工学硕士学位论文
区的尾部是分区表如图4-2所示,每个分区表有lbbytes大小,包含了分区是否活动、
分区的开始和结尾、分区的类型号(如83为Linux,82为Linux Swap, 06为DOS, Oc
为Win95等等)。在图4-1和图4-2中的程序指令部分通常被称为引导器(boot
loader)。不管是用什么操作系统,引导器会引导操作系统或找到活动分区,并且导入
实际的引导分区。
用来装载DOS内
核的程序指令
图4 -1 引 导 扇 区的内容
Figure4-1 Content of boot sector
装载和运行活
动分区的指令
图4-2主引导扇区的尾部
Figure 4-2 back of MBR
第四章嵌入式Linux平台的构建
4.1.1 Linux引导过程
常用 的 L inux启动器有几下几种:
》 Bo o tS ectorf ort heL inuxk ernel
》 G N U GRUB
》 SY S L INUX
》 L OA D LIN
其中 SY SLINUX和LOADLIN 作为从Windows上引导Linuxr引导器。引导器一
般有三部分的程序组成:
(1) 引导 扇 区 ,大小为512byte,在启动时由BIOS直接导入。
(2) 由 引 导扇 区导入的第二阶段引导程序。
(3 ) 引 导 器 的安装程序。用来将引导器和第二阶段引导程序安装到启动盘。
引导 扇 区 会完成以下三项的其中一项:
(1) 导 入 另一 个引导扇区。一般用在主引导扇区,它可以找到活动分区的引导
(2 ) 导 入 第 二阶段引导器。
〔3) 直 接 引导 内核。
Lin ux 内 核中的引导代码可以直接将内核导入。
第二 阶 段 引导器是真正的引导程序,它包括用户界面和内核导入器两部分。它的
大小从6.5kb M LO)到大于lOOkb (GRUB),它包含以下功能:
(1 ) 用 户 界 面。
用来 提 供 选 择 要 启 动 的操 作系统,经操作系统提供额外的参数。
(2 ) 操 作 系 统导入器。
引导 器 安 装程序只在安装引导器运行。它完成的功能如下:
(1) 安 装 引 导扇区。
伦 ) 将 第二 阶 段引导程序的地址写入引导扇区。
(3) 第 二阶段引导程序需知道的其它相关的信息。
由于 L IL {〕引导器用途最广而且小巧,因此,下文介绍用LILO来作为系统的引导
器的方法。
华南理工大学工学硕士学位论文
LILO作为系统的引导器,在引导的过程中完成以下几项功能:
(1) 将Linux内核导入内存。
》 将 内核 中的引导代码(不运行)和setup代码放到低端内存的顶部(通常
为 90 00 :00 00 ) ;
》 如 果不 是bzlmage类型的核心,核心会被放到低端地址;
》 如 果 是bzlmage类型的核心,核心会被放到高端地址4x1000000
(2 ) 将命令行传给内核。命令行可以从配置文件传入也可以由用户交互输入。
(3)将初始化RAM盘导入内存,并传递给内核。初始化RAM盘被放到高端内
存的 顶 部 , 在 内核的上面。
t4) 启动内核。引导器必须在内核的setup部分设置相关的参数,并跳转到那
里。 然 后 内 核 取得了控制权,引导器部分的工作到此结束。
内核取得控制权后接下去的启动过程如图4-3所示。
setup程序保存相关的参数和命令行
setup程序检查可用内存
执行 硬 件 初始化
解压缩内核的其余部分
Head.S及。iam.c初始化内核
图4-3 Linux内核启动过程
Pigure4-3L inuxk ernelbo otpr ocess
第四章嵌入式Linux平台的构建
4.1.2初始RAM盘
在嵌 入 式 的Linux环境中,一般不会有磁盘,要使累统摆脱对磁盘的依赖性,有
如下两种办法,
(1) 内 核加 载 RAM方式:把内核和狠文件的压缩文件存放在lazh或EPROM
上, 系 统 启 动 时读 取 压 缩 文件在内存里解服,然后开始执行。
C2) 闪存 + 内 存方式,在闪存上做文件系统。用闪存的驱动程序作为从闪存到文
件系 统 的 界 面 。
用第 二 种 方法实现起来比较直观简单,但其占用闪存的容量会大一些。第一种相
对复杂一些,但是由于它的文件系统是建立在内存上的,因此提供了更快的文件访f-I
的速率,从而提高了整个系统的性能。
用第 一 种 方法时就会用到Linux的初始RAM盘。初始RAM盘使启动器可以在启
动时将RAM盘导入,这个RAM盘可以被安装成根文件系统,程序可以运行起来。
RAM盘并不是Linux所特有的,但在Linux下使用起来却很灵活,尤其是对嵌入式
Linux来说是一个很好的选择。RAM盘存在于缓存中,它只占用当前在使用的内存空
间。它的容量由内核参数来指定。RAM盘可以做为一般的块设备来使用,而且可以格
式化成多种文件系统还可以象其它块存贮设备一样被女装。
用第 一 种 方法实现系统启动,它的启动过程如图4-4所示。
华南理工大学工学硕士学位论文
引导器将内核和初始P-AXI盘装入A
内核启动解压
将初始RAM盘拷贝到tdevtratnq,并!
释放所用 内“ }
安装ddevlramo作为初始报文件系统
图4 -4 使 用初始RAM盘时Linux启动过程
p'iguer4-4L inuxk ernelbo otpr ocessu singin itR AM disk
4.2内核的定制
内核 , 是 一个操作系统的核心。它负责管理系统的进程、内存、设备驱劫程序、
文件和网络系统,决定着系统的性能和稳定性。内核实际上是系统设计人员编写的控
制系统的各个组件,在不同程序之间分配系统资源,同时协调系统与硬件和外设之间
数据传递的系统核心程序代码。Linux核心,通常在根目录下,一卒叫vrnlinuz的文
件。用这个文件可以控制整合PC的运行,包括周边设备和软硬磁盘机、CD一ROM.
声卡等。核心就是操作系统本身,系统的高效工作需要很有效率和稳定的核心。因
此,核心是整个系统维持下去的关键。与Windows系统的内核不同,以nux系统的内
核是可配置的,f9户可以根据自已的实V需要,在对系统内核进行定制。例如,用户
可以针对自己机器CPU的具体型号对系统内核进行优化。
第四章嵌入式Linux平台的构建
尽管 不 同 厂商在推出其各自的Linux产品之前,都已经针对某些具体的硬件设备
或网络协议对系统内核进行了设置,但是用户还是可以针对自己所实际使用的机器对
Linux系统内核进行进一步的修改。从而将Linux系统的性能提升到新的高度。
Lin ux 内 核版本发布的官方网站是&http-./Iwww.komel.org/&,国内各大饰上一般都
可以找到某些版本的内核。新版本的内核的发布有两种形式,一种是完整的内核版
本,另外一种是patch文件,即补丁。完整的内核版本比较大,完整内核版本一般
是.tar.gz (.tgz)文件或者是‘bz2文件,二者分别是使用gzip或者bzip2进行压缩的文
件,使用时需要解压缩。patch文件则比较小,一般只有几十K到几百K,极少的会超
过ilvl。但是patch文件是针对于特定的版本的,需要找到自己对应的版本才能使用。
本文 以 实 验时最新稳定版本linux-2.4.19.tar.gz为例。
把新 的 内 核源代码拷贝到/usr/sre/下,用以下命令解开,
#ta r- x z vfli nux-2.4.19.tar.gz
在源 代 码 的目录下JDocumentation/Changes的文件中,有编译时相关的工具所需要
的版本信息,要按照版本要求来准备各个工具,否则在编译内核时会发生意想不到的
编译 内 核 有如下几个步骤:
(1) # ma kem rporper:该命令确保源代码目录下没有不正确的.。文件以及文件的
互相 依 赖 。 如 果 使 用刚下载的完整的源程序包进行编译,则本步可以省略。
而如 果 你 多 次 使 用 了这些源程序编译内核,那么最好要先运行一下这个命令
(2 )运 行 以下几个命令中的一个来对内核进行配置:
#m ake c o nf ig (基 于 文 本 的最 为 传统的配置界面,不推荐使用)
#m ake m enu con fig ( 基于 文 本选单的配置界面,字符终端下推荐使用,
必须 安 装 n cur se s-d e、和tk4-&v库)
#m ake x c on fig (基 于 图 形 窗 口 模式的配置界面,Xwindoi、下推荐使用)
#m ake o ldc on fig 〔如 果 只 想 在 原来内核配置的基础上修改一些小地方,
会省 去 不 少 麻 烦 )
如果 不 能 使 用 Xw ind ow ,& 那 么就 使用makem enuconfig好了。界面虽然
比上 面 一 个 差 点, 总 比makeco n吨的要好多了。
(3) # ma ked ep(读取配置过程生成的配置文件,来创建对应于配置的依赖关系
树, 从 而 决 定 哪 些 需要编译而那些不需要。)
华南理工大学工学硕士学位论文
(4) #make clean〔完成删除前面步骤留下的文件,以避免出现一些错误。)
(5) #make bzItnage(实现完全编译内核,生成的内核是使用gzip压缩的,并且
保存在/usr/src/linux/arcb/i386/boot下,名为bzlmage.)
还有其它几个命令也可用来编译内核,但它们各自有自己的使用方法:
》#make zImage:用来制作基础的和压缩的核心,并将它留在目录名
1us r/sr c/I inti x/a rch 1i3 86 lbo ot 下, 名 为 z Ima ge*用
#make zliloi
#make zdiskc
它编 译 比 用bzhnage生成的内核要大:
拷贝zImage到根目录,并运行LILQ:
写zImage到软盘在ldev/fdU. Idev/fd0必须是高密度
的, 低 密 度 的 72 0k 磁 盘 将 不 能启 动 核 心 ;
》 # 和 ma ke zI m ag e一样。
有个 z在 名 字 前 lk 的核 心 是 压 缩过的,当它执行的时候会自动将自己解
(6) # ma kemodules(生成相应的模块)
(7) # ma kemodulesi nstal)(把模块拷贝到需要的目录中)
配置 工 作 是整个内核定制中最关键的和重要的一步。通常要跟据实际的应用需
要,而配置内核,总体来说,内核配置分为以下几个部分:
I. C o de m aturityle velop tions(代码成熟等级)
2. L o ada blem odulesu pport(对模块的支持)
3. P ro ces sorty pean dfe atures(处理器类型和特色)
4. G eneralse tup(普通的属性设置)
5. M em oryT echnologyD evice(MTD)(内存设备)
6. Par all elpo rtsu pport(并日的支持)
7. P lu g a ndP layc onfiguration(即插即用支持)
8. B l ock d evices(块设备支持)
9. M ulti-devicesu pport (RAIDa ndL VM的支持)
10. N etw ork吨options(网络选项)
11. T elephonyS upport(电话支持)
12. A TA RDE/MFM/RLLs upport(对IDE(ATAIMFM/RLL的支持)
13. S CS Isu pport (SCSI设备支持)
第巡章嵌入式Linux平台的构建
14_ I-0 device support(贾20接C适配器支持)
15. Network device support‘润络设备支持)
16. Amateur Radio support(业余无线广播)
17. IrDA (infrared? support(红外支持)
1S. ISDN subsystem (ISDN支持)
19-O ldM RG】 dr ivers( riotSC SI, iDE) (非SCSM E口的光舞)
20. Character devices(字符谧备)
21. Multimedia devices(多媒体设备)
22. File systems(文件系统)
23. Sound sound(声卡驭动)
24. USB support (USE支持)
25. B luet oothsu pport(蓝牙的支持)
25. K er nelha cking
下文 针 对 l1火WIkOu对各选瑛豹夔置M 释。对子蓝牙、USB* 声卡、多As体
设备、非SCSUIDE口的光驱、玲DN支持、红外支持、业余无线广播、120接口适配
器、电话、SCSI设备、即插即用、并口这些功能在本应用中都是不需要的,因此,在
编译时去除这些功能。
第一 ,项 要 使慈一个稳定豹内核9P此要选择ICI.
第二 项 支 持模块化。在编i的中使用模块化lq核,模块化内核是非常基本0
核, 它 仅 仅 包 含 那些 提供主要功能(如内存管理和模块支持)所必需的代
码。 内 核 的 剩 余部 分 是作为模块来编译的,模块是指可以:达行时装载,
用来 处 理 内 核 和 硬件 之间通信的代码。在需要使用一个设备时,用户可以
指示 内 核 把 那 些 代码 装载到内存中二一旦装载了代4f*A 以访RP
相应 的 硬 件 了 。 因此 使用模块化内核可N减少内存开销,增加了灵活性,
模块 化 使 核 心变 的 更 简捷。因而设置为:
C() NF IG _M O D UL ES =y
CO NF IG _1M GD =Y
禁三 项 选 择使用的CPU的类型y 0 'J以根据实环 m使m的CPU来设警,
第四 项 中 需要的一些选项:
CO NF IG _N ET =网 络支持,肯定是需要的。
华南理工大学工学硕士学位论文
CO NF ICG P CI=使用了PCI的卡,需要。
CO NF IG _P CI_ G0ANY=y;设置Linux探测I 设备的方式。选择
..A ny , L inu x 将 直接 探 测 PC I设 备 , 如 果
失败 , 再 使 用 B IO S来 探 测 P CI 设 备 。
CO NF IG P C I_ BIOS=y:支持Linux探测PCI设备通过BIOS.
CO NF IG _P CI_ DIRECT=y;支持Li, 直接探测PCI设备。
CO NF IG _SY S CTL=y:支持动态改变内核的参数而不必重新开机。
CO NF IG_ KC OR E_ELF=y:此项使/lproc/kcore保存磁心映象,gdb编译时
CO NF IG _B D4 FMTR OUT=y:此项使内核支持a.out的执行文件。ao ut的
执行 文 件 是 比 较 古 老 的 可 执 行 码 , 用 在 比较
早期 的 UN IX 系 统 上 。L in ux 最 初 也 是使 用
这种 码 来 执 行 程 序 , 一 直 到 EL F 格 式 的 可执
行码 出 来 后 , 有 愈 来 俞多 的 程 序 码 随 着 E LF
格式 的 优 点 而 变 成 了 EL F 的可 执 码 。 将 来 势
必完 全 取 代 a .
若举报审核通过,可奖励20下载分
被举报人:
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:
您可能还需要
网络技术下载排行

我要回帖

更多关于 嵌入式系统开发 的文章

 

随机推荐