Server 防火墙端口开放与关闭方法

2026-03-21 04:15:35 1290阅读

Linux 服务器防火墙端口管理:开放与关闭的完整操作指南

在服务器运维工作中,合理配置防火墙端口是保障系统安全与服务可用性的关键环节。端口既是服务对外通信的入口,也可能是攻击者入侵的突破口。因此,掌握主流防火墙工具(如 iptablesfirewalldufw)的端口开放与关闭方法,是每一位系统管理员和开发人员的必备技能。本文将系统讲解三种常用防火墙的端口管理操作,涵盖查看状态、开放指定端口、关闭端口、保存配置及常见注意事项,内容适用于 CentOS、Ubuntu、Debian 等主流 Linux 发行版。

一、确认当前防火墙服务状态

操作前需先判断系统启用的防火墙类型。不同发行版默认不同:CentOS 7/8 默认使用 firewalld,Ubuntu/Debian 默认使用 ufw,而较老版本或定制环境可能直接使用 iptables

# 查看 firewalld 是否运行(CentOS/RHEL)
sudo systemctl is-active firewalld

# 查看 ufw 状态(Ubuntu/Debian)
sudo ufw status verbose

# 查看 iptables 规则(通用)
sudo iptables -L -n -v

若服务未启用,需先启动并设置开机自启;若已启用,则跳过此步。

二、firewalld:CentOS/RHEL 系统的标准方案

firewalld 采用区域(zone)模型管理规则,推荐在 public 区域中操作。

开放 TCP 端口(例如 8080)

# 临时开放(重启后失效)
sudo firewall-cmd --add-port=8080/tcp

# 永久开放(需重载配置)
sudo firewall-cmd --add-port=8080/tcp --permanent
sudo firewall-cmd --reload

# 验证是否生效
sudo firewall-cmd --list-ports

关闭已开放端口

# 临时移除
sudo firewall-cmd --remove-port=8080/tcp

# 永久移除并重载
sudo firewall-cmd --remove-port=8080/tcp --permanent
sudo firewall-cmd --reload

开放端口范围(如 3000–3010)

sudo firewall-cmd --add-port=3000-3010/tcp --permanent
sudo firewall-cmd --reload

三、ufw:Ubuntu/Debian 的简化防火墙

ufw(Uncomplicated Firewall)以简洁语法著称,适合快速配置。

启用与基础设置

# 启用 ufw(首次使用建议先设默认策略)
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw enable

# 查看当前规则
sudo ufw status numbered

开放单个端口

# 允许 TCP 80 端口(HTTP)
sudo ufw allow 80/tcp

# 允许 UDP 53 端口(dns)
sudo ufw allow 53/udp

# 允许特定 IP 访问某端口(增强安全性)
sudo ufw allow from 192.168.1.100 to any port 22 proto tcp

关闭端口或删除规则

# 按编号删除(先用 ufw status numbered 查看编号)
sudo ufw delete 3

# 或按服务名/端口直接删除
sudo ufw deny 8080/tcp
sudo ufw delete allow 8080/tcp

四、iptables:底层通用方案(兼容所有 Linux)

iptables 是内核级防火墙,规则即时生效但不持久——重启即丢失,务必配合保存命令。

开放端口(添加 ACCEPT 规则)

# 在 input 链末尾添加允许 8080 TCP 流量的规则
sudo iptables -A input -p tcp --dport 8080 -j ACCEPT

# 插入到链首(优先级更高,适用于需前置匹配场景)
sudo iptables -I input -p tcp --dport 22 -j ACCEPT

关闭端口(删除或拒绝规则)

# 删除最后一条匹配规则(谨慎使用)
sudo iptables -D INPUT -p tcp --dport 8080 -j ACCEPT

# 或插入拒绝规则(置于 ACCEPT 规则之前才有效)
sudo iptables -I INPUT -p tcp --dport 8080 -j REJECT --reject-with tcp-reset

保存规则(因发行版而异)

# Ubuntu/Debian:保存至 /etc/iptables/rules.v4
sudo iptables-save | sudo tee /etc/iptables/rules.v4

# CentOS/RHEL:使用 service iptables save(需安装 iptables-services)
sudo service iptables save

五、验证与排错建议

完成配置后,务必验证端口状态:

  • 使用 ss -tuln | grep :端口号netstat -tuln | grep :端口号 检查服务是否监听;
  • 从外部主机执行 telnet 服务器IP 端口nc -zv 服务器IP 端口 测试连通性;
  • 检查 SELinux(CentOS)是否阻止端口:sudo semanage port -l | grep 端口,必要时添加端口上下文

⚠️ 重要提醒

  • 修改防火墙前,确保已有 ssh 端口(默认 22)保持开放,避免失联;
  • 生产环境建议先在测试端口验证,再操作核心端口;
  • 所有永久生效操作必须执行重载(firewalld)或保存(iptables);
  • 多层防护下,还需检查云平台安全组、物理防火墙等外围策略。

结语

端口管理并非孤立操作,而是安全策略落地的重要一环。理解 firewalld 的区域机制、ufw语义化指令、iptables 的链式逻辑,有助于根据实际环境选择最优方案。无论使用哪一种工具,坚持“最小权限开放”原则——仅开放业务必需端口,及时关闭闲置端口,并定期审计规则列表,才能在保障服务可用性的同时,筑牢服务器的第一道防线。掌握这些方法,您已迈出专业运维的关键一步。

文章版权声明:除非注明,否则均为Dark零点博客原创文章,转载或复制请以超链接形式并注明出处。

目录[+]