關(guān)注 Linux 的系統狀態(tài),主要從兩個(gè)角度出發(fā),一個(gè)角度是系統正在運行什么服務(wù);另外一個(gè)就是
有什么連接或服務(wù)可用。使用 ps 命令可以查看處于活躍狀態(tài)的服務(wù);使用 netstat 命令則可以顯示所有
可用連接和服務(wù),以及它們的狀態(tài)。netstat 還可以顯示 ps 無(wú)法顯示的、從 inetd 或 xinetd 中運行的服
務(wù),比如 telnet 等。
用 netstat 查看所有服務(wù)
以下命令可以顯示所有的服務(wù):
$ netstat -a
激活I(lǐng)nternet連接 (服務(wù)器和已建立連接的)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 *:telnet *:* LISTEN
tcp 0 0 *:smtp *:* LISTEN
tcp 0 0 192.168.1.5:32851 nest.anthill.echid:ircd ESTABLISHED
tcp 0 0 *:nfs *:* LISTEN
tcp 0 0 *:60966 *:* LISTEN
tcp 0 0 *:sunrpc *:* LISTEN
tcp 0 0 *:52694 *:* LISTEN
tcp 0 0 localhost:ipp *:* LISTEN
tcp 0 0 localhost:smtp *:* LISTEN
tcp 0 0 *:56445 *:* LISTEN
udp 0 0 *:ipp *:*
Active Unix domain sockets (servers and established)
Proto RefCnt Flags Type State I-Node Path
Unix 2 [ ACC ] STREAM LISTENING 1065 /tmp/ksocket-carla/klaunchertDCh2b.slave-socket
上述顯示中,"Proto"是 Protocol 的簡(jiǎn)稱(chēng),它可以是 TCP 或 UDP。"Recv-Q"和"Send-Q"指
的是接收隊列和發(fā)送隊列,這些數字一般都應該是 0,如果不是,則表示軟件包正在隊列中堆積。這種情
況只能在非常短的時(shí)間內存在,比如在 KMail 中單擊檢查郵件按鈕時(shí),有如下顯示是正?,F象:
tcp 0 593 192.168.1.5:34321 venus.euao.com:smtp ESTABLISHED
如果接收隊列持續處于阻塞狀態(tài),那么很有可能受到了拒絕式服務(wù)的攻擊。如果發(fā)送隊列不能被快
速清除,則可能是因為有一個(gè)應用程序不能將所要發(fā)送的東西傳送完。
"Local Address" 指本機的 IP 和端口號。"Foreign Address"指所要連接的主機名稱(chēng)和服務(wù)。
"State"指現在連接的狀態(tài)。三種常見(jiàn)的 TCP 狀態(tài)如下所示:
a) LISTEN 等待接收連接;
b) ESTABLISHED 一個(gè)處于活躍狀態(tài)的連接;
c) TIME_WAIT 一個(gè)剛被終止的連接。它只持續 1 至 2 分鐘,然后就會(huì )變成 LISTEN 狀態(tài)。
由于 UDP 是無(wú)狀態(tài)的,所以其 State 欄總是空白。
持續獲取有用信息
使用"netstat -a"命令,顯示結果可能會(huì )有數百行。其實(shí),在這些結果中可以忽略所有"Active
Unix domain sockets"以后的內容。因為這些內容是本地內部進(jìn)程之間的通信,而不是網(wǎng)絡(luò )連接。使
用以下命令可以避免顯示無(wú)用信息:
$ netstat --inet -a
" netstat --inet -a" 命 令 的 顯 示 結 果 將 只 有 網(wǎng) 絡(luò ) 連 接 , 包 括 所 有 正 處 在 " LISTEN" 狀態(tài)和
"ESTABLISHED"狀態(tài)的。
需要特別注意的是,對于普通用戶(hù)而言,一般不需要使用 telnet 或 SMTP 服務(wù)。因此需要將其關(guān)閉,
以提高系統安全性;并且要重新配置啟動(dòng)文件,以保證它們不會(huì )在下次系統啟動(dòng)時(shí)自動(dòng)重新啟動(dòng)。
要想持續不斷地查看隨時(shí)都在更改的網(wǎng)絡(luò )信息,可以使用 netstat 命令的"-c"參數,并且將結果存
入文件中:
$ netstat --inet -a -c > netstat.txt
這時(shí),查看 netstat.txt 文件即可檢查郵件服務(wù)、Web 服務(wù)和 telnet 服務(wù)等的狀態(tài)變化。
檢查網(wǎng)卡
使用 netstat 命令的"-i"參數還可以幫助檢查網(wǎng)卡。該命令的顯示結果如下所示:
Kernel Interface table
eth0 1500 0 86192 0 0 0 60005 0 0 0 BMRU
lo 16436 0 434 0 0 0 434 0 0 0 LRU
在"RX-OK (Received OK)"和"TX-OK (Transmitted OK)"欄應該看到很多數字,而其它地方的
數字應該非常小。如果在"RX-ERR"或"TX-ERR"欄看到很多數據,則很有可能是網(wǎng)卡或網(wǎng)線(xiàn)出現了
問(wèn)題。
==================================================
可以是用命令:netstat -lnp來(lái)察看系統當前監聽(tīng)的端口。其中l選項表示顯示正在被監聽(tīng)(listen)的端口;n選項表示直接顯示端口數字而不是通過(guò)察看/etc/service來(lái)轉換為端口名;p選項表示列出監聽(tīng)的程序。例如:
netsat -l
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 *:mysql *:* LISTEN
tcp 0 0 *:netbios-ssn *:* LISTEN
tcp 0 0 *:swat *:* LISTEN
tcp 0 0 *:www *:* LISTEN
tcp 0 0 *:linuxconf *:* LISTEN
tcp 0 0 *:finger *:* LISTEN
tcp 0 0 *:login *:* LISTEN
tcp 0 0 *:shell *:* LISTEN
tcp 0 0 *:telnet *:* LISTEN
tcp 0 0 *:ftp *:* LISTEN
udp 0 0 radiusd.301:netbios-dgm *:*
udp 0 0 radiusd.301h:netbios-ns *:*
udp 0 0 *:netbios-dgm *:*
udp 0 0 *:netbios-ns *:*
udp 0 0 *:ntalk *:*
udp 0 0 *:talk *:*
raw 0 0 *:icmp *:* 7
raw 0 0 *:tcp *:* 7
Active UNIX domain sockets (only servers)
Proto RefCnt Flags Type State I-Node Path
unix 0 [ ACC ] STREAM LISTENING 40250 /tmp/mysql.sock
netstat -ln
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:139 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:901 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:98 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:79 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:513 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:514 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:23 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN
udp 0 0 192.168.2.33:138 0.0.0.0:*
udp 0 0 192.168.2.33:137 0.0.0.0:*
udp 0 0 0.0.0.0:138 0.0.0.0:*
udp 0 0 0.0.0.0:137 0.0.0.0:*
udp 0 0 0.0.0.0:518 0.0.0.0:*
udp 0 0 0.0.0.0:517 0.0.0.0:*
raw 0 0 0.0.0.0:1 0.0.0.0:* 7
raw 0 0 0.0.0.0:6 0.0.0.0:* 7
Active UNIX domain sockets (only servers)
Proto RefCnt Flags Type State I-Node Path
unix 0 [ ACC ] STREAM LISTENING 40250 /tmp/mysql.sock
================
Netstat命令舉例
請輸入下面的命令:
# netstat -tulpn
或者是
# netstat -npl
請看輸出結果::
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:6881 0.0.0.0:* LISTEN 6908/python
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 5562/cupsd
tcp 0 0 127.0.0.1:3128 0.0.0.0:* LISTEN 6278/(squid)
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 5854/exim4
udp 0 0 0.0.0.0:32769 0.0.0.0:* 6278/(squid)
udp 0 0 0.0.0.0:3130 0.0.0.0:* 6278/(squid)
udp 0 0 0.0.0.0:68 0.0.0.0:* 4583/dhclient3
udp 0 0 0.0.0.0:6881 0.0.0.0:* 6908/python
請注意,最后一欄給出了關(guān)于程序名稱(chēng)和端口的信息。在這里,我們解釋一下各參數的含義:
-t : 指明顯示TCP端口
-u : 指明顯示UDP端口
-l : 僅顯示監聽(tīng)套接字(所謂套接字就是使應用程序能夠讀寫(xiě)與收發(fā)通訊協(xié)議(
protocol
)與資料的程序)
-p : 顯示
進(jìn)程
標識符和程序名稱(chēng),每一個(gè)套接字/端口都屬于一個(gè)程序。
-n : 不進(jìn)行DNS輪詢(xún)(可以加速操作)
==========================================================
語(yǔ) 法:netstat [-acCeFghilMnNoprstuvVwx][-A<網(wǎng)絡(luò )類(lèi)型>][--ip]
補充說(shuō)明:利用netstat指令可讓你得知整個(gè)Linux系統的網(wǎng)絡(luò )情況。
參 數:
-a或–all 顯示所有連線(xiàn)中的Socket。
-A<網(wǎng)絡(luò )類(lèi)型>或–<網(wǎng)絡(luò )類(lèi)型> 列出該網(wǎng)絡(luò )類(lèi)型連線(xiàn)中的相關(guān)地址。
-c或–continuous 持續列出網(wǎng)絡(luò )狀態(tài)。
-C或–cache 顯示路由器配置的快取信息。
-e或–extend 顯示網(wǎng)絡(luò )其他相關(guān)信息。
-F或–fib 顯示FIB。
-g或–groups 顯示多重廣播功能群組組員名單。
-h或–help 在線(xiàn)幫助。
-i或–interfaces 顯示網(wǎng)絡(luò )界面信息表單。
-l或–listening 顯示監控中的服務(wù)器的Socket。
-M或–masquerade 顯示偽裝的網(wǎng)絡(luò )連線(xiàn)。
-n或–numeric 直接使用IP地址,而不通過(guò)域名服務(wù)器。
-N或–netlink或–symbolic 顯示網(wǎng)絡(luò )硬件外圍設備的符號連接名稱(chēng)。
-o或–timers 顯示計時(shí)器。
-p或–programs 顯示正在使用Socket的程序識別碼和程序名稱(chēng)。
-r或–route 顯示Routing Table。
-s或–statistice 顯示網(wǎng)絡(luò )工作信息統計表。
-t或–tcp 顯示TCP傳輸協(xié)議的連線(xiàn)狀況。
-u或–udp 顯示UDP傳輸協(xié)議的連線(xiàn)狀況。
-v或–verbose 顯示指令執行過(guò)程。
-V或–version 顯示版本信息。
-w或–raw 顯示RAW傳輸協(xié)議的連線(xiàn)狀況。
-x或–unix 此參數的效果和指定”-A unix”參數相同。
–ip或–inet 此參數的效果和指定”-A inet”參數相同
netstat 的一些常用選項
·netstat –s
本選項能夠按照各個(gè)協(xié)議分別顯示其統計數據。如果我們的應用程序(如Web瀏覽器)運行速度比較慢,或者不能顯示W(wǎng)eb頁(yè)之類(lèi)的數據,那么我們就可以用本選項來(lái)查看一下所顯示的信息。我們需要仔細查看統計數據的各行,找到出錯的關(guān)鍵字,進(jìn)而確定問(wèn)題所在。
·netstat –e
本選項用于顯示關(guān)于以太網(wǎng)的統計數據。它列出的項目包括傳送的數據報的總字節數、錯誤數、刪除數、數據報的數量和廣播的數量。這些統計數據既有發(fā)送的數據報數量,也有接收的數據報數量。這個(gè)選項可以用來(lái)統計一些基本的網(wǎng)絡(luò )流量)。
·netstat –r
本選項可以顯示關(guān)于路由表的信息,類(lèi)似于后面所講使用route print命令時(shí)看到的 信息。除了顯示有效路由外,還顯示當前有效的連接。
·netstat –a
本選項顯示一個(gè)所有的有效連接信息列表,包括已建立的連接(ESTABLISHED),也包括監聽(tīng)連接請(LISTENING)的那些連接。
·netstat –n
LISTEN:偵聽(tīng)來(lái)自遠方的TCP端口的連接請求
SYN-SENT:再發(fā)送連接請求后等待匹配的連接請求(如果有大量這樣的狀態(tài)包,檢查是否中招了)
SYN-RECEIVED:再收到和發(fā)送一個(gè)連接請求后等待對方對連接請求的確認(如有大量此狀態(tài),估計被flood攻擊了)
ESTABLISHED:代表一個(gè)打開(kāi)的連接
FIN-WAIT-1:等待遠程TCP連接中斷請求,或先前的連接中斷請求的確認
FIN-WAIT-2:從遠程TCP等待連接中斷請求
CLOSE-WAIT:等待從本地用戶(hù)發(fā)來(lái)的連接中斷請求
CLOSING:等待遠程TCP對連接中斷的確認
LAST-ACK:等待原來(lái)的發(fā)向遠程TCP的連接中斷請求的確認(不是什么好東西,此項出現,檢查是否被攻擊)
TIME-WAIT:等待足夠的時(shí)間以確保遠程TCP接收到連接中斷請求的確認
CLOSED:沒(méi)有任何連接狀態(tài)
聯(lián)系客服