歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> 使用netstat檢測及監測網絡連接

使用netstat檢測及監測網絡連接

日期:2017/2/28 14:28:12   编辑:Linux教程

大家好,我是邪惡君子!今天,邪惡就給大家分享一下,使用小小的一個netstat命令,就能讓你檢測出系統是否處於安全狀態!!!

這篇文檔,復雜°:簡單;難易°:易。堅決讓小白都看得懂,學得會,掌握牢,上手快!好,廢話不多說,看招:

大家都知道,Linux上的web服務每天都要面臨成千上萬的連接,這些連接都是要遵循TCP協議的,這都是眾所周知的(至於TCP協議,這裡就不在過多的介紹,不懂的同學可以自己搜索,友好多)。既然都是TCP協議連接,那就不得不面臨一個網路最大的安全問題,DOS攻擊及DDOS攻擊,這些攻擊是沒有辦法抹除的,因為這是針對TCP協議本身的一個設計缺陷兒造成的。所以,這就要求運維人員,時刻監測系統安全,是否處於被DOS攻擊狀態。

那麼是怎麼監測及檢測的呢?這就要用到我一開始就要提到的netstat命令。先簡單的介紹一下netstat命令的主要作用:可以查看系統當前的連接狀態,不管是TCP連接還是udp協議連接,以及每個連接的進程號、是哪個應用程序、連接所用的端口號,這些都可以陳列出來。是不是很強大。

在講監測檢測之前,先給大家在普及一個知識,那就是TCP連接的狀態,TCP進行3次握手,其過程有很多狀態,不同的連接狀態,都有想對應的狀態碼,看下面列表:

  • LISTEN:偵聽來自遠方的TCP端口的連接請求
  • SYN-SENT:再發送連接請求後等待匹配的連接請求
  • SYN-RECEIVED:再收到和發送一個連接請求後等待對方對連接請求的確認
  • ESTABLISHED:代表一個打開的連接
  • FIN-WAIT-1:等待遠程TCP連接中斷請求,或先前的連接中斷請求的確認
  • FIN-WAIT-2:從遠程TCP等待連接中斷請求
  • CLOSE-WAIT:等待從本地用戶發來的連接中斷請求
  • CLOSING:等待遠程TCP對連接中斷的確認
  • LAST-ACK:等待原來的發向遠程TCP的連接中斷請求的確認
  • TIME-WAIT:等待足夠的時間以確保遠程TCP接收到連接中斷請求的確認
  • CLOSED:沒有任何連接狀態

大家最好一定要記住這些狀態,因為運維人員在監控系統並發連接狀態時,監控系統返回的也是這些狀態碼!

了解完這些後,還要再了解一個Linux系統的腳本中的一個小知識點,那就是“|”管道符,管道符的作用就不多說了,這裡就簡單提一下,因為下面的例子要用到。

好了,終於可以進入正題了,是不是都有點心急了呢 ?嘿嘿

以下這條命令將會顯示出netstat的幫助信息,不懂的以及不太了解這個命令有哪些參數可用的都可以在這個命令的返回信息中看到:

  1. #netstat --help

顯示當前所有活動的網絡連接:

  1. #netstat -na

顯示出所有處於監聽狀態的應用程序及進程號和端口號:

  1. #netstat -aultnp

如果想對一個單一的進行查詢,只需要在命令後面再加上“| grep $”。這裡就用到了管道符,以及grep篩選命令,$代表參數,也就是你要查詢的那個。

如要顯示所有80端口的網絡連接:

  1. #netstat -aultnp | grep 80

如果還想對返回的連接列表進行排序,這就要用到sort命令了,命令如下:

  1. #netstat -aultnp | grep :80 | sort

當然,如果還想進行統計的話,就可以再往後面加wc命令。如:

  1. #netstat -aultnp | grep :80 | wc -l

其實,要想監測出系統連接是否安全,要進行多狀態的查詢,以及要分析,總結,還有就是經驗。總的下來,才可以判斷出連接是否處於安全狀態。

下面就給大家再舉一些例子,讓大家徹底的明白,及徹底的理解這個命令的用處,使其發揮出最大功能。

  1. #netstat -n -p|grep SYN_REC | wc -l

這個命令可以查找出當前服務器有多少個活動的 SYNC_REC 連接。正常來說這個值很小,最好小於5。 當有Dos攻擊或者郵件炸彈的時候,這個值相當的高。盡管如此,這個值和系統有很大關系,有的服務器值就很高,也是正常現象。

  1. #netstat -n -p | grep SYN_REC | sort -u

列出所有連接過的IP地址。

  1. #netstat -n -p | grep SYN_REC | awk '{print $5}' | awk -F: '{print $1}'

列出所有發送SYN_REC連接節點的IP地址。

  1. #netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n

使用netstat命令計算每個主機連接到本機的連接數。

  1. #netstat -anp |grep 'tcp|udp' | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n

列出所有連接到本機的UDP或者TCP連接的IP數量。

  1. #netstat -ntu | grep ESTAB | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr

檢查 ESTABLISHED 連接並且列出每個IP地址的連接數量。

  1. #netstat -plan|grep :80|awk {'print $5'}|cut -d: -f 1|sort|uniq -c|sort -nk 1

列出所有連接到本機80端口的IP地址和其連接數。80端口一般是用來處理HTTP網頁請求。

怎麼樣,是否能弄懂上面的這些命令及作用?在這兒呢,邪惡負責的說一句話:如果你能把上面的這些都徹底的理解消化了,能舉一反三了,那麼,恭喜您,您在Linux系統網絡檢測這一小塊已經是一個高手了,不在是菜鳥或者小白了,為自己鼓鼓掌吧!!!

說明一點:命令及參數是死的,但是人是活的,要想發揮出其最大的功能,還需要自己去摸索,自己去理解及配合其他命令一起使用。同時,netstat -an在Windows上也管用哦!

那麼,如果真的發現有大量的假連接了,那麼也不要慌,要先找出一些“另類的IP地址”,怎麼解釋呢,因為在進行Dos攻擊時,會為造出大量的假IP去連接服務器,進行3次握手,所以,這就要根據經驗去找出假IP,然後通過防火牆規則,添加一個規則拒接這個假IP的網段連接。

例如:

  1. #iptables -A INPUT 1 -s $IPADRESS -j DROP/REJECT

注意,你需將$IPADRESS 替換成需要拒絕連接的IP地址。執行完iptables 後呢,要重啟一下web服務。

好了,今天的學習呢,到這兒就結束了,至於能掌握多少,這就要因人而異了,但我相信:天道酬勤!!!

最後,如果哪裡有不對的地方,希望大家多多交流!!!

Copyright © Linux教程網 All Rights Reserved