Linux服务器安全运维:文件系统安全
1、锁定系统重要文件
系统人员有时候可能会遇到通过root用户都不能修改或者删除某个文件的情况,产生这种情况的大部分原因可能是这个文件被锁定了。在下锁定文件的命
ID:Computer-network 1、锁定系统重要文件 系统人员有时候可能会遇到通过root用户都不能修改或者删除某个文件的情况,产生这种情况的大部分原因可能是这个文件被锁定了。在下锁定文件的命令是chattr,通过这个命令可以修改ext2、ext3、ext4文件系统下文件属性,但是这个命令必须由超级用户root来执行。和这个命令对应的命令是lsattr,后者用来查询文件属性。 通过chattr命令修改文件或者目录的文件属性能够提高系统的安全性,下面简单介绍下chattr和lsattr两个命令的用法。 chattr命令的语法格式如下: chattr [-RV] [-V version] [mode]文件或目录 主要参数含义如下: -R:递归修改所有的文件及子目录。 -V:详细显示修改内容,并打印输出。 其中mode部分用来控制文件的属性,常用参数如表1所示。 表1 chattr命令的常用参数 这些参数中,最常用到的是a和i,a参数常用于日志文件安全设定,而i参数更为严格,不允许对文件进行任何操作,即使是root用户。 lsattr用来查询文件属性,用法比较简单,其语法格式如下: lsattr[-adlrvV]文件或目录 常用参数如表2所示。 表2 lsattr命令的常用参数 在系统中,如果一个用户以root的权限登录或者某个以root的权限运行,那么它的使用权限就不再有任何的限制了。因此,者通过或者本地手段获得了系统的root权限将是一场灾难。在这种情况下,文件系统将是保护系统安全的最后一道防线,合理的属性设置可以最大限度地降低者对系统的破坏程度,通过chattr命令锁定系统一些重要的文件或目录,是保护文件系统安全最直接、最有效的手段。 对一些重要的目录和文件可以加上“i”属性,常见的文件和目录有: chattr-R+i/bin /boot /lib /sbin chattr-R+i/usr/bin/usr/include /usr/lib /usr/sbin chattr+i/etc/passwd chattr+i/etc/shadow chattr+i/etc/hosts chattr+i/etc/resolv.conf chattr+i/etc/fstab chattr+i/etc/sudoers 对一些重要的日志文件可以加上“a”属性,常见的有: chattr+a/var/log/messages 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命令保护。 虽然保护/dev、/tmp等目录的安全性无法通过chattr命令实现,但是可以通过另外的方法实现。 2、文件权限检查和修改 不正确的权限设置直接威胁系统的安全,因此人员应该能及时发现这些不正确的权限设置,并立刻修正,防患于未然。下面列举几种查找系统不安全权限的方法。 (1)查找系统中任何用户都有写权限的文件或目录 查找文件: find/-typef-perm-2-o-perm-20|xargsls-al 查找目录: find/-typed-perm-2-o-perm-20|xargsls-ld (2)查找系统中所有含“s”位的程序 find/-typed-perm -4000-o-perm-2000-print |xargsls-al 含有“s”位权限的程序对系统安全威胁很大,通过查找系统中所有具有“s”位权限的程序,可以把某些不必要的“s”位权限的程序去掉,这样可以防止用户滥用权限或提升权限的可能性。 (3)检查系统中所有suid及sgid文件 find /-userroot-perm-2000-print-execmd5sum{}\; find /-userroot-perm-4000-print-execmd5sum{}\; 将检查的结果保存到文件中,可在以后的系统检查中作为参考。 (4)检查系统中没有属主的文件 find /-nouser-o-nogroup 没有属主的孤儿文件比较危险,往往成为利用的工具,因此在找到这些文件后,要么删除,要么修改文件的属主,使其处于安全状态。 3、/tmp、/var/tmp、/dev/shm安全设定 在系统中Linux 文件基本属性,用来存放临时文件主要有两个目录或分区,分别是/tmp和/var/tmp。存储临时文件的目录或分区有个共同点,就是所有用户可读写、可执行,这就为系统留下了安全隐患。者可以将或者脚本放到临时文件的目录下进行信息收集或伪装,严重影响的安全,此时,如果修改临时目录的读写执行权限,还有可能影响系统上应用程序正常运行,因此,如果要兼顾两者,就需要对这两个目录或分区进行特殊设置。 /dev/shm是下的一个共享内存设备,在启动的时候系统默认会加载/dev/shm,被加载的/dev/shm使用的是tmpfs文件系统,而tmpfs是一个内存文件系统,存储到tmpfs文件系统的数据会完全驻留在RAM中,这样通过/dev/shm就可以直接操控系统内存,这将非常危险,因此如何保证/dev/shm安全也至关重要。 对于/tmp的安全设置,需要看/tmp是一个独立磁盘分区,还是一个根分区下的文件夹。如果/tmp是一个独立的磁盘分区,那么设置非常简单,修改/etc/fstab文件中/tmp分区对应的挂载属性,加上nosuid、noexec、nodev三个选项即可,修改后的/tmp分区挂载属性类似如下: LABEL=/tmp/tmpext3rw,nosuid,noexec,nodev 0 0 其中,nosuid、noexec、nodev选项表示不允许任何suid程序,在这个分区不能执行任何脚本等程序,以及不存在设备文件。 在挂载属性设置完成后,重新挂载/tmp分区,保证设置生效。 对于/var/tmp,如果是独立分区,安装/tmp的设置方法是修改/etc/fstab文件即可;如果是/var分区下的一个目录,那么可以将/var/tmp目录下所有数据移动到/tmp分区下,然后在/var下做一个指向/tmp的软连接即可。也就是执行如下操作: [root@server ~]#mv/var/tmp/*/tmp [root@server ~]#ln-s /tmp/var/tmp 如果/tmp是根目录下的一个目录,那么设置稍微复杂,可以通过创建一个loopback文件系统来利用内核的loopback特性将文件系统挂载到/tmp下,然后在挂载时指定限制加载选项即可。一个简单的操作示例如下: [root@server ~]# ddif=/dev/zeroof=/dev/tmpfs bs=1M count=10000 [root@server ~]#mke2fs-j/dev/tmpfs [root@server ~]#cp-av/tmp/tmp.old [root@server ~]#mount-oloop,noexec,nosuid,rw/dev/tmpfs/tmp [root@server ~]#chmod1777/tmp [root@server ~]# mv-f/tmp.old/*/tmp/ [root@server ~]#rm-rf/tmp.old 最后,编辑/etc/fstab,添加如下内容,以便系统在启动时自动加载loopback文件系统: /dev/tmpfs/tmpext3loop,nosuid,noexec,rw0 0 为了验证挂载时指定限制加载选项是否生效,可以在/tmp分区创建一个文件,操作如下: [root@tc193 tmp]#ls-al|grepshell-rwxr-xr-x1root root22Oct614:58shell-test.sh [root@server ~]# pwd/tmp [root@tc193 tmp]#./shell-test.sh-bash:./shell-test.sh: Permissiondenied 可以看出,虽然文件有可执行属性,但是在/tmp分区已经无法执行任何文件了。 最后介绍如何修改/dev/shm的安全设置。由于/dev/shm是一个共享内存设备,因此也可以通过修改/etc/fstab文件设置而实现,在默认情况下,/dev/shm通过defaults选项来加载,这样保证其安全性是不够的,需要修改/dev/shm的挂载属性,操作如下: tmpfs/dev/shmtmpfsdefaults,nosuid,noexec,rw 0 0 通过这种方式限制了任何suid程序,同时也限制了/dev/shm的可执行权限,系统安全性得到进一步提升。 (编辑:晋中站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |