場(chǎng)景一:了解系統(tǒng)開放的端口,和正在使用的端口,在各種情況下都會(huì)有所幫助。
在呂梁等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都做網(wǎng)站、網(wǎng)站設(shè)計(jì) 網(wǎng)站設(shè)計(jì)制作定制設(shè)計(jì),公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站設(shè)計(jì),成都全網(wǎng)營(yíng)銷,成都外貿(mào)網(wǎng)站建設(shè)公司,呂梁網(wǎng)站建設(shè)費(fèi)用合理。
比如:如果你的服務(wù)器正在運(yùn)行著 Nginx,那么其端口應(yīng)該為80或者443,可以檢查一下。再比如你可以檢查一下 SMTP、SSH或者其他服務(wù)用的是哪個(gè)端口。當(dāng)有新的服務(wù)需要開放端口的時(shí)候,你需要知道目前已經(jīng)被占用的,都有哪些端口。
此外,可以檢查一下是否有開放的可用于入侵檢測(cè)的端口。
Linux 中有多種檢查端口的方法,本文將介紹兩種。
使用 lsof 檢查當(dāng)前系統(tǒng)開放的端口
不管你是直接登錄的系統(tǒng),還是使用 ssh 連接的,都可以使用 lsof 命令來檢查端口:
該命令用于查找用戶使用的文件和進(jìn)程。上述命令中的選項(xiàng),包括:
但是,這也會(huì)展示許多計(jì)算機(jī)并沒有監(jiān)聽的其他端口。
我們可以通過管道將此輸出傳輸?shù)?grep,并匹配模式 “LISTEN”,如下所示:
這樣就只顯示計(jì)算機(jī)正在監(jiān)聽的,以及正在運(yùn)行的服務(wù)器所占用的端口。
使用 netcat 命令檢查遠(yuǎn)程服務(wù)器上的端口
nc(Netcat) 是一個(gè)命令行實(shí)用程序,使用TCP和UDP協(xié)議在網(wǎng)絡(luò)計(jì)算機(jī)之間讀取和寫入數(shù)據(jù)。
以下是nc命令的語法:
這個(gè)工具有一個(gè)很實(shí)用的 -z 選項(xiàng),它會(huì)讓 nc 命令掃描正在監(jiān)聽的守護(hù)進(jìn)程,但是不會(huì)向端口發(fā)送任何數(shù)據(jù)。
將其與 -v 選項(xiàng)結(jié)合,啟動(dòng)詳細(xì)信息,會(huì)有詳細(xì)信息的輸出。
losf與nc的不同點(diǎn):
lsof命令簡(jiǎn)介
lsof 命令用于顯示 Linux 系統(tǒng)當(dāng)前已打開的所有文件列表。查看進(jìn)程或系統(tǒng)打開的文件會(huì)給調(diào)試帶來極大的幫助。下面簡(jiǎn)單地介紹 lsof 常使用的功能。
lsof (list open files)命令用于查看你進(jìn)程打開的文件,打開文件的進(jìn)程,進(jìn)程打開的端口(TCP、UDP),還可以用于找回/恢復(fù)被刪除的文件。lsof 命令需要訪問核心內(nèi)存和各種文件,所以需要具備 root 超級(jí)管理員權(quán)限的用戶才能執(zhí)行此命令。
linux的nc命令,NetCat,在網(wǎng)絡(luò)工具中有“瑞士軍刀”美譽(yù)“,是解決這個(gè)問題的工具。 nc命令安裝: yum install nc
以上是看來一些文章的總結(jié)分享內(nèi)容,歡迎補(bǔ)充討論。
前言,phper 脫離 fpm 學(xué)習(xí) swoole GO 時(shí) 經(jīng)常會(huì)用一些進(jìn)程管理命令 這里熟悉下
netstat 命令
Netstat 命令用于顯示各種網(wǎng)絡(luò)相關(guān)信息,如網(wǎng)絡(luò)連接,路由表,接口狀態(tài) (Interface Statistics),masquerade 連接,多播成員 (Multicast Memberships) 等等。
常見參數(shù)
-a (all) 顯示所有選項(xiàng),默認(rèn)不顯示 LISTEN 相關(guān)
-t (tcp) 僅顯示 tcp 相關(guān)選項(xiàng)
-u (udp) 僅顯示 udp 相關(guān)選項(xiàng)
-n 拒絕顯示別名,能顯示數(shù)字的全部轉(zhuǎn)化成數(shù)字。
-l 僅列出有在 Listen (監(jiān)聽) 的服務(wù)狀態(tài)
-p 顯示建立相關(guān)鏈接的程序名
-r 顯示路由信息,路由表
-e 顯示擴(kuò)展信息,例如 uid 等
-s 按各個(gè)協(xié)議進(jìn)行統(tǒng)計(jì)
-c 每隔一個(gè)固定時(shí)間,執(zhí)行該 netstat 命令。
提示:LISTEN 和 LISTENING 的狀態(tài)只有用 - a 或者 - l 才能看到
常見命令
列出所有端口 (包括監(jiān)聽和未監(jiān)聽的)
netstat -a #列出所有端口
netstat -at #列出所有的tcp 端口
netstat -au #列出所有的udp 端口
列出所有處于監(jiān)聽狀態(tài)的 Sockets
netstat -l #只顯示在監(jiān)聽的端口
netstat -lt #只顯示所有的在監(jiān)聽的tcp 端口
netstat -lu #只顯示所有的在監(jiān)聽的udp 端口
netstat -lx #只顯示所有的在監(jiān)聽的unix 端口
在 netstat 輸出中顯示 PID 和進(jìn)程名稱 netstat -p
netstat -pt #顯示所有tcp端口的PID 和進(jìn)程名稱
查找 (經(jīng)常使用)
netstat -ap | grep xxx #查找程序名為xxx的運(yùn)行端口
netstat -an | grep ':80' #找出運(yùn)行在指定端口的進(jìn)程
PS 命令
PS 是 LINUX 下最常用的也是非常強(qiáng)大的進(jìn)程查看命令
常用命令
ps -ef | grep 進(jìn)程關(guān)鍵字 #查找某一進(jìn)程
參數(shù)解釋
UID :程序被該 UID 所擁有
PID :就是這個(gè)程序的 ID
PPID :則是其上級(jí)父程序的ID
C :CPU使用的資源百分比
STIME :系統(tǒng)啟動(dòng)時(shí)間
TTY :登入者的終端機(jī)位置
TIME :使用掉的CPU時(shí)間
CMD :所下達(dá)的是什么指令
ps -ax | less # 按向下鍵查看進(jìn)程 q 鍵退出
pstree 樹形顯示所有進(jìn)程 pstree -p 9005 樹形顯示某個(gè)端口進(jìn)程
ps -eo pid,user,args 參數(shù) -e 顯示所有進(jìn)程信息,-o 參數(shù)控制輸出。Pid,User 和 Args 參數(shù)顯示 PID,運(yùn)行應(yīng)用的用戶和該應(yīng)用。可以查看現(xiàn)在有誰登入了你的服務(wù)器
kill 命令
kill -9 PID 可以徹底殺死進(jìn)程
kill -9 $(ps -ef | grep xxx) 殺死 查找到的所有進(jìn)程 有點(diǎn)危險(xiǎn)!
常用參數(shù)
HUP 1 終端斷線
INT 2 中斷(同 Ctrl + C)
QUIT 3 退出(同 Ctrl + )
TERM 15 終止
KILL 9 強(qiáng)制終止
CONT 18 繼續(xù)(與STOP相反, fg/bg命令)
STOP 19 暫停(同 Ctrl + Z)
查看某一端口的占用情況: lsof -i:端口號(hào)
前提:首先你必須知道,端口不是獨(dú)立存在的,它是依附于進(jìn)程的。某個(gè)進(jìn)程開啟,那么它對(duì)應(yīng)的端口就開啟了,進(jìn)程關(guān)閉,則該端口也就關(guān)閉了。下次若某個(gè)進(jìn)程再次開啟,則相應(yīng)的端口也再次開啟。而不要純粹的理解為關(guān)閉掉某個(gè)端口,不過可以禁用某個(gè)端口。
1. 可以通過"netstat -anp" 來查看哪些端口被打開。
(注:加參數(shù)'-n'會(huì)將應(yīng)用程序轉(zhuǎn)為端口顯示,即數(shù)字格式的地址,如:nfs-2049, ftp-21,因此可以開啟兩個(gè)終端,一一對(duì)應(yīng)一下程序所對(duì)應(yīng)的端口號(hào))
2. 然后可以通過"lsof -i:$PORT"查看應(yīng)用該端口的程序($PORT指對(duì)應(yīng)的端口號(hào))?;蛘吣阋部梢圆榭次募?etc/services,從里面可以找出端口所對(duì)應(yīng)的服務(wù)。
(注:有些端口通過netstat查不出來,更可靠的方法是"sudo nmap -sT -O localhost")
3. 若要關(guān)閉某個(gè)端口,則可以:
1)通過iptables工具將該端口禁掉,如:
"sudo iptables -A INPUT -p tcp --dport $PORT -j DROP"
"sudo iptables -A OUTPUT -p tcp --dport $PORT -j DROP"
2)或者關(guān)掉對(duì)應(yīng)的應(yīng)用程序,則端口就自然關(guān)閉了,如:
"kill -9 PID" (PID:進(jìn)程號(hào))
如: 通過"netstat -anp | grep ssh"
有顯示: tcp 0 127.0.0.1:2121 0.0.0.0:* LISTEN 7546/ssh
則: "kill -9 7546"
很基礎(chǔ)的linux知識(shí),跟著《linux就該這么學(xué)》系統(tǒng)學(xué)習(xí)下!
Netstat 命令用于顯示各種網(wǎng)絡(luò)相關(guān)信息,如網(wǎng)絡(luò)連接,路由表,接口狀態(tài) (Interface Statistics),masquerade 連接,多播成員 (Multicast Memberships) 等等。
執(zhí)行netstat后,其輸出結(jié)果為
從整體上看,netstat的輸出結(jié)果可以分為兩個(gè)部分:
一個(gè)是Active Internet connections,稱為有源TCP連接,其中"Recv-Q"和"Send-Q"指%0A的是接收隊(duì)列和發(fā)送隊(duì)列。這些數(shù)字一般都應(yīng)該是0。如果不是則表示軟件包正在隊(duì)列中堆積。這種情況只能在非常少的情況見到。
另一個(gè)是Active UNIX domain sockets,稱為有源Unix域套接口(和網(wǎng)絡(luò)套接字一樣,但是只能用于本機(jī)通信,性能可以提高一倍)。
Proto顯示連接使用的協(xié)議,RefCnt表示連接到本套接口上的進(jìn)程號(hào),Types顯示套接口的類型,State顯示套接口當(dāng)前的狀態(tài),Path表示連接到套接口的其它進(jìn)程使用的路徑名。
-a (all)顯示所有選項(xiàng),默認(rèn)不顯示LISTEN相關(guān)
-t (tcp)僅顯示tcp相關(guān)選項(xiàng)
-u (udp)僅顯示udp相關(guān)選項(xiàng)
-n 拒絕顯示別名,能顯示數(shù)字的全部轉(zhuǎn)化成數(shù)字。
-l 僅列出有在 Listen (監(jiān)聽) 的服務(wù)狀態(tài)
-p 顯示建立相關(guān)鏈接的程序名
-r 顯示路由信息,路由表
-e 顯示擴(kuò)展信息,例如uid等
-s 按各個(gè)協(xié)議進(jìn)行統(tǒng)計(jì)
-c 每隔一個(gè)固定時(shí)間,執(zhí)行該netstat命令。
提示:LISTEN和LISTENING的狀態(tài)只有用-a或者-l才能看到
列出所有端口 netstat -a
列出所有 tcp 端口 netstat -at
列出所有 udp 端口 netstat -au
只顯示監(jiān)聽端口 netstat -l
只列出所有監(jiān)聽 tcp 端口 netstat -lt
只列出所有監(jiān)聽 udp 端口 netstat -lu
只列出所有監(jiān)聽 UNIX 端口 netstat -lx
顯示所有端口的統(tǒng)計(jì)信息 netstat -s
顯示 TCP 或 UDP 端口的統(tǒng)計(jì)信息 netstat -st 或 -su
netstat -p 可以與其它開關(guān)一起使用,就可以添加 “PID/進(jìn)程名稱” 到 netstat 輸出中,這樣 debugging 的時(shí)候可以很方便的發(fā)現(xiàn)特定端口運(yùn)行的程序。
當(dāng)你不想讓主機(jī),端口和用戶名顯示,使用 netstat -n。將會(huì)使用數(shù)字代替那些名稱。
同樣可以加速輸出,因?yàn)椴挥眠M(jìn)行比對(duì)查詢。
如果只是不想讓這三個(gè)名稱中的一個(gè)被顯示,使用以下命令
netstat 將每隔一秒輸出網(wǎng)絡(luò)信息。
在輸出的末尾,會(huì)有如下的信息
注意: 使用 netstat -rn 顯示數(shù)字格式,不查詢主機(jī)名稱。
并不是所有的進(jìn)程都能找到,沒有權(quán)限的會(huì)不顯示,使用 root 權(quán)限查看所有的信息。
找出運(yùn)行在指定端口的進(jìn)程
顯示詳細(xì)信息,像是 ifconfig 使用 netstat -ie:
查看連接某服務(wù)端口最多的的IP地址
TCP各種狀態(tài)列表