關于冰盾 | 使用條款 | 網站地圖
 
小規模DDoS(拒絕服務)用Freebsd+IPFW搞定
小規模DDoS(拒絕服務)用Freebsd+IPFW搞定
作者:冰盾防火墻 網站:www.1604100.live 日期:2014-11-14
 

筆者公司共有10臺Web服務器,使用Redhat Linux 9作為操作系統,分布在全國各大城市,主要為用戶提供HTTP服務。曾經有一段時間不少用戶反映有的服務器訪問速度緩慢,甚至不能訪問,檢查后發現是受到了DDoS攻擊(分布式拒絕服務攻擊)。由于服務器分布太散,不能采用硬件防火墻的方案,雖然IPtables功能很強大,足以應付大部分的攻擊,但Linux系統自身對DDoS攻擊的防御力本來就弱,只好另想辦法了。

一、Freebsd的魅力

發現Freebsd的好處是在一次偶然的測試中,在LAN里虛擬了一個Internet,用一臺Windows客戶端分別向一臺Windows Server、Linux Server和一臺Freebsd在無任何防范措施的情況下發送Syn Flood數據包(常見的DDoS攻擊主要靠向服務器發送Syn Flood數據完成)。Windows在達到10個包的時候就完全停止響應了,Linux在達到10個數據包的時候開始連接不正常,而Freebsd卻能承受達100個以上的Syn Flood數據包。筆者決定將公司所有的Web服務器全換為Freebsd平臺。

在使用Freebsd后,的確過了一段時間的安穩日子。不過近日又有用戶再次反映網站不能正常訪問,表現癥狀為用戶打開網頁速度緩慢,或者直接顯示為找不到網站。用netstat ?a查看到來自某IP的連接剛好50個,狀態均為FIN_WAIT 1,這是屬于明顯的DDoS攻擊,看來Freebsd沒有防火墻也不是萬能的啊,于是就想到了裝防火墻。

看了N多資料,了解到Freebsd下最常見的防火墻叫IP FireWall,中文字面意思叫IP防火墻,簡稱IPFW。但如果要使用IPFW則需要編譯Freebsd系統內核。出于安全考慮,在編譯結束后,IPFW是默認拒絕所有網絡服務,包括對系統本身都會拒絕,這下我就徹底“寒”了,我放在外地的服務器可怎么弄啊?

大家這里一定要小心,配置稍不注意就可能讓你的服務器拒絕所有的服務。筆者在一臺裝了Freebsd 5.0 Release的服務器上進行了測試。

二、配置IPFW

其實我們完全可以把安裝IPFW看作一次軟件升級的過程,在Windows里面,如果要升級一款軟件,則需要去下載升級包,然后安裝;在Freebsd中升級軟件過程也是如此,但我們今天升級的這個功能是系統本身已經內置了的,我們只需要利用這個功能即可。打開這個功能之前,我們還要做一些準備工作。

下面開始配置IPFW的基本參數。

Step1:準備工作

在命令提示符下進行如下操作:

#cd /sys/i386/conf

如果提示沒有這個目錄,那說明你的系統沒有安裝ports服務,要記住裝上。

#cp GENERIC ./kernel_IPFW

Step2:內核規則

用編輯器打開kernel_IPFW這個文件,在該文件的末尾加入以下四行內容:

options IPFIREWALL

將包過濾部分的代碼編譯進內核。

options IPFIREWALL_VERBOSE

啟用通過Syslogd記錄的日志;如果沒有指定這個選項,即使你在過濾規則中指定了記錄包,也不會真的記錄它們。

options IPFIREWALL_VERBOSE_LI

MIT=10

限制通過Syslogd記錄的每項包規則的記錄條數。如果你受到了大量的攻擊,想記錄防火墻的活動,但又不想由于Syslog洪水一般的記錄而導致你的日記寫入失敗,那么這個選項將會很有用。有了這條規則,當規則鏈中的某一項達到限制數值時,它所對應的日志將不再記錄。

options IPFIREWALL_DEFAULT_TO

_ACCEPT

這句是最關鍵的。將把默認的規則動作從 “deny” 改為 “allow”。這句命令的作用是,在默認狀態下,IPFW會接受任何的數據,也就是說服務器看起來像沒有防火墻一樣,如果你需要什么規則,在安裝完成后直接添加就可以了。

