Chinaunix首页 | 论坛 | 博客
  • 博客访问: 860684
  • 博文数量: 69
  • 博客积分: 10434
  • 博客等级: 上将
  • 技术积分: 1941
  • 用 户 组: 普通用户
  • 注册时间: 2005-05-28 16:10
文章存档

2012年(1)

2009年(14)

2008年(54)

分类:

2008-04-26 09:59:21

1. 说明
  修改ext2ext3文件系统属性(attribute),chattr 命令的作用很大,其中一些功能是由Linux内核版本来支持的,如果Linux内核版本低于2.2,那么许多功能不能实现。同样-D检查压缩文件中的错误的功能,需要2.5.19以上内核才能支持。另外,通过chattr命令修改属性能够提高系统的安全性,但是它并不适合所有的目录。chattr命令不能保护//dev/tmp/var目录。使用权限:超级用户。
2.格式
  chattr [-RV] [-+=AacDdijsSu] [-v version] 文件或目录
3.主要参数
  -R:递归处理所有的文件及子目录。
  -V:详细显示修改内容,并打印输出。
  -:失效属性。
  +:激活属性。
  = :指定属性。
  AAtime,告诉系统不要修改对这个文件的最后访问时间。
  SSync,一旦应用程序对这个文件执行了写操作,使系统立刻把修改的结果写到磁盘。
  aAppend Only,系统只允许在这个文件之后追加数据,不允许任何进程覆盖或截断这个文件。如果目录具有这个属性,系统将只允许在这个目录下建立和修改文件,而不允许删除任何文件。
  iImmutable,系统不允许对这个文件进行任何的修改。如果目录具有这个属性,那么任何的进程只能修改目录之下的文件,不允许建立和删除文件。
  D:检查压缩文件中的错误。
  dNo dump,在进行文件系统备份时,dump程序将忽略这个文件。
  CCompress,系统以透明的方式压缩这个文件。从这个文件读取时,返回的是解压之后的数据;而向这个文件中写入数据时,数据首先被压缩之后才写入磁盘。
  sSecure Delete,让系统在删除这个文件时,使用0填充文件所在的区域。
  uUndelete,当一个应用程序请求删除这个文件,系统会保留其数据块以便以后能够恢复删除这个文件。
4.实例

chattr命令可以通过以下三种方式执行:
  chattr +Si test.txt     test.txt文件添加同步和不可变属性。
  chattr -ai test.txt     把文件的只扩展(append-only)属性和不可变属性去掉。
  chattr =aiA test.txt   使test.txt文件只有aiA属性。

  最后,每个命令都支持-R选项,用于递归地对目录和其子目录进行操作。
5.ext3属性和文件权限的区别
  几乎所有的系统管理员都理解UNIX风格文件系统的权限和所有者以及ls命令的显示,例如:
[root@typhoid nixe0n]# ls -al test*
-rw-rw-r-- 1 nixe0n users 0 Nov 17 17:02 test.conf
-rw-rw-r-- 1 nixe0n users 0 Nov 17 17:02 test.log
-rw-rw-r-- 1 nixe0n users 0 Nov 16 19:41 test.txt
  从ls的输出结果看,这些文件属于用户nixe0n,而nixe0n所在的用户组是users。用户nixe0n本人和users用户组的成员尉有具有对文件 的修改权限,而其他的用户只有读取文件的权限。下面是lsattr命令的输出:
[root@typhoid nixe0n]# lsattr -a test*
---i-------- test.conf
----a------- test.log
------------ test.txt
  输出结果显示,test.log只能被添加,而test.conf文件不准修改。在UNIX系统中,如果一个用户以root的权限登录,文件系统的权限控 制将无法对root用户和以root权限运行的进程进行任何的限制。这样对于UNIX类的操作系统,如果攻击者通过远程或者本地攻击获得 root权限将可能对系统造成严重的破坏。而ext2文件系统可以作为最后一道防线,最大限度地减小系统被破坏的程度,并保存攻击者的 行踪。ext2属性是由sys_open()sys_truncate()等系统调用检查和赋予的,不受用户识别号和其他因素的影响,在任何情况下,对具有 不可修改(immutable)属性的文件的进行任何修改都会失败,不管是否是root用户进行的修改。

  但是,还有一个问题是root权限的用户可以通过删除i属性实现对文件的修改。这种防护只不过给获得root权限的攻击者加了一点小麻烦 罢了,系统的安全性并没有根本性的提高。
  在2.1之前的内核版本中,存在一个安全层(securelevel)的特征。使用安全层可以解决上述问题,因为如果系统的安全层大于0,内核将 不允许对任何文件的i属性进行修改。这些版本的内核由sysctl命令的"kernel.securelevel"变量进行控制。如果在启动时,这个变量 的值被设置为1或者更大的值,内核将不允许对具有i属性和a属性文件进行修改,除非国旗动到单用户状态。
  但是,由于引入了更为灵活的内核能力特征(kernel capabilities),以后的内核不再支持安全层。使用内核能力,也可以实现类似的 限制。工具lcap用来查询和调整内核能力约束集(kernel capabilities bounding set)。在启动脚本中加入以下命令,就可以实现对具有i 性和a属性文件的保护:
  lcap CAP_LINUX_IMMUTABLE
  
lcap CAP_SYS_RAWIO
  第一个命令删除任何用户(包括超级用户)对i标志的修改能力。第二个命令删除任何用户(主要针对超级用户)对块设备的原始访问 (raw access)能力,防止一些技术高超的攻击者直接修改文件系统索引节点的immutable域。BTW,在系统启动时,CAP_SYS_RAWIO 力应该直接删除,这个能力是一个非常大的潜在威胁。高明的攻击者获得了超级用户权限之后,通过/dev/kmem设备可以直接修改内核 内存。通过这种方式,可以破坏系统的内核能力约束集(kernel capabilities bounding)。如果没有任何参数,会列出内核支持的能力和目 前生效的内核能力。

  一旦一个内核能力被删除,就只有在系统重新启动,进入到单用户模式才能删除能力限制。

 

lsattr   [-aR]
参数说明:

-a  
:将隐藏文件的属性也显示出来
-R  
:连同子目录的数据一并显示出来

阅读(1748) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~