DDoS簡介
“拒絕服務(Denial-Of-Service)***就是消耗目標主機或者網絡的資源,從而干擾或者癱瘓其爲合法用戶提供的服務。”國際權威機構“SecurityFAQ”給出的定義。
DDOS則是利用多臺計算機機,採用了分佈式對單個或者多個目標同時發起DoS***。其特點是:目標是“癱瘓敵人”,而不是傳統的破壞和竊密;利用國際互聯網遍佈全球的計算機發起***,難於追蹤。
一、DDos***原理
DDOS是英文DistributedDenialofService的縮寫,即“分佈式拒絕服務”,DDoS***原理大致分爲以下三種:
1.通過發送大的數據包堵塞服務器帶寬造成服務器線路癱瘓;
2.通過發送特殊的數據包造成服務器TCP/IP協議模塊耗費CPU內存資源最終癱瘓;
3.通過標準的連接建立起連接後發送特殊的數據包造成服務器運行的網絡服務軟件耗費CPU內存最終癱瘓(比如WEBSERVER、FTPSERVER、遊戲服務器等)。
二、DDoS***種類可以分爲以下幾種:
由於肉雞的***可以隨時更新***的數據包和***方式,所以新的***更新非常快這裏我們介紹幾種常見的***的原理和分類
1、SYN變種***
發送僞造源IP的SYN數據包但是數據包不是64字節而是上千字節,這種***會造成一些防火牆處理錯誤導致鎖死,消耗服務器CPU內存的同時還會堵塞帶寬。
2、TCP混亂數據包***
發送僞造源IP的TCP數據包,TCP頭的TCPFlags部分是混亂的可能是syn,ack,syn+ack,syn+rst等等,會造成一些防火牆處理錯誤導致鎖死,消耗服務器CPU內存的同時還會堵塞帶寬。
3、針對UDP協議***
很多聊天室,視頻音頻軟件,都是通過UDP數據包傳輸的,***者針對分析要***的網絡軟件協議,發送和正常數據一樣的數據包,這種***非常難防護,一般防護牆通過攔截***數據包的特徵碼防護,但是這樣會造成正常的數據包也會被攔截,
4、針對WEBServer的多連接***
通過控制大量肉雞同時連接訪問網站,造成網站無法處理癱瘓,這種***和正常訪問網站是一樣的,只是瞬間訪問量增加幾十倍甚至上百倍,有些防火牆可以通過限制每個連接過來的IP連接數來防護,但是這樣會造成正常用戶稍微多打開幾次網站也會被封
5、針對WEBServer的變種***
通過控制大量肉雞同時連接訪問網站,一點連接建立就不斷開,一直髮送發送一些特殊的GET訪問請求造成網站數據庫或者某些頁面耗費大量的CPU,這樣通過限制每個連接過來的IP連接數進行防護的方法就失效了,因爲每個肉雞可能只建立一個或者只建立少量的連接。這種***非常難防護,後面給大家介紹防火牆的解決方案
6、針對WEBServer的變種***
通過控制大量肉雞同時連接網站端口,但是不發送GET請求而是亂七八糟的字符,大部分防火牆分析***數據包前三個字節是GET字符然後來進行http協議的分析,這種***,不發送GET請求就可以繞過防火牆到達服務器,一般服務器都是共享帶寬的,帶寬不會超過10M,所以大量的肉雞***數據包就會把這臺服務器的共享帶寬堵塞造成服務器癱瘓,這種***也非常難防護,因爲如果只簡單的攔截客戶端發送過來沒有GET字符的數據包,會錯誤的封鎖很多正常的數據包造成正常用戶無法訪問,後面給大家介紹防火牆的解決方案
7、針對遊戲服務器的***
因爲遊戲服務器非常多,這裏介紹最早也是影響最大的傳奇遊戲,傳奇遊戲分爲登陸註冊端口7000,人物選擇端口7100,以及遊戲運行端口7200,7300,7400等,因爲遊戲自己的協議設計的非常複雜,所以***的種類也花樣倍出,大概有幾十種之多,而且還在不斷的發現新的***種類,這裏介紹目前最普遍的假人***,假人***是通過肉雞模擬遊戲客戶端進行自動註冊、登陸、建立人物、進入遊戲活動從數據協議層面模擬正常的遊戲玩家,很難從遊戲數據包來分析出哪些是***哪些是正常玩家。
三、DDoS防護基本方法:
1、.關閉不必要的服務
1.Alerter[通知選定的用戶和計算機管理警報]
2.ClipBook[啓用“剪貼簿查看器”儲存信息並與遠程計算機共享]
3.DistributedFileSystem[將分散的文件共享合併成一個邏輯名稱,共享出去,關閉後遠程計算機無法訪問共享
4.DistributedLinkTrackingServer[適用局域網分佈式鏈接]
6.IndexingService[提供本地或遠程計算機上文件的索引內容和屬性,泄露信息]
7.Messenger[警報]
8.NetMeetingRemoteDesktopSharing[netmeeting公司留下的客戶信息收集]
9.NetworkDDE[爲在同一臺計算機或不同計算機上運行的程序提供動態數據交換]
10.NetworkDDEDSDM[管理動態數據交換(DDE)網絡共享]
11.RemoteDesktopHelpSessionManager[管理並控制遠程協助]
12.RemoteRegistry[使遠程計算機用戶修改本地註冊表]
13.RoutingandRemoteAccess[在局域網和廣域往提供路由服務.***理由路由服務刺探註冊信息]
14.Server[支持此計算機通過網絡的文件、打印、和命名管道共享]
15.TCP/IPNetBIOSHelper[提供TCP/IP服務上的NetBIOS和網絡上客戶端的NetBIOS名稱解析的支持而使用戶能夠共享文件、打印和登錄到網絡]
16.Telnet[允許遠程用戶登錄到此計算機並運行程序]
17.TerminalServices[允許用戶以交互方式連接到遠程計算機]
18.WindowsImageAcquisition(WIA)[照相服務,應用與數碼攝象機]
2、數據包的連接數從缺省值128或512修改爲2048或更大,以加長每次處理數據包隊列的長度,以緩解和消化更多數據包的連接;
3、將連接超時時間設置得較短,以保證正常數據包的連接,屏蔽非法***包
4、及時更新系統、安裝補丁
5、用負載均衡技術,就是把應用業務分佈到幾臺不同的服務器上
6、流量牽引技術,大流量***最理想防禦方法,但一般是專業硬件防火牆,價格昂貴。
四、判斷網站被DDoS了的表現形式
1、被***主機上有大量等待的TCP連接,用netstat-an命令可看到
2、ping服務器出現丟包嚴重,或無法ping通.
3、CPU佔用率很高,有時候甚至達到100%,嚴重時會出現藍屏死機死機(這種是CC***最常見的現象).
4、連接3389時,晌應很慢或提示計算機太忙,無法接受新連接.
5、網絡中充斥着大量的無用的數據包,源地址爲假.
五、受到DDOS***的應急處理
1、如有富餘的IP資源,可以更換一個新的IP地址,將網站域名指向該新IP;
2、停用80端口,使用如81或其它端口提供HTTP服務,將網站域名指向IP:81
六、防禦DDOS的建議
1、採用高性能的網絡設備
2、充足的網絡帶寬保證
3、安裝專業抗DDOS防火牆
如:冰盾防火牆、金盾防火牆、黑洞防火牆、傲盾防火牆
ddos壓力測試工具http://down.51cto.com/data/241097
如何確認是否受到DDOS***?
netstat -ntu | awk '{print $5}' | grep '^[0-9]\{1,\}' | cut -d ':' -f1 | sort |uniq -c | awk '{printf("ip=%s,connection=%d\n",$2,$1)}'
執行後,顯示所有IP有多少個連接數。一個IP幾個、十幾個連接數都算正常,如果成千上百就肯定不正常了。
linux下防DDOS工具
DDoSdeflate是一款免費的用來防禦和減輕DDoS***的腳本。它通過netstat監測跟蹤創建大量網絡連接的IP地址,在檢測到某個結點超過預設的限制時,該程序會通過APF或IPTABLES禁止或阻擋這些IP.
DDoSdeflate官方網站:http://deflate.medialayer.com/
DDoSdeflate安裝
wget http://www.inetbase.com/scripts/ddos/install.sh //下載安裝腳本 chmod 0700 install.sh //添加權限 ./install.sh //執行
DDoSdeflate卸載
wget http://www.inetbase.com/scripts/ddos/uninstall.ddos //下載卸載腳本 chmod 0700 uninstall.ddos //添加權限 ./uninstall.ddos
DDoSdeflate配置
默認配置文件:/usr/local/ddos/ddos.conf
內容如下:
##### Paths of the script and other files PROGDIR="/usr/local/ddos" PROG="/usr/local/ddos/ddos.sh" IGNORE_IP_LIST="/usr/local/ddos/ignore.ip.list" //IP地址白名單 CRON="/etc/cron.d/ddos.cron" //定時執行程序 APF="/etc/apf/apf" IPT="/sbin/iptables" ##### frequency in minutes for running the script ##### Caution: Every time this setting is changed, run the script with --cron ##### option so that the new frequency takes effect FREQ=1 //檢查時間間隔,默認1分鐘 ##### How many connections define a bad IP? Indicate that below. NO_OF_CONNECTIONS=150 //最大連接數,超過這個數IP就會被屏蔽,一般默認即可 ##### APF_BAN=1 (Make sure your APF version is atleast 0.96) ##### APF_BAN=0 (Uses iptables for banning ips instead of APF) APF_BAN=1 //使用APF還是iptables。推薦使用iptables,將APF_BAN的值改爲0即可。 ##### KILL=0 (Bad IPs are'nt banned, good for interactive execution of script) ##### KILL=1 (Recommended setting) KILL=1 //是否屏蔽IP,默認即可 ##### An email is sent to the following address when an IP is banned. ##### Blank would suppress sending of mails EMAIL_TO="root" //當IP被屏蔽時給指定郵箱發送郵件,推薦使用,換成自己的郵箱即可 ##### Number of seconds the banned ip should remain in blacklist. BAN_PERIOD=600 //禁用IP時間,默認600秒,可根據情況調整
注:如果/usr/local/ddos/ddos.sh統計不正確,可能是啓用ipv6的緣故
大概在117行處內容是這樣的
netstat-ntu|awk'{print$5}'|cut-d:-f1|sort|uniq-c|sort-nr>$BAD_IP_LIST
修改爲:
netstat-ntu|awk'{print$5}'|cut-d:-f1|sed-n'/[0-9]/p'|sort|uniq-c|sort-nr&>$BAD_IP_LIST
即可。
參考文獻:http://itlaowu.blog.51cto.com/1358545/959880linux下防DDOS工具itlaowu
參考文獻:http://hukunlin.blog.51cto.com/545402/337584DDOS專題詳細講解kunlin_hu