輸入完成后保存kernel_IPFW文件并退出。

三、編譯系統內核

由于Freebsd和Linux一樣,都是公開源代碼的操作系統,不像Windows那樣代碼是封裝了的,出了問題我們只能猜測,或者咨詢微軟公司;由于Freebsd系統內核在不斷升級,我們為了使用新版本中的功能,或者定制一個更高效、更穩定的系統,通常需要編譯系統內核。

當然,我們在這里編譯內核,是為了能得到一個更高效的系統,而不是使用新版本的功能;

在編譯的過程中,可能會提示一些錯誤,為了盡可能減少錯誤提示,我們已將配置文件縮減到了最少,如果再出現什么錯誤提示,請仔細檢查是否有輸入錯誤等細小問題。

Step1:編譯所需的命令

在命令行上執行如下命令:

#/usr/sbin/config kernel_IPFW

執行結束后會出現如下提示:Kernel build directory is ../compile/kernel_IPFW Don`t forget to do a make depend`

#cd ../compile/kernel_IPFW

在這個地方注意一下,Freebsd 4.X版本是../../compile/kernel_IPFW,但Freebsd 5.0版本卻是../compile/kernel_IPFW。

#make

#make install

Step2:開始編譯內核

根據系統性能差異,時間也有不同,普通雙P4 XEON 1GB內存的服務器大約5分鐘左右即可完成。

四、加載啟動項

編譯完成了,我們要讓系統自動啟動IPFW并記錄日志,需要進行如下操作:

Step1:編輯器編輯/etc/rc.conf

加入如下參數:

firewall_enable=`YES`

激活Firewall防火墻

firewall_script=`/etc/rc.firewall`

Firewall防火墻的默認腳本

firewall_type=`/etc/ipfw.conf`

Firewall自定義腳本

firewall_quiet=`NO`

啟用腳本時,是否顯示規則信息;假如你的防火墻腳本已經不會再有修改,那么就可以把這里設置成“YES”了。

firewall_logging_enable=`YES`

啟用Firewall的Log記錄

Step2:編輯/etc/syslog.conf文件

在文件最后加入如下內容:

!ipfw

*.* /var/log/ipfw.log

這行的作用是將IPFW的日志寫到/var/log/ipfw.log文件里,當然,你也可以為日志文件指定其他目錄。

以上步驟完成后重啟電腦。

五、使用并保存規則

完成后,你就會發現你能用SSH登錄你的遠程服務器了。

Step1:測試

剛登錄的時候你不會發現你的系統發生了什么變化,但你可以試試以下這個命令:#ipfw show,將輸出以下結果:65535 322 43115 allow ip from any to any。它告訴我們,IPFW已經成功啟用,而且允許任何的連接。

Step2:使用

在命令提示符下輸入如下命令:#ipfw add 10001 deny all from 218.249.20.135 to any。

拒絕來自218.249.20.135的任何服務,執行完成后,你就會發現來自IP218.249.20.135的所有服務都會被拒絕。

Step3:保存

把這句代碼加在/etc/rc.firewall文件里:ipfw add 10001 deny all from 218.249.20.135 to any,運行如下這個命令:#sh /etc/rc.firew

all

表示保存到rc.firewall里面時,不需要前面的#號,然后重新載入IPFW規則。

或者重啟一次你的系統,你的IPFW就生效了,只要你不手動解除,來自218.249.20.135的所有信息全部都會被拒絕。(e129)


 

 
最新內容:
冰盾抗DDOS防火墻[2014-11-14]
采用基于Guard和Detector的DDoS防御方案[2014-11-14]
黑客常用攻擊方式:DDoS攻擊全面剖析[2014-11-14]
DDoS攻防簡明問答[2014-11-14]
Windows CE 系統易受手機病毒攻擊[2014-11-14]
安全缺陷持續升高,新系統帶來新缺陷[2014-11-14]
相關內容:
时时彩连挂赚钱

合作伙伴: 黑基網 補天科技 威盾科技 站長下載 新飛金信 北京電信 ZOL應用下載
中華人民共和國增值電信業務經營許可證京ICP備14024464 公安備案號 京1081234 
版權所有©2003-2014 冰盾防火墻  www.1604100.live 法律聲明
總機:(010)51661195