欢迎光临
我们一直在努力

超详细如何开启服务器端口的方法(Linux和Windows服务器)

服务器端口开放详细操作手册(超全)

1. 引言

1.1 手册目标

本手册旨在为系统管理员、运维工程师及IT爱好者提供一份清晰、详实的指南,指导如何在Linux(以CentOS/RHEL和Ubuntu为例)和Windows Server操作系统上安全地开放网络端口。

1.2 端口与防火墙基本概念

  • 网络端口:是计算机与外部通信的逻辑接口,每个网络服务都通过一个特定的端口号(如HTTP: 80, HTTPS: 443, SSH: 22)进行通信。
  • 防火墙:是一种网络安全系统,它根据预定义的规则监控并控制进出网络的流量,充当着“守门人”的角色。开放端口本质上就是在防火墙中创建一条允许流量通过的规则。
  • 重要提示:开放端口会增加服务器的攻击面。务必遵循最小权限原则,只开放必要的端口,并确保运行在该端口上的服务是安全的。

2. Linux 系统开启端口

Linux系统主要的防火墙工具是iptables和它的新一代替代品firewalld。本手册以firewalld为例,因为它更易于管理和理解。

2.1 使用 Firewalld(推荐用于 CentOS/RHEL 7+、Fedora、Rocky Linux/AlmaLinux)

核心概念:Firewalld使用“区域(Zones)”和“服务(Services)”来管理规则。默认区域通常是public。

步骤 1:检查防火墙状态

sudo systemctl status firewalld # 检查firewalld服务是否运行
sudo firewall-cmd –state # 确认防火墙是否启用(应显示"running")

如果未运行,请启用并启动它:

sudo systemctl enable firewalld
sudo systemctl start firewalld

步骤 2:查看当前活动的区域和已开放的端口

sudo firewall-cmd –list-all # 查看默认区域的详细配置
# 输出会显示当前开放的端口(ports)、允许的服务(services)等。

步骤 3:开放端口(两种方法)

方法A:通过“服务”开放(推荐) Firewalld预定义了许多常见服务(如http, https, ssh)。如果您的服务有预定义,这是最安全、清晰的方式。

# 例如,开放HTTP(80)和HTTPS(443)端口
sudo firewall-cmd –permanent –add-service=http
sudo firewall-cmd –permanent –add-service=https

# 例如,开放SSH端口(22),通常默认已开放
sudo firewall-cmd –permanent –add-service=ssh

方法B:直接通过端口/协议开放 如果服务没有预定义,或者您想使用非标准端口,可以直接指定端口号和协议(tcp或udp)。

# 语法:sudo firewall-cmd –permanent –add-port=<端口号/协议>
# 例如,开放TCP端口 8080
sudo firewall-cmd –permanent –add-port=8080/tcp

# 例如,开放UDP端口 10000
sudo firewall-cmd –permanent –add-port=10000/udp

步骤 4:重载防火墙配置

–permanent参数表示永久生效,但规则不会立即应用,需要重载。

sudo firewall-cmd –reload

步骤 5:验证规则是否添加成功

sudo firewall-cmd –list-services # 查看允许的服务
sudo firewall-cmd –list-ports # 查看允许的端口
sudo firewall-cmd –list-all # 查看完整配置

步骤 6:移除端口/服务规则(如需回滚)

sudo firewall-cmd –permanent –remove-service=ssh # 移除服务规则
sudo firewall-cmd –permanent –remove-port=8080/tcp # 移端口规则
sudo firewall-cmd –reload

2.2 使用 UFW(推荐用于 Ubuntu/Debian)

UFW(Uncomplicated Firewall)是iptables的用户友好前端。

步骤 1:启用UFW

sudo ufw enable

步骤 2:开放端口

# 开放端口(允许传入连接)
sudo ufw allow 22/tcp # 开放SSH
sudo ufw allow 80/tcp # 开放HTTP
sudo ufw allow 443/tcp # 开放HTTPS
sudo ufw allow 8080/tcp # 开放8080TCP端口
sudo ufw allow 10000/udp # 开放10000UDP端口

# 或者使用服务名
sudo ufw allow ssh
sudo ufw allow http

步骤 3:验证规则

sudo ufw status numbered # 查看带有编号的规则列表

步骤 4:删除规则

# 先查看编号
sudo ufw status numbered
# 根据编号删除,例如删除第3条规则
sudo ufw delete 3


3. Windows Server 开启端口

Windows Server使用内置的Windows Defender 防火墙进行管理。

图形化界面 (GUI) 操作步骤

