服务器端口安全策略

一、端口是什么

端口分为物理端口虚拟端口(逻辑端口)

物理端口是用于连接物理设备之间的接口,如路由器上用于连接其他网络设备的接口。
虚拟端口是操作系统为网络通信分配的虚拟通道。端口是通过端口号来标记的,端口号范围是从0到65535


1. 虚拟端口的类型

1.1 周知端口

周知端口,也称为公认端口或常用端口,范围是0到1023​。周知端口通常与互联网的基础服务绑定,如80端口用于HTTP网页服务,21端口用于FTP文件传输。


1.2 注册端口

注册端口的范围是1024到49151​。注册端口通常与应用程序或用户进程绑定,如3306端口用于MySQL数据库服务 。


1.3 动态端口

动态端口,也称为私有端口或短暂端口,范围是49152到65535​。动态端口一般不固定分配给任何特定服务​。其主要用于两个方面:程序的临时连接请求或一些私有或非标准服务。


二、修改默认端口的原因

1. 规避自动化攻击

黑客会使用自动化工具持续扫描互联网上开放端口的设备,尝试暴力破解利用已知漏洞入侵。修改端口后,攻击者无法通过默认端口快速定位目标,从而发起攻击。


2. 增加攻击成本

攻击者通常先进行端口扫描,快速检测目标服务器的开放端口。如果服务在默认端口上运行,攻击者识别后可以立刻开始攻击

修改默认端口后,攻击者的快速扫描策略就会失效,需要启动全端口扫描。全端口扫描需要依次检查所有的端口(65536个),其耗时比快速扫描高出数个数量级,显著提高了攻击的复杂度和时间成本


3. 避免端口冲突

不同的网络服务可能使用相同的默认端口,导致产生端口冲突。端口冲突会导致服务无法正常运行,从而影响系统的稳定性和可用性。


三、常用的默认端口

端口范围

8888​:宝塔面板访问端口(建议修改)

22​:SSH远程连接端口(建议修改)

80​:网站HTTP服务端口(通常默认)

443​:网站HTTPS服务端口(通常默认)

3306​:MySQL数据库端口(建议限制访问)

888​:phpMyAdmin工具端口(建议修改)

21​:FTP服务端口(通常不启用)


四、端口修改步骤

1. 查看放行的端口

1.1 通过指令进行查看

使用SSH工具远程连接服务器,执行以下命令,查看使用的端口

ss -tuln

1.2 通过服务器面板进行查看

阿里云的服务器面板用于管理外网访问权限

在服务器防火墙/安全组中查看其规则列表中的端口,具体操作请查看服务器提供商的官方文档。


1.3 通过宝塔面板进行查看

宝塔面板用于查看服务器本地状态

在宝塔面板的安全>系统防火墙中选择入站选项,查看其端口信息。


2. 端口修改方法

端口修改的原则是先添新,再改服务,后删旧

先在服务器防火墙/安全组为新端口添加规则,然后在宝塔面板修改端口设置,最后再禁用/删除旧的端口规则。


2.1 修改SSH远程服务端口

在服务器防火墙/安全组的规则列表中选择添加规则
应用类型选择自定义
协议选择TCP
端口范围在1024到65535中自定义
来源IP默认0.0.0.0/0或填写单个IP地址

在宝塔面板的安全>系统防火墙中选择添加端口规则
协议默认TCP
端口输入自定义的端口号
来源默认所有IP
策略默认放行
方向默认入站

在安全面板中选择SSH管理页面,修改SSH端口,输入之前自定义的端口号。

使用SSH工具远程连接服务器,修改当前登录端口。
确认新端口可用后,禁用服务器和宝塔面板中原来的SSH远程服务端口


2.2 修改宝塔面板访问端口

在服务器防火墙/安全组的规则列表中选择添加规则
应用类型选择自定义
协议选择TCP
端口范围在8888到65535中自定义
来源IP默认0.0.0.0/0或填写单个IP地址

在宝塔面板的安全>系统防火墙中选择添加端口规则
协议默认TCP
端口输入自定义的端口号
来源默认所有IP
策略默认放行
方向默认入站

在宝塔面板中选择面板设置>安全设置,修改面板端口,输入之前自定义的端口号。

在浏览器中使用宝塔面板的新网址进行访问。
确认新网址可用后,禁用服务器和宝塔面板中原来的宝塔面板访问端口