Unix多用户操作系统下的安全措施

社区服务
高级搜索
猴岛论坛电脑百科Unix多用户操作系统下的安全措施
发帖 回复
正序阅读 最近浏览的帖子最近浏览的版块
1个回复

[资源分享]Unix多用户操作系统下的安全措施

楼层直达
不懂也不知道

ZxID:10586231

等级: 禁止发言

举报 只看楼主 使用道具 楼主   发表于: 2010-07-16 0
Unix多用户操作系统下的安全措施
Unix系统是一个比较完善的多用户操作系统。多个用户可以在同一个Unix系统上进行各自的操作,而不会发生相互的干扰。不过为了提高Unix系统多用户操作的安全性,Unix工程师仍然要采取一些必要的措施。

  一、只允许特定的用户才能够关机或者重新启动操作系统。

  当有多个用户在Unix系统上进行操作的时候,如果其中某个用户心血来潮把Unix操作系统关机或者重新启动的话,那么对于其他用户来说就会造成一个致命的打击。为此通常情况下,Unix系统工程师最好能够限制只有特定的用户才能够重新启动Unix操作系统或者进行关机操作。当某个用户因为特定的原因需要重新启动Unix操作系统的话,必须汇报给系统工程师或者其他特定的用户,让它来查看其他用户的现有活动并判断能否重新启动操作系统。


  通常情下,关闭Unix系统或者重新启动这是超级用户的特权。这跟Windows操作系统有比较大的差异。虽然说系统工程师通常不会把root超级用户的密码告知给其他用户,但是往往系统工程师还是希望有一个独立的帐号来管理Unix操作系统的开关机以及重新启动。特别是把Unix操作系统当作服务器的话,更有必要设置一个独立的帐号来进行管理。在Unix系统中为了设置一个账户具有开关机的权利,没有在Windows操作系统中那么简单,只需要把用户加入管理组即可。在Unix要创建一个账户其具有重新启动或者关机权利,操作上会稍微麻烦一点。一般来说,通过两个步骤基本上可以搞定。

  第一步:先创建一个普通用户,并赋予其路径、命令等相关的参数。如笔者就先通过useradd命令创建一个普通用户。具体命令如下:

  Useradd –u 120 –g group –s /bin/sh –d /home/shut –m shut(或者reboot) 。

这个命令主要用来创建一个偶同的用户。对于这个命令的参数笔者想不用再多过多的说明了。这里需要强调的一点是,在使用Useradd命令增加用户的时候,不能够直接把用户的UID设置为0(超级用户的Uid)。因为Unix系统不允许重复使用超级用户的UID。

  第二步:赋予其重新启动或者关机的权限。由于关机或者重新启动是超级用户的特权,为此这个用户建立后还没有关机的权限。此时需要系统工程师更改相关的文件,让这个用户具有这方面的权限。如系统工程师可以修改/etc/passwd文件,找到刚才建立的用户,并把这个用户的UID设置为0即可。此时因为用户的UID为0,故其就有超级用户的特权。另外需要注意的是,有时候系统工程师出于安全的考虑,可能希望这个用户只具有关机或者重新启动操作系统的权利,而不希望其做其他的事情。因为此时这个账户具有了系统root特权用户的权限,故其对于Unix操作系统来说具有完全控制的权限。这对于Unix系统来说可能会存在一定的安全隐患。所以说系统工程师的这个考虑也是必要的。如果要让系统工程师之能够执行shutdown或者reboot命令、而不能够进行其他任何维护动作的话,则可以修改用户的.profile文件,将shutdown等命令插入到这个用户的profile文件中。另外一些有些专家说最好在这个命令前面再加上exec指令,对于这个做法笔者不知可否。笔者个人觉得有点画蛇添足的味道。各位读者可以自己去试试看,有否这个必要。

