在传统的 UNIX 系统中,DAC 保护措施包括文件访问模式和访问控制列表;而 MAC 则提供进程控制和防火墙等。
TrustedBSD计划把核心的FreeBSD发布版与符合信息技术安全评估标准(ITSEC)的可信赖的安全组件结合在了一起。这些组件提供了确保这个操作系统安全运行的大量的不同的模块。
这些工具包括集中的政策管理、组件和执行(包括内核模块和功能调用)的深入审计、对系统的不同区域实行强制性访问控制和来自文件系统和内核资源的访问控制名单等。不过,这些工具还有其它的功能。比如更精细的访问控制、更强大的报告和监视功能以及为运行各种服务提供的更安全的环境。
Unix(包括Linux)从业者都知道,任意一个普通用户在登陆系统之后,都可以查看系统中已经登陆有哪些用户,以及他们正在进行什么操作。此外,当前所有用户的进程也可以很轻松的被查看。这些信息被合法使用当然没什么问题,但是一旦被黑客获取,那将留下相当大的安全隐患,他们可以马上找到提升权限的方法。
但如果你的系统中部署了Mandatory Access Control (MAC) Framework——TrustedBSD的强制访问控制体系之后,情况就不一样了。
TrustedBSD MAC 框架为大多数的访问控制模块提供基本设施,允许它们以内核模块的形式灵活地扩展系统中实施的安全策略。 如果系统中同时加载了多个策略,MAC 框架将负责将各个策略的授权结果以一种(某种程度上)有意义的方式组合,形成***的决策。
下面我们在FreeBSD7.0上做一个演示,将MAC强制访问控制引入系统之前,应该确保我们的系统内核中有相应的支持。如果是默认安装的系统,需要在内核配置文件中添加一行:
options MAC
重新编译内核之后就OK了。
执行man 4 mac 命令,可以看到各种MAC模块。如图1所示。
图1 |
这里既可以选择某方面做针对控制的模块,又可以选择整体控制的一些模块,很方便。
在这个测试的系统中,任何用户都可以运行ps -aux命令,查看系统中所有的活动进程,或者执行sockstat -4、netstat -an 来查看系统中所有的网络连接以及开放的网络套接字。如图2、3所示。
图2 |
图3 |
#p#
下面我们加载MAC_SEEOTHERUIDS 模块。执行:kldload mac_seeotheruids,如图4所示。
图4 |
注意看下面这个图,加载TrustedBSD的MAC模块之后,普通用户ww已经不能看到其他人的工作进程了,也不能看到其他人的网络连接状态。如图5,6所示。
图5 |
图6 |
这样系统的安全性就大大提高了。如果我们希望系统启动时自动加载这一模块,就向/boot/loader.conf 文件中添加:mac_seeotheruids_load="YES"
如图7所示。
图7 |
如果我们想卸载这个模块,只需要敲入命令:kldunload mac_seeotheruids即可。
大家用普通用户(非root账户)在系统中执行一下netstat,ps之类的命令,很容易就能做出比较。在加载MAC模块的状态下,以上命令只会显示当前用户自己的进程及套接字。
但是不会显示其他用户当前正在进行的操作。
【编辑推荐】