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

Linux防火墙工具概述
Linux系统常用的防火墙工具主要有iptables、firewalld和ufw三种。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。

关闭端口
若需关闭已开放的端口,只需将--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服务)为例:

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: "
注意事项
- 规则顺序:防火墙规则按顺序匹配,建议将常用规则放在前面,避免冗余规则影响性能。
- 测试环境:修改生产环境防火墙规则前,建议先在测试环境验证,避免误操作导致服务中断。
- 默认策略:生产环境建议设置默认拒绝所有入站连接(
ufw default deny或iptables -P INPUT DROP),仅开放必要端口。 - 服务依赖:部分服务(如Docker、Kubernetes)可能会自动修改防火墙规则,需注意冲突。
通过合理配置防火墙端口规则,可有效平衡系统安全与服务可用性,管理员需根据实际需求选择合适的工具,并结合日志监控定期优化规则,确保服务器安全稳定运行。
















