Linux 防火墙工具 iptables 入门与常用命令整理

iptables 是 Linux 系统下强大的防火墙工具,广泛用于流量过滤、安全防护和端口管理等任务。本文介绍其基本原理、常用命令及实际应用示例,适合系统运维和安全管理人员查阅使用。


📚 一、基本概念

🔹 表(Table)

iptables 共有几张表:

表名 功能
filter 默认表,负责数据包过滤(允许、拒绝)
nat 网络地址转换(NAT、端口映射)
mangle 修改数据包的服务类型、TTL等信息
raw 跳过连接追踪
security 与 SELinux 配合使用,增强安全策略控制

🔹 链(Chain)

每张表包含不同的"链"(Chain),数据包会经过对应的链执行规则:

链名 描述
INPUT 进入本机的数据包
OUTPUT 本机发出的数据包
FORWARD 路由转发的数据包
PREROUTING 数据包到达网络堆栈前的处理点
POSTROUTING 数据包即将离开主机的处理点

🧰 二、iptables 常用命令

1. 查看规则

bash 复制代码
iptables -L                     # 查看默认表的规则
iptables -L -n                 # 不解析域名和端口
iptables -L -v                 # 显示详细信息(数据包/字节统计)
iptables -t nat -L             # 查看 nat 表规则
iptables -S                    # 查看规则原始命令格式

2. 添加规则

bash 复制代码
iptables -A INPUT -p tcp --dport 22 -j ACCEPT        # 允许 ssh 端口
iptables -A INPUT -s 192.168.1.100 -j DROP           # 屏蔽某个 IP
iptables -A INPUT -i lo -j ACCEPT                    # 允许本地回环
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

3. 删除规则

bash 复制代码
iptables -D INPUT 3                                  # 删除第3条规则
iptables -D INPUT -p tcp --dport 22 -j ACCEPT        # 删除指定规则

4. 插入/替换规则

bash 复制代码
iptables -I INPUT 1 -p tcp --dport 80 -j ACCEPT      # 插入到第一条
iptables -R INPUT 2 -p tcp --dport 443 -j ACCEPT     # 替换第二条规则

5. 设置默认策略

bash 复制代码
iptables -P INPUT DROP        # 设置 INPUT 链默认策略为 DROP(拒绝)
iptables -P FORWARD DROP      # 设置 FORWARD 链默认策略为 DROP(拒绝转发)
iptables -P OUTPUT ACCEPT     # 设置 OUTPUT 链默认策略为 ACCEPT(允许发出)

🔐 三、实用防火墙配置示例

1. 允许特定端口通过,其余封锁

BASH 复制代码
iptables -F                                               # 清空所有现有规则
iptables -P INPUT DROP                                    # 拒绝所有进入数据包
iptables -P FORWARD DROP                                  # 拒绝所有转发数据包
iptables -P OUTPUT ACCEPT                                 # 允许所有发出数据包

iptables -A INPUT -i lo -j ACCEPT                         # 允许本地回环接口
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT  # 允许已建立和相关连接
iptables -A INPUT -p tcp --dport 22 -j ACCEPT             # 允许 SSH(22 端口)
iptables -A INPUT -p tcp --dport 80 -j ACCEPT             # 允许 HTTP(80 端口)
iptables -A INPUT -p tcp --dport 443 -j ACCEPT            # 允许 HTTPS(443 端口)

2. NAT 端口转发(公网 80 转发到内网 8080)

BASH 复制代码
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.0.2:8080  # 目的地址 NAT,80 转发到内网主机
iptables -t nat -A POSTROUTING -j MASQUERADE                                               # 启用地址伪装(源地址转换)

3. 屏蔽特定 IP

BASH 复制代码
iptables -A INPUT -s 1.2.3.4 -j DROP  # 拒绝来自 1.2.3.4 的连接

4. 限制连接频率(防止 DDoS)

BASH 复制代码
iptables -A INPUT -p tcp --dport 80 -m limit --limit 25/minute --limit-burst 100 -j ACCEPT  # 限制访问频率,防止大流量攻击
相关推荐
golang学习记1 分钟前
用 Go + Redis + HTMX 手撸一个超快 URL 短链接服务 🚀
后端
codervibe1 分钟前
Spring Boot 热启动配置实战:从手动重启到秒级反馈
spring boot·后端
skyeeeeee3 分钟前
kubeadm安装k8s集群
后端·kubernetes
chxii1 小时前
Spring Boot 响应给客户端的常见返回类型
java·spring boot·后端
韩立学长1 小时前
【开题答辩实录分享】以《植物爱好者交流平台的设计与实现》为例进行答辩实录分享
spring boot·后端·mysql
Wzx1980121 小时前
go基础语法练习
开发语言·后端·golang
sp421 小时前
漫谈 Java 轻量级的模板技术:从字符串替换到复杂模板
java·后端
2301_795167201 小时前
玩转Rust高级应用. ToOwned trait 提供的是一种更“泛化”的Clone 的功能,Clone一般是从&T类型变量创造一个新的T类型变量
开发语言·后端·rust
草莓熊Lotso2 小时前
C++ 方向 Web 自动化测试实战:以博客系统为例,从用例到报告全流程解析
前端·网络·c++·人工智能·后端·python·功能测试
一 乐2 小时前
旅游|内蒙古景点旅游|基于Springboot+Vue的内蒙古景点旅游管理系统设计与实现(源码+数据库+文档)
开发语言·前端·数据库·vue.js·spring boot·后端·旅游