自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

手把手教你 3 個 Linux 中快速檢測端口的小技巧

開發(fā) 前端
無論是要解決網(wǎng)絡連接問題還是配置防火墻,第一件事是要檢查系統(tǒng)實際打開了哪些端口。本文介紹了幾種快速查找 Linux 系統(tǒng)上哪些端口向外部開放的方法。

 無論是要解決網(wǎng)絡連接問題還是配置防火墻,第一件事是要檢查系統(tǒng)實際打開了哪些端口。

[[316821]]

本文介紹了幾種快速查找 Linux 系統(tǒng)上哪些端口向外部開放的方法。

什么是開放端口

監(jiān)聽端口是應用程序監(jiān)聽的網(wǎng)絡端口。你要得到的監(jiān)聽端口名單通??梢酝ㄟ^如 ss、netstat 或 lsof 命令查詢系統(tǒng)上網(wǎng)絡堆棧。每個監(jiān)聽端口都可以使用防火墻打開或關閉(過濾)。

一般而言,開放端口是一個網(wǎng)絡端口,它接受來自遠程位置的傳入數(shù)據(jù)包。

例如:如果你正在運行的監(jiān)聽端口 80、443 的 Web 服務器,并把這些端口在防火墻上對任何人開放。使用瀏覽器將能夠訪問托管在 Web 服務器上的網(wǎng)站。在這種情況下,80 和 443 都是開放端口。

開放端口可能會帶來安全風險,因為攻擊者可以使用每個開放端口來利用漏洞或執(zhí)行任何其他類型的攻擊。您應該只公開應用程序功能所需的端口,然后關閉所有其他端口。

使用 Nmap 命令檢查開放端口

Nmap 是功能強大的網(wǎng)絡掃描工具,可以掃描單個主機和大型網(wǎng)絡。它主要用于安全審核和滲透測試。

Nmap 是端口掃描的首選工具。除端口掃描外,Nmap 還可以檢測 Mac 地址、操作系統(tǒng)類型、內核版本等。

從控制臺發(fā)出以下命令確定哪些端口正在監(jiān)聽來自網(wǎng)絡的 TCP 連接:

 

  1. $ sudo nmap -sT -p- 10.10.8.8 

-sT 選項告訴 Nmap 掃描 TCP 端口, -p- 掃描所有端口(65535 個)。如果不使用 -p-,Nmap 將僅掃描 1000 個端口。

 

  1. Starting Nmap 7.60 ( https://nmap.org ) at 2019-07-09 23:10 CEST 
  2. Nmap scan report for 10.10.8.8 
  3. Host is up (0.0012s latency). 
  4. Not shown: 998 closed ports 
  5. PORT   STATE SERVICE 
  6. 22/tcp open  ssh 
  7. 80/tcp open  http 
  8. MAC Address: 08:00:27:05:49:23 (Oracle VirtualBox virtual NIC) 
  9.  
  10. Nmap done: 1 IP address (1 host up) scanned in 0.41 seconds 

以上顯示,只有端口 22、80 以及 8069 在目標系統(tǒng)上打開。

要掃描 UDP 端口,請使用 -sU 代替 -sT:

 

  1. $ sudo nmap -sU -p- 10.10.8.8 

有關更多信息,請訪問 Nmap 手冊頁,并了解此工具的所有其他強大功能。

使用 Netcat 命令檢查開放端口

Netcat(或nc)是一種命令行工具,可以使用 TCP 或 UDP 協(xié)議跨網(wǎng)絡連接讀取和寫入數(shù)據(jù)。

使用 netcat 可以掃描單個端口或端口范圍。

例如,要掃描 IP 地址為 10.10.8.8 的遠程計算機上端口范圍為 20-80 之間打開的 TCP端口,你可以使用以下命令:

 

  1. $ nc -z -v 10.10.8.8 20-80 

-z 選項指示 nc 僅掃描打開的端口,而不發(fā)送任何數(shù)據(jù),并且 -v 用于獲取更多詳細信息。

輸出將如下所示:

 

  1. nc: connect to 10.10.8.8 port 20 (tcp) failed: Connection refused 
  2. nc: connect to 10.10.8.8 port 21 (tcp) failed: Connection refused 
  3. Connection to 10.10.8.8 22 port [tcp/ssh] succeeded! 
  4. ... 
  5. Connection to 10.10.8.8 80 port [tcp/http] succeeded! 

如果只希望將以上開放端口的行打印在屏幕上,則可以使用 grep 命令過濾結果。

 

  1. $ nc -z -v 10.10.8.8 20-80 2>&1 | grep succeeded 
  2. Connection to 10.10.8.8 22 port [tcp/ssh] succeeded! 
  3. Connection to 10.10.8.8 80 port [tcp/http] succeeded! 

要掃描 UDP 端口,請將 -u 選項傳遞給 nc 命令:

 

  1. $ 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 偽設備上執(zhí)行命令時,Bash 將在指定端口上打開到指定主機的 TCP 或 UDP 連接。

以下 if..else 語句將檢查端口 443 在 kernel.org 是否打開:

 

  1. if timeout 5 bash -c '</dev/tcp/kernel.org/443 &>/dev/null' 
  2. then 
  3.   echo "Port is open" 
  4. else 
  5.   echo "Port is closed" 
  6. fi 

輸出將如下所示:

 

  1. Port is open 

上面的代碼如何工作?

使用偽設備連接到端口時的默認超時時間非常長,因此我們使用 timeout 命令在 5 秒后終止測試命令。如果建立了 kernel.org 端口連接,則 443 測試命令將返回 true。你也可以使用 for 循環(huán)來檢查指定的端口范圍:

 

  1. for PORT in {20..80}; do 
  2.   timeout 1 bash -c "</dev/tcp/10.10.8.8/$PORT &>/dev/null" &&  echo "port $PORT is open" 
  3. done 

輸出將如下所示:

 

  1. port 22 is open 
  2. port 80 is open 

結論

我們?yōu)槟阏故玖藥追N如何使用掃描開放端口的工具,當然你也可以使用其它工具來達到同樣的目的,例如:Python Socket 模塊、Curl、Telnet 或 Wget。

責任編輯:華軒 來源: 運維之美
相關推薦

2011-01-10 14:41:26

2016-04-27 09:49:16

用戶模型產品總結

2021-09-18 14:26:49

Linux Linux 啟動流程Linux 系統(tǒng)

2009-06-15 16:58:57

Java安裝Linux

2022-01-17 07:50:37

Linux Patch項目

2021-07-14 09:00:00

JavaFX開發(fā)應用

2014-11-07 11:39:59

2011-05-03 15:59:00

黑盒打印機

2020-06-01 16:25:43

WindowsLinux命令

2021-09-26 16:08:23

CC++clang_forma

2011-04-28 09:23:36

REST

2022-01-08 20:04:20

攔截系統(tǒng)調用

2022-03-14 14:47:21

HarmonyOS操作系統(tǒng)鴻蒙

2023-04-26 12:46:43

DockerSpringKubernetes

2022-12-07 08:42:35

2022-07-27 08:16:22

搜索引擎Lucene

2011-05-27 08:41:26

JavascriptFirefox

2011-02-22 13:46:27

微軟SQL.NET

2021-12-28 08:38:26

Linux 中斷喚醒系統(tǒng)Linux 系統(tǒng)

2021-02-26 11:54:38

MyBatis 插件接口
點贊
收藏

51CTO技術棧公眾號