您可以通过以下程序了解端口号及其关联进程:
netstat- 一种显示网络连接,路由表和许多网络接口统计信息的命令行工具。
定影器- 一种命令行工具,用于识别使用文件或套接字的进程。
lsof- 一个命令行工具,用于在Linux / UNIX下列出打开的文件以报告所有打开的文件以及打开它们的进程的列表。
/ proc / $ pid /file system - 在Linux下,/ proc为/ proc / PID中的每个正在运行的进程(包括内核进程)提供一个目录,其中包含关于该进程的信息,特别包括进程名称。
您必须以root用户身份运行以上命令。
netstat的例子
键入以下命令:
# netstat -tulpn
示例输出:
活动的Internet连接(仅限服务器)Proto Recv-Q Send-Q本地地址外部地址状态PID /程序名称TCP 0 0 127.0.0.1:33060.0.0.0:* LISTEN 1138 /mysqld的 tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 850 / portmapTCP 0 0 0.0.0.0:800.0.0.0:* LISTEN 1607 /apache2的 tcp 0 0 0.0.0.0:55091 0.0.0.0:* LISTEN 910 / rpc.statdtcp 0 0 192.168.122.1:53 0.0.0.0:* LISTEN 1467 / dnsmasqtcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 992 / sshdtcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 1565 / cupsdtcp 0 0 0.0.0.0:7000 0.0.0.0:* LISTEN 3813 / transmissiontcp6 0 0 ::: 22 ::: * LISTEN 992 / sshdtcp6 0 0 :: 1:631 ::: * LISTEN 1565 / cupsdtcp6 0 0 ::: 7000 ::: * LISTEN 3813 / transmissionudp 0 0 0.0.0.0:111 0.0.0.0:* 850 / portmapudp 0 0 0.0.0.0:662 0.0.0.0:* 910 / rpc.statdudp 0 0 192.168.122.1:53 0.0.0.0:14 1467 / dnsmasqudp 0 0 0.0.0.0:67 0.0.0.0:14 1467 / dnsmasqudp 0 0 0.0.0.0:68 0.0.0.0:* 3697 / dhclientudp 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关联的进程名称,输入:
# 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
或者采样输出:
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
示例输出(注意 - 颜色选项):
图01:grep输出
lsof命令示例
按如下所示键入命令:
lsof-i:portNumberlsof-itcp:portNumberlsof-iudp:portNumberlsof-i:80lsof-i:80 | grepLISTEN
示例输出:
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)
现在,您可以获得更多关于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:命令名称及其参数
03:16:22:进程启动以来的时间,格式为[[dd-] hh:] mm:ss。
星期五10月29日10:20:17 2010:命令开始的时间。
帮助:我发现一个我根本不认识的开放端口
文件/ etc / services用于将端口号和协议映射到服务名称。尝试匹配端口号:示例输出:
$ grep port /etc/services
$ grep 443 /etc/services
通过TLS / SSL的https 443 / tcp#http协议https 443 / udp
检查rootkit
我强烈建议您查明哪些进程确实在运行,尤其是连接到高速Internet访问的服务器。您可以查找rootkit,该程序是为了在未经系统所有者和合法经理授权的情况下对计算机系统进行基本控制(以Linux / UNIX术语“root”访问,以Windows术语“管理员”访问)进行的。
留意你的带宽图
通常,有根服务器用于在其他计算机上发送大量垃圾邮件或恶意软件或DoS风格的攻击。
也可以看看:
有关更多信息,请参阅以下手册页:
$ man ps
$ man grep
$ man lsof
$ man netstat
$ man fuser
上一个教程:返回列表