二、对shell的使用进行限制。

  Shell是用户跟Unix系统内核进行沟通的一个工具。默认情况下,不同的用户其采用的shell功能是相同的。但是当Unix系统有多个用户在使用的话,就需要对某些用户的shell 功能进行限制。如需要限制用户使用cd命令,即不允许用户随意更改当前目录。用户所创建的所有文件与目录都必须在其自己的主目录下面,即home/用户名目录下。

  在Unix 系统下可以实现类似的控制。当为某个用户采用了限制版本的shell之后,则这个用户只能够执行位于某些特定目录下面的程序。通常情况下这个目录是由一个完全不同的Path变量所决定的,而且他的值用户不能够改变,一般情况下就把这个目录设置为当前目录。

  为了限制某个用户的活动或者可以采用的命令,系统工程师需要创建一个用户帐号,并只允许他使用某个特殊的受到一定限制的shell。通常情况下,现在的shell 版本都基本上能够支持这个功能。一般来说,如果系统工程师指定用户使用受限制的shell,那么这个用户就可能受到如下的限制。

  一是这个用户不能够使用CD命令进行目录的切换。也就是说,此时用户只能够在系统设置的当前目录中进行操作。这对于普通用户来说,是一个非常有用的限制措施。由于他们不能够在目录之间进行切换操作,那么也就不会对其他用户的资料造成无意或者有意的损坏,有利于其他用户资料的安全性。

  二是对命令的使用有所限制。当对用户采用了限制版本的shell之后,这个用户就不能够使用含有“/”的路径。也就是说这个用户不能够用相对路径或者绝对路径执行一个命令。另外,也不能够更改Path变量。Path变量为shell 提供了定位可执行文件的搜索路径。当用户向系统发出一个指令时,shell就会按这个Path变量所设置的搜索路径的顺序查找这个命令文件,如果找到了这个命令文件就执行这个文件;找不到的话就提示错误信息。这也就是说这个用户不能够访问保存在其他目录里的命令。为此设置让用户采用限制版本的shell,可以限制用户的某些行为。如系统工程师可以把这个用户可以用的命令预先在Path变量中设置;然后把不允许的命令路径从path变量中删除。如此的话就可以限制用户“可以做什么;不可以做什么”。对用户可以使用的命令进行限制,可以保障其他用户的安全。

  三是不能够使用一些特定的操作符号。如在Unix系统中,可以利用ls –i > ls_list命令。这个命令的意思就是查询当前目录下的所有文件与目录相关信息,并把查询结果写入到一个文件中。但是如果未某个用户指定了受限版本的shell之后,则这个用户就不能够使用包括>在内的一些特殊操作符。如不能够使用>或者>>操作符号创建文件或者把某些内容追加到现有文件中去。

从以上的分析中可以看出,采用受限版本的用户只能够执行特定目录下的命令。如果系统工程师需要让某个受限用户来执行其他目录下的命令,也是可以的。此时就需要用到笔者以前文章中谈到过的硬连接的功能。如现在系统工程师允许使用/bin/ifconfig这个命令。由于这个目录通常不再用户的当前目录下,而且用户又能够使用带/符号的路径名称,那该如何处理呢?其实很简单,系统工程师指需要利用in名称在用户的当前目录下创建这个命令的连接即可。此时系统就会根据这个连接去打开其原命令文件。



  若系统工程师现在所采用的shell版本不支持受限shell该如何处理呢?其实这也很好解决。如果用户现在所使用的系统中没有一个受限的shell,此时系统工程师可以结合标准的shell环境与-r可选项一起使用,来达到类似的目的。如笔者可以利用sh –r等类似的命令让shell强制以受限的模式运行。不过这里需要注意的是,通常情况下系统工程师不能够把这些命令加入到/etc/passwd文件中。故系统工程必须先运行普通的shell环境,然后再在启动文件中利用exec命令来启动这些命令,并且必须把Path变量设置为一个目录。

  可见此时设置起来比较麻烦。为此笔者的意见是,如果系统工程师真的要让用户采用受限的shell,那笔者还是建议采用本身就有类似的功能的shell版本为好。如果用户当前使用的shell版本没有一个受限的shell,那么笔者建议把这个shell进行升级。因为如果按照如上的配置与shell版本升级的工作量来说,没有多大的差别。故如果条件允许的情况下,还是直接给用户采用支持受限shell的软件为好,以减少后续维护与部署的工作量。

本帖de评分: 1 条评分 DB +8
DB+8

我很赞同

゛蝣蕩啲龍っ

ZxID:7865773

等级: 元老
‘燕鸥’是种水鸟,听说,它们会从几千里外,飞回自己的家,而且,是‘情有独钟’,终身不换伴侣 ..

举报 只看该作者 沙发   发表于: 2010-07-16 0
感谢分享
« 返回列表
发帖 回复