Linux 查看伺服器開放的埠號

来源:http://www.cnblogs.com/kerrycode/archive/2016/06/22/5609010.html
-Advertisement-
Play Games

在討論這個問題前,我們先來瞭解一下物理埠、邏輯埠、埠號等電腦概念。 埠相關的概念: 在網路技術中,埠(Port)包括邏輯埠和物理埠兩種類型。物理埠指的是物理存在的埠,如ADSL Modem、集線器、交換機、路由器上用 於連接其他網路設備的介面,如RJ-45埠、SC埠等等。邏輯... ...


在討論這個問題前,我們先來瞭解一下物理埠、邏輯埠、埠號等電腦概念。

 

埠相關的概念:

 

在網路技術中,埠(Port)包括邏輯埠和物理埠兩種類型。物理埠指的是物理存在的埠,如ADSL Modem、集線器、交換機、路由器上用 於連接其他網路設備的介面,如RJ-45埠、SC埠等等。邏輯埠是指邏輯意義上用於區分服務的埠,如TCP/IP協議中的服務埠,埠號的範圍從0到65535,比如用於瀏覽網頁服務的80埠,用於FTP服務的21埠等。由於物理埠和邏輯埠數量較多,為了對埠進行區分,將每個埠進行了編號,這就是埠號

埠按埠號可以分為3大類:

 

1:公認埠(Well Known Port)

公認埠號從0到1023,它們緊密綁定與一些常見服務,例如FTP服務使用埠21,你在 /etc/services 裡面可以看到這種映射關係。

 

2:註冊埠(Registered Ports):

從1024到49151。它們鬆散地綁定於一些服務。也就是說有許多服務綁定於這些埠,這些埠同樣用於許多其它目的.

 

3: 動態或私有埠(Dynamic and/or Private Ports)

動態埠,即私人埠號(private port numbers),是可用於任意軟體與任何其他的軟體通信的埠數,使用網際網路的傳輸控制協議,或用戶傳輸協議。動態埠一般從49152到65535

Linux中有限定埠的使用範圍,如果我要為我的程式預留某些埠,那麼我需要控制這個埠範圍。/proc/sys/net/ipv4/ip_local_port_range定義了本地TCP/UDP的埠範圍,你可以在/etc/sysctl.conf裡面定義net.ipv4.ip_local_port_range = 1024 65000

[root@localhost ~]# cat /proc/sys/net/ipv4/ip_local_port_range
32768   61000
[root@localhost ~]#  echo 1024 65535 > /proc/sys/net/ipv4/ip_local_port_range

 

關於埠和服務,我曾經拿公共廁所打比方,公共廁所里的每一個廁所就好比系統的每一個埠,為人解決方便就是所謂的服務,你提供了這些服務,那麼就必須開放埠(廁所),當有人上廁所時,就是在這些埠建立了鏈接。如果那個廁所被人占用了,就表示埠號被服務占用了,如果有一天這裡不提供公共廁所服務了,這個公共廁所被拆除了,自然也就沒有了埠號了。其實更形象的例子,就好比銀行大堂,埠號是那些櫃臺,而那些取號辦理業務的人就好比鏈接到伺服器的各種客戶端。他們通過埠重定向技術與櫃臺發送業務聯繫。再舉一個通俗易懂的例子,埠號,好比高鐵線上的每個站點,例如,長沙、岳陽等分別代表一個埠號,旅客通過火車票到各自的站點,就好比各個應用程式發往伺服器埠的IP包。

 

埠與服務的關係

 

    埠有什麼用呢?我們知道,一臺擁有IP地址的主機可以提供許多服務,比如Web服務、FTP服務、SMTP服務等,這些服務完全可以通過1個IP地址來實現。那麼,主機是怎樣區分不同的網路服務呢?顯然不能只靠IP地址,因為IP 地址與網路服務的關係是一對多的關係。實際上是通過“IP地址+埠號”來區分不同的服務的。

埠號與相應服務的對應關係存放在/etc/services文件中,這個文件中可以找到大部分埠。

如何檢查埠是否開放,其實不整理,還不知道有這麼多方法!

 

1:nmap工具檢測開放埠

nmap是一款網路掃描和主機檢測的工具。nmap的安裝非常簡單,如下所示rpm安裝所示。

[root@DB-Server Server]# rpm -ivh nmap-4.11-1.1.x86_64.rpm 
warning: nmap-4.11-1.1.x86_64.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
Preparing...                ########################################### [100%]
   1:nmap                   ########################################### [100%]
[root@DB-Server Server]# rpm -ivh nmap-frontend-4.11-1.1.x86_64.rpm 
warning: nmap-frontend-4.11-1.1.x86_64.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
Preparing...                ########################################### [100%]
   1:nmap-frontend          ########################################### [100%]
[root@DB-Server Server]# 

關於nmap的使用,都可以長篇大寫特寫,這裡不做展開。如下所示,nmap 127.0.0.1 查看本機開放的埠,會掃描所有埠。 當然也可以掃描其它伺服器埠。

[root@DB-Server Server]# nmap 127.0.0.1
 
