Linux 系統(tǒng) tmp 目錄的安全設(shè)置
在Linux系統(tǒng)中,至少有兩個(gè)目錄保存著系統(tǒng)的臨時(shí)文件,一個(gè)就是 /tmp,另外一個(gè)是 /var/tmp。這兩個(gè)目錄有一個(gè)共同點(diǎn)就是所有用戶在該目錄下?lián)碛锌勺x寫,可執(zhí)行的權(quán)限,參考截圖:

因?yàn)閮蓚€(gè)目錄的權(quán)限的問題,攻擊者可以把病毒或者木馬文件放到這些臨時(shí)目錄下,用于信息的收集或者偽裝運(yùn)行系統(tǒng)的程序而實(shí)際上運(yùn)行自己的程序。但是如果去修改臨時(shí)目錄的讀寫權(quán)限,則會(huì)影響系統(tǒng)上應(yīng)用程序的正常運(yùn)行。為了解決這個(gè)問題,則必須對(duì)這兩個(gè)目錄做特殊的處理。
/tmp 是一個(gè)獨(dú)立的磁盤分區(qū)
這種情況下的處理最簡(jiǎn)單,直接修改 /etc/fstab 文件中 tmp 分區(qū)的掛載屬性,加上 nosuid(不允許任何suid程序),noexec(在這個(gè)分區(qū)不能執(zhí)行任何腳本等程序),nodev(不存在設(shè)備文件) 參數(shù)。
修改后的掛載屬性應(yīng)該和截圖類似:

在掛載屬性調(diào)整完畢后重新掛載/tmp分區(qū),確保設(shè)置生效。
對(duì)于 /var/tmp 目錄來說,如果有自己的獨(dú)立分區(qū)的話就參考上述修改就可以,但如果只是 /var 目錄下的一個(gè)子目錄,則把目錄下的所有數(shù)據(jù)移動(dòng)到 /tmp 下,然后做一個(gè)軟連接指向 /tmp 就可以了,具體操作為:
mv /var/tmp/* /tmp
ln -s /tmp /var/tmp
/tmp只是根目錄下的一個(gè)子目錄
這種情況的配置要麻煩一點(diǎn),可以通過創(chuàng)建一個(gè) loopback 文件系統(tǒng)(拿文件模擬為塊設(shè)備),然后通過 loopback 特性掛載該文件系統(tǒng)到 /tmp 下,在掛載時(shí)指定前文的安全設(shè)置就可以了,操作實(shí)例如下:
dd if=/dev/zero of=/dev/testfs bs=1M count=1000 (這里生成的文件大小是1G,如果需要更改大小,修改count后面的值就可以了)
mke2fs -t ext4 /dev/testfs (格式化文件系統(tǒng))
cp -a /tmp /tmp.bak (把之前存在于/tmp下的文件拷貝出來,以免再后面執(zhí)行掛載的時(shí)候覆蓋掉之前的文件)
mount -o loop,noexec,nosuid,rw /dev/testfs /tmp(掛載到tmp目錄下)
chmod 1777 /tmp
mv -f /tmp.bak/* /tmp
rm -rf /tmp.bakecho "/dev/testfs /tmp ext4 loop,nosuid,noexec,rw 0 0">>/etc/fstab(寫入配置文件,下次開機(jī)自動(dòng)掛載)
最后,測(cè)試一下掛載設(shè)置之后是否有效:
新建一個(gè)test.sh文件,具有執(zhí)行權(quán)限,實(shí)驗(yàn)如截圖:


從截圖可以看到雖然具有執(zhí)行權(quán)限,但是在 /tmp 下面已經(jīng)無法執(zhí)行任何文件了.