提高开放式 UNIX 平台安全性的新方法

ZDNet软件频道 时间:2009-11-04 作者: | CCW 我要评论()
本文关键词:系统安全 Unix Windows
本文要看一下使用一种新方法提高开放式 UNIX 安全性的小外壳(shell)应用程序。本文提供了对代码逐步的分析。作者的专业领域是 Web 编程及尖端网络安全性开发。

  本文要看一下使用一种新方法提高开放式 Unix 安全性的小外壳(shell)应用程序。本文提供了对代码逐步的分析。作者的专业领域是 Web 编程及尖端网络安全性开发。

  破坏系统并获得超级用户权限的恶意用户对所有的系统管理员都将是一场恶梦。为保护开放式 Unix 平台,下面的小外壳应用程序将为开放式 Unix 安全壁垒添砖加瓦。

  开放式 Unix 操作系统 FreeBSD 和 Linux Mandrake 都有完整的外壳安全系统。FreeBSD 程序的位置在 /etc/security。Linux 的 Mandrake 安全包可以在 /usr/share/msec 下找到。这些标准工具功能相近,但是,它们把对文件系统完整性的控制限于有 SUID 和 SGID 标志的文件。可 Mandrake 计算 MD5 文件校验和的方式不同于 FreeBSD。

  通常正在运行的程序对系统资源的访问权限同该程序用户的权限对应。设置 SGID 和 SUID 标志会更改这一点,以便根据文件所有者的权限来指定访问权限。因此,不管程序用户是谁,root 用户的正运行着的可执行程序全都可以无任何限制的访问系统资源。在这种情况下,设置 SUID 和 SGID 标志导致了文件所有者的权限和组所有者的权限分别被继承。

  然后,单为运行时及单为程序对特权进行更改(通常是扩展)。由应用程序启动的其它进程也继承该应用程序的权限。因此,应该谨慎的设置 SUID 和 SGID 标志,而且只给那些不能启动任意任务的程序设置。

  MD5

  MD5 是数字签名应用程序的消息摘要算法,作者 Ronald L. Rivest 在 1991 年开发的。请参阅本文后面参考资料以得到算法的源代码及更多信息。

  解决方案:使用 MD5 校验和使用 SGID/SUID 标志跟踪对新系统文件所做的修改是一项极其困难的任务。但是,依靠足够的经验和谨慎,可以修改系统服务与设置而不更改标准文件属性(通常管理员会注意文件创建及修改的日期)。下面的程序基于对为防止修改而被伪装的 MD5 校验和进行的完整性测试,跟踪对指定目录中全部文件所做的修改。

  FreeBSD 的 files-diffs 配置与源代码

  标准服务在以下目录中:/etc *、/bin、/sbin、/modules、/usr/bin、/usr/sbin、/usr/lib *、/usr/libexec *、/usr/X11R6/bin、/usr/X11R6/lib *、/usr/local/bin、/usr/local/etc * 及 /usr/local/sbin。这样的层次结构对标准服务的完整性进行跟踪,但是无法跟踪那些也会受到损害的附加服务(Perl、Web、News 等)。用 * 标记的目录含有附加层次,且也应对它们进行跟踪。让 root 用户收到关于修改过的文件的每日的电子邮件报告是个好主意。设置我们的外壳程序:

  以 root 用户身份登录

  [cd /etc/periodic/daily]

  把代码存到 files-diffs 文件

  [chmod 755 files-diffs]

  [chown root:wheel files-diffs]

  清单 1. FreeBSD 的 files-diffs

  #!/bin/bash

  #

  #Checking files for modification

  #

  #Written by Igor B. Maximov, <="mailto:uniug@cris.net">uniug@cris.net

  #

  #Dirs with sub-folders checking

  DeepDirs="/boot /etc /lib /sbin /usr/bin /usr/lib /usr/libexec"

  #Dirs without sub-folders checking

  Dirs="/bin /usr/local/bin /usr/local/sbin /usr/sbin"

  TMP=/var/run/files-diff.$$

  LOG=/var/log/security

  (

  for j in $DeepDirs

  do

  cd $j

  for i in `/usr/bin/find . -type f -or -type l -or -type s -or -type p -xdev`

  do

  echo $"/ "`(/bin/ls -l $i; /usr/bin/md5sum $i)`

  done

  done

  for j in $Dirs

  do

  cd $j

  for i in `/usr/bin/find . -type f -or -type l -or -type s -or -type p -xdev -maxdepth 1`

  do

  echo $"/ "`(/bin/ls -l $i; /usr/bin/md5sum $i)`

  done

  done

  )>$

  if [ ! -f $/files-diff.today ]; then

  (

  echo "No $/files-diff.today"

  cp $ $/files-diff.today

  )|mail -sNo_$/files-diff.today root

  fi

  if cmp $/files-diff.today $ >/dev/null; then :; else

  (

  echo "files diffs: "

  diff -b $/files-diff.today $

  mv $/files-diff.today $/files-diff.yesterday

  mv $ $/files-diff.today

  )|mail -sfiles-diff root

  fi

  if [ -f $ ]; then

  rm $

  fi

  Linux Mandrake 的 files-diffs 配置与源代码

  标准服务的位置在以下目录中:/boot *、/etc *、/bin、/sbin *、/usr/bin *、/usr/sbin、/usr/lib *、/usr/libexec *、/usr/local/bin、/usr/local/etc * 及 /usr/local/sbin。假定您已经安装了 Mandrake 安全包(对 RPM: /System/Base/msec),请遵照如下这些安装说明:

  以 root 用户身份登录

  [cd /usr/share/msec]

  把代码存在 files-diffs 文件

  [chmod 755 files-diffs.sh]

  [chown root:root files-diffs.sh]

  打开 Security.sh 文件编辑并把下列串添加到文件的末尾:

  . /usr/share/msec/files-diffs.sh

  清单 2. Linux Mandrake 的 files-diffs

  #!/bin/sh

  #

  #Checking files for modification

  #

  #Written by Igor B. Maximov, <="mailto:uniug@cris.net">uniug@cris.net

  #

  #Dirs with sub-folders checking

  DeepDirs="/etc /usr/lib /usr/libexec /usr/X11R6/lib /usr/local/etc"

  #Dirs without sub-folders checking

  Dirs="/bin /sbin /modules /usr/bin /usr/sbin /usr/X11R6/bin /usr/local/bin /usr/local/sbin"

  TMP=/var/run/_files-diffs.$$

  LOG=/var/log

  (

  for j in $DeepDirs

  do

  cd $j

  for i in `/usr/bin/find . -type f -or -type l -or -type s -or -type p -xdev`

  do

  echo $"/ "`(/bin/ls -l $i; /sbin/md5 $i)`

  done

  done

  for j in $Dirs

  do

  cd $j

  for i in `/usr/bin/find . -type f -or -type l -or -type s -or -type p -xdev -maxdepth 1`

  do

  echo $"/ "`(/bin/ls -l $i; /sbin/md5 $i)`

  done

  done

  )>$

  if [ ! -f $/files-diffs.today ]; then

  (

  echo "No $/files-diffs.today"

  cp $ $/files-diffs.today

  )|mail -sNo_$/files-diffs.today root

  fi

  if cmp $/files-diffs.today $ >/dev/null; then :; else

  (

  echo "files diffs:"

  diff -b $/files-diffs.today $

  mv $/files-diffs.today $/files-diffs.yesterday

  mv $ $/files-diffs.today

  )|mail -sfiles-diffs root

  fi

  if [ -f $ ]; then

  rm $

  fi

  进一步改进

  通过在标准安全系统中单独使用该程序,您可以进一步改进系统的稳定性。如您采用这种做法,该程序的位置应该在另一目录,而且应该用不同的路径存储临时文件和源代码。这样,监视系统的存在对恶意用户并不明显,因而,不容易被避开。

