Linux 防火墙入门:iptables 搭建与使用教程

Linux 防火墙入门:iptables 搭建与使用教程

iptables 是 Linux 下非常经典和强大的防火墙工具,可以实现对数据包的过滤、转发和NAT处理。本教程将介绍如何在 Linux 系统中安装并配置基本的 iptables 防火墙规则。


✨ 什么是 iptables?

iptables 是 Linux 内核集成的防火墙工具,可以对进出系统的网络流量进行匹配、过滤、转发等操作。它工作在网络层,是配置防护服务器安全的重要工具之一。


🛠 安装 iptables

大部分 Linux 发行版都已预装 iptables,如果没有,可以使用以下命令进行安装:

Debian / Ubuntu 系统:

sudo apt update
sudo apt install iptables -y

CentOS / RHEL 系统:

sudo yum install iptables -y

Alpine(如用于 Docker 容器)系统:

apk add iptables

🧱 基础命令格式

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

常用表:

  • filter:默认表,处理包的过滤。

  • nat:网络地址转换,主要处理端口映射。

  • mangle:用于修改 IP 头字段。

常用链:

  • INPUT:处理进入本机的数据。

  • OUTPUT:处理本机发出的数据。

  • FORWARD:处理转发的数据。

🔓 常见操作示例

  1. 查看已有规则
iptables -L -n -v
  1. 放行指定端口(如 22/80/443)
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
  1. 拒绝所有其他入站流量
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
  1. 允许本地回环接口访问(非常重要)
iptables -A INPUT -i lo -j ACCEPT
  1. 保存规则(不同系统不同方式)
    Debian/Ubuntu:
sudo apt install iptables-persistent
sudo netfilter-persistent save

CentOS:

sudo service iptables save

🔁 清空规则和重置设置

iptables -F          # 清空所有规则
iptables -X          # 删除用户自定义链
iptables -Z          # 计数器归零
iptables -P INPUT ACCEPT  # 恢复默认策略

📌 设置开机自动生效
对于基于 Systemd 的系统,可以使用 iptables-persistent 或将规则写入启动脚本中。

也可以创建如下脚本并设置为开机启动:

#!/bin/bash
iptables -F
iptables -P INPUT DROP
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT

然后将该脚本加入 /etc/rc.local 或使用 systemd 启动服务加载。

🧪 测试是否生效
可以使用如下命令测试端口连通性:

telnet your_ip 80
# 或
nc -zv your_ip 80

✅ 小结
本文介绍了 iptables 的基本概念、安装方法以及常见使用场景,适合对 Linux 网络安全感兴趣的初学者。如果你想构建更复杂的规则集,可以继续深入了解 iptables 的匹配模块(如 conntrack、state)或结合 firewalld 和 nftables 使用。

📌 提示:误操作可能导致 SSH 断连,请谨慎操作,并建议使用控制台或添加 -j LOG 日志规则先观察。