站长杂谈

Linux系统功能和ACL介绍

时间:2018-12-06 14:11 点击:

  Linux系统功能和ACL介绍

  Unix系统一直使用一种安全系统,为普通用户提供最低限度的权限,同时创建一个拥有完全权限的单个帐户,称为“root”帐户。root帐户用于管理计算机,安装软件,创建新用户以及运行某些服务。许多需要root权限的常见活动通常以root用户身份运行。这种依赖单个帐户执行所有需要特权的操作已被证明有点危险。程序通常需要单个活动的root权限,例如绑定到特权端口,或者只打开root可以访问的文件。如果这些程序没有以root身份运行,那么通常可以找到漏洞。这项工作的目标是消除对某些操作的root帐户的依赖。LinuxACL项目是另一个有趣的项目,也是为了弥补文件访问控制领域中的一些缺点。这些扩展ext2fs以允许比Unix文件系统通常允许的更精细的访问控制。我们将简要讨论这些功能,讨论它们可能有用的地方,并举例说明如何使用它们及其相关的实用程序。本文的某些部分将需要安装内核补丁,修补和替换系统实用程序。确保在这样做时要格外小心,不要试图在生产或其他关键系统上这样做。

  Linux功能

  正如在简介中简要介绍的那样,Linux功能系统旨在帮助消除与root权限需求相关的问题。在我们进一步讨论之前,我们需要讨论为什么为root保留某些特权,以及为什么某些程序需要以root身份运行。根据Unix安全约定,只有root帐户才保留某些特权。特权操作包括将进程绑定到特权端口,加载内核模块,安装和卸载文件系统以及各种其他系统活动之类的操作。root也是唯一能够添加/更改帐户信息,安装系统实用程序的帐户。root的权限很广泛。

  那么普通用户需要root访问权限的是什么类型的东西?程序中的一个简单示例ping。Ping需要能够打开原始套接字才能将数据包发送到网络。这是一个只有root可以执行的操作,所以ping程序安装了setuidroot。这允许任何用户使用该程序,并且仍然能够打开原始套接字。不幸的是,这意味着程序具有root的完全权限。如果在程序中发现缺陷,攻击者可能会执行root可以执行的任何活动。

  ACL介绍

  另一个有趣的,虽然看似不那么主流的内核项目而不是功能,但是正在进行的工作是在Linux中引入Posix文件访问控制列表(ACL)支持。那些熟悉商业Unix操作系统的人可能已经使用过,或者至少看过PosixACL。ACL提供了一种添加更精细的文件级访问控制的方法。默认的Unix权限允许将权限与单个所有者,组和世界其他地方相关联,而ACL允许为多个组或个人设置权限。它不值得重复,而是值得阅读一篇关于在Solaris下使用ACL的文章。它在这里可用。它涵盖了getfacl和setfacl实用程序的基本用法,这两种实用程序都是在Linux下使用几乎相同的接口实现的。

  ACL实施仍然是一项正在进行的工作,并不适合胆小的人;有一个很好的机会,你会有编译问题。但是,ACL可以在很大程度上减少为人们提供root访问权限的需求。不必依赖类似sudo允许有限root访问权限的应用程序,而是可以使用ACL来允许特定用户运行setuid应用程序,而无需创建大量的组。

  结论

  Linux内核中开发的许多项目将在提高Linux机器的安全性方面走得很远。通过引入用于减少对特定特权操作的根的依赖性的方法,将消除以大量以root身份运行的程序的可能暴露。如果应用程序只能执行它们所需的操作,则允许用户以root身份执行任意操作的漏洞的可能性将小得多。使用更精细的访问控制机制,如ACL提供的机制,甚至可以进一步减少这种风险。