服务器测评网
我们一直在努力

Linux开启防火墙后,如何正确开放指定端口?

本文于 2025-12-08 23:59 更新,部分内容具有时效性,如有失效,请留言

在Linux系统中,防火墙是保障服务器安全的重要屏障,合理配置防火墙规则能有效防止未经授权的访问,本文将详细介绍Linux系统中开启防火墙并管理端口的操作方法,涵盖主流防火墙工具的使用场景及具体命令。

Linux开启防火墙后,如何正确开放指定端口?

Linux防火墙工具概述

Linux系统常用的防火墙工具主要有iptablesfirewalldufw三种。iptables是传统的内核级防火墙,功能强大但配置复杂;firewalld是CentOS 7及以上版本的默认防火墙,支持动态规则管理;Ubuntu系统则多采用ufw(Uncomplicated Firewall),以其简洁的命令行操作著称,不同发行版默认工具不同,需根据系统环境选择合适的管理方式。

使用firewalld管理端口(CentOS/RHEL系统)

启动并启用firewalld服务

首先检查防火墙状态,若未运行则执行以下命令启动:

sudo systemctl start firewalld
sudo systemctl enable firewalld  # 设置开机自启

通过firewall-cmd --state可查看当前状态,显示running即表示已启动。

开放指定端口

以开放80端口(HTTP服务)为例,使用以下命令:

sudo firewall-cmd --permanent --add-port=80/tcp

参数说明:--permanent表示永久生效(重启后仍保留),若需临时开放可省略该参数;80/tcp指开放80端口的TCP协议,添加后需重新加载防火墙使规则生效:

sudo firewall-cmd --reload

查看已开放端口

执行sudo firewall-cmd --list-ports可查看所有已开放的端口列表,格式为端口号/协议(如80/tcp),若需查看详细规则,可使用sudo firewall-cmd --list-all

Linux开启防火墙后,如何正确开放指定端口?

关闭端口

若需关闭已开放的端口,只需将--add-port改为--remove-port

sudo firewall-cmd --permanent --remove-port=80/tcp
sudo firewall-cmd --reload

使用iptables管理端口(通用Linux系统)

检查iptables服务状态

sudo systemctl status iptables  # 查看服务状态
sudo systemctl start iptables   # 启动服务
sudo systemctl enable iptables # 开机自启

添加端口规则

以开放22端口(SSH服务)为例,使用以下命令:

sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT

参数说明:-A INPUT表示添加入站规则;-p tcp指定TCP协议;--dport 22目标端口为22;-j ACCEPT表示允许通过,规则添加后需保存,否则重启后失效:

  • CentOS 6/7:sudo service iptables save
  • Debian/Ubuntu:sudo iptables-save > /etc/iptables/rules.v4

查看当前规则

执行sudo iptables -L -n -v可查看所有规则,-n以数字形式显示IP和端口,-v显示详细信息。

删除端口规则

若需删除规则,需先确定规则序号(通过sudo iptables -L INPUT --line-numbers查看),然后执行:

sudo iptables -D INPUT 规则序号

使用ufw管理端口(Ubuntu/Debian系统)

启用ufw服务

sudo ufw enable  # 启用并设置开机自启
sudo ufw default deny  # 默认拒绝所有入站连接

开放端口

以开放3306端口(MySQL服务)为例:

Linux开启防火墙后,如何正确开放指定端口?

sudo ufw allow 3306/tcp

也可通过服务名开放,如sudo ufw allow http对应80端口,sudo ufw allow ssh对应22端口。

查看规则状态

sudo ufw status numbered  # 显示带序号的规则列表

关闭端口

sudo ufw delete allow 3306/tcp

防火墙高级配置技巧

限制特定IP访问

仅允许192.168.1.100访问80端口:

  • firewalld:sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="80" accept'
  • iptables:sudo iptables -A INPUT -p tcp -s 192.168.1.100 --dport 80 -j ACCEPT
  • ufw:sudo ufw allow from 192.168.1.100 to any port 80 proto tcp

端口转发示例

将本地8080端口转发至目标服务器的80端口(需开启内核转发):

sudo iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 目标IP:80
sudo iptables -t nat -A POSTROUTING -j MASQUERADE

日志记录

开启端口访问日志,便于安全审计:

  • firewalld:sudo firewall-cmd --set-log-denied=all(记录被拒绝的连接)
  • iptables:sudo iptables -A INPUT -p tcp --dport 80 -m limit --limit 5/min -j LOG --log-prefix "HTTP_ACCESS: "

注意事项

  1. 规则顺序:防火墙规则按顺序匹配,建议将常用规则放在前面,避免冗余规则影响性能。
  2. 测试环境:修改生产环境防火墙规则前,建议先在测试环境验证,避免误操作导致服务中断。
  3. 默认策略:生产环境建议设置默认拒绝所有入站连接(ufw default denyiptables -P INPUT DROP),仅开放必要端口。
  4. 服务依赖:部分服务(如Docker、Kubernetes)可能会自动修改防火墙规则,需注意冲突。

通过合理配置防火墙端口规则,可有效平衡系统安全与服务可用性,管理员需根据实际需求选择合适的工具,并结合日志监控定期优化规则,确保服务器安全稳定运行。

赞(0)
未经允许不得转载:好主机测评网 » Linux开启防火墙后,如何正确开放指定端口?