什麼是導致伺服器崩潰的攻擊
⑴ 伺服器奔潰了,是被cc攻擊了嗎怎麼解決
CC主要是用來攻擊頁面的。就是在訪問論壇時,如果這個論壇比較大,訪問的人比較多,打開頁面的速度會比較慢,對不?!一般來說,訪問的人越多,論壇的頁面越多,資料庫就越大,被訪問的頻率也越高,佔用的系統資源也就相當可觀,現在知道為什麼很多空間服務商都說大家不要上傳論壇,聊天室等東西了吧。
一個靜態頁面不需要伺服器多少資源,甚至可以說直接從內存中讀出來發給你就可以了,但是論壇就不一樣了,我看一個帖子,系統需要到資料庫中判斷我是否有讀讀帖子的許可權,如果有,就讀出帖子裡面的內容,顯示出來——這里至少訪問了2次資料庫,如果資料庫的體積有200MB大小,系統很可能就要在這200MB大小的數據空間搜索一遍,這需要多少的CPU資源和時間?如果我是查找一個關鍵字,那麼時間更加可觀,因為前面的搜索可以限定在一個很小的范圍內,比如用戶許可權只查用戶表,帖子內容只查帖子表,而且查到就可以馬上停止查詢,而搜索肯定會對所有的數據進行一次判斷,消耗的時間是相當的大。
CC就是充分利用了這個特點,模擬多個用戶(多少線程就是多少用戶)不停的進行訪問(訪問那些需要大量數據操作,就是需要大量CPU時間的頁面)。很多朋友問到,為什麼要使用代理呢?因為代理可以有效地隱藏自己的身份,也可以繞開所有的防火牆,因為基本上所有的防火牆都會檢測並發的TCP/IP連接數目,超過一定數目一定頻率就會被認為是Connection-Flood。
使用代理攻擊還能很好的保持連接,我們這里發送了數據,代理幫我們轉發給對方伺服器,我們就可以馬上斷開,代理還會繼續保持著和對方連接(我知道的記錄是有人利用2000個代理產生了35萬並發連接)。
可能很多朋友還不能很好的理解,我來描述一下吧。我們假設伺服器A對Search.asp的處理時間需要0.01S(多線程只是時間分割,對結論沒有影響),也就是說他一秒可以保證100個用戶的Search請求,伺服器允許的最大連接時間為60s,那麼我們使用CC模擬120個用戶並發連接,那麼經過1分鍾,伺服器的被請求了7200次,處理了6000次,於是剩下了1200個並發連接沒有被處理。有的朋友會說:丟連接!丟連接!問題是伺服器是按先來後到的順序丟的,這1200個是在最後10秒的時候發起的,想丟?!還早,經過計算,伺服器滿負開始丟連接的時候,應該是有7200個並發連接存在隊列,然後伺服器開始120個/秒的丟連接,我們發動的連接也是120個/秒,伺服器永遠有處理不完的連接,伺服器的CPU 100%並長時間保持,然後丟連接的60秒伺服器也判斷處理不過來了,新的連接也處理不了,這樣伺服器達到了超級繁忙狀態。
蝴蝶:我們假設伺服器處理Search只用了0.01S,也就是10毫秒(這個速度你可以去各個有開放時間顯示的論壇看看),我們使用的線程也只有120,很多伺服器的丟連接時間遠比60S長,我們的使用線程遠比120多,可以想像可怕了吧,而且客戶機只要發送了斷開,連接的保持是代理做的,而且當伺服器收到SQL請求,肯定會進入隊列,不論連接是否已經斷開,而且伺服器是並發的,不是順序執行,這樣使得更多的請求進入內存請求,對伺服器負擔更大。
當然,CC也可以利用這里方法對FTP進行攻擊,也可以實現TCP-FLOOD,這些都是經過測試有效的。
防範方法
說了攻擊原理,大家肯定會問,那麼怎麼防禦?使用硬體防火牆我不知道如何防範,除非你完全屏蔽頁面訪問,我的方法是通過頁面的編寫實現防禦。
1. 使用Cookie認證。這時候朋友說CC裡面也允許Cookie,但是這里的Cookie是所有連接都使用的,所以啟用IP+Cookie認證就可以了。
2. 利用Session。這個判斷比Cookie更加方便,不光可以IP認證,還可以防刷新模式,在頁面里判斷刷新,是刷新就不讓它訪問,沒有刷新符號給它刷新符號。給些示範代碼吧,Session:
<%if session(「refresh」)<> 1 then
Session(「refresh」)=session(「refresh」)+1
Response.redirect 「index.asp」
End if
%>
這樣用戶第一次訪問會使得Refresh=1,第二次訪問,正常,第三次,不讓他訪問了,認為是刷新,可以加上一個時間參數,讓多少時間允許訪問,這樣就限制了耗時間的頁面的訪問,對正常客戶幾乎沒有什麼影響。
3. 通過代理發送的HTTP_X_FORWARDED_FOR變數來判斷使用代理攻擊機器的真實IP,這招完全可以找到發動攻擊的人,當然,不是所有的代理伺服器都發送,但是有很多代理都發送這個參數。詳細代碼:
<%
Dim fsoObject
Dim tsObject
dim file
if Request.ServerVariables("HTTP_X_FORWARDED_FOR")="" then
response.write "無代理訪問"
response.end
end if
Set fsoObject = Server.CreateObject("Scripting.FileSystemObject")
file = server.mappath("CCLog.txt")
if not fsoObject.fileexists(file) then
fsoObject.createtextfile file,true,false
end if
set tsObject = fsoObject.OpenTextFile(file,8)
tsObject.Writeline Request.ServerVariables("HTTP_X_FORWARDED_FOR")&"["&Request.ServerVariables("REMOTE_ADDR")&"]"&now()
Set fsoObject = Nothing
Set tsObject = Nothing
response.write "有代理訪問"
%>
這樣會生成CCLog.txt,它的記錄格式是:真實IP [代理的IP] 時間,看看哪個真實IP出現的次數多,就知道是誰在攻擊了。將這個代碼做成Conn.asp文件,替代那些連接資料庫的文件,這樣所有的資料庫請求就連接到這個文件上,然後馬上就能發現攻擊的人。
4. 還有一個方法就是把需要對數據查詢的語句做在Redirect後面,讓對方必須先訪問一個判斷頁面,然後Redirect過去。
5. 在存在多站的伺服器上,嚴格限制每一個站允許的IP連接數和CPU使用時間,這是一個很有效的方法。
CC的防禦要從代碼做起,其實一個好的頁面代碼都應該注意這些東西,還有SQL注入,不光是一個入侵工具,更是一個DDOS缺口,大家都應該在代碼中注意。舉個例子吧,某伺服器,開動了5000線的CC攻擊,沒有一點反應,因為它所有的訪問資料庫請求都必須一個隨機參數在Session裡面,全是靜態頁面,沒有效果。突然發現它有一個請求會和外面的伺服器聯系獲得,需要較長的時間,而且沒有什麼認證,開800線攻擊,伺服器馬上滿負荷了。
代碼層的防禦需要從點點滴滴做起,一個腳本代碼的錯誤,可能帶來的是整個站的影響,甚至是整個伺服器的影響,慎之!
⑵ 伺服器出現崩潰是什麼原因呢
伺服器崩潰的幾種原因第一:高並發流量或請求超過伺服器承受力
無論是企業和個人在租用伺服器的時候都會受到峰值承受限制的,一旦超過伺服器的承受能力,就會導致伺服器癱瘓,應用程序暫停,網站無法訪問。伺服器都是有峰值限制的,不可能承受無上限的並發能力。而造成伺服器癱瘓的原因就是在同一段時間內,訪問人數多,造成高流量的突進。超出了伺服器的承受范圍。這種例子我們經常可以看到,比如雙11期間,很多公司為了應對雙11的高流量,開啟的緊急避險措施和大規模的伺服器負載能力。還有春運期間,12306網站由於受到高並發的問題,也會頻繁的出現崩潰。
第二:磁碟空間不足
導致伺服器無法正常運行的原因也有可能是磁碟空間溢出導致的。企業的網路管理員應該實時關注磁碟的使用情況,並且要在規定的時間把磁碟儲存的數據備份到另外的存儲設備裡面,確保數據無遺失,推薦相關閱讀:哪些網站應該使用伺服器呢?
伺服器的磁碟大部分的資源都是被日誌文件佔用了,包括web伺服器,資料庫等日誌信息都包括其中,以及應用程序伺服器日誌文件均與內存泄漏是同等的危害。我們可以採取措施保護我們的數據和日誌文件,日誌文件對應用程序進行異地存儲。日誌文件系統空間如果滿了,則web伺服器將自動被掛起,但是機器本身癱瘓和宕機的幾率就會大大降低。
第三:伺服器超載
連接web伺服器都是用一個線程鏈接的,web伺服器會在線程用過之後自動掛起,不會再未已鏈接的線程提供任何服務。如果我們用了負載機制,那麼如果該伺服器沒有響應,則該伺服器的負載則會自動的轉移到其他web伺服器上,這個操作會使伺服器一個接一個的用光線程。這中操作可能會導致整個伺服器機組被掛起,操作系統同時還有可能在不斷接收新的鏈接,而我們的web伺服器無法未其提供服務,致使伺服器崩潰。
第四:伺服器遭到惡意攻擊
網路科技的不斷發展同時,黑客的技術和滲透也是很強的,伺服器和系統遭受到攻擊已經是普遍存在的了。所有伺服器都會面臨這個問題,這個是無法預測的危險,我們只能實時做好安全防護,將被攻擊的風險降至最低。
⑶ 不少網友反映飛書伺服器崩了,造成伺服器崩潰的原因是什麼
飛書這款軟體還是非常好的,大家也是可以在飛書這款軟體上進行溝通和交流。很多人也都覺得飛書這款軟體比較適合開會議的時候使用,所以說很多的人也都會選擇下載這款軟體。如果使用的人比較多,那麼也會造成這款軟體出現崩潰的現象。不少網友也都反映道,飛書這款軟體的伺服器出現了崩潰的情況。之所以有這種現象,這也是因為磁碟空間溢出所導致的。所以說大家也是應該很好的看待這款軟體,畢竟每一款伺服器也是有一定的承受限制。
黑客的技術和滲透力很強
隨著網路科技不斷的發展,黑客的技術和滲透力也是比較強的。如果發現伺服器崩潰,那麼也是出現了不可預測的危險。所以說大家也是應該重視這個情況,然後把被攻擊的風險率降低到最小。這樣也能夠維護一個比較好的網路環境,還能夠方便人們更好的使用辦公軟體。
⑷ 求助伺服器崩潰原因和解決方法
在計算機網路日益普及的今天,計算機安全不但要求防治計算機病毒,而且要提高系統抵抗黑客非法入侵的能力,還要提高對遠程數據傳輸的保密性,避免在傳輸途中遭受非法竊取。下面壹基比小喻來給你們講講伺服器託管站點崩潰的幾大原因。
第一,內存泄漏
C/C++程序還可能產生另一個指針問題:丟失對已分配內存的引用。當內存是在子程序中被分 配時,通常會出現這種問題,其結果是程序從子程序中返回時不會釋放內存。如此一來,對已分配的內存的引用就會丟失,只要操作系統還在運行中,則進程就會一 直使用該內存。這樣的結果是,曾佔用更多的內存的程序會降低系統性能,直到機器完全停止工作,才會完全清空內存。
第二,C指針錯誤
用C或C++編寫的程序,如Web伺服器API模塊,有可能導致系統的崩潰,因為只要間接引 用指針(即,訪問指向的內存)中出現一個錯誤,就會導致操作系統終止所有程序。另外,使用了糟糕的C指針的Java模擬量(analog)將訪問一個空的 對象引用。Java中的空引用通常不會導致立刻退出JVM,但是前提是程序員能夠使用異常處理方法恰當地處理錯誤。在這方面,Java無需過多的關注,但 使用Java對可靠性進行額外的度量則會對性能產生一些負面影響。
第三,資料庫中的臨時表不夠用
許多資料庫的臨時表(cursor)數目都是固定的,臨時表即保留查詢結果的內存區域。在臨時表中的數據都被讀取後,臨時表便會被釋放,但大量同時進行的查詢可能耗盡數目固定的所有臨時表。這時,其他的查詢就需要列隊等候,直到有臨時表被釋放時才能再繼續運行。
第四,線程死鎖
由多線程帶來的性能改善是以可靠性為代價的,主要是因為這樣有可能產生線程死鎖。線程死鎖 時,第一個線程等待第二個線程釋放資源,而同時第二個線程又在等待第一個線程釋放資源。我們來想像這樣一種情形:在人行道上兩個人迎面相遇,為了給對方讓 道,兩人同時向一側邁出一步,雙方無法通過,又同時向另一側邁出一步,這樣還是無法通過。雙方都以同樣的邁步方式堵住了對方的去路。假設這種情況一直持續 下去,這樣就不難理解為何會發生死鎖現象了。
第五,磁碟已滿
導致系統無法正常運行的最可能的原因是磁碟已滿。一個好的網路管理員會密切關注磁碟的使用情況,隔一定的時間,就需要將磁碟上的一些負載轉存到備份存儲介質中(例如磁帶)。
日誌文件會很快用光所有的磁碟空間。Web伺服器的日誌文件、SQL*Net的日誌文件、 JDBC日誌文件,以及應用程序伺服器日誌文件均與內存泄漏有同等的危害。可以採取措施將日誌文件保存在與操作系統不同的文件系統中。日誌文件系統空間已 滿時Web伺服器也會被掛起,但機器自身被掛起的幾率已大大減低。
第六,伺服器超載
Netscape Web伺服器的每個連接都使用一個線程。Netscape Enterprise Web伺服器會在線程用完後掛起,而不為已存在的連接提供任何服務。如果有一種負載分布機制可以檢測到伺服器沒有響應,則該伺服器上的負載就可以分布到其 它的Web伺服器上,這可能會致使這些伺服器一個接一個地用光所有的線程。這樣一來,整個伺服器組都會被掛起。操作系統級別可能還在不斷地接收新的連接, 而應用程序(Web伺服器)卻無法為這些連接提供服務。用戶可以在瀏覽器狀態行上看到connected(已連接)的提示消息,但這以後什麼也不會發生。
總之,還有許多因素也極有可能導致伺服器租用或伺服器託管站點無法工作。有許多種原因可能導致Web站點無法正常工作,這使得系統地檢查所有問題變得很困難。