主要用到的命令:netstat, nmap
兩者的區別如下:
l netstat:在本機上面以自己的程序監測自己的 port;
l nmap:透過網絡的偵測軟件輔助,可偵測非本機上的其他網絡主機。
1、 netstat的常規用法:
1.1 列出正在監聽的網絡端口:
[root@www ~]# netstat -tunl
ctive Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN
....(底下省略)....
上面說明我的主機至少啟動了111、22和25等端口,而25端口只針對 lo 內部循環測試網絡提供服務,因特網是連不到該埠口的。
1.2 列出已經連接的網絡端口:
[root@www ~]# netstat -tun
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 52 192.168.1.100:22 192.168.1.101: 56746 ESTABLISHED
從上面的數據來看,我的本地端服務器 (Local Address, 192.168.1.100) 目前僅有一條已建立的聯機,那就是與 192.168.1.101 那部主機連接的聯機,並且聯機方線是由對方連接到我主機的 port 22 來取用我服務器的服務吶!
1.3 刪除已建立連接或監聽中的連接:
如果想要將已經建立,或者是正在監聽當中的網絡服務關閉的話,最簡單的方法當然就是找出該聯機的 PID, 然後將他 kill 掉即可啊!例如下面的范例:
[root@www ~]# netstat -tunp
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/P name
tcp 0 52 192.168.1.100:22 192.168.1.101:56746 ESTABLISHED 1342/0
如上面的范例,我們可以找出來該聯機是由 sshd 這個程序來啟用的,並且他的 PID 是 1342, 希望你不要心急的用 killall 這個指令,否則容易刪錯人 (因為你的主機裡面可能會有多個 sshd 存在), 應該要使用 kill 這個指令才對喔!
2、 NMAP的使用:
如果你要偵測的設備並沒有可讓你登入的操作系統時,那該怎麼辦?舉例來說,你想要了解一下公司的網絡打印機是否有開放某些協議時, 那該如何處理啊?現在你知道 netstat 可以用來查閱本機上面的許多監聽中的通訊協議, 那例如網絡打印機這樣的非本機的設備,要如何查詢啊?呵呵!用 nmap 就對了!
[root@www ~]# nmap [掃瞄類型] [掃瞄參數] [hosts 地址與范圍]
選項與參數:
[掃瞄類型]:主要的掃瞄類型有底下幾種:
-sT:掃瞄 TCP 封包已建立的聯機 connect() !
-sS:掃瞄 TCP 封包帶有 SYN 卷標的數據
-sP:以 ping 的方式進行掃瞄
-sU:以 UDP 的封包格式進行掃瞄
-sO:以 IP 的協議 (protocol) 進行主機的掃瞄
[掃瞄參數]:主要的掃瞄參數有幾種:
-PT:使用 TCP 裡頭的 ping 的方式來進行掃瞄,可以獲知目前有幾部計算機存活(較常用)
-PI:使用實際的 ping (帶有 ICMP 封包的) 來進行掃瞄
-p :這個是 port range ,例如 1024-, 80-1023, 30000-60000 等等的使用方式
[Hosts 地址與范圍]:這個有趣多了,有幾種類似的類型
192.168.1.100 :直接寫入 HOST IP 而已,僅檢查一部;
192.168.1.0/24 :為 C Class 的型態,
192.168.*.* :嘿嘿!則變為 B Class 的型態了!掃瞄的范圍變廣了!
192.168.1.0-50,60-100,103,200 :這種是變形的主機范圍啦!很好用吧!
# 范例一:使用預設參數掃瞄本機所啟用的 port (只會掃瞄 TCP)
[root@www ~]# yum install nmap
[root@www ~]# nmap localhost
PORT STATE SERVICE
22/tcp open ssh
25/tcp open smtp
111/tcp open rpcbind
# 在預設的情況下,nmap 僅會掃瞄 TCP 的協議喔!