歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux管理 >> Linux網絡 >> 解析Linux網絡分析的三大利器

解析Linux網絡分析的三大利器

日期:2017/2/27 9:28:14   编辑:Linux網絡
  作者:楊鵬     隨著Internet的迅猛發展,網絡已無處不在,但是,它可能隨時受到來自各方的攻擊。了解哪些人正在訪問資源、哪些人正在享受服務、哪些人正在發送大量垃圾等,對網絡管理員來說是非常必要的。利用Linux中較常見的網絡分析工具Tcpdump、Nmap和Netstat,可以使網絡管理工作更加輕松。   Tcpdump主要是截獲通過本機網絡接口的數據,用以分析。Nmap是強大的端口掃描工具,可掃描任何主機或網絡。Netstat可用來檢查本機當前提供的服務及狀態。這三者各有所長,結合起來,就可以比較透徹地了解網絡狀況。       Tcpdump      Tcpdump能夠截獲當前所有通過本機網卡的數據包。它擁有靈活的過濾機制,可以確保得到想要的數據。由於Tcpdump只能收集通過本機的數據,因此它的應用受到了一些限制,大多應用在網關或服務器自我檢測上。例如,在作為網關的主機上,想知道本地網絡中IP地址為192.168.0.5的主機現在與外界通信的情況,就可以使用如下命令:     tcpdump -i eth0 src host 192.168.0.5        在默認情況下,Tcpdump會將數據輸出到屏幕。如果數據量太大,可能根本看不清具體的內容,這時我們可以把它重定向到文件再進行分析。如果眼神不錯,就可以清楚地了解這位仁兄剛才的一舉一動:     訪問了新浪網主頁  20:05:32.473388 192.168.0.5.1872 > www.sina.com.http:  S 1372301404:1372301404(0) win 64240 (DF)  ……  進行了netbios廣播進行名字查詢  20:05:33.823388 192.168.0.5.netbios-dgm >   192.168.0.255.netbios-dgm: NBT UDP PACKET(138)  ……  到新華網POP3服務器收信  20:05:41.953388 192.168.0.5.1878 > pop.xinhuanet.com.pop3: S  1374956462:1374956462(0) win 64240 (DF)  ……  到深圳963收信  20:05:45.633388 192.168.0.5.1881 > szptt154.szptt.net.cn.pop3:  P 34:40(6) ack 146 win 64095 (DF)  ……        例如,上面這條信息表明了在20:05:45的時候,192.168.0.5通過1881源端口連接到963電子郵局的POP3端口。對於普通的網絡分析,這些信息已經足夠了。這就是Tcpdump的基本功能,其它高級功能都是在這一基礎上的細化和增強。     例如,我只想知道192.168.0.5當前正在訪問哪些Web站點,可以用下面這條命令:     tcpdump -i eth0 src host 192.168.0.5 and dst port 80        該命令的目的是截獲所有由eth0進入、源地址(src)為192.168.0.5的主機(host),並且(and)目標(dst)端口(port)為80的數據包。得到的數據如下:     20:05:32.473388 192.168.0.5.1872 > www.sina.com.http:    S 1372301404:1372301404(0) win 64240 (DF)  ……  20:06:33.42344 192.168.0.5.1873 > www.sohu.com.http:   S 1374301404:1374301404(0) win 64245 (DF)  ……  20:07:31.343248 192.168.0.5.1874 > www.21cn.com.http:   S 1377301404:1377301404(0) win 64241 (DF)  ……        顯然,通過and或者not這些邏輯組合,就可以得到特定的數據。Tcpdump還可以監聽不同的數據類型(如TCP、UDP),以用不同的網絡范圍(如Host主機、Net網絡),甚至用Ether直接指定物理地址。     用Tcpdump在網絡中獲取信息如此清晰,是不是有一種一覽無余的感覺。正是因為Tcpdump功能過於強大,連個人隱私和敏感數據的保護都成了問題,所以通常只有root用戶能夠使用這一工具。       Nmap      Nmap設計的初衷是系統管理員可以方便地了解自己的網絡運行情況,例如有多少台主機在運行、分別提供什麼樣的服務。因此,它掃描的速度非常快,尤其適合大型網絡。在對網絡進行掃描時,Nmap主要利用ICMP echo探測主機是否開啟。凡是了解TCP/IP協議的都知道,對於一個TCP端口,無論是否使用防火牆進行過濾,該主機都會對該端口發出的請求做出一定響應。所以即使配置了嚴格的防火牆規則,nmap照樣可以找到這些主機。例如,在一台IP地址為192.168.0.1的Linux主機上執行下列命令:     echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all        它的作用就是對所有ICMP echo不予理睬,也就是讓通常用來測試網絡的Ping命令失效。這樣至少可以抵擋POD(Ping of Death)的攻擊。在任何一台機器上Ping這台主機,得到的都會是請求超時,如:     Pinging 192.168.0.1 with 32 bytes of data:  Request timed out.  Request timed out.Request timed out.Request timed out.  Ping statistics for 192.168.0.1:  Packets: Sent = 4, Received = 0, Lost = 4 (100% loss)        這台主機是否下線了?用Nmap探測試試看:     nmap -sP 192.168.0.1  Starting nmap V. 2.54BETA22 ( www.insecure.org/nmap/ )  Host gw.somewhere.net (192.168.0.1) appears to be up.        探測結果好像該主機還開著呢!這裡,-sP指定使用Ping echo 進行掃描(Scan)。     利用這一特點,可以很快知道目的網絡究竟有多少主機處於運行狀態:     nmap -sP 192.168.0.0/24 //24表明目標是一個網絡而非單個主機  Starting nmap V. 2.54BETA22 ( www.insecure.org/nmap/ )  Host (192.168.0.2) appears to be up.  Host www.somesite.net (192.168.0.5) appears to be up.  Host (192.168.0.8) appears to be up.  ……  Host (192.168.0.253) appears to be up.  Host fake.somesite.net (192.168.0.254) appears to be up.  Nmap run completed -- 256 IP addresses (19 hosts up) scanned in 6 seconds        既然已經知道了哪些主機還開著,就可以進一步探測這些主機的信息,如開啟的端口、提供的服務及操作系統類型等。從上面掃描的結果可以知道,192.168.0.5這台機器正在運行。想要了解該主機的詳細信息,可以執行:     nmap 192.168.0.5        稍後會顯示如下內容:     Starting nmap V. 2.54BETA22 ( www.insecure.org/nmap/ )  Interesting ports on www.somewhere.net (192.168.0.5):  (The 1537 ports scanned but not shown below are in state: closed)  Port State Service  80/tcp open http   135/tcp open loc-srv   139/tcp open netbios-ssn   443/tcp open https   1031/tcp open iad2   1433/tcp open ms-sql-s   Nmap run completed -- 1 IP address (1 host up) scanned in 0 seconds        由上可以斷定,這是一台運行Windows操作系統的主機,因為它開啟了MS SQL Server的專用端口1433,還提供了HTTP服務等。這些信息如果被不懷好意的人得到,就可以采用對應的攻擊辦法。其實,強大的Nmap本身就可以依據TCP/IP的指紋特征猜測對方使用的操作系統。我們可以用-O來開啟這一選項:     nmap -O 192.168.0.5        得到的結果是:     Starting nmap V. 2.54BETA22 ( www.insecure.org/nmap/ )  Interesting ports on www.somewhere.net (192.168.0.5):  (The 1536 ports scanned but not shown below are in state: closed)  Port State Service  80/tcp open http   135/tcp open loc-srv   139/tcp open netbios-ssn   443/tcp open https   1032/tcp open iad3   1433/tcp open ms-sql-s   Remote operating system guess: Microsoft NT 4.0 Server SP5 + 2047 Hotfixes  Nmap run completed -- 1 IP address (1 host up) scanned in 2 seconds        它猜測的遠程主機類型是Microsoft NT 4.0 Server SP5 + 2047 Hotfixes,並且相當准確和詳盡。       Netstat      Netstat主要用於Linux/Unix主機察看自身的網絡狀況,如開啟的端口、在為哪些用戶服務以及服務的狀態等等。此外,它還顯示系統路由表、網絡接口狀態等。可以說,它是一個綜合性的網絡狀態察看工具,不過中規中舉。     例如在一台普通Linux服務器上運行Netstat,顯示可能像這樣:     Active Internet connections (w/o servers)  Proto Recv-Q Send-Q Local Address Foreign Address State   tcp 0 0 xxx.net.http-alt xxx.net:1209 ESTABLISHED   tcp 0 0 xxx.net.http-alt xxx.net:1509 ESTABLISHED   tcp 0 0 xxx.net.ssh whoami.net:1867 ESTABLISHED   tcp 0 0 xxx.net:1209 xxx.net.http-alt ESTA




Copyright © Linux教程網 All Rights Reserved