4.4 iptables 命令详解及示例

iptables 命令详解及示例

iptables 是 Linux 系统下的防火墙工具,用于管理网络数据包的过滤、转发和 NAT(网络地址转换)。它基于规则链(Chains)表(Tables)进行配置,是 Linux 网络安全的核心组件之一。


1. iptables 基本概念

(1)表(Tables)

表名 说明
filter 默认表,用于数据包过滤(允许/拒绝)
nat 网络地址转换(NAT)
mangle 修改数据包(如 TTL、TOS)
raw 数据包跟踪(较少使用)

(2)链(Chains)

链名 说明
INPUT 处理进入本机的数据包
OUTPUT 处理本机发出的数据包
FORWARD 处理转发的数据包(如路由器)
PREROUTING (nat) 数据包进入时修改(DNAT)
POSTROUTING (nat) 数据包离开时修改(SNAT/MASQUERADE)

2. iptables 基本语法

iptables [-t 表名] 命令 [链名] [规则] [动作]
  • -t 表名:指定表(默认 filter
  • -A:追加规则
  • -I:插入规则
  • -D:删除规则
  • -L:列出规则
  • -F:清空规则
  • -P:设置默认策略

3. 常用命令示例

(1)查看规则

iptables -L -n -v        # 查看 filter 表规则
iptables -t nat -L -n    # 查看 nat 表规则
iptables -L INPUT --line-numbers  # 显示规则编号

(2)清空规则

iptables -F              # 清空 filter 表
iptables -t nat -F       # 清空 nat 表
iptables -X              # 删除自定义链
iptables -Z              # 重置计数器

(3)设置默认策略

iptables -P INPUT DROP    # 默认拒绝所有输入
iptables -P OUTPUT ACCEPT # 默认允许所有输出
iptables -P FORWARD DROP  # 默认拒绝所有转发

4. 防火墙规则示例

(1)允许/拒绝特定 IP

# 允许 192.168.1.100 访问
iptables -A INPUT -s 192.168.1.100 -j ACCEPT

# 拒绝 10.0.0.5 访问
iptables -A INPUT -s 10.0.0.5 -j DROP

# 允许来自 192.168.1.0/24 的 SSH 连接
iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 22 -j ACCEPT

(2)允许/拒绝端口

# 允许 HTTP (80) 和 HTTPS (443)
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT

# 拒绝 ICMP (ping)
iptables -A INPUT -p icmp -j DROP

(3)允许回环(lo)接口

iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

(4)防止 SYN Flood 攻击

iptables -A INPUT -p tcp --syn -m limit --limit 1/s -j ACCEPT

5. NAT 规则示例

(1)SNAT(源地址转换)

# 将内网 192.168.1.0/24 通过 eth0 出口 IP 进行 NAT
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE

(2)DNAT(目标地址转换)

# 将公网 IP 的 80 端口转发到内网 192.168.1.100:80
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to 192.168.1.100:80

(3)端口转发

# 将 8080 端口转发到 80
iptables -t nat -A PREROUTING -p tcp --dport 8080 -j REDIRECT --to-port 80

6. 高级规则

(1)限制连接数

# 限制每 IP 最多 10 个 SSH 连接
iptables -A INPUT -p tcp --dport 22 -m connlimit --connlimit-above 10 -j DROP

(2)匹配 MAC 地址

# 允许特定 MAC 地址访问
iptables -A INPUT -m mac --mac-source 00:11:22:33:44:55 -j ACCEPT

(3)日志记录

# 记录被拒绝的包
iptables -A INPUT -j LOG --log-prefix "IPTABLES-DROPPED: "

7. 保存与恢复规则

iptables-save > /etc/iptables.rules  # 保存规则
iptables-restore < /etc/iptables.rules  # 恢复规则

(Ubuntu/Debian)

apt install iptables-persistent
netfilter-persistent save

(CentOS/RHEL)

service iptables save

8. 总结

  • iptables 是 Linux 防火墙核心工具,用于包过滤、NAT、端口转发等。
  • 主要表filter(默认)、natmangleraw
  • 主要链INPUTOUTPUTFORWARDPREROUTINGPOSTROUTING
  • 常用操作
    • -A 添加规则,-D 删除规则,-L 查看规则
    • -p 指定协议,--dport 指定端口,-j 指定动作
  • NAT 示例
    • MASQUERADE(动态 SNAT)
    • DNAT(端口转发)
  • 规则需保存,否则重启后失效。

掌握 iptables 可以有效保护服务器安全!🚀

全部评论(0)

头像
😃 😁 😅 😂 😍 😜 😝 🤑 🥵 🥰 😙 😎 😵 😭 😱 😖 🥳 👽 🙈 🤡 😤 💣 💯 💢 ❤️ 👍 👏 👋 👌 🤏 🙏
还没有任何评论哟~
目录