5.8. 檢驗那些連接埠在聽取

在設定好網路服務後,您必須要注意有那些連接埠正在聽取系統的網路介面,任何開啟的連接埠都可能是入侵的證明。

有兩種可用來列出聽取網路之連接埠的基本方法,一個較不可靠的方法是藉由輸入 netstat -anlsof -i 指令來查詢網路的堆疊。 這種方法較不可靠,因為這些程式並不從網路連線 到機器,而是用以查看系統上所執行的服務。 因此,這些應用程式便成為由攻擊者所取代的經常目標,藉由這種 方式,假如怪客開啟了未經授權的網路連接埠,他們將會試著覆蓋他們的跡象。

用來檢查那些埠正在聽取網路的一個較可靠的方法是使用連接埠掃描程式,如 nmap

下列從主控台執行的指令將可以決定那些連接埠正在聽取網路中的 TCP 連線:

nmap -sT -O localhost

這個指令的輸出將如下所示:

Starting nmap V. 3.00 ( www.insecure.org/nmap/ )
Interesting ports on localhost.localdomain (127.0.0.1):
(The 1596 ports scanned but not shown below are in state: closed)
Port       State       Service
22/tcp     open        ssh
111/tcp    open        sunrpc
515/tcp    open        printer
834/tcp    open        unknown
6000/tcp   open        X11
Remote OS guesses: Linux Kernel 2.4.0 or Gentoo 1.2 Linux 2.4.19 rc1-rc7)

Nmap run completed -- 1 IP address (1 host up) scanned in 5 seconds

這個輸出顯示出正在執行 portmap(由於 sunrpc 服務的存在),然而,在連接埠 834 上也有一個神秘的服務。 如要檢查該連接埠是否與知名服務的正式清單相 關聯,請輸入:

cat /etc/services | grep 834

這個指令不傳回任何的輸出,這表示雖然此連接埠是屬於保留的範圍(0-1023),而且需要 root 的權限才能開啟, 它並不與任何的知名服務相關聯。

再來,使用 netstatlsof 來檢查關於這個連接埠的資訊。 如要 使用 netstat 檢查連接埠 834,請使用下列指令:

netstat -anp | grep 834

指令將會傳回下列的輸出:

tcp   0    0 0.0.0.0:834    0.0.0.0:*   LISTEN   653/ypbind

netstat 中開啟連接埠的存在再度證明怪客在一部被入侵的系統上暗中開啟一個連接埠, 將可以不會經由這個指令而顯示出來。 [p] 選項將會顯示出開啟這個連接埠之服務的程序 ID (PID)。 在這個例子中,開啟的連接埠屬於 ypbind (NIS),它是與 portmap 服務所結合處理的一個 RPC 服務。

lsof 指令也會顯示出類似的資訊,因為它也可以連結開放埠到服務:

lsof -i | grep 834

以下為這個指令輸出的相關部份:

ypbind      653        0    7u  IPv4       1319                 TCP *:834 (LISTEN)
ypbind      655        0    7u  IPv4       1319                 TCP *:834 (LISTEN)
ypbind      656        0    7u  IPv4       1319                 TCP *:834 (LISTEN)
ypbind      657        0    7u  IPv4       1319                 TCP *:834 (LISTEN)

這些工具顯示了相當多關於機器上執行的服務狀態,這些工具是極富彈性的,而且可以提供關於網路服務與 設定的極多資訊。 因此強烈建議您閱讀 lsof, netstat, nmapservices 的 man page。