锁定关键文件,增强Linux安全性

原文发表于《网络安全和信息化》2017年第2期,重新修订之后转发到博客。

文件的扩展属性与文件的权限是两个完全独立的概念,但是通过设置扩展属性,可以限制用户的权限。
为了便于理解,这里以Windows系统为例进行说明。在Windows系统中,选中某个文件之后,右键单击选择“属性”,在“常规”设置中可以选择为文件设置“只读”属性,如图所示。当设置了只读属性之后,任何用户无论他对该文件是否具有写入权限,都无法更改该文件的内容。因而,扩展属性可以被看作是一种优先级比系统权限更高的保护措施。

Linux系统的扩展属性,原理与Windows系统基本相同,而且Linux中可以设置的扩展属性远比Windows系统要更为丰富,不过最常用的只有只读属性(用i表示)和追加属性(用a表示),如果一个文件被设置了追加属性,那么就只能向文件中增加新的数据,而无法删除原有的数据。追加属性通常用于保护日志文件的安全。
root用户在Linux系统中的权限不受任何制约,但属性设置不同于权限设置,即使root用户也无法突破扩展属性的限制。当然root用户可以设置或取消文件的扩展属性,但无论怎样,扩展属性都在系统权限之外,又为我们提供了一种安全保护措施。
在Linux系统中设置扩展属性需要通过chattr命令,命令格式:
chattr [-R] +/- i/a 文件
? -R:递归修改所有的文件及子目录,这是一个可选项。
? +:增加扩展属性;
? -:减少扩展属性;
? i:只读属性,增加该属性之后,任何人包括root用户也无权写入更改;
? a:追加属性,增加该属性之后,只能向文件中添加数据,而不能删除原有数据。
通过chattr命令可以锁定系统中一些重要的文件或目录。例如,为/etc/passwd和/etc/shadow文件增加只读属性,这样任何人都无法在系统中添加新的用户,也无法删除系统中原有的用户。
[[email protected] ~]# chattr +i /etc/passwdd /etc/shadow
此时再创建用户就会出现错误提示。

 [[email protected] ~]# useradd test
useradd:无法打开密码文件

lsattr命令可用于显示文件的扩展属性。

 [[email protected] ~]# lsattr /etc/passwd /etc/shadow
----i-------- /etc/passwd
----i-------- /etc/shadow

如果管理员需要对系统中的用户进行操作,则可以去掉/etc/passwd和/etc/shadow文件的只读属性。

 [[email protected] ~]# chattr -i /etc/passwd /etc/shadow
[[email protected] ~]# lsattr /etc/passwd /etc/shadow
------------- /etc/passwd
------------- /etc/shadow

为了增强系统安全性,通常可以为以下这些目录和文件增加只读属性:

 chattr -R +i /bin /boot /lib /sbin
chattr -R +i /usr/bin /usr/include /usr/lib /usr/sbin
chattr +i /etc/passwd /etc/shadow
chattr +i /etc/hosts /etc/resolv.conf
chattr +i /etc/fstab /etc/sudoers

另外可以对一些重要的日志文件设置追加属性:
chattr +a /var/log/messages /var/log/wtmp
需要注意的是,锁定系统关键文件,虽然能够提高系统安全性,但是也会带来一些不便。例如,在软件的安装、升级时可能就需要先去掉有关目录和文件的只读和追加属性。另外,如果对日志文件设置了追加属性,可能会使日志轮换(logrotate)无法进行。因此在使用chattr命令前,需要结合服务器的应用环境来权衡是否需要设置只读和追加属性。
另外,扩展属性并不适用于所有的文件或目录。比如不能通过设置扩展属性来保护/、/dev、/tmp、/var等目录。首先根目录不能设置只读属性,如果根目录具有只读属性,那么系统将无法工作。/dev目录在启动时,syslog需要删除并重新建立/dev/log套接字设备,如果设置了只读属性,那么就可能会出问题。/tmp目录会有很多应用程序和系统程序需要在这个目录下建立临时文件,因而也不能设置只读属性。/var是系统和程序的日志目录,如果设置为只读属性,那么系统写日志将无法进行,所以也不能通过chattr命令保护。

原文地址:http://blog.51cto.com/yttitan/2306948

时间: 2024-10-22 14:48:11

锁定关键文件,增强Linux安全性的相关文章

Linux系统锁定关键文件

锁定系统关键文件 1.密码.账号文件 chattr +i /etc/passwd /etc/group /etc/shadow /etc/gshadow /etc/inittab 加锁:chattr +i /etc/passwd 文件不能删除,不能更改,不能移动 查看加锁: lsattr /etc/passwd 文件加了一个参数 i 表示锁定 解锁:chattr -i /home/omc/h.txt - 表示解除 2.移除原命令的地址 mv `which chattr` /opt/FTL 使用c

