Ⅰ linux防火牆如何防禦DDOS攻擊
抵禦DDOS
DDOS,分布式拒絕訪問攻擊,是指黑客組織來自不同來源的許多主機,向常見的埠,如80,25等發送大量連接,但這些客戶端只建立連接,不是正常訪問。由於一般Apache配置的接受連接數有限(通常為256),這些「假」 訪問會把Apache占滿,正常訪問無法進行。
Linux提供了叫ipchains的防火牆工具,可以屏蔽來自特定IP或IP地址段的對特定埠的連接。使用ipchains抵禦DDOS,就是首先通過netstat命令發現攻擊來源地址,然後用ipchains命令阻斷攻擊。發現一個阻斷一個。
*** 打開ipchains功能
首先查看ipchains服務是否設為自動啟動:
chkconfig --list ipchains
輸出一般為:
ipchains 0:off 1:off 2:on 3:on 4:on 5:on 6:off
如果345列為on,說明ipchains服務已經設為自動啟動
如果沒有,可以用命令:
chkconfig --add ipchains
將ipchains服務設為自動啟動
其次,察看ipchains配置文件/etc/sysconfig/ipchains是否存在。如果這一文件不存在,ipchains
即使設為自動啟動,也不會生效。預設的ipchains配置文件內容如下:
# Firewall configuration written by lokkit
# Manual customization of this file is not recommended.
# Note: ifup-post will punch the current nameservers through the
# firewall; such entries will *not* be listed here.
:input ACCEPT
:forward ACCEPT
:output ACCEPT
-A input -s 0/0 -d 0/0 -i lo -j ACCEPT
# allow http,ftp,smtp,ssh,domain via tcp; domain via udp
-A input -p tcp -s 0/0 -d 0/0 pop3 -y -j ACCEPT
-A input -p tcp -s 0/0 -d 0/0 http -y -j ACCEPT
-A input -p tcp -s 0/0 -d 0/0 https -y -j ACCEPT
-A input -p tcp -s 0/0 -d 0/0 ftp -y -j ACCEPT
-A input -p tcp -s 0/0 -d 0/0 smtp -y -j ACCEPT
-A input -p tcp -s 0/0 -d 0/0 ssh -y -j ACCEPT
-A input -p tcp -s 0/0 -d 0/0 domain -y -j ACCEPT
-A input -p udp -s 0/0 -d 0/0 domain -j ACCEPT
# deny icmp packet
#-A input -p icmp -s 0/0 -d 0/0 -j DENY
# default rules
-A input -p tcp -s 0/0 -d 0/0 0:1023 -y -j REJECT
-A input -p tcp -s 0/0 -d 0/0 2049 -y -j REJECT
-A input -p udp -s 0/0 -d 0/0 0:1023 -j REJECT
-A input -p udp -s 0/0 -d 0/0 2049 -j REJECT
-A input -p tcp -s 0/0 -d 0/0 6000:6009 -y -j REJECT
-A input -p tcp -s 0/0 -d 0/0 7100 -y -j REJECT
如果/etc/sysconfig/ipchains文件不存在,可以用上述內容創建之。創建之後,啟動ipchains服:
/etc/init.d/ipchains start
*** 用netstat命令發現攻擊來源
假如說黑客攻擊的是Web 80埠,察看連接80埠的客戶端IP和埠,命令如下:
netstat -an -t tcp | grep ":80" | grep ESTABLISHED | awk '{printf "%s %s\n",$5,$6}' | sort
輸出:
161.2.8.9:123 FIN_WAIT2
161.2.8.9:124 FIN_WAIT2
61.233.85.253:23656 FIN_WAIT2
...
第一欄是客戶機IP和埠,第二欄是連接狀態
如果來自同一IP的連接很多(超過50個),而且都是連續埠,就很可能是攻擊。
如果只希望察看建立的連接,用命令:
netstat -an -t tcp | grep ":80" | grep ESTABLISHED | awk '{printf "%s %s\n",$5,$6}' | sort
*** 用ipchains阻斷攻擊來源
用ipchains阻斷攻擊來源,有兩種方法。一種是加入到/etc/sysconfig/ipchains里,然後重啟動ipchains服務。另一種是直接用ipchains命令加。屏蔽之後,可能還需要重新啟動被攻擊的服務,是已經建立的攻擊連接失效
* 加入/etc/sysconfig/ipchains
假定要阻止的是218.202.8.151到80的連接,編輯/etc/sysconfig/ipchains文件,在:output ACCEPT
行下面加入:
-A input -s 218.202.8.151 -d 0/0 http -y -j REJECT
保存修改,重新啟動ipchains:
/etc/init.d/ipchains restart
如果要阻止的是218.202.8的整個網段,加入:
-A input -s 218.202.8.0/255.255.255.0 -d 0/0 http -y -j REJECT
* 直接用命令行
加入/etc/sysconfig/ipchains文件並重起ipchains的方法,比較慢,而且在ipchains重起的瞬間,可能會有部分連接鑽進來。最方便的方法是直接用ipchains命令。
假定要阻止的是218.202.8.151到80的連接,命令:
ipchains -I input 1 -p tcp -s 218.202.8.151 -d 0/0 http -y -j REJECT
如果要阻止的是218.202.8的整個網段,命令:
ipchains -I input 1 -p tcp -s 218.202.8.0/255.255.255.0 -d 0/0 http -y -j REJECT
其中,-I的意思是插入,input是規則連,1是指加入到第一個。
您可以編輯一個shell腳本,更方便地做這件事,命令:
vi blockit
內容:
#!/bin/sh
if [ ! -z "$1" ] ; then
echo "Blocking: $1"
ipchains -I input 1 -p tcp -s "$1" -d 0/0 http -y -j REJECT
else
echo "which ip to block?"
fi
保存,然後:
chmod 700 blockit
使用方法:
./blockit 218.202.8.151
./blockit 218.202.8.0/255.255.255.0
上述命令行方法所建立的規則,在重起之後會失效,您可以用ipchains-save命令列印規則:
ipchains-save
輸出:
:input ACCEPT
:forward ACCEPT
:output ACCEPT
Saving `input'.
-A input -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 -i lo -j ACCEPT
-A input -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 110:110 -p 6 -j ACCEPT -y
-A input -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 80:80 -p 6 -j ACCEPT -y
-A input -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 22:22 -p 6 -j ACCEPT -y
-A input -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 88:88 -p 6 -j ACCEPT -y
-A input -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 89:89 -p 6 -j ACCEPT -y
-A input -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 90:90 -p 6 -j ACCEPT -y
-A input -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 91:91 -p 6 -j ACCEPT -y
-A input -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 8180:8180 -p 6 -j ACCEPT -y
-A input -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 443:443 -p 6 -j ACCEPT -y
-A input -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 21:21 -p 6 -j ACCEPT -y
-A input -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 25:25 -p 6 -j ACCEPT -y
-A input -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 22:22 -p 6 -j ACCEPT -y
-A input -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 53:53 -p 6 -j ACCEPT -y
-A input -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 9095:9095 -p 6 -j ACCEPT -y
-A input -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 8007:8007 -p 6 -j ACCEPT -y
-A input -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 53:53 -p 17 -j ACCEPT
-A input -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 0:1023 -p 6 -j REJECT -y
-A input -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 2049:2049 -p 6 -j REJECT -y
-A input -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 0:1023 -p 17 -j REJECT
-A input -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 2049:2049 -p 17 -j REJECT
-A input -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 6000:6009 -p 6 -j REJECT -y
-A input -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 7100:7100 -p 6 -j REJECT -y
您需要把其中的"Saving `input'."去掉,然後把其他內容保存到/etc/sysconfig/ipchains文件,這樣,下次重起之後,建立的規則能夠重新生效。
Ⅱ DDOS怎麼防禦
DDOS怎麼防禦解決方案
1、關於這個問題,當攻擊已經發生時你幾乎無能為力。租用高防伺服器
2、最好的長期解決方案是在互聯網上的許多不同位置託管您的服務,這樣對於攻擊者來說他的DDoS攻擊成本會更高。
3、這方面的策略取決於您需要保護的服務;DNS可以使用多個權威名稱伺服器,具有備份MX記錄和郵件交換器的SMTP以及使用循環DNS或多宿主的HTTP進行保護(但是在某段時間內可能會出現一些明顯的降級)。
4、負載均衡設備並不是解決此問題的有效方法,因為負載均衡設備本身也會遇到同樣的問題並且只會造成瓶頸。
5、IPTables或其他防火牆規則無濟於事,因為問題是您的管道已經飽和。一旦防火牆看到連接,就已經太晚了;您的網站帶寬已被消耗。你用連接做什麼都沒關系;當傳入流量恢復正常時,攻擊會緩解或完成。
6、內容分發網路(CDN)以及專業安全與網路性能公司的DDoS清理服務。這將是緩解這些類型的攻擊的積極措施,並且在許多不同的地方擁有大量的可用帶寬。請注意:要隱藏伺服器的IP。
7、此外一些託管服務提供商、雲計算廠商在減輕這些攻擊方面比其他提供商更好。因為規模越大,會擁有更大帶寬,自然也會更有彈性。
Ⅲ 如何有效的防止DDOS攻擊
有效的防止DDOS攻擊的方法:
1、採用高性能的網路設備
首先要保證網路設備不能成為瓶頸,因此選擇路由器、交換機、硬體防火牆等設備的時候要盡量選用知名度高、口碑好的產品。
2、盡量避免NAT的使用
無論是路由器還是硬體防護牆設備要盡量避免採用網路地址轉換NAT的使用,因為採用此技術會較大降低網路通信能力,其實原因很簡單,因為NAT需要對地址來回轉換,轉換過程中需要對網路包的校驗和進行計算,因此浪費了很多CPU的時間。
3、充足的網路帶寬保證
網路帶寬直接決定了能抗受攻擊的能力,假若僅僅有10M帶寬的話,無論採取什麼措施都很難對抗現在的ddos攻擊,當前至少要選擇100M的共享帶寬。
(3)linuxiptable防止ddos擴展閱讀
DDOS攻擊方式
1、SYN Flood攻擊
SYN Flood攻擊是當前網路上最為常見的DDoS攻擊,它利用了TCP協議實現上的一個缺陷。通過向網路服務所在埠發送大量的偽造源地址的攻擊報文,就可能造成目標伺服器中的半開連接隊列被占滿,從而阻止其他合法用戶進行訪問。
2、UDP Flood攻擊
UDP Flood是日漸猖厥的流量型DDoS攻擊,原理也很簡單。常見的情況是利用大量UDP小包沖擊DNS伺服器或Radius認證伺服器、流媒體視頻伺服器。由於UDP協議是一種無連接的服務,在UDP Flood攻擊中,攻擊者可發送大量偽造源IP地址的小UDP包。
3、ICMP Flood攻擊
ICMP Flood攻擊屬於流量型的攻擊方式,是利用大的流量給伺服器帶來較大的負載,影響伺服器的正常服務。由於目前很多防火牆直接過濾ICMP報文。因此ICMP Flood出現的頻度較低。
4、Connection Flood攻擊
Connection Flood是典型的利用小流量沖擊大帶寬網路服務的攻擊方式,這種攻擊的原理是利用真實的IP地址向伺服器發起大量的連接。並且建立連接之後很長時間不釋放,佔用伺服器的資源,造成伺服器上殘余連接(WAIT狀態)過多,效率降低,甚至資源耗盡,無法響應其他客戶所發起的鏈接。
Ⅳ 防禦DDoS攻擊的幾種好用的方式
隨著Internet互聯網路帶寬的增加和多種DDoS黑客工具的不斷發布,DDoS拒絕服務攻擊的實施越來越容易,DDoS攻擊事件正在成上升趨勢。出於商業競爭、打擊報復和網路敲詐等多種因素,導致很多IDC託管機房、商業站點、游戲伺服器、聊天網路等網路服務商長期以來一直被DDoS攻擊所困擾,隨之而來的是客戶投訴、同虛擬主機用戶受牽連、法律糾紛、商業損失等一系列問題,因此,解決DDoS攻擊問題成為網路服務商必須考慮的頭等大事。
DDoS是英文Distributed Denial of Service的縮寫,意即分布式拒絕服務,那麼什麼又是拒絕服務(Denial of Service)呢?可以這么理解,凡是能導致合法用戶不能夠訪問正常網路服務的行為都算是拒絕服務攻擊。也就是說拒絕服務攻擊的目的非常明確,就是要阻止合法用戶對正常網路資源的訪問,從而達成攻擊者不可告人的目的。
雖然同樣是拒絕服務攻擊,但是DDoS和DOS還是有所不同,DDoS的攻擊策略側重於通過很多僵屍主機(被攻擊者入侵過或可間接利用的主機) 向受害主機發送大量看似合法的網路包,從而造成網路阻塞或伺服器資源耗盡而導致拒絕服務,分布式拒絕服務攻擊一旦被實施,攻擊網路包就會猶如洪水般湧向受害主機,從而把合法用戶的網路包淹沒,導致合法用戶無法正常訪問伺服器的網路資源,因此,拒絕服務攻擊又被稱之為洪水式攻擊。
常見的DDoS攻擊手段有SYN Flood、ACK Flood、UDP Flood、ICMP Flood、TCP Flood、Connections Flood、Script Flood、Proxy Flood等;而DOS則側重於通過對主機特定漏洞的利用攻擊導致網路棧失效、系統崩潰、主機死機而無法提供正常的網路服務功能,從而造成拒絕服務,常見的DOS攻擊手段有TearDrop、Land、Jolt、IGMP Nuker、Boink、Smurf、Bonk、OOB等。就這兩種拒絕服務攻擊而言,危害較大的主要是DDoS攻擊,原因是很難防範,至於DOS攻擊,通過給主機伺服器打補丁或安裝防火牆軟體就可以很好地防範,後文會詳細介紹怎麼對付DDoS攻擊。三、被DDoS了嗎?
DDoS的表現形式主要有兩種,一種為流量攻擊,主要是針對網路帶寬的攻擊,即大量攻擊包導致網路帶寬被阻塞,合法網路包被虛假的攻擊包淹沒而無法到達主機;另一種為資源耗盡攻擊,主要是針對伺服器主機的攻擊,即通過大量攻擊包導致主機的內存被耗盡或CPU被內核及應用程序占完而造成無法提供網路服務。
當然,這樣測試的前提是你到伺服器主機之間的ICMP協議沒有被路由器和防火牆等設備屏蔽,否則可採取Telnet主機伺服器的網路服務埠來測試,效果是一樣的。不過有一點可以肯定,假如平時Ping你的主機伺服器和接在同一交換機上的主機伺服器都是正常的,突然都Ping不通了或者是嚴重丟包,那麼假如可以排除網路故障因素的話則肯定是遭受了流量攻擊,再一個流量攻擊的典型現象是,一旦遭受流量攻擊,會發現用遠程終端連接網站伺服器會失敗。
相對於流量攻擊而言,資源耗盡攻擊要容易判斷一些,假如平時Ping網站主機和訪問網站都是正常的,發現突然網站訪問非常緩慢或無法訪問了,而 Ping還可以Ping通,則很可能遭受了資源耗盡攻擊,此時若在伺服器上用Netstat -na命令觀察到有大量的SYN_RECEIVED、TIME_WAIT、FIN_WAIT_1等狀態存在,而ESTABLISHED很少,則可判定肯定是遭受了資源耗盡攻擊。
還有一種屬於資源耗盡攻擊的現象是,Ping自己的網站主機Ping不通或者是丟包嚴重,而Ping與自己的主機在同一交換機上的伺服器則正常,造成這種原因是網站主機遭受攻擊後導致系統內核或某些應用程序CPU利用率達到100%無法回應Ping命令,其實帶寬還是有的,否則就Ping不通接在同一交換機上的主機了。
當前主要有三種流行的DDoS攻擊:
1、SYN/ACK Flood攻擊:這種攻擊方法是經典最有效的DDoS方法,可通殺各種系統的網路服務,主要是通過向受害主機發送大量偽造源IP和源埠的SYN或ACK 包,導致主機的緩存資源被耗盡或忙於發送回應包而造成拒絕服務,由於源都是偽造的故追蹤起來比較困難,缺點是實施起來有一定難度,需要高帶寬的僵屍主機支持。
少量的這種攻擊會導致主機伺服器無法訪問,但卻可以Ping的通,在伺服器上用Netstat -na命令會觀察到存在大量的SYN_RECEIVED狀態,大量的這種攻擊會導致Ping失敗、TCP/IP棧失效,並會出現系統凝固現象,即不響應鍵盤和滑鼠。普通防火牆大多無法抵禦此種攻擊。
2、TCP全連接攻擊:這種攻擊是為了繞過常規防火牆的檢查而設計的,一般情況下,常規防火牆大多具備過濾TearDrop、Land等DOS攻擊的能力,但對於正常的TCP連接是放過的,殊不知很多網路服務程序(如:IIS、Apache等Web伺服器)能接受的TCP連接數是有限的。
一旦有大量的TCP連接,即便是正常的,也會導致網站訪問非常緩慢甚至無法訪問,TCP全連接攻擊就是通過許多僵屍主機不斷地與受害伺服器建立大量的TCP連接,直到伺服器的內存等資源被耗盡而被拖跨,從而造成拒絕服務,這種攻擊的特點是可繞過一般防火牆的防護而達到攻擊目的,缺點是需要找很多僵屍主機,並且由於僵屍主機的IP是暴露的,因此容易被追蹤。
3、刷Script腳本攻擊:這種攻擊主要是針對存在ASP、JSP、PHP、CGI等腳本程序,並調用MSSQLServer、 MySQLServer、Oracle等資料庫的網站系統而設計的,特徵是和伺服器建立正常的TCP連接,並不斷的向腳本程序提交查詢、列表等大量耗費資料庫資源的調用,典型的以小博大的攻擊方法。
一般來說,提交一個GET或POST指令對客戶端的耗費和帶寬的佔用是幾乎可以忽略的,而伺服器為處理此請求卻可能要從上萬條記錄中去查出某個記錄,這種處理過程對資源的耗費是很大的,常見的資料庫伺服器很少能支持數百個查詢指令同時執行,而這對於客戶端來說卻是輕而易舉的,因此攻擊者只需通過 Proxy代理向主機伺服器大量遞交查詢指令,只需數分鍾就會把伺服器資源消耗掉而導致拒絕服務。
常見的現象就是網站慢如蝸牛、ASP程序失效、PHP連接資料庫失敗、資料庫主程序佔用CPU偏高。這種攻擊的特點是可以完全繞過普通的防火牆防護,輕松找一些Proxy代理就可實施攻擊,缺點是對付只有靜態頁面的網站效果會大打折扣,並且有些Proxy會暴露攻擊者的IP地址。
Ⅳ Linux裡面ddos是什麼
使用DDoS deflate腳本自動屏蔽攻擊ip
DDoS deflate是一款免費的用來防禦和減輕DDoS攻擊的腳本。它通過netstat監測跟蹤創建大量網路連接的IP地址,在檢測到某個結點超過預設的限制時,該程序會通過APF或IPTABLES禁止或阻擋這些IP.
DDoS deflate其實是一個Shell腳本,使用netstat和iptables工具,對那些鏈接數過多的IP進行封鎖,能有效防止通用的惡意掃描器,但它並不是真正有效的DDoS防禦工具。
DDoS deflate工作過程描述:
同一個IP鏈接到伺服器的連接數到達設置的伐值後,所有超過伐值的IP將被屏蔽,同時把屏蔽的IP寫入ignore.ip.list文件中,與此同時會在tmp中生成一個腳本文件,這個腳本文件馬上被執行,但是一
運行就遇到sleep預設的秒,當睡眠了這么多的時間後,解除被屏蔽的IP,同時把之前寫入ignore.ip.list文件中的這個被封鎖的IP刪除,然後刪除臨時生成的文件。
一個事實:如果被屏蔽的IP手工解屏蔽,那麼如果這個IP繼續產生攻擊,那麼腳本將不會再次屏蔽它(因為加入到了ignore.ip.list),直到在預設的時間之後才能起作用,加入到了ignore.ip.list中的
IP是檢測的時候忽略的IP。可以把IP寫入到這個文件以避免這些IP被堵塞,已經堵塞了的IP也會加入到ignore.ip.list中,但堵塞了預定時間後會從它之中刪除。
如何確認是否受到DDOS攻擊?
[root@test3-237 ~]# netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
1 Address
1 servers)
2 103.10.86.5
4 117.36.231.253
4 19.62.46.24
6 29.140.22.18
8 220.181.161.131
2911 167.215.42.88
每個IP幾個、十幾個或幾十個連接數都還算比較正常,如果像上面成百上千肯定就不正常了。比如上面的167.215.42.88,這個ip的連接有2911個!這個看起來就很像是被攻擊了!