詳解Linux 查看服務(wù)器開(kāi)放的端口號(hào)
在討論這個(gè)問(wèn)題前,我們先來(lái)了解一下物理端口、邏輯端口、端口號(hào)等計(jì)算機(jī)概念。
端口相關(guān)的概念:
在網(wǎng)絡(luò)技術(shù)中,端口(Port)包括邏輯端口和物理端口兩種類(lèi)型。物理端口指的是物理存在的端口,如ADSL Modem、集線器、交換機(jī)、路由器上用 于連接其他網(wǎng)絡(luò)設(shè)備的接口,如RJ-45端口、SC端口等等。邏輯端口是指邏輯意義上用于區(qū)分服務(wù)的端口,如TCP/IP協(xié)議中的服務(wù)端口,端口號(hào)的范圍從0到65535,比如用于瀏覽網(wǎng)頁(yè)服務(wù)的80端口,用于FTP服務(wù)的21端口等。由于物理端口和邏輯端口數(shù)量較多,為了對(duì)端口進(jìn)行區(qū)分,將每個(gè)端口進(jìn)行了編號(hào),這就是端口號(hào)
端口按端口號(hào)可以分為3大類(lèi):
1:公認(rèn)端口(Well Known Port)
公認(rèn)端口號(hào)從0到1023,它們緊密綁定與一些常見(jiàn)服務(wù),例如FTP服務(wù)使用端口21,你在 /etc/services 里面可以看到這種映射關(guān)系。
2:注冊(cè)端口(Registered Ports):
從1024到49151。它們松散地綁定于一些服務(wù)。也就是說(shuō)有許多服務(wù)綁定于這些端口,這些端口同樣用于許多其它目的.
3: 動(dòng)態(tài)或私有端口(Dynamic and/or Private Ports)
動(dòng)態(tài)端口,即私人端口號(hào)(private port numbers),是可用于任意軟件與任何其他的軟件通信的端口數(shù),使用因特網(wǎng)的傳輸控制協(xié)議,或用戶(hù)傳輸協(xié)議。動(dòng)態(tài)端口一般從49152到65535
Linux中有限定端口的使用范圍,如果我要為我的程序預(yù)留某些端口,那么我需要控制這個(gè)端口范圍。/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
關(guān)于端口和服務(wù),我曾經(jīng)拿公共廁所打比方,公共廁所里的每一個(gè)廁所就好比系統(tǒng)的每一個(gè)端口,為人解決方便就是所謂的服務(wù),你提供了這些服務(wù),那么就必須開(kāi)放端口(廁所),當(dāng)有人上廁所時(shí),就是在這些端口建立了鏈接。如果那個(gè)廁所被人占用了,就表示端口號(hào)被服務(wù)占用了,如果有一天這里不提供公共廁所服務(wù)了,這個(gè)公共廁所被拆除了,自然也就沒(méi)有了端口號(hào)了。其實(shí)更形象的例子,就好比銀行大堂,端口號(hào)是那些柜臺(tái),而那些取號(hào)辦理業(yè)務(wù)的人就好比鏈接到服務(wù)器的各種客戶(hù)端。他們通過(guò)端口重定向技術(shù)與柜臺(tái)發(fā)送業(yè)務(wù)聯(lián)系。再舉一個(gè)通俗易懂的例子,端口號(hào),好比高鐵線上的每個(gè)站點(diǎn),例如,長(zhǎng)沙、岳陽(yáng)等分別代表一個(gè)端口號(hào),旅客通過(guò)火車(chē)票到各自的站點(diǎn),就好比各個(gè)應(yīng)用程序發(fā)往服務(wù)器端口的IP包。
端口與服務(wù)的關(guān)系
端口有什么用呢?我們知道,一臺(tái)擁有IP地址的主機(jī)可以提供許多服務(wù),比如Web服務(wù)、FTP服務(wù)、SMTP服務(wù)等,這些服務(wù)完全可以通過(guò)1個(gè)IP地址來(lái)實(shí)現(xiàn)。那么,主機(jī)是怎樣區(qū)分不同的網(wǎng)絡(luò)服務(wù)呢?顯然不能只靠IP地址,因?yàn)镮P 地址與網(wǎng)絡(luò)服務(wù)的關(guān)系是一對(duì)多的關(guān)系。實(shí)際上是通過(guò)“IP地址+端口號(hào)”來(lái)區(qū)分不同的服務(wù)的。
端口號(hào)與相應(yīng)服務(wù)的對(duì)應(yīng)關(guān)系存放在/etc/services文件中,這個(gè)文件中可以找到大部分端口。
如何檢查端口是否開(kāi)放,其實(shí)不整理,還不知道有這么多方法!
1:nmap工具檢測(cè)開(kāi)放端口
nmap是一款網(wǎng)絡(luò)掃描和主機(jī)檢測(cè)的工具。nmap的安裝非常簡(jiǎn)單,如下所示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]#
關(guān)于nmap的使用,都可以長(zhǎng)篇大寫(xiě)特寫(xiě),這里不做展開(kāi)。如下所示,nmap 127.0.0.1 查看本機(jī)開(kāi)放的端口,會(huì)掃描所有端口。 當(dāng)然也可以掃描其它服務(wù)器端口。
[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]#
2:netstat 工具檢測(cè)開(kāi)放端口
[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]#
如上所示,這個(gè)工具感覺(jué)沒(méi)有nmap簡(jiǎn)潔明了。當(dāng)然也確實(shí)沒(méi)有nmap功能強(qiáng)大。
3:lsof 工具檢測(cè)開(kāi)放端口
[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]#
[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檢測(cè)端口是否開(kāi)放
服務(wù)器端口即使處于監(jiān)聽(tīng)狀態(tài),但是防火墻iptables屏蔽了該端口,是無(wú)法通過(guò)該方法檢測(cè)端口是否開(kāi)放的。
5:netcat工具檢測(cè)端口是否開(kāi)放。
[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
關(guān)閉端口和開(kāi)放端口
關(guān)閉端口和開(kāi)放端口應(yīng)該是兩種不同的概念,每個(gè)端口都有對(duì)應(yīng)的服務(wù),因此要關(guān)閉端口,只要關(guān)閉相應(yīng)的服務(wù)就可以了。像下面例子,開(kāi)啟了MySQL服務(wù),端口3306處于監(jiān)聽(tīng)狀態(tài),關(guān)閉MySQL服務(wù)后,端口3306自然被關(guān)閉了
[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]#
所以,系統(tǒng)里面有些不必要的端口和服務(wù),從安全考慮或資源節(jié)省角度,都應(yīng)該關(guān)閉那些不必要的服務(wù)。關(guān)閉對(duì)應(yīng)的端口。另外,即使服務(wù)開(kāi)啟,但是防火墻對(duì)對(duì)應(yīng)的端口進(jìn)行了限制,這樣端口也不能被訪問(wèn),但端口本身并沒(méi)有關(guān)閉,只是端口被屏蔽了。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
linux 下jenkins項(xiàng)目搭建過(guò)程(centos7為例 )
本文以centos7為例給大家介紹linux 下jenkins項(xiàng)目搭建過(guò)程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2020-10-10
Linux中對(duì)mysql用戶(hù)進(jìn)行管理的操作代碼
這是在Linux里面對(duì)MySQL數(shù)據(jù)庫(kù)的用戶(hù)進(jìn)行管理,其中包括查看全部用戶(hù)以及權(quán)限、賦予增刪改查權(quán)限、賦予遠(yuǎn)程連接%權(quán)限、刪除用戶(hù)的權(quán)限、刪除用戶(hù)、修改密碼等,本文給大家詳細(xì)介紹了Linux中對(duì)mysql用戶(hù)進(jìn)行管理的操作代碼,需要的朋友可以參考下2024-11-11
如何在Apache和Nginx禁止上傳目錄里PHP的執(zhí)行權(quán)限
這篇文章主要介紹了如何在Apache和Nginx禁止上傳目錄里PHP的執(zhí)行權(quán)限的具體方法,非常簡(jiǎn)單,有需要的小伙伴可以參考下2016-10-10
win7下VMware虛擬機(jī)安裝linux7.2上網(wǎng)配置教程
這篇文章主要為大家詳細(xì)介紹了win7下VMware虛擬機(jī)安裝linux7.2上網(wǎng)配置教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-09-09
在CoreOS上搭建一個(gè)WordPress程序操作實(shí)例
你可能聽(tīng)過(guò)服務(wù)器操作系統(tǒng)CoreOS的名字,那你試過(guò)在上面建立個(gè)小程序么?今天,我們就來(lái)手把手地教你建立一個(gè)簡(jiǎn)單的WordPress程序2014-03-03
Linux調(diào)試工具GDB使用簡(jiǎn)易教程
這篇文章主要介紹了Linux調(diào)試工具GDB使用簡(jiǎn)易教程,小編覺(jué)得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-01-01
systemd添加自定義系統(tǒng)服務(wù)設(shè)置自定義開(kāi)機(jī)啟動(dòng)的方法
下面小編就為大家?guī)?lái)一篇systemd添加自定義系統(tǒng)服務(wù)設(shè)置自定義開(kāi)機(jī)啟動(dòng)的方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-12-12




