当前位置:网站首页 >  攻略

如何彻底关闭Windows/Linux服务器高危端口:实操指南

时间:2026年06月06日 19:32:28 来源:易频IT社区

一、为什么必须关闭高危端口

服务器上开放的非必要端口是黑客最常用的攻击入口。例如,Windows的远程桌面端口3389、文件共享端口445,Linux的SSH端口22(若配置不当)等,一旦被暴力破解或利用漏洞攻击,将导致服务器被完全控制或数据被勒索加密。关闭不必要的端口是服务器安全加固的第一步,也是成本最低、效果最显著的安全措施。

二、操作前准备:识别你的高危端口

在关闭端口前,你需要先知道哪些端口是开放的、哪些是必须保留的。

2.1 查看服务器所有监听端口

在Windows服务器上,以管理员身份打开命令提示符(CMD)或PowerShell,执行:

``` netstat -ano | findstr LISTENING ```

在Linux服务器上,打开终端,执行:

``` sudo netstat -tulpn ```

或者使用更现代的ss命令:

``` sudo ss -tulpn ```

2.2 分析端口与对应服务

根据上一步的输出,记录下每个监听端口(Local Address列中冒号后的数字)及其对应的PID(Windows)或程序名(Linux)。

常见的高危或非必要端口列表:

  • 21: FTP(若未加密,传输明文密码)
  • 23: Telnet(传输明文信息,极不安全)
  • 135, 137-139, 445: Windows SMB/NetBIOS(永恒之蓝等漏洞高发区)
  • 3389: Windows远程桌面RDP(暴力破解重灾区)
  • 1433: SQL Server默认端口
  • 3306: MySQL默认端口
  • 5432: PostgreSQL默认端口
  • 6379: Redis默认端口(常因无认证被入侵)
  • 9200, 9300: Elasticsearch(曾多次爆出漏洞)

注意:以上端口如果被业务必需,则不能简单关闭,而应通过防火墙做IP白名单限制。下文会详细说明。

三、Windows服务器关闭高危端口实操

Windows主要通过防火墙和关闭对应服务来禁用端口。

3.1 通过高级安全Windows防火墙关闭端口(推荐)

这是最规范、可追溯的方法。

步骤1:打开“高级安全Windows防火墙”。按Win+R,输入`wf.msc`并回车。

步骤2:在左侧选择“入站规则”,右侧点击“新建规则”。

步骤3:规则类型选择“端口”,点击“下一步”。

步骤4:选择“TCP”或“UDP”(根据之前netstat查到的协议),在“特定本地端口”中输入要关闭的端口号,例如`445`。多个端口用逗号隔开,如`135,139,445`。点击“下一步”。

步骤5:选择“阻止连接”,点击“下一步”。

步骤6:何时应用规则,三个选项(域、专用、公用)全部勾选,点击“下一步”。

步骤7:为规则命名,例如“阻止高危TCP端口445”,描述可写“用于关闭SMB服务端口,防范勒索病毒”。点击“完成”。

此时,该端口的入站连接已被彻底阻断。

3.2 通过命令快速批量关闭高危端口

如果需要批量操作,可以使用PowerShell管理员命令行。

以下命令创建一条阻止TCP 135,139,445端口入站的规则:

``` New-NetFirewallRule -DisplayName "Block High-Risk TCP Ports" -Direction Inbound -LocalPort 135,139,445 -Protocol TCP -Action Block ```

以下命令创建一条阻止UDP 137,138端口入站的规则:

``` New-NetFirewallRule -DisplayName "Block High-Risk UDP Ports" -Direction Inbound -LocalPort 137,138 -Protocol UDP -Action Block ```

3.3 彻底关闭对应的后台服务

仅用防火墙屏蔽端口,服务仍在运行。彻底关闭服务能释放资源并消除隐患。

按Win+R,输入`services.msc`打开服务管理器。

找到并双击以下服务,将“启动类型”改为“禁用”,并点击“停止”:

  • Server:提供SMB共享,关闭它会同时禁用445等端口。
  • TCP/IP NetBIOS Helper:与137-139端口相关。
  • Remote Registry:允许远程修改注册表,极其危险。

警告:关闭“Server”服务会导致本机的文件共享功能失效。请确保业务不需要此功能。

四、Linux服务器关闭高危端口实操

Linux主要通过防火墙(iptables或firewalld)和控制服务(systemctl)来管理端口。

以下以最常用的firewalld(CentOS/RHEL 7+、Fedora、部分OpenSUSE)和UFW(Ubuntu/Debian)为例。

4.1 使用firewalld关闭端口(CentOS/RHEL系)

步骤1:确保firewalld正在运行。

``` sudo systemctl status firewalld ```

如果未运行,启动并设为开机自启:

``` sudo systemctl start firewalld sudo systemctl enable firewalld ```

