linux 扫描开放的端口命令,如何在 Linux 中检查(扫描)开放端口
原標題:如何在 Linux 中檢查(掃描)開放端口
如何在 Linux 中檢查(掃描)開放端口
無論是對網絡連接問題進行故障排除還是配置防火墻,首先要檢查的是在系統上實際打開的端口。
本文介紹了幾種查找系統外部打開端口的方法。
什么是開放端口
偵聽端口是應用程序偵聽的網絡端口。您可以通過使用 ss,netstat 或 lsof 等命令查詢網絡堆棧來查看系統上的偵聽端口。可以使用防火墻打開或關閉(過濾)每個偵聽端口。
一般而言,開放端口是接收來自遠程位置的傳入數據包的網絡端口。
例如,如果您正在運行偵聽端口 80 和 443 并且在防火墻上打開這些端口的 Web 服務器,則任何人(阻止的 ips 除外)都可以使用他的瀏覽器訪問 Web 服務器上托管的網站。在這種情況下,80和443都是開放端口。
開放端口可能會帶來安全風險,因為攻擊者可以使用每個開放端口來利用漏洞或執行任何其他類型的攻擊。您應該只公開應用程序功能所需的端口并關閉所有其他端口。
使用nmap檢查打開端口
Nmap 是一款功能強大的網絡掃描工具,可以掃描單個主機和大型網絡。它主要用于安全審計和滲透測試。
如果可用,nmap 應該是端口掃描的第一個工具。除了端口掃描,nmap 還可以檢測 Mac 地址,操作系統類型,內核版本等等。
從控制臺發出的以下命令確定哪些端口正在偵聽來自網絡的TCP連接:
sudo nmap -sT -p- 10.10.8.8
-sT 告訴 nmap 掃描 TCP 端口。
-p- 掃描所有65535端口。
如果未使用 -p-,則 nmap 將僅掃描1000個端口。
輸出
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
上面的輸出顯示只有端口22,80和8069在目標系統上打開。
要掃描UDP端口,請使用-uT而不是-sT:
sudo nmap -uT -p- 10.10.8.8
有關更多信息,請訪問 nmap 手冊頁并閱讀此工具的所有其他強大選項。
使用 netcat 檢查打開端口
Netcat(或nc)是一個命令行工具,可以使用 TCP 或 UDP 協議跨網絡連接讀寫數據。
使用 netcat,您可以掃描單個端口或端口范圍。
例如,要掃描IP地址為 10.10.8.8 且范圍為 20-80 的遠程計算機上的開放 TCP 端口,您將使用以下命令:
nc -z -v 10.10.8.8 20-80
-z 選項告訴 nc 僅掃描開放端口,而不發送任何數據,-v 用于更詳細的信息。
輸出看起來像這樣:
輸出
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!
如果只想在屏幕上打印帶有打開端口的行,可以使用 grep 命令過濾結果。
nc -z -v 10.10.8.8 20-80 2>&1 | grep succeeded
輸出
Connection to 10.10.8.8 22 port [tcp/ssh] succeeded!
Connection to 10.10.8.8 80 port [tcp/http] succeeded!
要掃描 UDP 端口,請將 -u 選項傳遞給 nc 命令:
nc -z -v -u 10.10.8.8 20-80 2>&1 | grep succeeded
使用Bash Pseudo Device檢查打開端口
檢查某個端口是打開還是關閉的另一種方法是使用 Bash shell /dev/tcp/.. 或 /dev /udp/.. 偽設備。
在 /dev/$PROTOCOL/$HOST/$IP 偽設備上執行命令時,Bash 將打開與指定端口上指定主機的 TCP 或 UDP 連接。
以下 if..else 語句將檢查 kernel.org 上的端口 443 是否已打開:
if timeout 5 bash -c '/dev/null'
then
echo "Port is open"
else
echo "Port is closed"
fi
輸出
Port is open
上面的代碼如何工作?
使用偽設備連接到端口時的默認超時很大,因此我們使用 timeout命令在5秒后終止測試命令。 如果建立到 kernel.org 端口443 的連接,則 test 命令將返回 true。
您還可以使用 for 循環檢查端口范圍:
for PORT in {20..80}; do
timeout 1 bash -c "/dev/null" && echo "port $PORT is open"
done
輸出
port 22 is open
port 80 is open
寫在最后
我們向您展示了幾種可用于掃描開放端口的工具。 還有其他實用程序和方法來檢查開放端口,例如,您可以使用 Python 套接字模塊,curl,telnet 或 wget。
原文來自: https://linux265.com/news/3761.html返回搜狐,查看更多
責任編輯:
總結
以上是生活随笔為你收集整理的linux 扫描开放的端口命令,如何在 Linux 中检查(扫描)开放端口的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数字电视 frontend tuner
- 下一篇: 1.3端口扫描:利用Nmap工具进行端口