Linux防火墙命令全解析:iptables与firewalld实战指南

在当今的网络环境中,服务器安全至关重要。作为Linux系统管理员或运维工程师,掌握Linux防火墙命令是保障系统安全的第一道防线。本文将深入解析主流的两种防火墙工具——iptablesfirewalld,帮助你从零开始构建坚固的安全屏障。

Linux防火墙命令全解析:iptables与firewalld实战指南


Linux防火墙简介:iptables vs firewalld

Linux系统中常用的防火墙工具有两种:iptablesfirewalld

  • CentOS 7之前:默认使用 iptables 进行网络流量控制。

  • CentOS 7及之后版本:默认切换为更现代化的 firewalld 工具,支持动态配置和区域(Zone)管理。

🔍 小贴士:虽然两者底层都基于Netfilter框架,但操作方式和理念有所不同。firewalld 更加人性化,适合初学者;而 iptables 更加灵活,适合高级用户进行精细控制。


firewalld 防火墙命令详解(推荐用于 CentOS/RHEL 7+)

✅ 基础服务管理命令

# 启动防火墙
sudo systemctl start firewalld

# 停止防火墙(临时)
sudo systemctl stop firewalld

# 重启防火墙
sudo systemctl restart firewalld

# 设置开机自启
sudo systemctl enable firewalld

# 禁用开机启动(永久关闭需配合 stop 使用)
sudo systemctl disable firewalld

🌐 区域(Zone)管理

firewalld 引入了“区域”概念,不同区域对应不同的信任级别,便于快速切换策略。

区域名说明
public公共区域,默认区域,适用于外部网络
trusted受信任区域,允许所有流量通过
home家庭网络环境
work工作网络环境

查看与设置区域:

# 查看所有可用区域
firewall-cmd --get-zones

# 查看当前默认区域
firewall-cmd --get-default-zone

# 设置默认区域为 trusted
firewall-cmd --set-default-zone=trusted

# 查看指定区域规则(如 trusted)
firewall-cmd --zone=trusted --list-all

🔓 开放服务/端口

# 临时开放 HTTP 服务(重启失效)
firewall-cmd --add-service=http

# 永久开放 HTTPS 服务
firewall-cmd --permanent --add-service=https

# 临时开放 TCP 8080 端口
firewall-cmd --add-port=8080/tcp

# 永久开放 UDP 53 端口(DNS)
firewall-cmd --permanent --add-port=53/udp

# 删除已开放的端口
firewall-cmd --remove-port=8080/tcp

📌 注意:使用 --permanent 参数后必须重新加载规则才能生效!

# 重新加载防火墙规则(使永久配置生效)
firewall-cmd --reload

🖧 网卡绑定到特定区域

你可以将某个网卡接口分配给特定区域,实现精细化控制。

# 将 ens33 接口加入 trusted 区域
firewall-cmd --add-interface=ens33 --zone=trusted

# 从 public 区域移除网卡
firewall-cmd --remove-interface=ens33 --zone=public

iptables 防火墙命令详解(经典强大,广泛兼容)

iptables 是 Linux 最早也是最强大的防火墙工具之一,适用于 Ubuntu、Debian、旧版 CentOS 等系统。

✅ 基本语法结构

iptables -t 表名 [操作命令] [链名] [匹配条件] -j 动作

四大表(Tables)功能一览:

表名功能描述
filter过滤数据包(最常用)
nat网络地址转换(NAT)、端口转发
mangle修改报文头部信息(TTL、ToS等)
raw关闭连接追踪机制

五条链(Chains)及其作用点:

链名触发时机
PREROUTING数据包进入路由决策前
INPUT进入本机的数据包
OUTPUT本机发出的数据包
FORWARD转发经过本机的数据包
POSTROUTING路由决策后,准备发出时

⚙️ 数据流向示意图:

网卡 → PREROUTING → [路由判断] → INPUT → 本机应用

网卡 → PREROUTING → FORWARD → POSTROUTING → 网卡

🔧 常用 iptables 命令示例

# 清空所有规则(慎用!)
sudo iptables -F

# 设置默认策略:输入拒绝,输出允许
sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -P OUTPUT ACCEPT

# 允许已建立的连接通过
sudo iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

# 允许本地回环访问
sudo iptables -A INPUT -i lo -j ACCEPT

# 允许 ICMP(ping)
sudo iptables -A INPUT -p icmp -j ACCEPT

# 开放 SSH(22端口)
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT

# 开放 HTTP/HTTPS
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT

# 拒绝其他所有入站请求
sudo iptables -A INPUT -j DROP

🔍 规则查看与管理

# 查看 filter 表规则(简洁)
iptables -L

# 查看 nat 表详细规则(含字节数统计)
iptables -t nat -vnL

# 查看某条链的具体规则(如 INPUT)
iptables -L INPUT -n --line-numbers

# 删除第3条 INPUT 规则
iptables -D INPUT 3

# 插入一条新规则到第2位
iptables -I INPUT 2 -s 192.168.1.100 -j ACCEPT

ufw:Ubuntu 用户的简化防火墙工具

如果你使用的是 Ubuntu 或 Debian 系统,推荐使用 ufw(Uncomplicated Firewall),它封装了 iptables,操作更加简单直观。

# 启用 ufw 防火墙
sudo ufw enable

# 允许 SSH、HTTP、HTTPS
sudo ufw allow ssh
sudo ufw allow http
sudo ufw allow https

# 允许特定端口
sudo ufw allow 8080/tcp

# 拒绝某个IP
sudo ufw deny from 192.168.1.100

# 查看状态
sudo ufw status verbose

实战建议:如何选择合适的防火墙工具?

场景推荐工具
新项目部署(CentOS 7+)✅ firewalld
需要脚本自动化配置✅ iptables
Ubuntu/Debian 桌面或服务器✅ ufw
高级网络架构(NAT、负载均衡)✅ iptables + NAT 表

💡 最佳实践建议

  1. 生产环境务必开启防火墙;

  2. 默认策略设为“拒绝所有,白名单放行”;

  3. 定期审查防火墙规则,避免冗余;

  4. 使用 --permanent 和 --reload 组合确保配置持久化;

  5. 备份重要规则:iptables-save > /backup/iptables.rules


掌握 Linux防火墙命令 不仅是运维人员的基本功,更是保障系统安全的核心技能。无论是传统的 iptables,还是现代的 firewalld 或简化的 ufw,每种工具都有其适用场景。

📢 立即行动:打开你的终端,检查当前系统的防火墙状态,并根据业务需求配置合理的访问规则吧!

发表评论

评论列表

还没有评论,快来说点什么吧~