用chattr提高ext3文件系统的安全
作者:咾爺們 | 来源:互联网 | 2017-11-07 02:17
文章标题:用chattr提高ext3文件系统的安全。Linux是中国IT实验室的一个技术频道。包含桌面应用,Linux系统管理,内核研究,嵌入式系统和开源等一些基本分类
本文将详细介绍 EXT3文件系统的属性已经如何使用这个特征保护系统的安全。
1.什么是ext3的属性(attribute)
从Linux的1.1系列内核开始,ext2文件系统就开始支持一些针对文件和目录的额外标记或者叫作属性(attribute)。在2.2和2.4系列的内 核中,ext3文件系统支持以下属性的设置和查询:
A
Atime。告诉系统不要修改对这个文件的最后访问时间。
S
Sync。一旦应用程序对这个文件执行了写操作,使系统立刻把修改的结果写到磁盘。
a
Append Only。系统只允许在这个文件之后追加数据,不允许任何进程覆盖或者截断这个文件。如果目录具有这个属性,系统将 只允许在这个目录下建立和修改文件,而不允许删除任何文件。
i
Immutable。系统不允许对这个文件进行任何的修改。如果目录具有这个属性,那么任何的进程只能修改目录之下的文件,不允 许建立和删除文件。
d
No dump。在进行文件系统备份时,dump程序将忽略这个文件。
c
Compress。系统以透明的方式压缩这个文件。从这个文件读取时,返回的是解压之后的数据;而向这个文件中写入数据时,数 据首先被压缩之后,才写入磁盘。
s
Secure Delete。让系统在删除这个文件时,使用0填充文件所在的区域。
u
Undelete。当一个应用程序请求删除这个文件,系统会保留其数据块以便以后能够恢复删除这个文件。
但是,虽然文件系统能够接受并保留指示每个属性的标志,但是这些属性不一定有效,这依赖于内核和各种应用程序的版本。下表显 示每个版本支持的属性标志:
* 允许设置这个标志并使设置生效
i 允许设置这个标志但忽略其值
- 完全忽略这个标志
1.0 1.2 2.0 2.2 2.4
A - - * * *
S * * * * *
a - * * * *
i - * * * *
d - * * * *
c i i i i i
s * * i i i
u i i i i i
虽然早期的内核版本支持安全删除特征,但是从1.3系列的内核开始,开发者抛弃的对这个特征的实现,因为它似乎只能够提高一点点 的安全性,而糟糕的是它会给不熟悉安全删除继承问题的用户造成安全的假象。
在对具有A属性的文件进行操作时,A属性可以提高一定的性能。而S属性能够最大限度的保障文件的完整性。
本文将主要讨论a属性和i属性,因为这两个属性对于提高文件系统的安全性和保障文件系统的完整性有很大的好处。同样,一些开放 源码的BSD系统(如:FreeBSD和OpenBSD),在其UFS或者FFS实现中也支持类似的特征。
2.使用什么命令设置和显示ext3文件系统的属性
在任何情况下,标准的ls命令都不会一个文件或者目录的扩展属性。ext3文件系统工具包中有两个工具--chattr和lsattr,专门用来设置 和查询文件属性。因为ext3是标准的Linux文件系统,因此几乎所有的发布都有e2fsprogs工具包。如果由于某些原因,系统中没有这个 工具,你可以从以下地址下载这个工具包的源代码编译并安装:http://sourceforge.net/projects/e2fsprogs
lsattr命令只支持很少的选项,其选项如下:
-a
列出目录中的所有文件,包括以.开头的文件。
-d
以和文件相同的方式列出目录,并显示其包含的内容。
-R
以递归的方式列出目录的属性及其内容。
-v
列出文件版本(用于网络文件系统NFS)。
chattr命令可以通过以下三种方式执行:
chattr +Si test.txt
给test.txt文件添加同步和不可变属性。
chattr -ai test.txt
把文件的只扩展(append-only)属性和不可变属性去掉。
chattr =aiA test.txt
使test.txt文件只有a、i和A属性。
最后,每个命令都支持-R选项,用于递归地对目录和其子目录进行操作。
3.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)。如果没有任何参数,会列出内核支持的能力和目 前生效的内核能力。
一旦一个内核能力被删除,就只有在系统重新启动,进入到单用户模式才能删除能力限制。
感兴趣的读者,可以从下面的连接中获得更为详细的能力方面的知识:
LCAP - Linux内核能力约束集编辑器(Linux Kernel Capabilities Bounding Set Editor)
http://pw1.netcom.com/~spoon/lcap/
4.我们应该使用chattr做什么?
主机直接暴露在Internet或者位于其它危险的环境,有很多shell帐户或者提供HTTP和FTP等网络服务,一般应该在安装配置完成后使用 如下命令:
chattr -R +i /bin /boot /etc /lib /sbin
chattr -R +i /usr/bin /usr/include /usr/lib /usr/sbin
chattr +a /var/log/messages /var/log/secure (...)
如果很少对帐户进行添加、变更或者删除,把/home本身设置为immutable属性也不会造成什么问题。在很多情况下,整个/usr目录树也 应该具有不可改变属性。实际上,除了对/usr目录使用chattr -R +ii /usr/命令外,还可以在/etc/fstab文件中使用ro选项,使/usr目录所在 的分区以只读的方式加载。另外,把系统日志文件设置为只能添加属性(append-only),将使入侵者无法擦除自己的踪迹。
当然,如果使用这种安全措施,需要系统管理员修改管理方式。
4.1.安装、升级软件
由于软件管理程序需要加入和删除某些文件和目录,因此在进行软件安装和升级之前需要删除某些目录和文件的immutable和append- only属性。对于Linux系统,我们一般使用rpm管理软件包,你可以使用以下命令查看要安装或者升级的软件包都有哪些文件:
rpm -qipl foopackage.rpm
然后曲调有关目录和文件的immutable和append-only属性。大多数软件包需要rpm命令对以下目录的一个或者多个进行写操作:
/bin
/sbin
/usr/bin
/usr/sbin
/usr/man
/lib
/etc
注意,如果你需要升级/usr/sbin/someprogram,你应该去掉someprogram文件以及目录/usr/sbin的immutable属性。
4.2.管理用户和用户组
如果要进行用户和用户组,以下的目录和文件需要能够被读写:
推荐阅读
-
本文档详细规划了从基础到高级的软件测试学习路径,包括但不限于测试基础、Linux和数据库、功能测试、Python编程、接口测试、性能测试、金融项目实战、UI自动化测试等内容,旨在为初学者和进阶者提供全面的学习指导。 ...
[详细]
蜡笔小新 2024-12-01 12:44:17
-
本文基于https://major.io/2014/05/13/coreos-vs-project-atomic-a-review/的内容,对CoreOS和Atomic两个操作系统进行了详细的对比,涵盖部署、管理和安全性等多个方面。 ...
[详细]
蜡笔小新 2024-12-02 15:49:30
-
-
本文将探讨iOS开发过程中需要掌握的三种关键编程语言——C、Objective-C和Swift,并深入解析面向过程与面向对象编程的概念,同时对比iOS与Android两大移动平台的特点。 ...
[详细]
蜡笔小新 2024-12-02 11:47:59
-
本文详细介绍了在Linux环境下安装、配置PostgreSQL数据库的过程,包括环境准备、安装步骤、配置数据库访问以及日常服务管理等方面的内容。适合初学者和有一定经验的数据库管理员参考。 ...
[详细]
蜡笔小新 2024-12-01 10:36:36
-
在构建可靠的系统架构时,确保安全是至关重要的一步。本文将重点探讨Tomcat这一流行的开源Web应用服务器的安全配置,以帮助开发者和运维人员提高其应用程序的安全性。 ...
[详细]
蜡笔小新 2024-12-01 09:00:04
-
本文探讨了Go语言(Golang)的学习价值及其在Web开发领域的应用潜力,包括其独特的语言特性和为什么它是现代软件开发的理想选择。 ...
[详细]
蜡笔小新 2024-12-01 01:41:40
-
本文详细介绍了如何在局域网中设置打印机共享,帮助解决办公环境中常见的打印机故障问题。 ...
[详细]
蜡笔小新 2024-11-30 19:37:54
-
开发笔记:Mongodb副本集集群搭建 ...
[详细]
蜡笔小新 2024-11-30 16:16:20
-
本文档提供了几个经典的Java编程示例,包括多线程处理、基本程序结构以及简单的逻辑运算,旨在帮助初学者更好地理解和掌握Java语言的核心特性。 ...
[详细]
蜡笔小新 2024-12-02 09:52:02
-
本文探讨了如何利用脚本文件高效管理Oracle数据库,包括脚本文件的创建、编辑及运行方法,旨在为数据库管理人员提供实用指导。 ...
[详细]
蜡笔小新 2024-12-01 17:54:33
-
本文探讨了一种高效的文章排版方法,特别适合文字密集型内容,如原创公众号文章。作者通过个人经历,分享了从学习Markdown到利用mdnice实现一键排版的过程,旨在帮助更多内容创作者提升工作效率。 ...
[详细]
蜡笔小新 2024-12-01 09:01:14
-
本文深入探讨了Kubernetes中Pod的基础概念及其分类,旨在帮助读者更好地理解和利用这一核心组件。通过详细的解析,我们将了解Pod如何作为最小的部署单元在Kubernetes集群中工作。 ...
[详细]
蜡笔小新 2024-12-01 03:44:45
-
在生物信息学研究中,频繁地在本地与远程Linux服务器间传输文件是一项常见需求。无论是上传待分析的数据集还是下载处理后的结果,高效便捷的文件传输方法至关重要。 ...
[详细]
蜡笔小新 2024-11-30 22:05:23
-
本文深入探讨了《剑指Offer》系列中的一道经典算法题——设计一个支持常数时间内检索最小元素的栈。通过详细分析与代码示例,帮助读者理解并掌握这一问题的核心解法。 ...
[详细]
蜡笔小新 2024-11-30 17:40:55
-
本文将介绍一个名为decorator的Python库,尽管已存在多年,但其知名度并不高。本文假设读者已了解装饰器的基本概念,重点探讨如何利用decorator库简化装饰器的编写过程,以及它如何解决装饰器带来的签名问题。 ...
[详细]
蜡笔小新 2024-11-30 15:56:31
-