我們都知道Unix操作系統入侵者常常使用的一種利用系統漏洞的方式是堆棧溢出,他們在堆棧裡巧妙地插入一段代碼,利用它們的溢出來執行,以獲得對系統的某種權限。如何防止Unix操作系統在堆棧中執行代碼?
要讓你的Unix操作系統在堆棧緩沖溢出攻擊中更不易受侵害,你可以在/etc/system裡加上如下語句:
- set noexec_user_stack=1
- set noexec_user_stack_log =1
第一句可以防止在堆棧中執行插入的代碼,第二句則是在入侵者想運行exploit的時候會做記錄,一旦重啟Unix操作系統機器,這些改變就會生效。如果這不是一個你可以關閉的Unix操作系統,那麼你用adb來改變一個運行中的Unix操作系統的參數也是可能的。
當然會有些合法使用可執行堆棧的程序在你做出如上改變後而不能正常運行。所幸的是這樣的程序的並不多,我們所知的就只有GNU ada 編譯器。
ARP
Unix操作系統有關ARP協議的細節,在這裡我們就不再詳細介紹了。對於sun的系統,核心默認的ARP表過期的時間是5分鐘,並且可以調節.另外一張表是ip層的路由表,它和arp表配合記錄動態路由信息,20分鐘過期,最後一個特性是”無償ARP” ,即系統廣播自己的硬件地址。這個特性用來診斷是否存在相同的硬件地址,另外也用來生成硬件地址的變動通知。
1)Unix操作系統ARP攻擊
針對ARP的攻擊主要有兩種,一種是DOS,一種是Spoof。ARP欺騙往往應用於一個內部網絡,我們可以用它來擴大一個已經存在的網絡安全漏洞。如果你可以入侵一個子網內的機器,其它的機器安全也將受到ARP欺騙的威脅。同樣,利用APR的DOS甚至能使整個子網癱瘓。
2)Unix操作系統對ARP攻擊的防護
防止ARP攻擊是比較困難的,修改協議也是不大可能。但是有一些工作是可以提高本地網絡的安全性。
首先,你要知道,如果一個錯誤的記錄被插入ARP或者IP route表,可以用兩種方式來刪除:
a. 使用arp -d host_entry
b. 自動過期,由系統刪除
這樣,可以采用以下的一些方法:
1). Unix操作系統減少過期時間
- #ndd -set /dev/arp arp_cleanup_interval 60000
- #ndd -set /dev/ip ip_ire_flush_interval 60000
- 6000060000=60000毫秒 默認是300000
加快過期時間,並不能避免攻擊,但是使得攻擊更加困難,帶來的影響是在網絡中會大量的出現ARP請求和回復,請不要在繁忙的網絡上使用。
2). Unix操作系統建立靜態ARP表
這是一種很有效的方法,而且對系統影響不大。缺點是破壞了動態ARP協議。可以建立如下的文件:
test.cnns.net 08:00:20:ba:a1:f2
user. cnns.net 08:00:20:ee:de:1f
使用arp -f filename加載進去,這樣的ARP映射將不會過期和被新的ARP數據刷新,除非使用arp -d才能刪除。但是一旦合法主機的網卡硬件地址改變,就必須手工刷新這個arp文件。這個方法,不適合於經常變動的網絡環境。
3).Unix操作系統禁止ARP
可以通過ifconfig interface -arp 完全禁止ARP,這樣,網卡不會發送ARP和接受ARP包。但是使用前提是使用靜態的ARP表,如果不在apr表中的計算機 ,將不能通信。這個方法不適用與大多數網絡環境,因為這增加了網絡管理的成本。但是對小規模的安全網絡來說,還是有
效和可行的。
這樣,我們就完成了關於如何防止Unix操作系統在堆棧中執行代碼的知識,以及其他相關知識的介紹。