iptables是Linux防火墙工具,基于表和链管理规则;默认策略设为DROP输入链、ACCEPT输出链;放行本地回环和已建立连接;开放必要端口如SSH;可封禁特定IP;规则需保存以防重启丢失。

Linux系统中,iptables 是一个强大的防火墙工具,用于配置内核中的 netfilter 防火墙规则。通过合理设置 iptables 规则,可以有效防护系统免受非法访问、网络攻击和不必要的连接请求。以下介绍 iptables 的基础概念与常用规则设置方法,帮助你构建基本的系统防护机制。
理解iptables的基本结构
iptables 依据“表(tables)”和“链(chains)”组织规则。最常用的表是 filter 表,用于控制数据包的允许或拒绝。该表包含三个默认链:
- INPUT:处理进入本机的数据包
- OUTPUT:处理从本机发出的数据包
- FORWARD:处理经过本机转发的数据包(适用于路由器或网关)
每条规则定义了匹配条件和对应的动作(target),如 ACCEPT(允许)、DROP(丢弃)或 REJECT(拒绝并返回错误信息)。
查看当前规则与清理配置
在设置规则前,先查看当前的防火墙规则:
iptables -L -n -v参数说明:
- -L:列出规则
- -n:以数字形式显示IP和端口(不解析主机名)
- -v:显示详细信息
若需清空现有规则(谨慎操作,避免断开远程连接):
iptables -F此命令仅清除 filter 表的规则。若使用了其他表(如 nat),需指定表名清除。
设置基础安全规则
以下是推荐的基础防护规则设置流程:
1. 设置默认策略
建议将 INPUT 和 FORWARD 链的默认策略设为 DROP,OUTPUT 设为 ACCEPT(除非有特殊限制需求):
iptables -P INPUT DROPiptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
2. 允许本地回环通信
系统内部通信依赖 loopback 接口,必须放行:
iptables -A INPUT -i lo -j ACCEPTiptables -A OUTPUT -o lo -j ACCEPT
3. 允许已建立的连接通过
允许本机已发起的连接的返回流量:
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT该规则利用连接跟踪模块,识别属于已有会话的数据包。
4. 开放必要服务端口
根据实际需要开放端口,例如 SSH(默认22):
iptables -A INPUT -p tcp --dport 22 --syn -j ACCEPT使用 --syn 只匹配新连接的 SYN 包,防止非正常连接尝试。
其他常见服务:
- HTTP:--dport 80
- HTTPS:--dport 443
- 自定义端口:如 --dport 8080
5. 阻止特定IP或网段
封禁恶意来源 IP:
iptables -A INPUT -s 192.168.1.100 -j DROP也可针对整个网段:
iptables -A INPUT -s 10.0.0.0/8 -j DROP保存与恢复规则
iptables 规则是临时的,重启后失效。需手动保存:
- Debian/Ubuntu:
iptables-save > /etc/iptables/rules.v4 - CentOS/RHEL:
service iptables save 或 iptables-save > /etc/sysconfig/iptables
开机自动加载规则可通过脚本或 systemd 服务实现。
基本上就这些。掌握 iptables 基础规则设置,能显著提升 Linux 系统的安全性。关键是明确最小化开放原则:只允许必要的流量,其余一律拒绝。不复杂但容易忽略。









