在对网络连接或特定于应用程序的问题进行故障排除时,首先要检查的是系统上实际使用的端口以及在特定端口上侦听的应用程序。
网络端口由其编号、相关的IP地址和通信协议类型(如TCP或UDP)标识。最重要的是,开放端口是应用程序或进程侦听的网络端口,充当通信端点。
可以使用防火墙打开或关闭(过滤)每个侦听端口。一般来说,开放端口是接受来自远程位置的传入数据包的网络端口。
使用netstat检查开放端口
Netstat(网络统计信息)是一个命令行工具,用于监视传入和传出网络连接,查看路由表、接口统计信息等。对于Linux网络管理员和系统管理员来说,此工具是必不可少的,非常有价值,可以监视和解决其网络相关问题,并确定网络流量性能。
要列出正在侦听的所有TCP或UDP端口,包括使用这些端口的服务和套接字状态,请使用以下命令:
$sudo netstat-tulnp
活动的Internet连接(仅限服务器)
Proto Recv-Q Send-Q本地地址外部地址状态PID/程序名称
tcp 0 127.0.0.1:10024 0.0.0.0:*列出24919/amavisd
tcp 0 0.0.0.0:587 0.0.0.0:*LISTEN 967/master
tcp 0 0 0.0.0.0:8080 0.0.0.0:*LISTEN 800/tinyproxy
tcp 0 0.0.0.0:465 0.0.0.0:*LISTEN 967/master
tcp 0 0.0.0.0:21 0.0.0.0:*LISTEN 844/纯ftpd
tcp 0 0.0.0.0:22 0.0.0.0:*列出768/sshd
tcp 0 0.0.0.0:25 0.0.0.0:*LISTEN 967/master
tcp 0 0 0.0.0.0:993 0.0.0.0:*LISTEN 1001/dovecot
tcp6 0 0::3306::*LISTEN 823/mysqld
tcp6 0 0::1:783:::*收听24911/spamd.pid-d
tcp6 0 0:::80::*LISTEN 781/httpd
tcp6 0 0::21::*LISTEN 844/纯ftpd
tcp6 0 0:::22::*列出768/sshd
tcp6 0 0:::25::*LISTEN 967/master
tcp6 0 0::993::*LISTEN 1001/dovecot
tcp6 0 0:::995:::*LISTEN 1001/dovecot
udp 0 0.0.0.0:47967 0.0.0.0:*460/avahi守护进程:r
udp 0 127.0.0.1:123 0.0.0.0:*472/ntpd
udp 0 0.0.0.0:123 0.0.0.0:*472/ntpd
udp6 0 0:::123::*472/ntpd
此命令中使用的选项具有以下含义:
-t
:显示TCP端口。u
:显示UDP端口。-l
:仅显示侦听端口。n
:显示数字地址,而不是解析主机。
:显示侦听器进程的PID和名称。只有当您以root或sudo用户的身份运行命令时,才会显示此信息。
在我们的案例中,重要的列是:
- Proto–套接字使用的协议。
- 本地地址–进程侦听的IP地址和端口号。
- PID/Program name–PID和进程的名称。
此外,如果要筛选结果,请使用
grep
命令。例如,要查找TCP端口22上侦听的进程,您需要键入:
$sudo netstat-tulnp|grep:22
tcp 0 0.0.0.0:22 0.0.0.0:*列出768/sshd
tcp6 0 0:::22::*列出768/sshd
如果输出为空,则端口上没有任何内容在侦听。有关
netstat
命令,请参阅其手册页。
使用lsof检查开放端口
Lsof,意思是‘
LiSt打开的文件
,’用于找出哪个进程打开了哪些文件。在Linux中,一切都是一个文件。您可以将套接字视为写入网络的文件。
要获取lsof类型的所有侦听TCP端口的列表,请执行以下操作:
$sudo lsof-nP-iTCP-sTCP:听
命令PID用户FD类型设备大小/OFF节点名称
sshd 768根3u IPv4 16112 0t0 TCP*:22(列表)
sshd 768根4u IPv6 16114 0t0 TCP*:22(列表)
httpd 781根4u IPv6 16328 0t0 TCP*:80(列表)
httpd 781根6u IPv6 16336 0t0 TCP*:443(LISTEN)
tinyproxy 800 tinyproxy 0u IPv4 16750 0t0 TCP*:8080(列表)
tinyproxy 805 tinyproxy 0u IPv4 16750 0t0 TCP*:8080(列表)
mysqld 823 mysql 20u IPv6 17479 0t0 TCP*:3306(LISTEN)
纯ftpd 844根4u IPv4 16289 0t0 TCP*:21(LISTEN)
纯ftpd 844根5u IPv6 16290 0t0 TCP*:21(LISTEN)
master 967 root 13u IPv4 17225 0t0 TCP*:25(LISTEN)
master 967 root 103u IPv4 17319 0t0 TCP 127.0.0.1:10025(LISTEN)
dovecot 1001根24u IPv4 18600 0t0 TCP*:995(列表)
dovecot 1001根37u IPv6 18623 0t0 TCP*:993(LISTEN)
httpd 24344 apache 4u IPv6 16328 0t0 TCP*:80(列表)
httpd 24344 apache 6u IPv6 16336 0t0 TCP*:443(LISTEN)
/usr/bin/24911 root 5u IPv4 25208447 0t0 TCP 127.0.0.1:783(LISTEN)
/usr/bin/24911 root 6u IPv6 25208449 0t0 TCP[::1]:783(LISTEN)
垃圾邮件24913根5u IPv4 25208447 0t0 TCP 127.0.0.1:783(列表)
垃圾邮件24913根6u IPv6 25208449 0t0 TCP[::1]:783(列表)
/usr/sbin 24919 amavis 5u IPv4 25208583 0t0 TCP 127.0.0.1:10024(LISTEN)
/usr/sbin 24919 amavis 6u IPv6 25208584 0t0 TCP[::1]:10024(LISTEN)
smtpd 28403 postfix 6u IPv4 17225 0t0 TCP*:25(列表)
smtpd 28403 postfix 7u IPv6 17226 0t0 TCP*:25(列表)
所使用的选项如下:
n
:不要将端口号转换为端口名。P
:不解析主机名,显示数字地址。-iTCP-sTCP:听
:仅显示TCP状态为LISTEN的网络文件。
要查找在特定端口(例如端口3306)上侦听的进程,您可以使用:
$sudo lsof-nP-iTCP:3306-sTCP:LISTEN
命令PID用户FD类型设备大小/OFF节点名称
mysqld 823 mysql 20u IPv6 17479 0t0 TCP*:3306(LISTEN)
输出显示MySQL服务器使用端口3306。
了解更多关于
lsof
命令,请参阅其手册页。
使用nmap检查开放端口
Nmap,或
网络映射器
,是一个用于网络探索和安全审计的开源Linux命令行工具。使用nmap,服务器管理员可以快速显示主机和服务,搜索安全问题,并扫描打开的端口。
这个
扫描器
命令可用于检查单个端口或一系列端口是否打开。
以下是如何扫描目标系统上的端口80:
$sudo nmap-p 80 192.168.0.1
192.168.0.1的Nmap扫描报告
主机已启动(0.000073s延迟)。
港口国服务
80/tcp开放http
Nmap完成:0.26秒内扫描1个IP地址(1个主机启动)
扫描目标系统上的端口1到200:
$sudo nmap-p 1-200 192.168.0.1
启动Nmap
6.40
(http:
//nmap.org)于2020-08-21 16:42 EEST
Nmap扫描报告
对于
192.168
.0
1.
主机已启动(
0.0000080
s延迟)。
未显示:
196
封闭端口
港口国服务
21
/tcp开放ftp
22
/tcp开放ssh
25
/tcp开放smtp
80
/tcp开放http
Nmap完成:
1.
IP地址(
1.
主机启动)扫描
在里面
1.45
秒
代码语言:
JavaScript
(
javascript
)
扫描(快速)最常见的端口:
$sudo nmap-F 192.168.0.1
启动Nmap
6.40
(http:
//nmap.org)于2020-08-21 16:44 EEST
Nmap扫描报告
对于
192.168
.0
1.
主机已启动(
0.000014
s延迟)。
未显示:
89
封闭端口
港口国服务
21
/tcp开放ftp
22
/tcp开放ssh
25
/tcp开放smtp
80
/tcp开放http
443
/tcp开放https
465
/tcp开放式smtps
587
/tcp开放提交
993
/tcp开放imaps
995
/tcp开放式pop3
3306
/tcp开放式mysql
8080
/tcp开放http代理
Nmap完成:
1.
IP地址(
1.
主机启动)扫描
在里面
1.46
秒
代码语言:
JavaScript
(
javascript
)
要旨
总之,检查哪些端口是打开的,以及可以从接受这些端口上连接的服务中获得哪些信息,可以为您提供锁定服务器所需的信息。
例如,恶意用户可能会利用机器泄露的任何无关信息来利用已知漏洞或开发新的漏洞。他们想得越少越好。