LINUX 遭到SYN FLOOD攻擊 LINUX下SYN攻防戰(zhàn)
來源:易賢網(wǎng) 閱讀:2133 次 日期:2016-08-03 14:58:08
溫馨提示:易賢網(wǎng)小編為您整理了“LINUX 遭到SYN FLOOD攻擊 LINUX下SYN攻防戰(zhàn)”,方便廣大網(wǎng)友查閱!

如何打響Linux服務器下的攻防戰(zhàn),感興趣的小伙伴們可以參考一下本文,或許會有所收獲。

LINUX下SYN攻防戰(zhàn)如下

(一)SYN攻擊原理

SYN攻擊屬于DOS攻擊的一種,它利用TCP協(xié)議缺陷,通過發(fā)送大量的半連接請求,耗費服務器CPU和內(nèi)存資源。SYN攻擊聊了能影響主機外,還可以危害路由器,防火墻等網(wǎng)絡系統(tǒng),事實上SYN攻擊并不管目標是什么系統(tǒng),只要這些系統(tǒng)打開TCP服務就可以實施.我們知道,在網(wǎng)絡中兩臺電腦建立TCP連接 時需要進行三次握手過程,客戶端首先向服務器發(fā)關(guān)TCP SYN數(shù)據(jù)包,接著服務器會向客戶端發(fā)關(guān)相應的SYN ACK數(shù)據(jù)包,最后客戶端會以ACK進行響應.從而建立正常的握手過程。在具體的連接細節(jié)中,服務器最早接受到SYN包時,在TCP協(xié)議棧中會將相應的半連接記錄添加到隊列中,之后等待接受下面準備握手的數(shù)據(jù)包,如果握手成功,那么這個半連接記錄將從隊列中刪除.或者當服務器未收到客戶端的確認包時,會重發(fā)請求包,一直到超時才將此條目從未連接隊列刪除。但是在服務器中的TCP協(xié)議棧中存儲的半連接記錄是有限的,當服務器受到SYN型的DOS攻擊后,隊 列會很快處于充滿狀態(tài),客戶端在短時間內(nèi)偽造大量不存在的IP地址,向服務器不斷地發(fā)送SYN包,服務器回復確認包,并等待客戶的確認,由于源地址是不存在的,服務器需要不斷的重發(fā)直至超時,這些偽造的SYN包將長時間占用未連接隊列,正常的SYN請求被丟棄,目標系統(tǒng)運行緩慢嚴重者引起網(wǎng)絡堵塞甚至系統(tǒng)癱瘓,服務器隨后就不再接受新的網(wǎng)絡連接,從而造成正常的客戶端無法訪問服務器的情況發(fā)生。

(二)實戰(zhàn)SYN攻擊過程

SYN攻擊實現(xiàn)起來非常的簡單,互聯(lián)網(wǎng)上有大量面成的SYN攻擊工具可以直接利用.假設(shè)在Linux服務器中安裝了Web服務,在 Linux的命令提示符中執(zhí)行"service httpd start"命令,即可開啟Web服務,接著執(zhí)行"netstat -ant | grep 80"命令,可以看到80端口已經(jīng)處于打開狀態(tài)了.在網(wǎng)絡的其它機器上利用SYN攻擊軟件(例如"synkill"等)對Linux服務器的80端口進行 DOS攻擊,之后在Linux服務器中執(zhí)行命令"netstat -ant | grep 80",可以看到大量的網(wǎng)絡連接信息,包括連接的類型,原地址,目標直地址,連接狀態(tài)等,當然,因為SYN工具通常會偽告客戶端地址,因此在連接列表中是 找不到真實地址的.在連接狀態(tài)中顯示"SYN_RECV",表示當前處于半連接狀態(tài).我們可以每隔幾秒鐘運行命令"netstat -n -p TCP | grep SYN_RECV |grep 80 | wc -l",來檢查某個端口(這里為80)的未連接隊列的條目數(shù),當發(fā)現(xiàn)該條目數(shù)增大到某個極大值,并處于平衡狀態(tài)時,那么就很有可能是Linux的TCP協(xié) 議棧中的隊列滿了,此時用戶就無法建立新的連接了。

(三)如可在Linux中防御SYN型DOS攻擊

在Linux中防御SYN型DOS攻擊的方法比較常見的有增大隊列SYN最大半連接數(shù),減小超時值,利用SYN cookie技術(shù),過濾可疑的IP地址等常用方法,下面分別進行分析。

(四)增大隊列SYN最大半連接數(shù)

