Linux 中主要防火墙工具的常用命令解析
·
以下是 Linux 中主要防火墙工具的常用命令解析,按类别整理:
一、iptables(传统防火墙)
基本结构
iptables -t <表> <命令> <链> <规则>
常用表
- filter:过滤数据包(默认)
- nat:网络地址转换
- mangle:修改数据包
- raw:数据包跟踪
核心命令
1. 查看规则
# 查看所有规则
iptables -L -n -v
iptables -t nat -L # 查看NAT表
iptables -L --line-numbers # 显示规则编号
# 查看INPUT链规则
iptables -L INPUT -n
2. 清除规则
# 清除所有规则
iptables -F
iptables -t nat -F
# 删除特定链的所有规则
iptables -F INPUT
# 删除用户自定义链
iptables -X
# 重置计数器
iptables -Z
3. 设置默认策略
# 设置链的默认策略
iptables -P INPUT DROP # 默认丢弃
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
4. 添加/删除规则
# 允许SSH(端口22)
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# 允许特定IP
iptables -A INPUT -s 192.168.1.100 -j ACCEPT
# 允许本地回环
iptables -A INPUT -i lo -j ACCEPT
# 插入规则(指定位置)
iptables -I INPUT 3 -p tcp --dport 80 -j ACCEPT
# 删除规则(按编号)
iptables -D INPUT 2
# 删除规则(按条件)
iptables -D INPUT -p tcp --dport 80 -j ACCEPT
5. 状态跟踪
# 允许已建立的连接
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# 允许新建连接
iptables -A INPUT -m state --state NEW -p tcp --dport 443 -j ACCEPT
6. 保存与恢复
# 保存规则(不同发行版)
iptables-save > /etc/iptables/rules.v4 # Debian/Ubuntu
service iptables save # RHEL/CentOS 6
iptables-save > /etc/sysconfig/iptables # RHEL/CentOS
# 恢复规则
iptables-restore < /etc/iptables/rules.v4
二、nftables(新一代防火墙)
基本结构
nft add/delete/list <表类型> <表名> <链名> { 规则 }
核心命令
1. 查看规则
# 查看所有规则集
nft list ruleset
# 查看特定表
nft list table inet filter
# 查看计数器和统计
nft list ruleset -a
2. 管理表、链、规则
# 创建表
nft add table inet filter
# 创建链
nft add chain inet filter input { type filter hook input priority 0\; }
# 添加规则
nft add rule inet filter input tcp dport 22 accept
nft add rule inet filter input ip saddr 192.168.1.0/24 accept
# 插入规则(开头)
nft insert rule inet filter input position 0 tcp dport 80 accept
# 删除规则(需指定句柄)
nft list ruleset -a # 获取句柄
nft delete rule inet filter input handle 3
# 删除链
nft delete chain inet filter input
# 删除表
nft delete table inet filter
3. 常用规则示例
# 允许SSH
nft add rule inet filter input tcp dport 22 accept
# 允许ICMP
nft add rule inet filter input ip protocol icmp accept
# 允许已建立的连接
nft add rule inet filter input ct state established,related accept
# 记录被拒绝的数据包
nft add rule inet filter input tcp dport 22 log prefix "SSH attempt: " drop
4. 保存与加载
# 保存规则
nft list ruleset > /etc/nftables.conf
# 加载规则
nft -f /etc/nftables.conf
# 清空规则
nft flush ruleset
三、firewalld(动态防火墙管理器)
基本概念
- zone:网络区域(public, home, internal等)
- service:预定义的服务(ssh, http, https等)
- port:自定义端口
核心命令
1. 状态管理
# 查看状态
firewall-cmd --state
systemctl status firewalld
# 启动/停止/重启
systemctl start firewalld
systemctl stop firewalld
systemctl restart firewalld
# 启用/禁用开机启动
systemctl enable firewalld
systemctl disable firewalld
2. 区域管理
# 查看默认区域
firewall-cmd --get-default-zone
# 查看活动区域
firewall-cmd --get-active-zones
# 查看特定接口的区域
firewall-cmd --get-zone-of-interface=eth0
# 修改接口区域
firewall-cmd --zone=public --change-interface=eth0
# 设置默认区域
firewall-cmd --set-default-zone=public
3. 服务管理
# 列出所有可用服务
firewall-cmd --get-services
# 查看区域允许的服务
firewall-cmd --zone=public --list-services
firewall-cmd --zone=public --list-all
# 添加/移除服务
firewall-cmd --zone=public --add-service=http
firewall-cmd --zone=public --remove-service=http
# 永久添加(重启后生效)
firewall-cmd --zone=public --add-service=http --permanent
firewall-cmd --reload # 重新加载
4. 端口管理
# 添加/移除端口
firewall-cmd --zone=public --add-port=8080/tcp
firewall-cmd --zone=public --remove-port=8080/tcp
# 添加端口范围
firewall-cmd --zone=public --add-port=5000-5010/udp
# 永久添加端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --reload
5. 高级配置
# 富规则(Rich Rules)
firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" accept'
firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port port="22" protocol="tcp" reject'
# 端口转发
firewall-cmd --zone=public --add-forward-port=port=80:proto=tcp:toport=8080
firewall-cmd --zone=public --add-forward-port=port=80:proto=tcp:toaddr=192.168.1.10
# 查看所有配置
firewall-cmd --zone=public --list-all
四、UFW(简单防火墙)
核心命令
1. 状态管理
# 查看状态
ufw status
ufw status verbose # 详细信息
ufw status numbered # 带编号显示
# 启用/禁用
ufw enable
ufw disable
# 重启
ufw reload
2. 基本规则
# 允许/拒绝服务
ufw allow ssh
ufw deny ssh
# 允许/拒绝端口
ufw allow 22
ufw deny 22
# 允许/拒绝特定协议
ufw allow 22/tcp
ufw allow 53/udp
# 允许端口范围
ufw allow 8000:9000/tcp
3. IP地址管理
# 允许/拒绝特定IP
ufw allow from 192.168.1.100
ufw deny from 192.168.1.200
# 允许特定IP访问特定端口
ufw allow from 192.168.1.100 to any port 22
# 允许网段
ufw allow from 192.168.1.0/24
4. 删除规则
# 查看规则编号
ufw status numbered
# 按编号删除
ufw delete 2
# 按条件删除
ufw delete allow ssh
ufw delete allow 22/tcp
5. 高级配置
# 设置默认策略
ufw default deny incoming # 默认拒绝所有入站
ufw default allow outgoing # 默认允许所有出站
# 限制连接速率(防暴力破解)
ufw limit ssh
# 允许特定网卡
ufw allow in on eth0
ufw allow in on eth0 to any port 80
6. 配置文件
# 查看应用配置文件
ls /etc/ufw/applications.d/
# 创建自定义应用配置
vim /etc/ufw/applications.d/myapp
五、命令对比速查表
| 操作 | iptables | nftables | firewalld | UFW |
|---|---|---|---|---|
| 查看规则 | iptables -L -n |
nft list ruleset |
firewall-cmd --list-all |
ufw status |
| 允许SSH | iptables -A INPUT -p tcp --dport 22 -j ACCEPT |
nft add rule inet filter input tcp dport 22 accept |
firewall-cmd --add-service=ssh |
ufw allow ssh |
| 允许端口 | iptables -A INPUT -p tcp --dport 80 -j ACCEPT |
nft add rule inet filter input tcp dport 80 accept |
firewall-cmd --add-port=80/tcp |
ufw allow 80/tcp |
| 允许IP | iptables -A INPUT -s 192.168.1.100 -j ACCEPT |
nft add rule inet filter input ip saddr 192.168.1.100 accept |
firewall-cmd --add-rich-rule='rule source ip="192.168.1.100" accept' |
ufw allow from 192.168.1.100 |
| 删除规则 | iptables -D INPUT 2 |
nft delete rule inet filter input handle 3 |
firewall-cmd --remove-port=80/tcp |
ufw delete allow 80 |
| 保存配置 | iptables-save > file |
nft list ruleset > file |
firewall-cmd --runtime-to-permanent |
ufw enable(自动保存) |
| 重置规则 | iptables -F |
nft flush ruleset |
firewall-cmd --reset-to-defaults |
ufw reset |
六、实用建议
-
选择原则:
- 初学者:使用 UFW(简单直观)
- 服务器管理:使用 firewalld(动态管理,支持区域)
- 高级用户:直接使用 nftables(性能好,语法现代)
- 兼容性需求:使用 iptables(广泛支持)
-
规则测试:
# 测试前先保持SSH连接,避免锁死 # 添加临时规则测试 # 使用日志记录调试 -
持久化:
- iptables/nftables:需手动保存配置文件
- firewalld/UFW:修改自动持久化(或需
--permanent参数)
-
日志监控:
# 查看防火墙日志 tail -f /var/log/syslog | grep -i ufw journalctl -u firewalld dmesg | grep -i firewall
这个指南涵盖了最常用的防火墙操作,根据具体需求选择合适的工具和命令。
更多推荐




所有评论(0)