当涉及服务器安全以及对与服务相关的问题进行故障排除时,验证某些端口均已打开并在服务器的网络接口上进行侦听非常重要。
脆弱的开放端口可能是服务器严重违反安全性的原因。必须找出并关闭/放置这些端口。
如果发生与服务相关的问题,可以使用故障排除机制来检查某些端口正在使用中,以查找多个服务是否在同一端口上进行侦听。
本指南概述的基本步骤,允许所有所有端口使用以下命令在服务开放lsof
,netstat
并nmap
在Linux服务器,并netstat
在Windows服务器。
的Linux
例如,Apache和Nginx服务都在同一服务器上运行。
方法1-使用lsof
命令
lsof(列出打开的文件)是一个命令,用于显示服务器中所有打开的文件以及已打开文件的服务的列表。
- 该
lsof
命令的常规语法如下:# sudo lsof -i -P -n
- 使用
pipe
和grep
命令,可以过滤以上命令的结果以显示正在服务器中不同端口上侦听的文件的结果。# sudo lsof -i -P -n | grep LISTEN # doas lsof -i -P -n | grep LISTEN (for OpenBSD systems)
- 从样本输出的最后一行开始,结果可以解释如下:
named 812 named 23u IPv4 16018 0t0 TCP 123.123.123.12:53 (LISTEN)
- 名为:服务名称。
- 123.123.123.12:绑定了指定服务的IP。
- 53:正在使用的服务的TCP端口。
- 812:服务的进程ID。
方法2-使用netstat
命令
netstat(网络统计信息)是一个命令行工具,可用于监视服务器中的初始化和传出网络连接。
- 该
netstat
命令与grep命令一起用于检查侦听服务,可以在以下语法中使用# netstat -tulpn | grep LISTEN # netstat -nat | grep LISTEN (for OpenBSD systems)
netstat
最新版本的Linux发布版已弃用该命令。该ss
命令已取代其位置。 - 使用该
ss
命令的语法如下:# sudo ss -tulpn
该ss
命令的开关含义如下:
- t:仅显示TCP例外。
- u:仅显示UDP例外。
- l:显示监听专有。
- p:显示打开充足的进程的名称。
- n:不要尝试解析服务名称。
方法3-使用nmap
命令
nmap(网络映射器)是一种网络扫描程序命令工具,可用于查找服务器上的主机和服务。这是将数据包发送到服务器并进一步分析结果来完成的。
nmap
可以从服务器内部执行的命令的常规语法如下:# sudo nmap -sT -O localhost # sudo nmap -sTU -O 123.123.123.12 (scan both TCP and UDP for server)
视窗
在Windows服务器中,该netstat
命令可用于检查服务器中当前正在使用的端口。
wnetstat
Windows服务器中使用的命令的语法如下:> netstat -bano | more > netstat -bano | findstr /R /C:"[LISTENING]"
上面结果中的每个细分表示如下:
- Proto :用于通用的协议(TCP / UDP)。
- 本地地址 :服务正在侦听的源IP地址和端口。
- 状态 :服务的当前状态。
- PID:服务的进程ID,后跟服务名称。