步骤 1:打开高级安全 Windows Defender 防火墙
  • 按下 Win + R,输入 wf.msc 并回车。
  • 或者在 Server Manager -> Tools -> Windows Defender Firewall with Advanced Security。
  • 步骤 2:创建入站规则
  • 在左侧面板,右键点击“入站规则”,选择“新建规则…”。
  • 规则类型:选择“端口”,下一步。
  • 协议和端口:
    • 选择TCP或UDP。
    • 选择“特定本地端口”,并输入端口号(如8080。多个端口用逗号隔开,如80,443;端口范围用短横线,如8000-9000)。
    • 点击下一步。
  • 操作:选择“允许连接”,点击下一步。
  • 配置文件:根据应用场景选择(域、专用、公用)。通常全选以确保规则生效,点击下一步。
  • 名称和描述:
    • 为规则起一个易于识别的名称(如MyWebApp Port 8080)。
    • 添加一段描述(可选)。
    • 点击“完成”。
  • 现在,规则已创建并立即生效。

    PowerShell 命令操作步骤

    对于习惯命令行或需要自动化配置的场景,可以使用PowerShell。

    步骤 1:以管理员身份运行 PowerShell

    右键点击开始菜单,选择“Windows PowerShell (管理员)”。

    步骤 2:执行命令创建规则

    # 语法:New-NetFirewallRule -DisplayName "<规则名称>" -Direction Inbound -Protocol <协议> -LocalPort <端口号> -Action Allow

    # 示例:开放TCP端口8080
    New-NetFirewallRule DisplayName "MyWebApp Port 8080" Direction Inbound Protocol TCP LocalPort 8080 Action Allow

    # 示例:开放UDP端口10000
    New-NetFirewallRule DisplayName "MyGame UDP 10000" Direction Inbound Protocol UDP LocalPort 10000 Action Allow

    # 示例:同时开放多个TCP端口(80,443)
    New-NetFirewallRule DisplayName "Web Services" Direction Inbound Protocol TCP LocalPort 80,443 Action Allow

    步骤 3:查看已创建的规则

    Get-NetFirewallRule DisplayName "MyWebApp*" | Format-Table Name, DisplayName, Enabled, Direction, Action

    步骤 4:删除规则(如需回滚)

    # 先通过DisplayName找到规则
    Get-NetFirewallRule DisplayName "MyWebApp Port 8080"
    # 然后使用Name或DisplayName删除它
    Remove-NetFirewallRule DisplayName "MyWebApp Port 8080"
    # 或者通过管道操作
    Get-NetFirewallRule DisplayName "MyWebApp Port 8080" | Remove-NetFirewallRule


    4. 端口开放后的测试

    配置完成后,必须进行测试以验证端口是否真正可达。

  • 从本地服务器测试监听:

    # Linux
    sudo ss -tulnp | grep :<端口号> # 查看端口是否处于监听状态
    sudo netstat -tulnp | grep :<端口号>

    # Windows
    netstat -ano | findstr :<端口号>

  • 从外部网络测试连接(非常重要):

    • 使用另一台计算机,通过telnet或nc(netcat)命令测试。telnet <你的服务器IP> <端口号>
      # 如果连接成功(屏幕变黑或有服务横幅),说明端口已开放。
      # 如果连接被拒绝或超时,说明配置可能有问题。

      nc -zv <你的服务器IP> <端口号>
      # 例如:nc -zv 192.168.1.100 8080

    • 使用在线端口扫描工具(如 yougetsignal.com/tools/open-ports)。注意:仅在测试环境使用此方法,生产环境慎用,以免暴露IP。

  • 5. 安全注意事项与最佳实践

  • 最小权限原则:只开放绝对必要的端口,并立即关闭不再使用的端口。
  • 限制访问源:如果可能,将端口访问权限限制在特定的IP地址或IP段(例如只允许公司IP访问管理后台)。
    • Linux (firewalld): sudo firewall-cmd –permanent –add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="8080" accept'
    • Windows: 在新建入站规则的第4步(作用域)中,可以指定远程IP地址。
  • 使用非标准端口:对于敏感服务(如SSH),可以考虑将其改为非标准端口以减少自动化攻击。
  • 保持更新:确保操作系统和运行在开放端口上的服务软件始终保持最新,及时修补安全漏洞。
  • 使用更高层次的安全组:在云服务器(AWS, Azure,阿里云,腾讯云等)上,除了系统防火墙,还必须在其网络控制台配置安全组(Security Group) 规则来开放端口,两者需同时配置正确。

  • 总结

    操作系统主要工具核心命令/操作
    Linux (RHEL/CentOS) firewalld firewall-cmd –permanent –add-port=XXX/tcp, –reload
    Linux (Ubuntu/Debian) ufw ufw allow XXX
    Windows Server 高级安全防火墙 wf.msc 或 New-NetFirewallRule PowerShell cmdlet

    开放服务器端口是一个系统管理员的基础操作,但安全性永远是第一位的。请始终在更改配置前理解其影响,并在测试环境中进行充分验证后再应用到生产服务器。

    希望这份手册对您的学习和工作有所帮助!

    赞(0)
    未经允许不得转载:171主机测评 » 超详细如何开启服务器端口的方法(Linux和Windows服务器)
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址