您可以通過以下程序了解端口號及其關聯(lián)進程:
- netstat - 一種顯示網(wǎng)絡連接,路由表和許多網(wǎng)絡接口統(tǒng)計信息的命令行工具。
- 定影器 - 一種命令行工具,用于識別使用文件或套接字的進程。
- lsof - 一個命令行工具,用于在Linux / UNIX下列出打開的文件以報告所有打開的文件以及打開它們的進程的列表。
- / proc / $ pid / file system - 在Linux下,/ proc為/ proc / PID中的每個正在運行的進程(包括內核進程)提供一個目錄,其中包含關于該進程的信息,特別包括進程名稱。
您必須以root用戶身份運行以上命令。
netstat的例子
鍵入以下命令:
# netstat -tulpn
示例輸出:
活動的Internet連接(僅限服務器) Proto Recv-Q Send-Q本地地址外部地址狀態(tài)PID /程序名稱 TCP 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 1138 / mysqld的 tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 850 / portmap TCP 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1607 / apache2的 tcp 0 0 0.0.0.0:55091 0.0.0.0:* LISTEN 910 / rpc.statd tcp 0 0 192.168.122.1:53 0.0.0.0:* LISTEN 1467 / dnsmasq tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 992 / sshd tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 1565 / cupsd tcp 0 0 0.0.0.0:7000 0.0.0.0:* LISTEN 3813 / transmission tcp6 0 0 ::: 22 ::: * LISTEN 992 / sshd tcp6 0 0 :: 1:631 ::: * LISTEN 1565 / cupsd tcp6 0 0 ::: 7000 ::: * LISTEN 3813 / transmission udp 0 0 0.0.0.0:111 0.0.0.0:* 850 / portmap udp 0 0 0.0.0.0:662 0.0.0.0:* 910 / rpc.statd udp 0 0 192.168.122.1:53 0.0.0.0:14 1467 / dnsmasq udp 0 0 0.0.0.0:67 0.0.0.0:14 1467 / dnsmasq udp 0 0 0.0.0.0:68 0.0.0.0:* 3697 / dhclient udp 0 0 0.0.0.0:7000 0.0.0.0:* 3813 /傳輸 udp 0 0 0.0.0.0:54746 0.0.0.0:* 910 / rpc.statd
TCP端口3306由具有PID#1138的mysqld進程打開?梢允褂/ proc來驗證它,輸入:
# ls -l /proc/1138/exe
Sample outputs:
lrwxrwxrwx 1 root root 0 2010-10-29 10:20 / proc / 1138 / exe - > / usr / sbin / mysqld
您可以使用grep命令來過濾信息:
# netstat -tulpn | grep :80
示例輸出:
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1607 / apache2
定影器命令
找出打開TCP端口7000的進程PID,輸入:
# fuser 7000/tcp
Sample outputs:
7000 / tcp:3813
最后,找出與PID#3813關聯(lián)的進程名稱,輸入:
# ls -l /proc/3813/exe
Sample outputs:
lrwxrwxrwx 1 vivek vivek 0 2010-10-29 11:00 / proc / 3813 / exe - > / usr / bin / transmission
/ usr / bin / transmission是一個bittorrent客戶端,請輸入:
# man transmission
OR
# whatis transmission
示例輸出:
傳輸(1) - 一個bittorrent客戶端
任務:找出進程的當前工作目錄
要找到名為bittorrent或pid 3813的進程的當前工作目錄,請輸入:
# ls -l /proc/3813/cwd
Sample outputs:
lrwxrwxrwx 1 vivek vivek 0 2010-10-29 12:04 / proc / 3813 / cwd - > / home / vivek
或者使用pwdx命令,請輸入:
# pwdx 3813
Sample outputs:
3813:/ home / vivek
任務:找出進程的所有者
使用以下命令查找名為3813的進程PID的所有者:
# ps aux | grep 3813
或者采樣輸出:
# ps aux | grep '[3]813'
vivek 3813 1.9 0.3 188372 26628?S1 10:58 2:27傳輸
或者嘗試下面的ps命令:
# ps -eo pid,user,group,args,etime,lstart | grep '[3]813'
示例輸出:
3813 vivek vivek傳輸02:44:05 10月29日星期五10:58:40 2010
另一個選項是/ proc / $ PID / environ,輸入:
# cat /proc/3813/environ
OR
# grep --color -w -a USER /proc/3813/environ
示例輸出(注意 - 顏色選項):
lsof命令示例
按如下所示鍵入命令:
lsof -i:portNumber lsof -i tcp:portNumber lsof -i udp:portNumber lsof -i:80 lsof -i:80 | grep LISTEN |
示例輸出:
apache2 1607 root 3u IPv4 6472 0t0 TCP *:www(LISTEN) apache2 1616 www-data 3u IPv4 6472 0t0 TCP *:www(LISTEN) apache2 1617 www-data 3u IPv4 6472 0t0 TCP *:www(LISTEN) apache2 1618 www-data 3u IPv4 6472 0t0 TCP *:www(LISTEN) apache2 1619 www-data 3u IPv4 6472 0t0 TCP *:www(LISTEN) apache2 1620 www-data 3u IPv4 6472 0t0 TCP *:www(LISTEN)
現(xiàn)在,您可以獲得更多關于pid#1607或1616等的信息:
# ps aux | grep '[1]616'
示例輸出:
www-data 1616 0.0 0.0 35816 3880 ? S 10:20 0:00 /usr/sbin/apache2 -k start
我推薦以下命令來獲取有關pid#1616的信息:
# ps -eo pid,user,group,args,etime,lstart | grep '[1]616'
示例輸出:
1616 www-data www-data / usr / sbin / apache2 -k start 03:16:22 Friday 10月29日10:20:17 2010
哪里,
- 1616:PID
- www-date:用戶名(所有者 - EUID)
- www-date:組名(組 - EGID)
- / usr / sbin / apache2 -k start:命令名稱及其參數(shù)
- 03:16:22:進程啟動以來的時間,格式為[[dd-] hh:] mm:ss。
- 星期五10月29日10:20:17 2010:命令開始的時間。
幫助:我發(fā)現(xiàn)一個我根本不認識的開放端口
文件/ etc / services用于將端口號和協(xié)議映射到服務名稱。嘗試匹配端口號:示例輸出:
$ grep port /etc/services
$ grep 443 /etc/services
通過TLS / SSL的https 443 / tcp#http協(xié)議 https 443 / udp
檢查rootkit
我強烈建議您查明哪些進程確實在運行,尤其是連接到高速Internet訪問的服務器。您可以查找rootkit,該程序是為了在未經(jīng)系統(tǒng)所有者和合法經(jīng)理授權的情況下對計算機系統(tǒng)進行基本控制(以Linux / UNIX術語“root”訪問,以Windows術語“管理員”訪問)進行的。
留意你的帶寬圖
通常,有根服務器用于在其他計算機上發(fā)送大量垃圾郵件或惡意軟件或DoS風格的攻擊。
也可以看看:
有關更多信息,請參閱以下手冊頁:
$ man ps
$ man grep
$ man lsof
$ man netstat
$ man fuser