在Linux中執(zhí)行命令"sysctl -a|grep net.ipv4.tcp_max_syn_backlog",在返回的"net.ipv4.tcp_max_syn_backlog=256"中顯示 Linux隊列的最大半連接容量是256.這個默認值對于Web服務器來說是遠遠不夠的,一次簡單的SYN攻擊就足以將其完全占用.因此,防御DOS攻擊 最簡單的辦法就是增大這個默認值,在Linux中執(zhí)行命令"sysctl -w et.ipv4.tcp_max_syn_backlog=3000",這樣就可以將隊列SYN最大半連接數(shù)容量值改為3000了。

(五)減小超時值

在Linux中建立TCP連接時,在客戶端和服務器之間創(chuàng)建握手過程中,當服務器未收到客戶端的確認包時,會重發(fā)請求包,一直到超時才將此條目從未連接隊 列是刪除,也就是說半連接存在一定的存活時間,超過這個時間,半連接就會自動斷開,在上述SYN攻擊測試中,當經(jīng)過較長的的時間后,就會發(fā)現(xiàn)一些半連接已經(jīng)自動斷開了。半連接存活時間實際上是系統(tǒng)所有重傳次數(shù)等待的超時時間之和,這個值越大半連接數(shù)占用的Backlog隊列的時間就越長,系統(tǒng)能處理的 SYN請求就越少,因此,縮短超時時間就可以有效防御SYN攻擊,這可以通過縮小重傳超時時間和減少重傳次數(shù)來實現(xiàn).在Linux中默認的重傳次數(shù)為5 次,總超時時間為3分鐘,在Linux中執(zhí)行命令"sysctl -w net.ipv4.tcp_synack_retries=1",將超時重傳次數(shù)設(shè)置為。

(六)利用SYN cookie來防御DOS攻擊

除了在TCP協(xié)議棧中開辟一個內(nèi)存空間來存儲半連接數(shù)之外,為避免因為SYN請求數(shù)量太多,導致該隊列被填滿的情況下,Linux服務器仍然可以處理新的SYN連接,可以利用SYN Cookie技術(shù)來處理SYN連接。什么是SYN Cookie呢?SYN Cookie是用一個Cookie來響應TCP SYN請求的,在正常的TCP連接過程中,當服務器接收一個SYN數(shù)據(jù)包,就會返回一個SYN -ACK包來應答,然后進入TCP -SYN -RECV(半開放連接)狀態(tài)來等待最后返回的ACK包。服務器用一個數(shù)據(jù)空間來描述所有未決的連接,然而這個數(shù)據(jù)空間的大小是有限的,所以攻擊者將塞滿 這個空間,在TCP SYN COOKIE的執(zhí)行過程中,當服務器收到一個SYN包的時候,他返回一個SYN -ACK包,這個數(shù)據(jù)包的ACK序列號是經(jīng)過加密的,它由TCP連接的源地址和端口號,目標地址和端口號,以及一個加密種子經(jīng)過HASH計算得出的,然后 服務器釋放所有的狀態(tài).如果一個ACK包從客戶端返回后,服務器重新計算COOKIE來判斷它是不是上個SYN -ACK的返回包.如果是的話,服務器就可以直接進入TCP連接狀態(tài)并打開連接.這樣服務器就可以避免守候半開放連接了,在Linux中執(zhí)行命令"echo "echo "1" > / proc/sys/net/ipv4/tcp_syncookies"> > /etc/rc_local",這樣即可啟動SYN Cookie,并將其添加到了Linux的啟動文件,這樣即使系統(tǒng)重啟也不影響SYN Cookie的激活狀態(tài)。

(七)過濾可疑的IP直址

當客戶機對服務器進行攻擊時,在服務器上可以進行抓包操作,這樣可以對數(shù)據(jù)包中的IP進行檢測,然后再對這些可疑的潮行過濾,從而將其無法正常連接服務器。利用Linux自帶的"tcpdump"命令可以實現(xiàn)抓包操作,執(zhí)行命令"tcpdump -c 1000 -l eth 0 -n dst port 80 > test.txt",就可以在當前目錄下創(chuàng)建一個。

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助。

更多信息請查看技術(shù)文章
易賢網(wǎng)手機網(wǎng)站地址:LINUX 遭到SYN FLOOD攻擊 LINUX下SYN攻防戰(zhàn)
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 加入群交流 | 手機站點 | 投訴建議
工業(yè)和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網(wǎng)安備53010202001879號 人力資源服務許可證:(云)人服證字(2023)第0102001523號
聯(lián)系電話:0871-65317125(9:00—18:00) 獲取招聘考試信息及咨詢關(guān)注公眾號:hfpxwx
咨詢QQ:526150442(9:00—18:00)版權(quán)所有:易賢網(wǎng)