無論是要解決網(wǎng)絡(luò)連接問題還是配置防火墻,第一件事是要檢查系統(tǒng)實(shí)際打開了哪些端口或者是應(yīng)用監(jiān)聽那些端口。
監(jiān)聽端口是應(yīng)用程序監(jiān)聽的計(jì)算機(jī)系統(tǒng)的端口。通過ss
,netstat
或lsof
命令查詢系統(tǒng)網(wǎng)絡(luò)命名空間,你可以得到的應(yīng)用程序正在監(jiān)聽端口名單。
每個(gè)監(jiān)聽端口都可以被防火墻允許或關(guān)閉/阻止/過濾/轉(zhuǎn)發(fā)。一般而言,開放端口是一個(gè)網(wǎng)絡(luò)端口,它接受來自遠(yuǎn)程計(jì)算機(jī)傳入數(shù)據(jù)包。
例如,如果你正在運(yùn)行著Web服務(wù)器并監(jiān)聽80
,443
端口,這些端口在防火墻上是對所有人開放。
除非被IPS封鎖,使用瀏覽器將能夠訪問Web服務(wù)器的站點(diǎn)。在這種情況下,80
和443
都是開放端口。
開放端口可能會(huì)帶來安全風(fēng)險(xiǎn),因?yàn)楣粽呖梢允褂妹總€(gè)開放端口來進(jìn)行漏洞攻擊或執(zhí)行其他類型的攻擊。您應(yīng)該只打開應(yīng)用程序所需的端口,關(guān)閉未使用的端口。
nmap 掃描開放端口
Nmap是功能強(qiáng)大的網(wǎng)絡(luò)掃描工具,可以掃描單個(gè)主機(jī)和大型網(wǎng)絡(luò)。它主要用于安全審核和滲透測試。nmap
是端口掃描的首選工具。
除端口掃描外,nmap
還可以檢測Mac地址,操作系統(tǒng)類型,內(nèi)核版本等。在本節(jié)中,我們僅說明如何使用nmap掃描端口。
nmap的-sT
選項(xiàng)可以掃描TCP端口,-p-
掃描TCP協(xié)議的所有端口,即0-65535。如果不使用-p-
,nmap
將僅掃描前1000個(gè)端口。
如果你需要掃描UDP端口,請使用-sU
代替-sT
。如果需要更多信息,請?jiān)L問nmap手冊頁,并了解此工具的功能。
以下nmap命令示例將會(huì)掃描IP地址是10.10.8.8
計(jì)算機(jī)已打開的端口,確定哪些端口正在監(jiān)聽來自網(wǎng)絡(luò)的TCP/UDP連接。
sudo nmap -sT -p- 10.10.8.8 #tcp
sudo nmap -sU -p- 10.10.8.8 #UDP
Starting Nmap 7.60 ( https://nmap.org ) at 2019-07-09 23:10 CEST
Nmap scan report for 10.10.8.8
Host is up (0.0012s latency).
Not shown: 998 closed ports
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
MAC Address: 08:00:27:05:49:23 (Oracle VirtualBox virtual NIC)
Nmap done: 1 IP address (1 host up) scanned in 0.41 seconds
輸出顯示,計(jì)算機(jī)打開的端口包括22
,80
以及8069
端口。
netcat 掃描打開端口
Netcat或nc
是一個(gè)命令行工具,可以基于TCP或UDP協(xié)議通過網(wǎng)絡(luò)連接讀取和寫入數(shù)據(jù)。
使用netcat命令可以掃描單個(gè)端口或端口范圍。默認(rèn)是掃描TCP協(xié)議的端口,要掃描UDP端口,請使用nc
的-u
選項(xiàng)。
你可使用nc
的-z
選項(xiàng)指示僅掃描已打開的端口,并且使用-v
選項(xiàng)用于獲取更多詳細(xì)信息。1
如果需要獲得已打開且可成功連接的端口,則可以使用grep命令過濾結(jié)果。
例如命令nc -z -v 10.10.8.8 20-80
將會(huì)掃描IP地址是10.10.8.8
的遠(yuǎn)程計(jì)算機(jī),范圍在20-80的TCP端口。
nc -z -v 10.10.8.8 20-80
nc -z -v 10.10.8.8 20-80 2>&1 | grep succeeded #tcp端口
nc -z -v -u 10.10.8.8 20-80 2>&1 | grep succeeded #udp端口
nc: connect to 10.10.8.8 port 20 (tcp) failed: Connection refused
nc: connect to 10.10.8.8 port 21 (tcp) failed: Connection refused
Connection to 10.10.8.8 22 port [tcp/ssh] succeeded!
...
Connection to 10.10.8.8 80 port [tcp/http] succeeded!
Bash 偽設(shè)備掃描端口
檢查某個(gè)端口是打開還是關(guān)閉的另一種方法是使用Bash檢查/dev/tcp/..
或/dev/udp/..
目錄中的偽設(shè)備。
在/dev/$PROTOCOL/$HOST/$IP
偽設(shè)備運(yùn)行命令時(shí),Bash將在指定端口打開到指定主機(jī)的TCP或UDP連接。
使用偽設(shè)備連接到端口時(shí)的默認(rèn)超時(shí)時(shí)間非常長,因此我們使用timeout
命令在5秒后終止測試命令。如果建立了端口連接,則測試命令將返回true。
以下if..else語句將檢查kernel.org
打開是否打開端口443
,如果建立到kernel.org
端口的連接,則測試命令將返回true。
如果你需要使用檢查指定端口范圍,您也可以使用for循環(huán)來達(dá)到這一目的。
if timeout 5 bash -c '/dev/null'
then
echo "Port is open"
else
echo "Port is closed"
fi
for PORT in {20..80}; do
timeout 1 bash -c "$PORT &>/dev/null" && echo "port $PORT is open"
done
for循環(huán)
port 22 is open
port 80 is open
結(jié)論
我們?yōu)槟故玖藥追N可用于掃描開放端口的工具。還有其他工具和方法來檢查打開的端口,例如,您可以使用Python socket
模塊curl
,telnet
或wget
等。
-
Linux
+關(guān)注
關(guān)注
87文章
11512瀏覽量
213909 -
計(jì)算機(jī)
+關(guān)注
關(guān)注
19文章
7667瀏覽量
90863 -
端口
+關(guān)注
關(guān)注
4文章
1046瀏覽量
32965
發(fā)布評論請先 登錄
端口引腳是否可用于從待機(jī)狀態(tài)喚醒
可用于提供交通運(yùn)輸數(shù)據(jù)的新工具
有沒有免費(fèi)的工具可用于STM32F4進(jìn)行邊界掃描測試?
沃爾瑪推出一款新的AR掃描工具 可用于對比產(chǎn)品
可用于創(chuàng)建定制設(shè)計(jì)的信號鏈設(shè)計(jì)器工具介紹

可用于低功耗設(shè)計(jì)的技術(shù)方法

市場上可用的十大最佳漏洞掃描工具
Konan:用于Web目錄掃描的工具

一款使用在線端口掃描網(wǎng)站進(jìn)行端口掃描的工具

評論