用户评论
用户名
评论内容
发表时间
ZDNet网友
2011-03-18 14:57:01
ZDNet网友
2010-05-21 00:49:14
ZDNet网友
2010-05-21 00:48:00
ZDNet网友
微软应该对自己的用户负责,如果用户完全使用xp升级微软win7,为什么要付出这样麻烦的代价?都是微软出品软件,且都是利用该软件获取信息以及处理文字、多媒体功能,微软应该尽可能方便用户!虽然有时候这样的请求也许跟不上时代技术发展的脚步,但是微软不要以此为借口,认为一切都理所应当,就不可以方便用户。还是要尽力,所谓拿人手短吃人嘴软,商业不正是讲求有商道吗!至少做人需诚实守信,尽可能帮助用户顺利、安全转换操作系统、各种必须软件功能尽可能兼容以及信息尽可能的少丢失!虽然这很大程度仅仅取决于微软等计算机专家、工程师的自我自律约束,我们普通用户恐怕很难知道微软究竟仅了多大力量为用户考虑,但是我相信真相会有被发现的一天,无论多久远。 微软从某种意义上来说,就是一个类似“掌握魔方”操作特别出神入化的公司。几乎奠定了电脑主要的“规则”,但是,我却相信不久将来我们会发现,电脑依然是非常有限的一个小系统而已!随着我们新的关键材料认知突破,电脑系统会真正被另一个革命性新电脑系统所取代,不要以为我这样的说法是无稽之谈不可实现,我却认为很有可能,只看这样的情况发生究竟是快还是慢,是早还是迟!变成历史的小玩具之后的电脑系统,微软会留下良好的历史声名吗?我们拭目以待! 网友::我爱佛祖
2010-02-03 13:52:55
- 发表评论 -
匿名
注册用户

百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134