Linux中国 Linux中国门户站!
设为主页 设为主页
收藏本站 收藏本站
 
当前位置 :首页 ->Linux技术 ->系统管理 ->正文

Grsecurity ACL系统(一)

来源:Linux-cn.com 作者:Webmaster 时间:2007-05-05 点击: [收藏] [投稿]

3.模式及其含义

3.1.主题进程的模式

  在grsecurity ACL系统中,主题有如下模式:

h 这个进程是隐藏的,只能够被具有v模式的进程看到;
v 具有这个模式的进程拥有察看隐藏进程的能力;
p 进程是受保护的,这种模式的进程只能被具有k模式的进程杀死;
k 具有这个模式的进程可以杀死处于保护模式(p)的进程;
l 为这个进程打开学习模式;
o 撤销ACL继承

3.2.对象的模式

  grsecurity访问控制规则中的对象可以有如下模式:

r 这个对象可以打开阅读;
w 这个对象可以打开写或者添加;
o 这个对象可以打开添加;
h 这个对象是隐藏的;
i 这个模式只用于二进制可执行文件。当这个对象被执行时,它继承所在主体进程的访问控制列表;

4.继承

  在grsecurity ACL系统中,存在一个叫做继承(inheritance)的特征,它和C++种的继承极为类似。继承包括两种方式,第一种和配置文件有关,而第二种和内河对ACL的处理方式有关。除了主题包含o模式的规则以外,所有的ACL规则都可以使用继承。在ACL配置文件中有一些简单的规则来控制继承:

  • 对于当前规则的某个对象,如果父ACL规则中存在对这个对象的访问控制,grsecurity就会比较两个规则所作的限制,尽量使当前规则允许的权限不大于父规则允许的权限,除非当前规则的被定义为o模式。
  • 如果当前ACL规则中没有对某个对象的限制,grsecurity会自动使用父规则对这个对象的限制。
  • 4.1.继承示例

      为了便于理解,我们举几个有关继承的例子:

    / {
    	/ rwx
    	/etc rx
    	/usr/bin rx
    	/tmp rw
    }
    
    /usr/bin/mailman {
    	/tmp rwxo
    }
    

      这两个涉及到继承的ACL规则展开后,将是如下形式:

    / {
    	/ rwx
    	/etc rx
    	/usr/bin rx
    	/tmp rw
    }
    
    /usr/bin/mailman {
    	/ rwx
    	/etc rx
    	/usr/bin rx
    	/tmp rwx
    }
    

      在/usr/bin/mailman和/两个规则都包含对/tmp对象的访问控制。而在/usr/bin/mailman规则中,/tmp对象具有o模式,因此/规则中对/tmp对象所作的限制将被忽略。

      grsecurity系统采用的继承算法不仅仅只计算对父规则的继承(例如:/bin和/bin/su),它会按照整个路径计算当前规则对所有祖先规则的继承。例如,在使用一个以/usr/X11R6/bin/XFree86为主题的访问控制规则时,grsecurity会自动地计算/usr/X11R6/bin、/usr/X11R6、/usr、/等规则设置的访问控制。

      针对很多可执行文件的访问控制都有一些共性的设置,为了减少重复设置,grsecurity才引入继承的特征。在某些特殊的规则中,你可以使用o主题模式,在整个规则的范围内,禁止继承父规则的访问控制;也可以使用o对象模式,仅仅取消对某个对象访问控制的继承。

      内核对于继承的处理略有不同,在这个例子中,当执行具有i模式的对象时,内核会包含进去一个主题ACL的拷贝。这样,你就可以赋予特定进程派生出的进程以特殊的权限。例如:

    / {
    	/ rwx
    	/tmp rw
    }
    
    /usr/bin/mozilla {
    	/usr/bin/mozilla-bin rxi
    	/tmp rwxo
    }
    

      在这个例子中,假设/usr/bin/mozilla是一个脚本(事实的确如此),通过它执行真正的mozilla程序/usr/bin/mozilla-bin。当/usr/bin/mozilla-bin被/usr/bin/mozilla执行时,它会继承/usr/bin/mozilla的ACL,从而获得了在/tmp目录的权限。而如果用户直接执行/usr/bin/mozilla-bin,由于访问限制,进行不能在/tmp执行。

      我们看到,i模式只能用于ACL对象,因为它涉及到对主题进程ACL的继承。由于对象可以使文件或者能力,/usr/bin/mozilla的ACL可以是这样的:

    /usr/bin/mozilla {
    	/usr/bin/mozilla-bin rxi
    	/tmp rwxo
    	+CAP_SYS_RESOURCE i
    }
    

      有关能力继承的操作也有些不同。因为在一个文件对象上的继承,造成被执行的文件继承主题ACL的所有对象,包括主题ACL的能力。而如果为能力对象设置了i模式,会造成所有可执行文件继承主题的能力。因此,如果/usr/bin/mozilla脚本会执行/bin/hostname和/usr/bin/mozilla-bin两个程序,而你只要/usr/bin/bin/mozilla-bin继承CAP_SYS_RESOURCE能力,你应该使用如下设置:

    /usr/bin/mozilla {
    	/usr/bin/mozilla-bin rxi
    	/tmp rwxo
    	+CAP_SYS_RESOURCE
    }
    

      最后,还要注意一个问题,只有应用程序是通过fork()系统调用接着执行exec系统调用,或者只执行exec系统调用时,i模式才能达到期望的效果。如果应用程序是通过system()系统调用执行程序,你将不会得到自己想要得结果,因为应用程序首先要执行一个shell,由shell在执行你需要执行的程序。

     如果您对本文有任何疑问或者建议,请到讨论区发表您的意见: >> 论坛入口 <<



    上一篇:用MRTG检测Linux网络性能   下一篇:ip命令手册(四)

    文章评论】 【收藏本文】 【推荐好友】 【打印本文】 【我要投稿】 【论坛讨论
    更多相关文章
    Power by linux-cn.com 粤ICP备05006655号