如何增强 Linux 系统的安全性,第一部分: Linux 安全模块(LSM)简介

http://www.ibm.com/developerworks/cn/linux/l-lsm/part1/ 1.相关背景介绍:为什么和是什么 近年来Linux系统由于其出色的性能和稳定性,开放源代码特性带来的灵活性和可扩展性,以及较低廉的成本,而受到计算机工业界的广泛关注和应用.但在安全性方面,Linux内核只提供了经典的UNIX自主访问控制(root用户,用户ID,模式位安全机制),以及部分的支持了POSIX.1e标准草案中的capabilities安全机制,这对于Linux系统的安全性是

Linux 锁定关键的系统文件

锁定关键的系统文件可以增加系统的安全性,使用chattr命令来锁定,下面是几个需要锁定的文件: chattr +i /etc/passwd   用户文件 chattr +i /etc/shadow   用户密码文件 chattr +i /etc/group    用户组文件 chattr +i /etc/gshadow  主密码文件 chattr +i /etc/inittab  开机启动的重要文件 示例: 加锁: [[email protected] ~]# chattr +i /etc/pa

4. sudo,PATH环境变量,修改字符集,ntpserver,加大文件描述符,隐藏内核版本,锁定关键系统文件

1   命令:  visudo 98gg      98行 yy           复制当前行 p             粘贴 改成   zhang   ALL(ALL)  NOPASSWD:ALL 2  修改PATH环境变量路径 PATH说简单点就是一个字符串变量,当输入命令的时候LINUX会去查找PATH里面记录的路径.比如在根目录/下可以输入命令ls,在/usr目录下也可以输入ls,但其实ls这个命令根本不在这个两个目录下,事实上当你输入命令的时候LINUX会去/bin,/usr/bi

chattr命令保护关键文件

玩Linux的时候,有些文件使用root权限都不能修改和删除,这是什么原因呢?大多是因为曾经使用过chattr命令锁定过该文件.chattr命令能够修改文件高级属性,这可以提高系统的安全性哦! 知识储备 ls -l显示的文件属性只能包含读.写.执行这类基本属性 chmod能够定义3类用户:属主.属组.其他用户的各自3种权限:读.写.执行 chattr能够修改文件的高级属性,包括IO同步.删除保护.写入保护等等 lsattr用来查看文件的高级属性的 chattr用法 Usage:chattr [-

CI支持各种文件上传-文件类型(Linux + window)

$mimes = array( 'hqx' => 'application/mac-binhex40', 'cpt' => 'application/mac-compactpro', 'csv' => array('text/x-comma-separated-values', 'text/comma-separated-values', 'application/octet-stream', 'application/vnd.ms-excel', 'application/x-csv'

从ramdisk根文件系统启动Linux成功,及使用initramfs启动linux

下面两篇文章是ARM9论坛上的讲解ramdisk文件系统的很不错的文章 今天做了个试验,让Linux2.6.29.4从ramdisk根文件系统启动成功,总结一下. 其中涉及的内容较多,很多东西不再详述,如需深入研究请查阅相关资料(百度或谷歌一下一大堆).开发环境:Fedora 9交叉编译工具链:arm-linux-gcc 4.3.2 with EABI嵌入式Linux内核版本:2.6.29.4-FriendlyARM.昨天写贴子的时候具体记不清了,今天起来启动开发板用uname -r查一下,就是

[转载] 文件锁(Filelock)与锁定映射文件部分内容

转载自http://jiangzhengjun.iteye.com/blog/517677 文件锁 JDK 1.4引入了文件加锁机制,允许我们同步访问一个共享文件,不过,竞争同一文件的两个线程有可能在不同的java虚拟机上,或者一个是java线程,另一个是操作系统中其他的某个线程,但文件锁对其他线程或其他操作系统进程都是可见的,因为java的文件加锁直接映射到了本地操作系统的加锁机制.注,这里讲的锁是指锁定其他应用程序,而不是锁定同一虚拟机里访问的同一文件的其他线程 .如果在同一虚拟机两次锁定同

文件IO(Linux系统调用)

与操作系统有关,所有文件都可操作,无缓冲区文件IO:常规文件,目录,字符设备,块设备,管道,套接口,符号连接 通过文件描述符访问文件,最多可打开1024个文件,文件描述符最大为1023. 标准输入.标准输出.标准出错 由shell默认打开,分别为0/1/2. 当打开一个文件时,内核会返回一个非负整数(一定是最小的且没有用过的),即文件描述符,用来代表打开的文件. int open(const char *pathname,int flags); int open(const char *path