1.進程過載的問題
最簡單的拒絕服務的攻擊是進程攻擊。在進程攻擊中,―個用戶可以阻止在同時間內另一個用戶使用計算機。進程攻擊通常發生在共享的計算機中,如果沒有人與自己爭奪使用計算機,就沒有必要使用這種攻擊方法。這種攻擊對現在的UNIX系統沒有多大效果,因為現在的UNIX系統限制任何UID(除了o)使用的進程數目。這個限制叫做MAXUPROC,當系統構築時,在核心進行設定,一些系統允許在啟動時設定這個值。
例如soIarts允許在/etc/system檔案中設定這個值。set NAXUP助C;100進行這種攻擊的用戶消耗的是他自己的進程數目,而不是別人的。一個超級用戶可以使用ps命令查看一個進程的子孫數目,使用kill命令來殺死那些無用進程。有時候不能一個又―個地殺死這些進程,因為剩餘的進程會生成新的進程。一個好的辦法是先用kill命令停止這些進程,然後殺死它們。另外可以同時殺死一組進程。在許多情況下,一個用戶生成了許多進程,這些進程是同一組的。要找出進程組,可使用ps命令的選項,然後一次殺死這些進程。
在現在的UNIX系統中,一個具有超級用戶許可權的用戶仍舊可以通過使用進程攻擊的方法來使系統停機。這是因為對超級用戶能使進程數目沒有什麼限制,但是作為一個超級用戶,他還是可以關閉系統,或者執行其他命令,所以這不是一個很重要的問題。除非超級用戶正在運行的程式有一個極值,沒有人可以得到一個進程,哪怕僅僅是登錄。還有其他一些情況可能使系統過載。雖然沒使一個用戶到達他自己的最大進程數目,但由於太多的用戶在使用計算機,系統還是達到了一個可允許的最大進程數。另外一個可能性是系統配置錯誤,一個用戶允許使用的進程樹本身已等於或者超出了系統允許的最大進程數目。當系統中有太多的進程時,沒有更好的辦法來糾正,只有讓系統重啟。這是因為:用戶無法運行ps命令來決定有多少進程需要殺死,因為執行ps命令也需要生成進程。如果網路管理員當前沒有登錄為超級用戶,則也不能使用su或者是10gin命令,因為這兩個命令同樣要生成新的進程。針對這種情況,可以使用exec% exec /b 2n/su Pass word:#需要注意的是,不要敲錯了口令,因為程式會執行,但執行完畢之後,將自動地退出系統。
如果用戶遇到了rk於太多進程而造成的系統飽和,重新啟動系統。最簡單的方法是按機箱上的RESET鍵。但是,這會破壞磁碟上的檔案塊,因為系統還沒有來得及刷新磁碟。沒有多少系統被設計得能在突然關閉時,還執行正常關閉的那些工作。比較好的辦法是殺死一些進程,然後進入單用戶模式。
在現代的unix系統中,超級用戶可以傳送一個SIGTEBM信號給除了系統進程和自己進程之外的所有進程:#KILL-TERM-1#
如果當前使用的UNIX沒有這一點可以執行如下命令:#KILL-TERM1向init進程傳送一個SIGTERM信號。UNIX自動殺死所有的進程,進入單用戶模式,這時,可以執行sync命令,然後重新啟動系統。
2.系統過載攻擊
另一種流行的基於進程的攻擊是一個用戶產生了許多進程,消耗了大量的cpu時間。這種攻擊減少了其他用戶可用的CPU處理時間。例如,某用戶使用了十個find命令,並使用則在一些目錄中查找檔案,這些都可以使系統運行得像爬行一樣慢。
比較好的辦法是,教育用戶合理地共享系統,鼓勵用戶使用nice命令降低後台運行的進程的優先權。另外,也可以使用at和batch命令,將一些長的任務安排在系統不是很繁忙的時候去執行。對那些故意或者重複這種行為的用戶可以採取一些措施。
如果系統過載了,用root登錄,將自己的優先紐設為較高的值。然後使用ps命令觀察運行的進程,並使用kill命令。
3.磁碟攻擊
攻擊方式是填充磁碟空間個用戶向磁碟填充了大量的檔案,其他用戶不能生成檔案做其它有用的事.
磁碟滿攻擊
du命令可以發現系統中磁碟分區空間的使用情況。du命令遞歸地查找目錄樹,列出每一個使用了多少塊。也可以使用flnd命令列出那些大檔案的檔案名稱。可以使用find命令的-size選項,列出檔案大小超過一定慎的檔案。
quot命令可以根據每一個用戶來總結檔案系統的使用情況。使用―f選項,quot列印出每一個用戶使用的檔案數量和使用的塊數。
UNIX檔案系統使用inode來存放檔案的信息。一個可以便磁碟不能使用的途徑是消耗所有磁碟上的空閒inode,使之不能生成新的檔案。一個用戶可能生成了上千個空檔案。這是一個很令人困惑的問題,因為df命令提示有許多可用的空間,然而當生成檔案時,卻得到一個錯誤。這是因為每一個新檔案、目錄、管道檔案都需要一個inode結構去描述。如果可用的inode消耗盡了,系統便無法生成新檔案,但此時,系統還有可用的磁碟空間。
可以使用df命令的―I選項來查看有多少空閒的inode。通常,可以將磁碟劃分成一些小的分區,保護磁碟滿攻擊。將不同用戶的主目錄放到不同的分區中。用這種方式,如果一個分區被充滿了,別的用戶並不受影響。
另一個有效的辦法是,使用在許多現代unix系統中都有的quota系統,來保護系統不受這種攻擊。通過磁碟配額系統,每一個用戶可以確定有多少inode可用;有多少磁碟塊可用.
防止拒絕服務的攻擊
許多現代的UNIX允許管理員設定一些限制,如限制可以使用的最大記憶體、CPU時間以及可以生成的最大檔案等。如果當前正在開發―個新的程式,而又不想偶然地使系統變得非常緩慢,或者使其它分享這台主機的用戶無法使用,這些限制是很有用的。Korn Shell的ulimit命令和Shell的Iimit命令可以列出當前程的資源限制。