首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 开源 FAQ 第二书店 博文视点 程序员
频道: 研发 数据库 中间件 信息化 视频 .NET Java 游戏 移动 服务: 人才 外包 培训
    图书品种:235680
       
热门搜索: ASP.NET Ajax Spring Hibernate Java

21.20.setuid程序

运行setuid的程序,特别是运行setuid到root的程序,很容易导致安全问题。随Linux发布的setuid命令理论上讲是安全的,不过,过去已经发现了安全漏洞,将来无疑还会发现漏洞。

把setuid问题的数量降到最低的办法,肯定是把setuid程序的数量降到最低。在安装需要执行setuid的软件包之前请三思,并要避免在自己编写的软件中使用setuid功能。虽然Linux发行版本各有不同,但一个Linux发行版本平均有大约35setuid程序。

setuid shell脚本特别容易造成安全问题。至少在常用的shell下,它们自身就是完全不安全的。shell往往是高度可定制的,这使得要欺骗它们相当容易。虽然为了执行脚本而产生的一个shell未必会读取该用户的shell配置文件,但根据当前目录的内容或调用脚本的方式不同,这个shell可能受到用户环境的影响。

没有一条规则说setuid程序必须以root权限运行。如果您需要做的一切就是限制对某个特殊文件或数据库的访问,那么您可以在passwd文件中添加一个伪用户,passwd文件存在的唯一理由就是拥有受限制的资源。请遵循标准的伪用户约定:使用小的UID,在口令域中放一个星号,令这个伪用户的主目录为让这个伪用户的主目录为/dev/null。

您可以在调用mount命令时使用-o nosuid选项,在个别文件系统上禁止setuid和setgid的执行。比较好的想法是,把这个选项用在包含用户主目录的目录上,或者在安装从不太可信的管理域来的文件系统时使用。

周期性地扫描硬盘寻找新的setuid程序是有用处的。攻破系统安全的黑客有时会创建一个私人setuid shell或实用程序来帮助他再次拜访系统。从21.20.810节开始讨论的一些工具能够找出这样的文件,但用find也一样能做得好。例如:

/usr/bin/find / -user root -perm -4000 -print |

     /bin/mail -s "Setuid root files" netadmin

将把所有setuid root文件的列表邮寄给“netadmin”用户。

查看所有评论(0)条】

最近评论



正在载入评论列表...
热点评论