受到ServerFault上更具体的问题的启发。
为了我们每天使用的系统的安全性和完整性,我们都必须相信大量的人员。 在这里,我正在考虑运行在服务器或PC上的所有代码的所有作者,以及参与devise和构build硬件的所有人员。 这可以通过声誉来减轻,并且在有可用来源的情况下进行同行评审。
你可能不得不相信的其他人,以前不太常提到的人是以前在系统上有根的人。 您的前任作为系统pipe理员在工作。 或者对于家庭用户来说,那个为您configuration系统的,精通linux的朋友。 您的手机的以前的所有者(你真的相信出厂重置button?)
你必须相信他们,因为有尽可能多的方法来保持根目录,尽pipepipe理员尽力而为,而这些只是几分钟内我能想到的。 任何曾经拥有系统根基的人都可能会留下各种疯狂的后门,而你所看到的任何基于linux系统的唯一真正的追求就是重新安装你的 *** 作系统和所有可能以任何特权运行的代码。 说,用noexec挂载/home并重新安装其他的东西。 即使这样,如果任何数据保留的用户可能获得特权或影响特权用户足够的细节(认为shell别名和其他恶意configuration),这还是不够的。 持久的特权不是一个新问题 。
unlocked_ioctl vs正常的ioctl
linux x86引导程序
什么是沙盒
进程nice(优先级)设置对linux没有影响
如何在linux中读取扩展的PCIEconfiguration空间?
你将如何devise一个基于linux的系统,在没有完全重新安装的情况下可以撤销最高级别的特权访问? 或者,像这样的系统已经存在? 另外,为什么创build这样一个系统在逻辑上是不可能的?
当我说linux的时候,我指的是尽可能多地在linux上运行的软件,尽可能less地修改软件。 物理访问传统上意味着游戏结束,因为像键盘logging器这样的东西可以传输,但是假设硬件足够可检查/防篡改,使得通过该路线的持续访问足够困难,仅仅因为我(和SO的用户)发现这个问题的软件方面比较有意思。 :-)你也可以假定BIOS的存在可以被证实是已知的,或者根本不能被刷新。
我意识到了SElinux的基础知识,我不认为这有什么帮助,但是我从来没有真正使用它:随时解释我的错误。
当linux内核内存负载变高时,对普通文件的读/写性能如何变化?
模块化内核与微内核/单核内核
在内核级别loggingwindows Syscalls
windows内核中的Free / malloc函数
AndroID – 读取“设备属性”失败,错误“无效的长度”
首先,你确实说过设计 :)我的答案将包含你现在可以使用的东西的引用,但是其中一些对于生产来说还不够稳定。 我的回答也将包含需要写的东西的暗示。
除非你(像user9876指出的那样)完全和完全信任进行初始安装的个人或公司,否则你不能完成这个任务。 如果你不能相信这个,你的问题是无限递归的。
我几年前在一个新的文件系统中非常活跃,叫做ext3cow ,一个写ext3版本的副本。 快照是廉价的,100%不变的,从linux 2.4到2.6的端口打破了,并放弃了过去修改或删除文件的能力。
以磅为单位,它和ext3一样高效。 当然,这没什么可写的,但是(而且很大一部分)仍然是FS的生产标准。
使用这种类型的文件系统,在安装和配置完所有服务之后,假定快照是由原始安装构成的,那么很容易区分整个卷以查看更改内容和时间。
在这一点上,通过比较后,你可以决定没有什么有趣的,只是改变根密码,或者你可以去检查有点奇怪的事情。
现在,如果发现了一些有趣的东西,那么写出来的东西就是:
一些你可以通过差异来调查每个文件。 你要看到的是每个文件的修订列表,在这个时候他们将不得不递归比较。 也就是说,针对过去的现在,过去的现在反对过去1,过去1与过去2等等,直到你达到原来的文件或它不复存在的地步。 这样做手工会严重吸吮。 此外,您需要确定从未版本化的文件开始。
一些东西来检查你当前正在运行的内核。 如果有人污染了VFS,这些都不会起作用,CoW文件系统在过去使用临时inode访问文件。 我知道很多修改内核的企业客户,包括模块,VMM和VFS。 这可能不是一件容易的事情,因为旧的管理员在安装之后可能对内核进行了很好的修改,所以与“原始”比较可能是不成立的。
数据库是一个特别令人头疼的问题,因为数据库通常每秒钟或更多时间发生变化,包括用户表。 这将需要手动检查,除非你想出一些可以检查以确保没有什么奇怪的东西,这样的工具将非常具体到您的设置。 经典的UNIX“根”并不是你唯一关心的地方。
现在,考虑网络上的其他计算机。 其中有多少人正在运行一个已知易被利用和被感染的 *** 作系统? 即使你的服务器是干净的,如果这个人在irc上加入#foo,并通过你自己的局域网攻击你的服务器呢? 大多数人会点击一个同事发送的链接,特别是如果它的一个关于公司的多汁的博客条目..社会工程是很容易的,如果你从内部做。
简而言之,你提出的建议是成立的,但是我怀疑大多数公司可能会强制实施需要的最佳实践。 如果最终的结果是你在工作中找到了BOFH ,并且需要他的帮助,那么你最好在整个工作期间把他遏制住。
随着我继续思考,我会更新这个答案。 这是一个非常有趣的话题。 到目前为止,我所发表的是我自己收集的想法。
编辑:
是的,我知道虚拟机和检查点,一个解决方案假设带来了一个全新的递归级别。 (现在已离开)管理员是否可以直接访问特权域或存储服务器? 也许,是的,这就是为什么我不考虑这个问题。
看可信计算 。 一般的想法是,BIOS加载引导加载程序,然后散列它,并将该散列发送到一个特殊的芯片 。 引导程序然后散列OS内核,然后散列所有的内核模式驱动程序。 然后你可以询问芯片是否所有的哈希值都如预期的那样。
假设你相信最初安装和配置系统的人,这将使你能够证明你的 *** 作系统没有安装任何后来的系统管理员的rootkit。 然后,您可以手动在系统上的所有文件上运行散列(因为没有rootkit,值将是准确的),并将它们与原始安装程序提供的列表进行比较。 任何更改的文件都必须仔细检查(例如,由于新用户被合法添加,/ etc / passwd已经更改)。
我不知道如何在不破坏信任链的情况下处理这样的系统。
此外,请注意,应假定您的旧系统管理员知道任何用户输入到该系统的任何密码,以及任何用户在该系统上使用的任何私钥的未加密副本。 所以现在是时候改变你的所有密码。
总结以上是内存溢出为你收集整理的在没有完全信任的情况下devise基于Linux的系统来实现所有权/pipe理权的可转移性全部内容,希望文章能够帮你解决在没有完全信任的情况下devise基于Linux的系统来实现所有权/pipe理权的可转移性所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)