在Linux系统中,至少有两个目录保存着系统的临时文件,一个就是/tmp,另外一个是/var/tmp。这两个目录有一个共同点就是所有用户在该目录下拥有可读写,可执行的权限,参考截图:
因为两个目录的权限的问题,攻击者可以把病毒或者木马文件放到这些临时目录下,用于信息的收集或者伪装运行系统的程序而实际上运行自己的程序。但是如果去修改临时目录的读写权限,则会影响系统上应用程序的正常运行。为了解决这个问题,则必须对这两个目录做特殊的处理。 l /tmp是一个独立的磁盘分区 这种情况下的处理最简单,直接修改/etc/fstab文件中tmp分区的挂载属性,加上nosuid(不允许任何suid程序),noexec(在这个分区不能执行任何脚本等程序),nodev(不存在设备文件),修改后的挂载属性应该和截图类似:
在挂载属性调整完毕后重新挂载/tmp分区,确保设置生效。 对于/var/tmp目录来说,如果有自己的独立分区的话就参考上述修改就可以,但如果只是/var目录下的一个子目录,则把目录下的所有数据移动到/tmp下,然后做一个软连接指向/tmp就可以了,具体操作为:
l /tmp只是根目录下的一个子目录 这种情况的配置要麻烦一点,可以通过创建一个loopback文件系统(拿文件模拟为块设备),然后通过loopback特性挂载该文件系统到/tmp下,在挂载时指定前文的安全设置就可以了,操作实例如下:
2. mke2fs -t ext4 /dev/testfs (格式化文件系统) 3. cp -a /tmp /tmp.bak (把之前存在于/tmp下的文件拷贝出来,以免再后面执行挂载的时候覆盖掉之前的文件) 4. mount -o loop,noexec,nosuid,rw /dev/testfs /tmp(挂载到tmp目录下) 5. chmod 1777 /tmp 6. mv -f /tmp.bak/* /tmp 7. rm -rf /tmp.bak 8. echo "/dev/testfs /tmp ext4 loop,nosuid,noexec,rw 0 0">>/etc/fstab(写入配置文件,下次开机自动挂载) 最后,我们测试一下挂载设置之后是否有效,这边新建一个test.sh文件,具有执行权限,实验如截图:
从截图可以看到虽然具有执行权限,但是在/tmp下面已经无法执行任何文件了. |