如何彻底关闭Windows/Linux服务器高危端口:实操指南

步骤2:查看当前开放的所有端口。

``` sudo firewall-cmd --list-ports ```

步骤3:永久移除一个高危端口,例如关闭不必要的TCP 21端口(FTP)。

``` sudo firewall-cmd --permanent --remove-port=21/tcp ```

步骤4:重新加载防火墙配置使其生效。

``` sudo firewall-cmd --reload ```

步骤5:验证端口是否已移除。

``` sudo firewall-cmd --list-ports ```

如果看到端口已不在列表中,说明操作成功。

4.2 使用UFW关闭端口(Ubuntu/Debian系)

步骤1:启用UFW(如果之前未启用)。

``` sudo ufw enable ```

步骤2:查看当前规则,确认要关闭的端口号。

``` sudo ufw status numbered ```

步骤3:删除允许该端口的规则。假设要删除允许TCP 21端口的规则,从`status numbered`的输出中找到该规则对应的编号(如`[1]`),然后执行:

``` sudo ufw delete 1 ```

或者,直接通过规则描述删除:

``` sudo ufw delete allow 21/tcp ```

步骤4:拒绝特定端口的任何访问(更严格)。如果你希望明确拒绝而不是简单地“不允许”,可以添加拒绝规则:

``` sudo ufw deny 21/tcp ```

4.3 停止并禁用对应的系统服务

找到监听高危端口的服务并停止它。

步骤1:使用netstat或ss找到端口对应的服务名。

``` sudo ss -tulpn | grep :21 ```

输出中可能包含`pid=1234`和`process name`信息。

步骤2:使用systemctl停止并禁用服务。假设查到是vsftpd服务。

``` sudo systemctl stop vsftpd sudo systemctl disable vsftpd ```

步骤3:验证服务状态。

``` sudo systemctl status vsftpd ```

应显示`inactive (dead)`和`disabled`。

五、进阶:对必需开放的高危端口做IP白名单

对于业务必须使用的端口(如MySQL的3306、SSH的22),不能一关了之。正确的做法是仅允许特定的、可信的IP地址访问

5.1 Windows防火墙设置IP白名单

在“高级安全Windows防火墙”中创建入站规则时,在第5步选择“允许连接”,在第4步后的“作用域”设置中,于“远程IP地址”部分选择“下列IP地址”,添加你允许的办公网络IP或跳板机IP,然后完成规则创建。这样,只有白名单IP能访问该端口,其他IP的访问会被默认的“阻止”规则(或更早创建的阻止该端口的规则)拦截。

5.2 Linux firewalld设置IP白名单

例如,只允许IP为`192.168.1.100`的主机访问本机的TCP 22端口(SSH)。

移除原来对所有人开放的22端口规则(如果存在):

``` sudo firewall-cmd --permanent --remove-service=ssh 或 sudo firewall-cmd --permanent --remove-port=22/tcp ```

添加富规则(rich rule)实现白名单:

``` sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port port="22" protocol="tcp" accept' ```

重新加载:

``` sudo firewall-cmd --reload ```

5.3 Linux UFW设置IP白名单

在UFW中,规则是有顺序的。确保默认策略是拒绝所有入站:

``` sudo ufw default deny incoming ```

添加允许特定IP访问特定端口的规则:

``` sudo ufw allow from 192.168.1.100 to any port 22 ```

六、操作后验证与收尾

1. 本地验证端口关闭:在服务器本机再次执行`netstat -ano`或`ss -tulpn`,确认高危端口已不在“LISTEN”状态。

2. 远程验证端口关闭:从另一台机器使用`telnet`或`nmap`扫描。例如,在另一台机器的命令行执行:

``` telnet [你的服务器IP] 445 ```

如果连接失败或超时,说明端口已成功关闭。使用nmap扫描更全面:

``` nmap -sT -p 135,139,445,3389 [你的服务器IP] ```

如果这些端口状态显示为`filtered`或`closed`,而非`open`,则成功。

3. 业务验证:进行正常的业务操作测试,确保关闭端口没有影响必要的应用功能。如果发现问题,检查是否是误关了业务端口,并按第五部分的方法将其加入白名单。

4. 记录变更:将本次关闭的端口、采用的方法(防火墙规则/服务禁用)、白名单IP等信息记录到运维文档中,便于日后排查和审计。

相关推荐

最新

热门

推荐

精选

标签

易频IT社区是综合性互联网IT技术门户网站,专注分享网络技术、服务器运维、网络安全、编程开发、系统架构、云计算、大数据等行业干货,实时更新IT行业资讯、零基础教程、实战案例,为IT从业者、技术爱好者提供专业的学习交流平台。

Copyright © 2021-2026 易频IT社区. All Rights Reserved. 备案号:闽ICP备2023013482号 网站地图