端口相關的概念:
在網絡技術中,端口(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]#
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]#
如上所示,這個工具感覺沒有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]#
[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屏蔽了該端口,是無法通過該方法檢測端口是否開放的。
[root@localhost ~]# yum install telnet
重新啟動xinetd守護進程
由於telnet服務也是由xinetd守護的,所以安裝完telnet-server,要啟動telnet服務就必須重新啟動xinetd
[root@locahost ~]#service xinetd restart
輸入telnet測試端口命令: telnet IP 端口 或者 telnet 域名 端口 回車
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]#
所以,系統里面有些不必要的端口和服務,從安全考慮或資源節省角度,都應該關閉那些不必要的服務。關閉對應的端口。另外,即使服務開啟,但是防火牆對對應的端口進行了限制,這樣端口也不能被訪問,但端口本身並沒有關閉,只是端口被屏蔽了。
下面教大家在CentOS中用nmap查看主機端口:
一、安裝nmap
yum install nmap #輸入y安裝
二、使用nmap
nmap localhost #查看主機當前開放的端口
nmap -p 1024-65535 localhost #查看主機端口(1024-65535)中開放的端口
nmap -PS 192.168.21.163 #探測目標主機開放的端口
nmap -PS22,80,3306 192.168.21.163 #探測所列出的目標主機端口
nmap -O 192.168.21.163 #探測目標主機操作系統類型
nmap -A 192.168.21.163 #探測目標主機操作系統類型
nmap --help #更多nmap參數請查詢幫助信息
系統運維 www.osyunwei.com 溫馨提醒:qihang01原創內容©版權所有,轉載請注明出處及原文鏈接
三、關閉或者打開主機端口
1、nmap localhost #查看主機當前開放端口
2、ntsysv #打開系統服務器管理器(需要先安裝yum install ntsysv),選擇要關閉或者打開的服務
Nmap是Linux下的網絡掃描工具,我們可以掃描遠端主機上那些端口在開放狀態。
rhel8下安裝namp
dnf install -y namp
簡單掃描
nmap默認發送一個ARP的PING數據包,來探測目標主機1-10000范圍內所開放的所有端口
命令語法: nmap <target ip address>
例如nmap 192.168.1.30
[root@localhost ~]# nmap 192.168.1.30
Starting Nmap 7.70 ( https://nmap.org ) at 2020-07-29 15:19 CST
Nmap scan report for 192.168.1.30
Host is up (0.000095s latency).
Not shown: 997 closed ports
PORT STATE SERVICE
22/tcp open ssh
111/tcp open rpcbind
3306/tcp open mysql
Nmap done: 1 IP address (1 host up) scanned in 1.64 seconds
簡單掃描,詳細輸出掃描情況.
命令語法: nmap -v <target ip address>
掃描指定網段中那些IP是被使用的(尋找在線主機)
nmap -sP 192.168.1.1-254
nmap -sP 192.168.1.*
nmap -sP 192.168.1.0/24
掃描指定遠端主機開放了那些端口
nmap -sS 192.168.1.30
掃描指定遠端主機是什么操作系統
nmap -O 192.168.1.30
掃描指定遠端主機服務版本號
nmap -sV 192.168.1.30
-sS TCP SYN 掃描 (又稱半開放,或隱身掃描)
-P0 允許你關閉 ICMP pings.
-sV 打開系統版本檢測
-O 嘗試識別遠程操作系統
-A 同時打開操作系統指紋和版本檢測
nmap 指定端口掃描
命令語法:nmap -p(port1,port2,…) <target IP>
port1,port2…為想要掃描的端口號
舉例:掃描目標主機的80,22端口
nmap -p 22,80 192.168.1.30
掃描目標主機的20-120號端口
nmap -p 20-120 192.168.1.30
nmap 路由跟蹤
路由器追蹤功能,能夠幫助網絡管理員了解網絡通行情況,同時也是網絡管理人員很好的輔助工具,通過路由器追蹤可以輕松的查處從我們電腦所在地到目的地之間所經常的網絡節點,並可以看到通過各個結點所花費的時間
命令語法: nmap –traceroute <target IP>
例子:namp –traceroute 114.114.114.114(dns服務器)
[root@localhost ~]# nmap --traceroute 114.114.114.114
Starting Nmap 7.70 ( https://nmap.org ) at 2020-07-29 15:34 CST
Nmap scan report for public1.114dns.com (114.114.114.114)
Host is up (0.040s latency).
Not shown: 999 filtered ports
PORT STATE SERVICE
53/tcp open domain
TRACEROUTE (using port 53/tcp)
HOP RTT ADDRESS
1 3.98 ms 192.168.1.1
2 8.38 ms 100.66.0.1
3 ... 16
17 46.44 ms public1.114dns.com (114.114.114.114)
Nmap done: 1 IP address (1 host up) scanned in 21.96 seconds