Starting Nmap 4.11 ( http://www.insecure.org/nmap/ ) at 2016-06-22 15:46 CST
Interesting ports on localhost.localdomain (127.0.0.1):
Not shown: 1674 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
25/tcp   open  smtp
111/tcp  open  rpcbind
631/tcp  open  ipp
1011/tcp open  unknown
3306/tcp open  mysql
 
Nmap finished: 1 IP address (1 host up) scanned in 0.089 seconds
You have new mail in /var/spool/mail/root
[root@DB-Server Server]# 

clip_image001

 

2:netstat 工具檢測開放埠

[root@DB-Server Server]# netstat -anlp | grep 3306
tcp        0      0 :::3306                     :::*                        LISTEN      7358/mysqld         
[root@DB-Server Server]# netstat -anlp | grep 22
tcp        0      0 :::22                       :::*                        LISTEN      4020/sshd           
tcp        0     52 ::ffff:192.168.42.128:22    ::ffff:192.168.42.1:43561   ESTABLISHED 6198/2              
[root@DB-Server Server]# 

clip_image002

如上所示,這個工具感覺沒有nmap簡潔明瞭。當然也確實沒有nmap功能強大。

 

3:lsof 工具檢測開放埠

 
[root@DB-Server Server]# service mysql start
Starting MySQL......[  OK  ]
[root@DB-Server Server]# lsof -i:3306
COMMAND  PID  USER   FD   TYPE DEVICE SIZE NODE NAME
mysqld  7860 mysql   15u  IPv6  44714       TCP *:mysql (LISTEN)
[root@DB-Server Server]# service mysql stop
Shutting down MySQL..[  OK  ]
[root@DB-Server Server]# lsof -i:3306
[root@DB-Server Server]# 

clip_image003

 

[root@DB-Server Server]# lsof -i TCP| fgrep LISTEN
cupsd     3153    root    4u  IPv4   9115       TCP localhost.localdomain:ipp (LISTEN)
portmap   3761     rpc    4u  IPv4  10284       TCP *:sunrpc (LISTEN)
rpc.statd 3797 rpcuser    7u  IPv4  10489       TCP *:1011 (LISTEN)
sshd      4020    root    3u  IPv6  12791       TCP *:ssh (LISTEN)
sendmail  4042    root    4u  IPv4  12876       TCP localhost.localdomain:smtp (LISTEN)

 

4: 使用telnet檢測埠是否開放

   伺服器埠即使處於監聽狀態,但是防火牆iptables屏蔽了該埠,是無法通過該方法檢測埠是否開放的。

 

5:netcat工具檢測埠是否開放。

[root@DB-Server ~]# nc -vv 192.168.42.128 1521
Connection to 192.168.42.128 1521 port [tcp/ncube-lm] succeeded!
[root@DB-Server ~]# nc -z 192.168.42.128 1521; echo $?
Connection to 192.168.42.128 1521 port [tcp/ncube-lm] succeeded!
0
[root@DB-Server ~]#  nc -vv 192.168.42.128 1433
nc: connect to 192.168.42.128 port 1433 (tcp) failed: No route to host

 

關閉埠和開放埠

   

    關閉埠和開放埠應該是兩種不同的概念,每個埠都有對應的服務,因此要關閉埠,只要關閉相應的服務就可以了。像下麵例子,開啟了MySQL服務,埠3306處於監聽狀態,關閉MySQL服務後,埠3306自然被關閉了

 
[root@DB-Server Server]# service mysql start
Starting MySQL......[  OK  ]
[root@DB-Server Server]# lsof -i:3306
COMMAND  PID  USER   FD   TYPE DEVICE SIZE NODE NAME
mysqld  7860 mysql   15u  IPv6  44714       TCP *:mysql (LISTEN)
[root@DB-Server Server]# service mysql stop
Shutting down MySQL..[  OK  ]
[root@DB-Server Server]# lsof -i:3306
[root@DB-Server Server]# 

   

所以,系統裡面有些不必要的埠和服務,從安全考慮或資源節省角度,都應該關閉那些不必要的服務。關閉對應的埠。另外,即使服務開啟,但是防火牆對對應的埠進行了限制,這樣埠也不能被訪問,但埠本身並沒有關閉,只是埠被屏蔽了。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 之前做貨品橫向展示時,有看到評論說用到交叉表。 公司最近需要給訂單表做一個數據彙總的功能,同事給到一個參考SQL select * from (select COUNT(1) as 已鎖定 from tbl_order where orderLock = 1) as A,(select COUNT( ...
  • 報錯信息:Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535 向mysql的表插件一個欄位 類型為text時,或修改一個欄位類型為text時,報出上面的錯誤。其實 ...
  • 在其他地方看到一個有點意思的東西。是記錄轉換規則的。 求每個值輸出的結果是多少,我沒多想,直接得出 ...
  • postgresql預設情況下,遠程訪問不能成功,如果需要允許遠程訪問,需要修改兩個配置文件,說明如下: 1.postgresql.conf 將該文件中的listen_addresses項值設定為“*”,在9.0 Windows版中,該項配置已經是“*”無需修改。 2.pg_hba.conf 在該配... ...
  • 第 15 章 可擴展性設計之Cache與Search的利用 前言: 前面章節部分所分析的可擴展架構方案,基本上都是圍繞在資料庫自身來進行的,這樣是否會使我們在尋求擴展性之路的思維受到“禁錮”,無法更為寬廣的發散開來。這一章,我們就將跳出完全依靠資料庫自身來改善擴展性的問題,將數據服務擴展性的改善向數 ...
  • 分頁功能存儲過程 調用示例 ...... ...
  • 恢復內容開始 如何正確地建立SCOTT/TIGER演示模式 執行腳本 (1)cd [ORACLE_HOME]/sqlplus/demo。 (2)以任意用戶身份連接後運行demobld.sql。 註:關於腳本文件的位置和名稱,不同的版本有所不同。 如我的Oracle版本是10G,並運行在Windows ...
  • MongoDB的日誌文件在設置 logappend=true 的情況下,會不斷向同一日誌文件追加的,時間長了,自然變得非常大。 解決如下:(特別註意:啟動的時候必須是--logpath指定了log路徑的) 用mongo連接到服務端,執行以下命令: 這樣會使mongo關閉當前日誌文件,重啟一個新的日誌 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...