Linux安全:文件系统安全
Linux 文件权限管理和安全
Linux 对于文件权限管理是完善和全面的,但是用户通常会在权限的设置上产生纰漏。本文将介绍文件系统的权限和安全。
1. 锁定系统重要文件
系统运维人员有时候可能会遇到通过 Root 用户都不能修改或删除某个文件的情况,这通常是因为该文件被锁定了。在 Linux 下,锁定文件的命令是 chattr
,通过这个命令可以修改 ext2、ext3、ext4 文件系统下文件的属性,但是必须使用超级用户 Root 权限来执行。与 chattr
命令对应的是 lsattr
命令,用于查询文件属性。
通过 chattr
命令修改文件或目录的属性可以提高系统的安全性。下面简单介绍了 chattr
和 lsattr
两个命令的用法。
lsattr
用来查询文件属性,其语法格式如下:
lsattr [-RVadlpv] [文件]
常用参数如下所示:
-a
:列出目录中的所有文件,包括以.开头的文件。-d
:显示指定目录的属性。-R
:以递归的方式列出目录下所有文件及子目录以及属性值。-v
:显示文件或目录版本。
chattr
命令的语法格式如下:
chattr [-RV] [-v version] [mode] 文件或目录
主要参数含义如下:
-R
:递归修改所有的文件及子目录。-V
:详细显示修改内容,并打印输出。
其中,mode
部分用来控制文件的属性,常用参数如下所示:
+
:在原有参数设定基础上,追加参数。-
:在原有参数设定基础上,移除参数。=
:更新为指定参数。a
:即 append,设定该参数后,只能向文件中添加数据,而不能删除。常用于服务器日志文件安全,只有 Root 用户才能设置这个属性。c
:即 compress,设定文件是否经压缩后再存储。读取时需要经过自动解压操作。i
:即 immutable,设定文件不能被修改、删除、重命名、设定链接等,同时不能写入或新增内容。这个参数对于文件系统的安全设置有很大帮助。s
:安全删除文件或目录,即文件被删除后硬盘空间被全部收回。u
:与s
参数相反,当设定为u
时,系统会保留其数据块以便以后能够恢复删除这个文件。
在 Linux 系统中,如果一个用户以 Root 的权限登录或某个进程以 Root 的权限运行,那么它的使用权限就不再有任何的限制了。因此,攻击者通过远程或本地攻击手段获得了系统的 Root 权限将是一个灾难。在这种情况下,文件系统将是保护系统安全的最后一道防线,合理的属性设置可以最大限度地减小攻击者对系统的破坏程度。通过 chattr
命令锁定系统一些重要的文件或目录,是保护文件系统安全最直接、最有效的手段。
对一些重要的目录和文件可以加上 i
属性,常见的文件和目录如下所示:
root@kali:~/chattr -R +i /bin /boot /lib /sbin
root@kali:~/chattr -R +i /usr/bin /usr/include /usr/lib /usr/sbin
root@kali:~/chattr +i /etc/passwd
root@kali:~/chattr +i /etc/shadow
root@kali:~/chattr +i /etc/hosts
root@kali:~/chattr +i /etc/resolv.conf
root@kali:~/chattr +i /etc/fstab
root@kali:~/chattr +i /etc/sudoers
对一些重要的日志文件可以加上 a
属性,如下所示:
root@kali:~/chattr +a /var/log/messages
root@kali:~/chattr +a /var/log/wtmp
需要注意的是,虽然通过加锁可以提高服务器的安全性,但也会带来一些不便。例如,在软件的安装、升级时可能需要去掉有关目录和文件的 immutable
属性和 append-only
属性。同时,对日志文件设置了 append-only
属性,可能会使日志轮换(logrotate)无法进行。因此,在使用 chattr
命令前,需要结合服务器的应用环境来权衡是否需要设置 immutable
属性和 append-only
属性。
另外,虽然通过 chattr
命令修改文件属性能够提高文件系统的安全性,但并不适用于所有目录。chattr
命令不能保护 /
、/dev
、/tmp
、/var
等目录。根目录不能有不可修改属性,因为如果根目录具有不可修改属性,那么系统根本无法工作。例如,/dev
在启动时,syslog 需要删除并重新建立 /dev/log
套接字设备,如果设置了不可修改属性,可能会出问题;/tmp
目录会有很多应用程序和系统程序需要在这个目录下建立临时文件,也不能设置不可修改属性;/var
是系统和程序的日志目录,如果设置为不可修改属性,那么系统写日志将无法进行,所以也不能通过 chattr
命令保护。
2. 文件权限检查和修改
系统中如果有不正确的权限设置,可能会危及整个系统的安全。下面列举了查找系统不安全权限的方法。
(1)查找系统中任何用户都有写权限的文件或目录,查找文件,如下所示:
``` root@kali:~# find / -type f -perm -2 -o -perm -20 | xargs ls -al