天天看點

Linux 檢視伺服器開放的端口号

在讨論這個問題前,我們先來了解一下實體端口、邏輯端口、端口号等計算機概念。

<b></b>

<b>端口相關的概念:</b>

在網絡技術中,端口(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

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

<b>端口與服務的關系</b>

    端口有什麼用呢?我們知道,一台擁有IP位址的主機可以提供許多服務,比如Web服務、FTP服務、SMTP服務等,這些服務完全可以通過1個IP位址來實作。那麼,主機是怎樣區分不同的網絡服務呢?顯然不能隻靠IP位址,因為IP 位址與網絡服務的關系是一對多的關系。實際上是通過“IP位址+端口号”來區分不同的服務的。

端口号與相應服務的對應關系存放在/etc/services檔案中,這個檔案中可以找到大部分端口。

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

1:nmap工具檢測開放端口

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

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

<a href="http://images2015.cnblogs.com/blog/73542/201606/73542-20160622233834453-1546923629.png"></a>

2:netstat 工具檢測開放端口

<a href="http://images2015.cnblogs.com/blog/73542/201606/73542-20160622233835500-133263483.png"></a>

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

3:lsof 工具檢測開放端口

<a href="http://images2015.cnblogs.com/blog/73542/201606/73542-20160622233836531-1057941737.png"></a>

4: 使用telnet檢測端口是否開放

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

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

關閉端口和開放端口

    關閉端口和開放端口應該是兩種不同的概念,每個端口都有對應的服務,是以要關閉端口,隻要關閉相應的服務就可以了。像下面例子,開啟了MySQL服務,端口3306處于監聽狀态,關閉MySQL服務後,端口3306自然被關閉了

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

繼續閱讀