在linux系统中,如果一个进程以root权限运行或者一个用户以root用户身份登录,那么它的权限就不再有任何限制,因此如果一旦root权限被黑客掌握,对于系统来说将会是一场灾难,在这种情况下,文件系统保护将会成为系统的最后一道防线,合理的设置文件系统保护可以最大限度的降低攻击对系统造成的破坏。
如果系统中存在一些非常重要的文件,可以通过chattr
命令将其锁定,这样即使是root用户也没法对文件进行修改和删除。该命令可以修改ext2、ext3、ext4文件系统下的文件属性,而且这个命令只能由root用户执行。对应的,lsattr
可以用来查询文件属性。
chattr命令的语法如下:
chattr [-rv] [-v version] [mode] /路径/文件
主要参数如下:
lsattr命令的语法如下:
lsattr [-adirvv] /路径/文件
主要参数如下:
以下是建议进行保护的文件:
$ 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 $ chattr +s /var/log/messages $ chattr +s /var/log/stmp
为文件系统进行保护虽然可以提高系统安全性,但是也会在一些情况下造成不便,例如在一些软件的安装与升级时,可能需要去掉相关目录的immutable属性和append-only属性,对日志文件设置了append-only属性也可能会导致日志轮换(logrotate)无法进行。
所以在使用chattr前,需要结合服务器的应用环境来权衡如何设置保护。
而且chattr命令不能保护/、/dev、/tmp、/var等目录:
不正确的设置文件权限会造成安全隐患,及时发现这些隐患可以防范于未然。
以下是一些查找不安全权限的方法:
#对文件: $ find / -type f -perm -2 -o -perm -20 |xargs ls -al #对目录: $ find / -type d -perm -2 -o -perm -20 |xargs ls -ld
$ find / -type f -perm -4000 -o -perm -2000 -print |xargs ls -al
#suid $ find / -user root -perm -2000 -print -exec md5sum () \; #sgid $ find / -user root -perm -4000 -print -exec md5sum () \;
$ find / -nouser -o -nogroup
在linux系统中,/tmp
和/var/tmp
目录用于存放临时文件,但临时文件对所有用户来说都可读可写可执行,这就为系统安全留下了安全隐患,这些目录可能被攻击者留下恶意脚本进行信息收集或伪装。但如果修改临时文件的读写权限,就有可能影响系统和程序的正常运行。因此,这些目录需要通过特殊设置来保护。
而/dev/shm
是一个内存共享设备,在linux启动时会默认加载/dev/shm
,/dev/shm
在加载时,使用的是tmpfs文件系统,而tmpfs文件系统是一个内存文件系统,会将该文件系统中的文件全部主流进内存中。这样通过/dev/shm
就可以直接操控系统内存。
保护/tmp
的方法:
/tmp
是独立磁盘分区的话,将/etc/fstab
中的/tmp
挂载属性修改为如下:label=/tmp /tmp ext3 rw,nosuid,noexec,nodey 0 0
其中,
* nosuid:不允许任何suid程序
* noexec:不允许执行脚本程序
* nodev:不存在设备文件
/var
分区下的一个目录,那么可以先将/var/tmp
中的数据移动到/tmp
分区下,然后在/var
做一个指向/tmp
的软连接即可:$ mv /vat/tmp/* /tmp $ ln -s /tmp /var/tmp
/tmp
是根目录下的一个目录,可以通过创建一个loopback文件系统利用linux内核中的loopback特性将文件系统挂载到/tmp
下,然后在挂载时设定挂载选项:$ dd if=/dev/zero of=/dev/tmpfs bs=1m count=10000 $ mke2fs -j /dev/tmpfs $ cp -av /tmp /tmp.old $ mount -o loop,noexec,nosuid,rw /dev/tmpfs /tmp $ chmod 1777 /tmp $ mv -f /tmp.old/* /tmp/ $ rm -rf /tmp.old
然后编辑/etc/fstab
,添加如下内容:
/dev/tmpfs /tmp ext3 loop,nosuid,noexec,rw 0 0
完成后,建议验证一下配置是否生效,在tmp文件夹下建立一个shell文件尝试执行。
保护/dev/shm
的方法:
/etc/fstab
实现,将/etc/fstab
中挂载属性修改为如下所示:tmpfs /dev/shm tmpfs defaults,nosuid,noexec,rw 0 0
如对本文有疑问, 点击进行留言回复!!
linux下文本编辑器vim的使用方法(复制、粘贴、替换、行号、撤销、多文件操作)
网友评论