当您提供一些可通过 Internet 访问的服务时,这意味着您在服务器上打开了一些端口。在网络中,端口可以描述为网络流量识别目标应用或服务的一种方式。安装和配置某些工具时,可能需要打开某些端口。一直这样做时,您可能会忘记已打开的端口。如果发生这种情况,您可能需要检查服务器以了解服务器上打开的所有端口。
您还需要注意打开端口以检测入侵。无论您是对网络连接问题进行故障排除还是配置防火墙,首先要检查的事项之一就是系统上打开了哪些端口。Linux系统为您提供了一些命令来执行此操作。本文87cloud介绍了几种方法,说明如何找出在 Linux 系统外部打开了哪些端口。
端口如何工作?
端口分为三类。每个类别都标记为端口值的范围:
- 0 至 1023:这些是为提供各种网络服务的系统进程保留的端口。您需要具有管理员权限才能使用它们。
- 1024 到 49151:这些是用户端口范围。它们被指定用于特定服务。
- 49152 到 65535:这些是专用或自定义服务的专用端口。
Linux 系统具有包含在文件中的端口,服务引用不同的端口。/etc/services
如何检查端口是否已打开
您可以使用一些有用的命令检查您的应用程序在Linux系统上侦听的端口。
netstat 命令
该命令可用于显示网络连接、路由表和各种网络接口。它可以生成显示网络状态的显示和协议统计信息,其中哪些端口已打开或已建立连接。它随软件包一起提供。如果 netstat 不存在,则应安装它:netstat
net-tools
对于基于 Debian 的系统:
$ sudo apt install net-tools
对于基于 CentOS 或 RHEL 的系统:
$ yum install net-tools
如果运行该命令,您将获得大量信息:
$ netstat
您可以通过向命令添加一些参数来获得更多信息:
$ sudo netstat -plunt
p
:显示与特定连接相关的 PID/程序名称l
:仅显示侦听端口u
:列出 UDP 端口n
:显示数字地址t
:列出 TCP 端口
nmap 命令
Nmap是一种网络扫描工具,主要用于安全审计和渗透测试,因为它可以发现开放的端口和服务并检测漏洞。如果它不存在,您应该安装它:
对于基于 Debian 的系统:
$ sudo apt install nmap
对于基于 CentOS 或 RHEL 的系统:
$ yum install nmap
该命令用于多种用途,您需要使用一些参数才能将其用于端口扫描目的。如果没有关于协议的参数,它将只扫描TCP端口,因此您应该为UDP指示它:nmap
sT
:扫描 TCP 端口sU
:扫描 UDP 端口p
:扫描所有端口 (0-65535)
$ sudo nmap -sT -sU -p- localhost
ss 命令
可以将命令行视为命令的替换。它被认为比netstat更简单,更快捷。在没有任何参数的情况下使用时,它还会提供大量信息:
ss
netstat
$ ss Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process u_str ESTAB 0 0 * 3035735 * 3035736 u_str ESTAB 0 0 * 39874 * 39876
您可以使用一些参数(如用于命令的参数)筛选结果:netstat
$ ss -lntup
如何保护您的服务器
除了Linux防火墙之外,最好还有另一个安全级别,您需要关闭所有不必要的端口。通常,当您在阿里云上托管服务器时,他们会提供一个名为安全组的虚拟防火墙,作为在到达 Linux 防火墙之前保护您的服务器的第一级安全级别。此工具可确保在服务器上打开端口且未使用虚拟云防火墙打开时没有风险。这很有用,因为您可以在服务器之间打开云网络上的某些端口以进行测试。阿里云还提供了另一种名为云防火墙的服务,该服务提供了内置的入侵防御系统(IPS)。它是可用于保护阿里云中服务的主要基础设施。
结论
服务器的安全性是最重要的事情。您应该将安全性集中在防火墙系统上,并通过云提供商提供的其他一些安全服务添加另一层安全性。