黑帽联盟

 找回密码
 会员注册
查看: 2514|回复: 0
打印 上一主题 下一主题

[系统安全] linux系统下/tmp、/var/tmp、/dev/shm安全设定

[复制链接]

895

主题

38

听众

3323

积分

管理员

Rank: 9Rank: 9Rank: 9

  • TA的每日心情
    无聊
    6 天前
  • 签到天数: 1644 天

    [LV.Master]伴坛终老

    /tmp、/var/tmp、/dev/shm安全设定

    在Linux系统中,用来存放临时文件主要有两个目录或分区,分别是/tmp和/var/tmp。存储临时文件的目录或分区有个共同点,就是所有用户可读写、可执行,这就为系统留下了安全隐患。攻击者可以将病毒或者木马脚本放到临时文件的目录下进行信息收集或伪装,严重影响服务器的安全,此时,如果修改临时目录的读写执行权限,还有可能影响系统上应用程序正常运行,因此,如果要兼顾两者,就需要对这两个目录或分区进行特殊设置。

    /dev/shm是Linux下的一个共享内存设备,在Linux启动的时候系统默认会加载/dev/shm,被加载的/dev/shm使用的是tmpfs文件系统,而tmpfs是一个内存文件系统,存储到tmpfs文件系统的数据会完全驻留在RAM中,这样通过/dev/shm就可以直接操控系统内存,这将非常危险,因此如何保证/dev/shm安全也至关重要。

    对于/tmp的安全设置,需要看/tmp是一个独立磁盘分区,还是一个根分区下的文件夹。如果/tmp是一个独立的磁盘分区,那么设置非常简单,修改/etc/fstab文件中/tmp分区对应的挂载属性,加上nosuid、noexec、nodev三个选项即可,修改后的/tmp分区挂载属性类似如下:

    LABEL=/tmp     /tmp          ext3    rw,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文件系统来利用Linux内核的loopback特性将文件系统挂载到/tmp下,然后在挂载时指定限制加载选项即可。一个简单的操作示例如下:


    [root@server ~]# dd if=/dev/zero of=/dev/tmpfs bs=1M count=10000
    [root@server ~]# mke2fs -j /dev/tmpfs  
    [root@server ~]# cp -av /tmp /tmp.old  
    [root@server ~]# mount -o loop,noexec,nosuid,rw /dev/tmpfs /tmp  
    [root@server ~]# chmod 1777 /tmp  
    [root@server ~]# mv -f /tmp.old/* /tmp/  
    [root@server ~]# rm -rf /tmp.old
    最后,编辑/etc/fstab,添加如下内容,以便系统在启动时自动加载loopback文件系统:


    /dev/tmpfs /tmp ext3 loop,nosuid,noexec,rw 0 0
    为了验证挂载时指定限制加载选项是否生效,可以在/tmp分区创建一个shell文件,操作如下:


    [root@tc193 tmp]# ls -al|grep shell  
    -rwxr-xr-x   1 root root    22 Oct  6 14:58 shell-test.sh  
    [root@server ~]# pwd  
    /tmp  
    [root@tc193 tmp]# ./shell-test.sh  
    -bash: ./shell-test.sh: Permission denied
    可以看出,虽然文件有可执行属性,但是在/tmp分区已经无法执行任何文件了。

    最后介绍如何修改/dev/shm的安全设置。由于/dev/shm是一个共享内存设备,因此也可以通过修改/etc/fstab文件设置而实现,在默认情况下,/dev/shm通过defaults选项来加载,这样保证其安全性是不够的,需要修改/dev/shm的挂载属性,操作如下:


    tmpfs   /dev/shm    tmpfs   defaults,nosuid,noexec,rw  0 0
    通过这种方式限制了任何suid程序,同时也限制了/dev/shm的可执行权限,系统安全性得到进一步提升。
    帖子永久地址: 

    黑帽联盟 - 论坛版权1、本主题所有言论和图片纯属会员个人意见,与本论坛立场无关
    2、本站所有主题由该帖子作者发表,该帖子作者与黑帽联盟享有帖子相关版权
    3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和黑帽联盟的同意
    4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
    5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
    6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
    7、黑帽联盟管理员和版主有权不事先通知发贴者而删除本文

    勿忘初心,方得始终!
    您需要登录后才可以回帖 登录 | 会员注册

    发布主题 !fastreply! 收藏帖子 返回列表 搜索
    回顶部