Linux防火墙iptables入门教程


在Linux系统中,iptables是一个强大的命令行防火墙工具,用于配置和管理内核的netfilter模块。下面是一个iptables的入门教程,简要介绍其基本概念、操作方法和一些基本命令。

### 1. iptables概述

iptables使用表(tables)和链(chains)的结构来管理网络流量。它基于数据包的头信息(如源IP、目的IP、协议类型等)来匹配和过滤数据包。

### 2. 主要的表和链

- **表(Tables)**:iptables主要有四个表:`filter`、`nat`、`mangle`、`raw`。`filter`表用于基本的包过滤,如允许或拒绝连接;`nat`表用于地址转换;`mangle`表用于修改数据包;`raw`表用于在连接跟踪前处理数据包。

- **链(Chains)**:每条链代表一种数据包处理路径。iptables的主要链有:`INPUT`、`OUTPUT`、`FORWARD`、`PREROUTING`、`POSTROUTING`。其中,`INPUT`链处理进入本机的数据包,`OUTPUT`链处理从本机发出的数据包,`FORWARD`链处理需要转发的数据包,`PREROUTING`和`POSTROUTING`链分别在路由决定前和发送数据包前处理数据包。

### 3. 基本命令

- **查看现有规则**:`iptables -L -n --line-numbers`。此命令列出所有规则,`-n`选项表示以数字形式显示地址和端口,`--line-numbers`显示规则的行号。

- **添加规则**:`iptables -A 链名 匹配条件 -j 动作`。例如,`iptables -A INPUT -p tcp --dport 22 -j ACCEPT` 允许所有到22端口的TCP连接。

- **删除规则**:`iptables -D 链名 规则行号`。例如,`iptables -D INPUT 1` 删除`INPUT`链中的第一条规则。

- **清空规则**:`iptables -F 链名`。如果不指定链名,则清空所有链的规则。

- **设置默认策略**:`iptables -P 链名 动作`。例如,`iptables -P INPUT DROP` 将`INPUT`链的默认策略设置为丢弃。

### 4. 注意事项

- 在远程登录服务器时配置iptables时要特别小心,错误的规则可能导致你失去与服务器的连接。

- 规则匹配遵循“首条匹配即停止”的原则,因此规则的顺序很重要。

- 使用`iptables-save`和`iptables-restore`命令可以保存和恢复iptables的规则配置。

### 5. 示例

**允许SSH连接**:


iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT

**阻止来自特定IP的访问**:


iptables -A INPUT -s 192.168.1.100 -j DROP

### 结论

iptables是一个功能强大的防火墙工具,通过合理配置表、链和规则,可以有效地保护Linux系统的网络安全。然而,由于其复杂的配置和可能的误操作风险,初学者在使用时需要谨慎。建议在实际应用中先备份当前的iptables配置,以便在出现问题时能够快速恢复。