对外提供服务的进程是黑客闯入服务器的门户,这些进程的缺陷一旦被利用,就会丧失整个系统的控制权。而服务器进程的缺陷层出不穷,各种服务器“被黑”的事件也就随处可见。
强制运行控制机制正是针对上述问题设计的。它用一种形式化的语言描述了进程的行为范围,一旦进程的行为超出了这个范围,系统将自动停止该进程继续运行,并记录该事件的所有安全相关信息,为后期查找责任人提供帮助。
强制运行控制机制运行于系统核心,能够充分保证其强制性。它控制的对象不是特定的进程,从而能够保证对于受控对象家族的子进程、孤儿进程、SESSION LEADER进程,强制运行控制机制都同样有效。
实践证明,强制运行控制机制对于抵御网络攻击,防止用“代码注入”的方法获得系统的最高控制权具有很好的效果。
目前的所有类UNIX系统都有一个超级用户:root,它一般担任管理员的角色,具有超越任何系统限制的特权,Windows NT/2000等操作系统中的Administrator用户也具有相同的作用。
最主要的是,服务进程为完成其特定功能,在类UNIX系统中就必须以root身份运行。有时有效的用户名虽然不是root,真正的用户ID仍然是 root,这同样可被攻击者利用。此类以某种root身份运行的进程可以不受系统中任何安全机制的限制,一旦被利用,就会控制整个系统,完全破坏系统安全。
同样的原理,许多在本地执行的程序,为完成特定功能必须以SUID ROOT方式运行,这些程序也同样是系统安全的潜在威胁。
强制能力控制的目的就是要消除系统中不受限制的进程,只赋予每个特权进程能够完成其功能的最小能力,实现“最小特权”原则。
利用强制能力控制机制,对应用程序加以适当改造,使凝思安全加固服务器不包含SUID ROOT程序,所有对外提供服务的进程以普通用户身份运行,消除了系统安全隐患,大大提高了系统的安全性。
自主访问控制是一种最为普遍的访问控制手段,用户可以按自己的意愿对系统的参数做适当修改以决定哪些用户可以访问他们的文件,亦即一个用户可以有选择地与其它用户共享他的文件。用户有自主的决定权。
自主访问控制一个安全的操作系统需要具备访问控制机制。它基于对主体及主体所属的主体组的识别,来限制对客体的访问,还要校验主体对客体的访问请求是否符合存取控制规定来决定对客体访问的执行与否。这里所谓的自主访问控制是指主体可以自主地(也可能是单位方式)将访问权,或访问权的某个子集授予其它主体。
强制访问控制是指用户与文件都有一个固定的安全属性。系统用该安全属性来决定一个用户是否可以访问某个文件。安全属性是强制性的规定,它是由安全管理员,或者 是操作系统根据限定的规则确定的,用户或户的程序不能加以修改。如果系统认为具有某一个安全属性的用户不适于访问某个文件,那么任何人(包括文件的拥有者)都无法使该用户具有访问该文件的权力。
强制访问控制施加给用户自己客体的严格的限制,也使用户受到自己的限制。但是,系统为了防范特洛伊木马,必须要这么做。即便是不存在特洛伊木马,强制访问控制也有用,它可以防止在用户无意或不负责任操作时,泄露机密信息。
传统类UNIX系统中的文件、目录等都依靠文件主、所在组和其它方式来设置其读、写和执行(rwx)许可权限,这种方式会造成文件本身权限的不必要扩散,导致危害事件发生。
访问控制机制能够提供细粒度的文件权限控制,使用访问控制列表(ACL)实现以特定用户或特定组为单位的访问许可权限的分配,从而防止文件本身权限的不必要扩散,保护了信息数据的机密性。