Linux防火墙端口添加删除完整指南
概述
Linux系统中的防火墙管理是服务器安全的重要组成部分。不同的Linux发行版使用不同的防火墙工具,本文档详细介绍主流防火墙工具的端口管理方法,包括firewalld、UFW和iptables。
前提条件
需要root权限或sudo权限来执行防火墙配置命令。
防火墙工具识别
首先确定系统使用的防火墙服务:
bash
# 检查firewalld状态
systemctl status firewalld
# 检查UFW状态
systemctl status ufw
# 检查iptables服务
systemctl status iptables使用firewalld (CentOS/RHEL 7+, Fedora)
添加端口
bash
# 永久添加端口(需重载生效)
sudo firewall-cmd --permanent --add-port=8080/tcp
# 临时添加端口(立即生效,重启后失效)
sudo firewall-cmd --add-port=8080/tcp
# 添加后重载防火墙使永久规则生效
sudo firewall-cmd --reload删除端口
bash
# 永久删除端口
sudo firewall-cmd --permanent --remove-port=8080/tcp
# 临时删除端口
sudo firewall-cmd --remove-port=8080/tcp
# 删除后重载防火墙
sudo firewall-cmd --reload高级配置
bash
# 查看所有开放的端口
sudo firewall-cmd --list-ports
# 查看所有规则
sudo firewall-cmd --list-all
# 按区域添加端口
sudo firewall-cmd --zone=public --permanent --add-port=3306/tcp
# 添加端口范围
sudo firewall-cmd --permanent --add-port=10000-11000/tcp
# 添加服务而非端口
sudo firewall-cmd --permanent --add-service=http参数详解
| 参数 | 说明 |
|---|---|
--permanent | 永久配置,需reload生效 |
--add-port=<端口>/<协议> | 添加指定端口 |
--remove-port=<端口>/<协议> | 删除指定端口 |
--zone=<区域名> | 指定防火墙区域 |
--add-service=<服务名> | 添加预定义服务 |
--reload | 重载防火墙配置 |
使用UFW (Ubuntu/Debian)
添加端口
bash
# 添加TCP端口
sudo ufw allow 8080/tcp
# 添加UDP端口
sudo ufw allow 8080/udp
# 添加端口范围
sudo ufw allow 6000:6010/tcp
# 如果防火墙未启用,启用它
sudo ufw enable删除端口
bash
# 删除TCP端口
sudo ufw delete allow 8080/tcp
# 删除UDP端口
sudo ufw delete allow 8080/udp
# 删除端口范围
sudo ufw delete allow 6000:6010/tcp高级配置
bash
# 查看当前防火墙状态
sudo ufw status verbose
# 按IP地址添加规则
sudo ufw allow from 192.168.1.100 to any port 22
# 拒绝特定端口
sudo ufw deny 3306
# 允许特定IP访问特定端口
sudo ufw allow from 192.168.1.0/24 to any port 3306
# 按接口添加规则
sudo ufw allow in on eth0 to any port 80参数详解
| 参数 | 说明 |
|---|---|
allow | 允许规则 |
deny | 拒绝规则 |
delete | 删除规则 |
from <IP> | 源地址限制 |
to any port <端口> | 目标端口限制 |
in on <接口> | 入站接口限制 |
status | 查看状态 |
使用iptables (传统方式)
添加端口
bash
# 添加TCP入站规则
sudo iptables -A INPUT -p tcp --dport 8080 -j ACCEPT
# 添加UDP入站规则
sudo iptables -A INPUT -p udp --dport 53 -j ACCEPT
# 保存规则(不同发行版命令可能不同)
sudo service iptables save
# 或
sudo iptables-save > /etc/iptables/rules.v4删除端口
bash
# 删除TCP入站规则
sudo iptables -D INPUT -p tcp --dport 8080 -j ACCEPT
# 删除UDP入站规则
sudo iptables -D INPUT -p udp --dport 53 -j ACCEPT
# 保存规则
sudo service iptables save高级配置
bash
# 查看当前规则
sudo iptables -L -n -v
# 添加IP限制的规则
sudo iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 22 -j ACCEPT
# 插入规则到特定位置
sudo iptables -I INPUT 3 -p tcp --dport 8080 -j ACCEPT
# 更改默认策略(谨慎使用)
sudo iptables -P INPUT DROP
# 规则持久化
sudo apt install iptables-persistent
sudo netfilter-persistent save参数详解
| 参数 | 说明 |
|---|---|
-A | 添加规则到链末尾 |
-I | 插入规则到指定位置 |
-D | 删除规则 |
-p | 协议(tcp/udp/icmp) |
--dport | 目标端口 |
-s | 源IP地址 |
-j | 跳转目标(ACCEPT/DROP/REJECT) |
-L -n -v | 列出规则,数字显示,详细信息 |
常见场景示例
Web服务器配置
bash
# firewalld
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
# UFW
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
# iptables
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT数据库服务器(限制IP访问)
bash
# firewalld
sudo firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='192.168.1.0/24' port protocol='tcp' port='3306' accept"
sudo firewall-cmd --reload
# UFW
sudo ufw allow from 192.168.1.0/24 to any port 3306
# iptables
sudo iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 3306 -j ACCEPT注意事项
⚠️ 安全提醒:
- 配置前确保有物理或控制台访问权限,避免锁死自己
- 生产环境建议先在测试环境验证规则
- 添加拒绝规则前确保允许SSH等管理端口访问
⚠️ 最佳实践:
- 遵循最小权限原则,只开放必要端口
- 使用源IP限制提高安全性
- 定期检查和清理无用规则
- 对规则变更进行记录和审计
故障排查
连接问题排查
bash
# 检查端口是否开放
sudo ss -tuln | grep 8080
# 或
sudo netstat -tuln | grep 8080
# 检查防火墙规则
# firewalld
sudo firewall-cmd --list-all
# UFW
sudo ufw status verbose
# iptables
sudo iptables -L -n -v规则备份与恢复
bash
# firewalld
sudo cp /etc/firewalld/zones/public.xml /etc/firewalld/zones/public.xml.backup
# UFW
sudo cp /etc/ufw/user.rules /etc/ufw/user.rules.backup
# iptables
sudo iptables-save > /root/iptables.rules.backup总结
Linux防火墙管理是服务器安全的基础工作,不同发行版使用不同的防火墙工具。通过掌握firewalld、UFW和iptables的基本操作,运维人员可以有效地管理服务器端口访问控制,保障系统安全。配置防火墙时务必遵循最小权限原则,并进行充分测试,避免影响正常业务访问。