linux 扫描开放的端口命令,在Linux中,如何检查开放的端口(扫描)
無論是要解決網絡連接問題還是配置防火墻,要檢查的第一件事就是系統上實際打開了哪些端口。
本文描述了幾種如何找出在Linux系統打開了哪些端口的方法。
什么是開放端口
偵聽端口是應用程序偵聽的網絡端口,可以通過使用偵聽端口,ss,netstat或lsof等命令查詢網絡堆棧來獲得系統上的列表,每個偵聽端口都可以使用防火墻打開或關閉(過濾)。
一般來說,開放端口是一個網絡端口,接受來自遠程位置的傳入數據包。
你應該只公開程序所需的端口,并關閉所有其他端口。
使用nmap檢查打開的端口
Nmap是一個強大的網絡掃描工具,可以掃描單個主機和大型網絡,主要用于安全審計和滲透測試,
除了端口掃描,nmap還可以檢測Mac地址,OS類型,內核版本等等。
以下命令確定哪些端口正在偵聽來自網絡的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端口,請使用-sU而不是-sT:sudo nmap -sU -p- 10.10.8.8
使用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 succeededConnection 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偽設備檢查打開端口
另一種檢查某個端口是否打開或關閉的方法是使用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"
fiPort is open
上面的代碼是如何工作的?
使用偽設備連接到端口時的默認超時很長,因此使用timeout命令在5秒后殺死測試命令,如果連接建立到kernel.org端口443,測試命令將return true。
你還可以使用for循環檢查端口范圍:for PORT in {20..80}; do
timeout 1 bash -c "/dev/null" && echo "port$PORTis open"
done
輸出將類似于以下內容:port 22 is open
port 80 is open
結束語
我們向你展示了幾個可用于掃描打開端口的工具,還有其他工具和方法來檢查開放端口,例如你可以使用python socket模塊,curl或telnet,wget。
如果你有問題或意見,請在下面留言。
總結
以上是生活随笔為你收集整理的linux 扫描开放的端口命令,在Linux中,如何检查开放的端口(扫描)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: hex对ARP和IP、ICMP数据包的分
- 下一篇: linux 其他常用命令