【linux系统加固之】系统软件架构

来源:互联网 发布:读写分离 mysql 性能 编辑:程序博客网 时间:2024/05/22 23:43

1.1设计目的

为什么需要多进程呢,设计的初衷是某些CA厂商进行安全认证时,对系统安全性也提出了很严格的要求,因为CA运行于系统之内,所以系统安全也是保证CA资产安全的措施之一。一般CA厂商要求的安全检查主要包括:提供系统软件架构设计文档,系统配置(主要是kernel和rootfs的配置),运行环境和资源限制等等,其中nagra在NASC 3.0要求文档中架构设计明确规定了需要Isolated compartments,随着系统安全性的不断重视,不排除其他的CA厂商后期也会提出这种多进行的要求。

 

2.1多进程的优缺点

2.1.1优点

a.更安全

         将系统划分为多个进程,由于每个进程都有自己独立的地址空间,并且每个进程只做一件简单的事,只保留做这件事需要的能力,去掉一切多余的权利,这样当其中一个进程被黑客攻破,黑客能够利用的仅仅是被攻破进程的能力和资源,由于这个能力已经被减到最小,所以黑客能做的事情是有限的,因为他并不具备所有能力,造成的伤害也是有限的,系统和其他进程仍然可以继续提供服务,这样就能大大减小对系统造成的伤害。

 

2.1.2缺点

a.设计和编译复杂

         每个进程需要单独进行功能划分和设计,需要进行单独编译,代码共享问题,进程间通信问题,大数据流动效率问题,和进程间的同步问题等等都是需要考虑的。

b.加重系统负担

         将系统分多个进程来运行,会额外的加重系统负担,其中比较明显的是cpu和内存,多个进程频繁的进行上下文切换会大大的消耗CPU时间,多个进程也会额外的消耗一些内存,另外进程间大数据流动问题,都会增加额外的CPU时间和内存消耗。

 

3.1设计原则

 

3.1.1总则

         从多进程的优点来看,当然是划分越多进程越好,但从缺点来看,会带来设计上的复杂性和加重系统的负担,所以必须要采取一种折衷的方案,既不能太多,又能安全有效的达到隔离的目的。

 

3.1.2具体原则

a.架构向前兼容

         在当前单进程基础上改为多进程支持,必须要保持设计的简洁性,避免现在架构改动过大,并且单进程和多进程需要同时支持,通过环境变量进行控制是编译单进程还是多进程的。

b.CA资产必须单独划为一个进程

         CA资产是保护的重点,必须要单独划分为一个进程,除了主动的对外开放的接口外,外部进程不访问CA进程的一切,尤其是一些开放的外部接口,如USB,串口,JTAG,网口,HDMI(带上网功能支持的)等等,常常会造成CA资产的泄露,必须进行严格限制。

 

c.需要特殊能力或需要访问特殊资源的必须进行隔离

         例如U盘的挂载,网络的配置,都是需要系统管理员能力,所以这些操作必须进行隔离。

         再比如需要访问/proc, /sys文件系统的操作也必须进行隔离,因为这些文件系统可以配置或泄露内核中的一些关键信息。

d.网络必须进行隔离

         因为网络过于开放,过于灵活,完全是一个不可控的接口,随着互联网的普及,网络病毒可谓横行,按照conax的说法,在STB上装杀毒软件显然是一种不现实的做法,因为现在病毒出现和变异速度太快,病毒库需要不断的更新,这对嵌入式设备来说是不可接受的,所以更现实的做法是对网络进行隔离,保证不会威胁到系统的其他部分。

 

4.1进程的划分

         按照设计原则,可划分出如下进程:

名称

功能描述

能力描述

备注

DVB主进程

传统的DVB业务,包括live play,Record&playback,节目搜索和管理,EPG等

 

 

CA进程

加解扰,DRM, PVR控制和CA的其他功能

 

 

Utils进程

包括对存储设备的管理和网络管理

 

 

Net进程

提供各种网络服务

 

 

 

5.1IPC的设计

需要考虑的问题:

性能要求:选用合适的IPC方法,保证吞吐量,同步问题,稳定性问题:

安全要求: 一定的通信策略,保证通信授权连接,overflow的考虑,对于rpc,所能调用的函数集的限制;

这里,采用Unix socket,静态策略,即没有专门的策略文件,策略在设计阶段固定,系统启动后建立连接,建立的过程需要进行授权检查,连接成功后保持长连接,不同的客户端RPC函数集固定;


6.1实现方案

0 0
原创粉丝点击