歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Unix知識 >> Unix教程

高手晉級之網絡過載攻擊完全解析


  引:在網絡過載攻擊中,一個共享的資源或者服務由於需要處理大量的請求,以至於無法滿足從其他用戶到來的請求。
  
  在網絡過載攻擊中,一個共享的資源或者服務由於需要處理大量的請求,以至於無法滿足從其他用戶到來的請求。例如一個用戶生成了大量的進程,那麼其他用戶就無法運行自己的進程。如果一個用戶使用了大量的磁盤空間,其他用戶就無法生成新的文件。有效保護系統免遭過載攻擊的辦法是劃分計算機中的資源,將每個用戶的使用量限制在自己的那一份中。另外,還可以讓系統自動檢查是否過載或者重新啟動系統。
  
  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命令可以列出當前程的資源限制。
Copyright © Linux教程網 All Rights Reserved