如何检查在Linux上的特定端口上运行的服务
时间:2020-03-05 15:26:10 来源:igfitidea点击:
有时候,我们可能需要查看Linux上某些端口的特定服务/协议或者服务的默认端口号。
可以使用许多命令行工具来在Linux系统中搜索端口名称和数字。
1)使用netstat命令
Nestat命令是用于检查活动网络连接,接口统计信息以及路由表的工具。
它可以在所有Linux发行版中提供。
但是,对于最小的安装,我们可以通过运行安装它
对于redhat和centos
sudo yum install net-tools
对于Fedora 22及以后
dnf install net-tools
对于Debian/Ubuntu
sudo apt-get install net-tools
用法
显示TCP和UDP端点运行的详细信息
netstat -pnltu
输出
Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 13878/mysqld tcp 0 0 127.0.0.1:11211 0.0.0.0:* LISTEN 21487/memcached tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1208/sshd tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1032/master tcp6 0 0 :::80 :::* LISTEN 13625/httpd tcp6 0 0 :::22 :::* LISTEN 1208/sshd tcp6 0 0 ::1:25 :::* LISTEN 1032/master udp 0 0 0.0.0.0:64561 0.0.0.0:* 569/dhclient udp 0 0 0.0.0.0:68 0.0.0.0:* 569/dhclient udp 0 0 127.0.0.1:323 0.0.0.0:* 525/chronyd udp6 0 0 :::11200 :::* 569/dhclient udp6 0 0 ::1:323 :::* 525/chronyd
- -p标志给出了进程ID和进程名称。
- -N标志显示数字地址
- -l标志显示侦听套接字
- -t标志显示TCP连接
- -u标志显示UDP连接
要查找侦听特定端口运行的服务
netstat -pnltu | grep -i "80"
输出
tcp6 0 0 :::80 :::* LISTEN 13625/httpd
同样,要找到服务正在侦听哪个端口
netstat -pnltu | grep -i "httpd"
输出
tcp6 0 0 :::80 :::* LISTEN 13625/httpd
2)使用fuser命令
Fuser命令用于显示在特定端口上运行的服务的进程ID。
在大多数系统中默认未安装它。
安装它运行
对于redhat和centos
yum install psmisc
Forfedoraa 22和之后
dnf install psmisc
对于Debian和Ubuntu
apt-get install psmisc
例如,找到在端口80运行时运行的PID,
fuser 80/tcp
输出
80/tcp: 13625 18390 18391 18392 18393 18394 18442 19926 24386
使用进程PID运行搜索进程名称
ps -p 13625 -o comm=
输出
httpd
3)使用lsof命令
LSOF命令可用于检查活动的TCP和UDP端点。
安装命令行工具
对于redhat和centos
yum install lsof
Forfedoraa 22和之后
dnf install lsof
对于Debian和Ubuntu
apt-get install lsof
使用LSOF运行显示活动TCP和UDP端点,
lsof -i
输出
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME chronyd 525 chrony 1u IPv4 14681 0t0 UDP localhost:323 chronyd 525 chrony 2u IPv6 14682 0t0 UDP localhost:323 dhclient 569 root 6u IPv4 15731 0t0 UDP *:bootpc dhclient 569 root 20u IPv4 15720 0t0 UDP *:64561 dhclient 569 root 21u IPv6 15721 0t0 UDP *:11200 master 1032 root 13u IPv4 17345 0t0 TCP localhost:smtp (LISTEN) master 1032 root 14u IPv6 17346 0t0 TCP localhost:smtp (LISTEN) sshd 1208 root 3u IPv4 18639 0t0 TCP *:ssh (LISTEN) sshd 1208 root 4u IPv6 18641 0t0 TCP *:ssh (LISTEN) sshd 7749 root 3u IPv4 11570561 0t0 TCP ip-172-31-16-136.us-east-2.compute.internal:ssh->197.232.61.206:51088 (ESTABLISHED) sshd 7752 ec2-user 3u IPv4 11570561 0t0 TCP ip-172-31-16-136.us-east-2.compute.internal:ssh->197.232.61.206:51088 (ESTABLISHED) httpd 13625 root 4u IPv6 7277180 0t0 TCP *:http (LISTEN) mysqld 13878 mysql 14u IPv4 7277635 0t0 TCP *:mysql (LISTEN) httpd 18390 apache 4u IPv6 7277180 0t0 TCP *:http (LISTEN) httpd 18391 apache 4u IPv6 7277180 0t0 TCP *:http (LISTEN) httpd 18392 apache 4u IPv6 7277180 0t0 TCP *:http (LISTEN) httpd 18393 apache 4u IPv6 7277180 0t0 TCP *:http (LISTEN) httpd 18394 apache 4u IPv6 7277180 0t0 TCP *:http (LISTEN) httpd 18442 apache 4u IPv6 7277180 0t0 TCP *:http (LISTEN) httpd 19926 apache 4u IPv6 7277180 0t0 TCP *:http (LISTEN) memcached 21487 memcached 26u IPv4 6250352 0t0 TCP localhost:memcache (LISTEN) httpd 24386 apache 4u IPv6 7277180 0t0 TCP *:http (LISTEN)
要在特定端口上侦听侦听的进程/服务,请在指定端口时键入下面的命令
lsof -i :80
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME httpd 13625 root 4u IPv6 7277180 0t0 TCP *:http (LISTEN) httpd 18390 apache 4u IPv6 7277180 0t0 TCP *:http (LISTEN) httpd 18391 apache 4u IPv6 7277180 0t0 TCP *:http (LISTEN) httpd 18392 apache 4u IPv6 7277180 0t0 TCP *:http (LISTEN) httpd 18393 apache 4u IPv6 7277180 0t0 TCP *:http (LISTEN) httpd 18394 apache 4u IPv6 7277180 0t0 TCP *:http (LISTEN) httpd 18442 apache 4u IPv6 7277180 0t0 TCP *:http (LISTEN) httpd 19926 apache 4u IPv6 7277180 0t0 TCP *:http (LISTEN) httpd 24386 apache 4u IPv6 7277180 0t0 TCP *:http (LISTEN)
4)使用Whatportis工具
Whatportis是一个命令行工具,允许我们搜索在系统中运行的端口名称和服务数。
该工具从IANA获取官方TCP/UDP端口列表。
因此,创建私有脚本以定期获取并更新ports.json fileto使用命令行工具,我们必须首先在我们的系统中安装它。
首先,我们需要安装Python-pip
适用于Ubuntu 16及更高版本和Debian系统
apt install python-pip
为Rhel和CentOS系统
安装epel存储库
yum install epel-release
接下来,安装Python Setup Tools
sudo yum install python34-setuptools
安装pip.
sudo easy_install-3.4 pip
最后,使用pip安装whatportis
pip install whatportis
Whatportis的用法
搜索与服务名称运行关联的端口
whatportis service-name
例如
whatportis ssh
相反,我们可以搜索与端口号关联的服务
whatportis 22
我们还可以通过运行搜索图案而不知道确切的名称
whatportis ssh --like
我们还可以将结果显示为JSON输出
whatportis 22 --json