| 网站首页 | 新闻中心 | 系统安全 | 网络安全 | 安全技术 | 下载中心 | 安全365社区 |
安全365
收藏本站
设为首页
会员登录:
站内搜索: 新闻中心 系统安全 网络安全 安全技术 下载中心
| 系统安全首页 | 漏洞分析 | 入侵检测 | 升级补丁 | 安全配置 |
在SELinux中基于角色的访问控制
在SELinux中基于角色的访问控制
作者:Serge E.… 文章来源:51CTO.com 点击数: 更新时间:2008-3-6 1:39:52

使用Fedora Core 8

默认情况下,Fedora 8是将SELinux起用了的,它集成了最新的SELinux技术,可载入的策略模块,她使得自定义,semanage和RBAC管理更容易。(semanage用于配置SELinux策略必须的元素,它不需要改变或重新从策略代码编译)

让我们从非常无趣的几乎是默认的安装开始,首先从http://fedoraproject.org/get-fedora下载Fedora-8-i386-DVD.iso,为了方便你可以将起重新命名为f8.img,在qemu下你可以将其作为一个cdrom镜像来安装Fedora 8:

dd if=/dev/zero of=f8.img bs=1G seek=10 count=1
qemu -hda f8.img -cdrom f8.iso -boot d -m 1024 -vnc 3
然后,启动VNCviewer:
vncviewer :3

在VNC窗口里,选择默认的安装目录,但有一个例外:当询问安装什么包时,反选“办公和生产力”,选择“软件开发”。

当安装完毕后,重新启动后,创建一个非root用户,最后,当镜像准备好了后,用这个用户登陆。

打开一个浏览器窗口然后下载代码包,地址是http://www.ibm.com/developerworks/views/download.jsp?contentid=288774&filename=code_for_f8.tgz&method=http&locale=worldwide,将其保存到你的home目录~myuser/cash_register_f8.tgz。

从顶层左方的菜单“应用程序”开始,选择系统工具终端,然后输入su - ,回车再输入root用户的密码打开一个root shell,现在你已经为安装安全帐簿会计系统作好准备了。
(注意:如果系统太慢以至于不能忍受,你可以退出X-window,将系统运行在级别3下,可以敲入/sbin/init 3来实现,你也可以用/sbin/init 5来重新启动X-window重新进入级别5,在级别3下,用root登陆)

首先,强制一个后台进程yum退出,因为你可以手工运行yum:
killall -9 yum-updatesd
紧接着安装SELinux策略模块开发工具包:
yum install selinux-policy-devel.noarch
现在拷贝样例策略模块目录,拷贝现金帐簿策略文件到样例目录并编译它们:

cd /usr/share/selinux/
cp -r devel cash_register
cd cash_register
rm example.*
tar zxf ~myuser/cash_register_f8.tgz
mv register.py /bin
make

策略被编译成一个在文件cash_register.pp中的二进制策略模块,要载入它:

semodule -i cash_register.pp
下一步,创建用户mary和bob:
adduser bob
adduser mary
passwd bob
passwd mary

用户创建好了,设置RBAC以便他们登陆到合适的角色:

semanage user -a -R cashier_r -P cashier bob_u
semanage login -a -s bob_u bob

semanage user -a -R mgr_r -P mgr mary_u
semanage login -a -s mary_u mary

semanage用户管理命令创建了一个新的SELinux用户,SELinux用户不是Linux用户名,但是SELinux上下文的第一部分(id –Z返回的内容)是附加到一个进程和文件的,如果你在终端里敲入id –Z,将会看到system_u或unconfined_u,你的Linux用户名和SELinux用户名是可以相同的,他们不是单独联系的,但是,登陆进程为你的安全上下文使用Linux用户名来选择一个SELinux用户,与前面章节讨论的一样,SELinux用户是受与其有关联的角色限制的,同样,SELinux角色也受与其关联的SELinux域(类型)限制。

你正在使用semanage创建两个SELinux用户,mary_u和bob_u,同时,你也正在指定与其关联的角色,用户bob_u或许仅仅使用cashier_r角色,mary_u仅仅使用mgr_r角色,你还必须给用户home目录类型指定一个前缀。对mary而言,指定mgr,它将为她的home目录扩展为mgr_home_dir_t,并为那里面的文件扩大为mgr_home_t。

Semanage登陆命令把Linux用户名捆绑到SELinux用户上,我们指出mary以mary_u登陆,bob以bob_u登陆。

我们还需要为现金帐簿数据创建预备目录结构:

mkdir /data
mkdir /data/final
mkdir /data/cashier_r
mkdir /data/mgr_r
chmod 777 /data/cashier_r
chmod 777 /data/mgr_r
chmod 777 /data/final

最后,重新标记所有创建并安装的文件,同时包括为新用户创建的目录:
fixfiles -f relabel /data /bin/register.py /home

注意此时我们在策略里并没有定义SELinux用户,相反地,semanage命令创建了用户并将其与合适的角色进行了关联。

如果你只希望bob以cashier_r角色,mary以mgr_r角色登陆的话,所有事情都很好,但是或许你需要用户charlie既能以cashier_r登陆,也能以mgr_r登陆,这就需要一点改动了,首先创建用户:

adduser charlie
passwd charlie
semanage user -a -R mgr_r -R cashier_r -P mgr charlie_u
semanage login -a -s charlie_u charlie

然后告诉PAM模块charlie想以什么角色登陆,首先打开/etc/pam.d/login并替换下面这一行:

session required pam_selinux.so open
为:
session required pam_selinux.so open select_context

这将告诉pam_selinux.so模块用户将能选择一个默认的上下文登陆,紧接着告诉系统基于角色charlie_r的用户的默认类型,再次登陆时,Charlie将允许除默认角色(mgr_r,我们在semanage命令中列出来了)之外再指定一个角色,当你创建用户时可以使用-R标记指定任何一个角色,SELinux将使用需要的角色与其关联的默然类型,因此你必须为cashier_r指定一个默认的类型:
echo "cashier_r:cashier_t" >> \
/etc/selinux/targeted/contexts/default_type

现在Charlie登陆到终端(按Ctrl-Alt-F2转到一个终端下或按前面叙述的进入级别3),他将被问及要以什么角色登陆,默认的将是mgr_r,但是他可以用cashier_r登陆,如果他这样做了,他将能作为一个出纳存储他自己的数据,但是由于我们已经定义了策略,他将不能读取他home目录下的任何文件。

注意register.py不能防止Charlie为他自己的现今帐簿存储数据,不管是作为经理还是出纳登陆,他都可以提交数据,当然,这样的一个改变将非常容易实施。

上一页  [1] [2] [3] 

文章录入:郝丽    责任编辑:郝丽 
  • 上一篇文章:

  • 下一篇文章: 没有了
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
     
     
     
    没有相关文章
    站长邮箱:webmaster@anquan365.com
    联系电话:86-10-67634029 点击这里给我发消息

    Copyright © 2006-2008 www.anquan365.com 北京华安普特网络科技有限公司 版权所有