解析Linux網路分析的三大利器(轉)
解析Linux網路分析的三大利器(轉)[@more@]隨著Internet的迅猛發展,網路已無處不在,但是,它可能隨時受到來自各方的攻擊。瞭解哪些人正在訪問資源、哪些人正在享受服務、哪些人正在傳送大量垃圾等,對網路管理員來說是非常必要的。利用Linux中較常見的網路分析工具Tcpdump、Nmap和Netstat,可以使網路管理工作更加輕鬆。Tcpdump主要是截獲透過本機網路介面的資料,用以分析。Nmap是強大的埠掃描工具,可掃描任何主機或網路。Netstat可用來檢查本機當前提供的服務及狀態。這三者各有所長,結合起來,就可以比較透徹地瞭解網路狀況。TcpdumpTcpdump能夠截獲當前所有透過本機網路卡的資料包。它擁有靈活的過濾機制,可以確保得到想要的資料。由於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 > S 1372301404:1372301404(0) win 64240 1460,nop,nop,sackOK> (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: S1374956462: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 > S 1372301404:1372301404(0) win 64240 (DF)……20:06:33.42344 192.168.0.5.1873 > S 1374301404:1374301404(0) win 64245 (DF)……20:07:31.343248 192.168.0.5.1874 > S 1377301404:1377301404(0) win 64241 (DF)……顯然,透過and或者not這些邏輯組合,就可以得到特定的資料。Tcpdump還可以監聽不同的資料型別(如TCP、UDP),以用不同的網路範圍(如Host主機、Net網路),甚至用Ether直接指定實體地址。用Tcpdump在網路中獲取資訊如此清晰,是不是有一種一覽無餘的感覺。正是因為Tcpdump功能過於強大,連個人隱私和敏感資料的保護都成了問題,所以通常只有root使用者能夠使用這一工具。NmapNmap設計的初衷是系統管理員可以方便地瞭解自己的網路執行情況,例如有多少臺主機在執行、分別提供什麼樣的服務。因此,它掃描的速度非常快,尤其適合大型網路。在對網路進行掃描時,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.1Starting 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 (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 (192.168.0.5):(The 1537 ports scanned but not shown below are in state: closed)Port State Service80/tcp open http135/tcp open loc-srv139/tcp open netbios-ssn443/tcp open https1031/tcp open iad21433/tcp open ms-sql-sNmap 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 (192.168.0.5):(The 1536 ports scanned but not shown below are in state: closed)Port State Service80/tcp open http135/tcp open loc-srv139/tcp open netbios-ssn443/tcp open https1032/tcp open iad31433/tcp open ms-sql-sRemote operating system guess: Microsoft NT 4.0 Server SP5 + 2047 HotfixesNmap run completed -- 1 IP address (1 host up) scanned in 2 seconds它猜測的遠端主機型別是Microsoft NT 4.0 Server SP5 + 2047 Hotfixes,並且相當準確和詳盡。NetstatNetstat主要用於Linux/Unix主機察看自身的網路狀況,如開啟的埠、在為哪些使用者服務以及服務的狀態等等。此外,它還顯示系統路由表、網路介面狀態等。可以說,它是一個綜合性的網路狀態察看工具,不過中規中舉。例如在一臺普通Linux伺服器上執行Netstat,顯示可能像這樣:Active Internet connections (w/o servers)Proto Recv-Q Send-Q Local Address Foreign Address Statetcp 0 0 xxx.net.http-alt xxx.net:1209 ESTABLISHEDtcp 0 0 xxx.net.http-alt xxx.net:1509 ESTABLISHEDtcp 0 0 xxx.net.ssh whoami.net:1867 ESTABLISHEDtcp 0 0 xxx.net:1209 xxx.net.http-alt ESTABLISHEDtcp 0 0 xxx.net:1509 xxx.net.http-alt ESTABLISHEDActive UNIX domain sockets (w/o servers)Proto RefCnt Flags Type State I-Node Pathunix 8 [ ] DGRAM 858 /dev/logunix 2 [ ] DGRAM 190986unix 2 [ ] DGRAM 190051unix 2 [ ] DGRAM 1252unix 2 [ ] DGRAM 1233unix 2 [ ] DGRAM 1049unix 2 [ ] DGRAM 867unix 2 [ ] STREAM CONNECTED 507下半部分被稱作Unix域套介面,通常不必在意。有用的是上半部被稱為有源TCP連線的部分,它顯示了當前所有已建立的連線。由此不難看出,當前這臺伺服器與主機myself.net有一些處於半關閉狀態的HTTP連線,還與主機whoami.net有一個SSH連線。在預設情況下,Netstat只顯示已建立連線的埠。要顯示處於監聽狀態的所有埠,使用-a引數即可:Active Internet connections (w/o servers)Proto Recv-Q Send-Q Local Address Foreign Address Statetcp 0 0 *:http-alt *:* LISTENtcp 0 0 *:8009 *:* LISTENtcp 0 0 *:mysql *:* LISTENtcp 0 0 *:netbios-ssn *:* LISTENtcp 0 0 *:http *:* LISTENtcp 0 0 *:ftp *:* LISTENtcp 0 0 xxx.net.http-alt xxx.net:1209 ESTABLISHEDtcp 0 0 xxx.net.http-alt xxx.net:1509 ESTABLISHEDtcp 0 0 xxx.net.ssh myself.net:1867 ESTABLISHEDtcp 0 0 xxx.net:1209 xxx.net.http-alt ESTABLISHEDtcp 0 0 xxx.net:1509 xxx.net.http-alt ESTABLISHED……這樣,當前正在監聽但並未建立連線的埠也可以顯示了出來。由此不難看出,這臺伺服器同時提供HTTP、FTP、SSH、NMBD及一個MySQL資料庫服務。Netstat還可以方便地代替route命令顯示當前核心路由表:netstat -rKernel IP routing tableDestination Gateway Genmask Flags MSS Window irtt Iface218.208.80.176 * 255.255.255.248 U 40 0 0 eth1192.168.0.0 * 255.255.255.0 U 40 0 0 eth0127.0.0.0 * 255.0.0.0 U 40 0 0 lodefault x.x.x.x 0.0.0.0 UG 40 0 0 eth1以上結果與route顯示完全一樣。此外,它還可以代替ifconfig顯示網路介面狀態:netstat -iKernel Interface tableIface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flgeth0 1500 0 3441803 0 0 0 3717339 0 0 0 BMRUeth0: 1500 0 - no statistics available - BMRUeth0: 1500 0 - no statistics available - BMRUeth1 1500 0 1770949 0 0 0 1496183 0 0 0 BMRUlo 16436 0 38255 0 0 0 38255 0 0 0 LRU以上這些表明,利用網路分析工具瞭解網路的狀況非常簡單,幾乎不費什麼力氣就可以獲取很多有用的資料。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8225414/viewspace-944539/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- DHCP---網路管理員的新利器(轉)
- Linux下網路分析例解(轉)Linux
- linux網路知識:解析路由表(轉)Linux路由
- OpManager:網路監控的利器
- 網路分析利器:在 Ubuntu 16.04 上安裝 BroUbuntu
- 模擬網路狀態的利器TC
- 網路開發的利器,初識Charles
- 容器網路流量轉發分析
- 網路安全追蹤利器IpTicker
- 關於linux的網路管理(請教網路高人)(轉)Linux
- Linux 核心網路包路徑追蹤利器 skbtracer,Go 語言版本LinuxGo
- Linux網路中的DNS域名正向解析實操LinuxDNS
- Linux效能分析之網路篇Linux
- 網路病毒基本入門---概念解析(轉)
- Linux下的網路協議分析工具-tcpdump 快速入門手冊(轉)Linux協議TCP
- mrtg網路流量分析, 簡單安裝mrtg分析網路流量(轉)
- 網路狀態檢測的利器 - ss命令
- Linux必學的網路操作命令(轉)Linux
- AIX系統網路效能分析(轉)AI
- Html 解析利器-goqueryHTMLGo
- linux 網路命令精簡(轉)Linux
- 資料分析利器:XGBoost演算法最佳解析演算法
- Tcpdump命令的使用與示例——linux下的網路分析TCPLinux
- SNMP+MRTG 網路流量分析(轉)
- RAG文件解析利器:Deepdoc
- 交換機網路安全策略全方位解析(轉)
- Linux網路應用問答(轉)Linux
- Linux系統網路詳解(轉)Linux
- Linux網路管理員手冊 (轉)Linux
- 深入Linux網路核心堆疊(轉)Linux
- linux網路工程師需要掌握哪些技能?linux網路工程師技能分析Linux工程師
- linux網路知識:與網路設定有關的幾個檔案(轉)Linux
- Linux網路的IPv6應用(2)(轉)Linux
- Linux網路的IPv6應用(1)(轉)Linux
- 簡單配置linux下的網路鄰居samba(轉)LinuxSamba
- Linux網橋原始碼框架分析初步(轉)Linux原始碼框架
- 網路問題排查必備利器:Pingmesh
- 深入分析新時代的網路攻擊技術(轉)