1、什么是開放端口
監聽端口是應用程序監聽的網絡端口。你要得到的監聽端口名單通常可以通過如 ss、netstat 或 lsof 命令查詢系統上網絡堆棧。每個監聽端口都可以使用防火牆打開或關閉(過濾)。
一般而言,開放端口是一個網絡端口,它接受來自遠程位置的傳入數據包。
例如:如果你正在運行的監聽端口 80、443 的 Web 服務器,並把這些端口在防火牆上對任何人開放。使用瀏覽器將能夠訪問托管在 Web 服務器上的網站。在這種情況下,80 和 443 都是開放端口。
開放端口可能會帶來安全風險,因為攻擊者可以使用每個開放端口來利用漏洞或執行任何其他類型的攻擊。您應該只公開應用程序功能所需的端口,然后關閉所有其他端口。
2、使用 Nmap 命令檢查開放端口
Nmap 是功能強大的網絡掃描工具,可以掃描單個主機和大型網絡。它主要用於安全審核和滲透測試。
Nmap 是端口掃描的首選工具。除端口掃描外,Nmap 還可以檢測 Mac 地址、操作系統類型、內核版本等。
從控制台發出以下命令確定哪些端口正在監聽來自網絡的 TCP 連接:
[root@iZbp143t3oxhfc3ar7jey0Z ~]# nmap -sT -p- 47.111.251.255 Starting Nmap 6.40 ( http://nmap.org ) at 2020-03-16 18:44 CST Nmap scan report for 47.111.251.255 Host is up (0.0021s latency). Not shown: 65520 closed ports PORT STATE SERVICE 22/tcp open ssh 25/tcp filtered smtp 80/tcp open http 111/tcp open rpcbind 2049/tcp open nfs 2222/tcp open EtherNet/IP-1 3306/tcp open mysql 5555/tcp open freeciv 8070/tcp open unknown 8080/tcp open http-proxy 8082/tcp open blackice-alerts 20048/tcp open unknown 39032/tcp open unknown 39137/tcp open unknown 44811/tcp open unknown Nmap done: 1 IP address (1 host up) scanned in 12.09 seconds
-sT 選項告訴 Nmap 掃描 TCP 端口, -p- 掃描所有端口(65535 個)。如果不使用 -p-,Nmap 將僅掃描 1000 個端口。
3、使用 Netcat 命令檢查開放端口
Netcat(或nc)是一種命令行工具,可以使用 TCP 或 UDP 協議跨網絡連接讀取和寫入數據。
使用 netcat 可以掃描單個端口或端口范圍。
例如,要掃描 IP 地址為 47.111.251.255 的遠程計算機上端口范圍為 20-800 之間打開的 TCP 端口,你可以使用以下命令:
[root@iZbp143t3oxhfc3ar7jey0Z ~]# netcat -z -v 47.111.251.255 20-800 47.111.251.255 22 (ssh) open 47.111.251.255 80 (http) open 47.111.251.255 111 (sunrpc) open
4、使用 Bash 偽設備檢查打開的端口
檢查某個端口是打開還是關閉的另一種方法是使用 Bash Shell 檢查 /dev/tcp/.. 或 /dev/udp/.. 下的偽設備。
在 /dev/$PROTOCOL/$HOST/$IP 偽設備上執行命令時,Bash 將在指定端口上打開到指定主機的 TCP 或 UDP 連接。
以下 if..else 語句將檢查端口 443 在 kernel.org 是否打開:
[root@iZbp143t3oxhfc3ar7jey0Z ~]# if timeout 5 bash -c '</dev/tcp/kernel.org/443 &>/dev/null' > then > echo "Port is open" > else > echo "Port is closed" > fi Port is open
5、結論
我們為你展示了幾種如何使用掃描開放端口的工具,當然你也可以使用其它工具來達到同樣的目的,例如:Python Socket 模塊、Curl、Telnet 或 Wget。
