Iptables 教程
什么是 Iptables?
Iptables 是 Linux 系统中的一个防火墙工具,用于控制网络流量。通过设置规则,您可以允许或拒绝特定的数据包,从而增强系统的安全性。
基本概念
链(Chains): Iptables 主要有三个链:
INPUT: 处理进入本机的流量。
OUTPUT: 处理从本机发出的流量。
FORWARD: 处理被转发的流量,即流量不直接发送到本机的情况。
规则(Rules): 每条规则定义了如何处理特定的流量,包括源地址、目标地址、协议和端口等。
策略(Policies): 默认行为,如果没有匹配到规则,就会执行策略。常见策略有 ACCEPT(允许)和 DROP(拒绝)。
常用命令
1. 查看当前规则
iptables -L -n -v
-L: 列出当前的规则链。
-n: 不解析域名,直接显示 IP 地址,提升查询速度。
-v: 显示更详细的信息,包括数据包和字节计数。
2. 添加规则
允许来自特定 IP 的流量:
iptables -A INPUT -s <IP_ADDRESS> -j ACCEPT
-A INPUT: 向 INPUT 链添加一条规则。
-s <IP_ADDRESS>: 指定源 IP 地址。
-j ACCEPT: 如果匹配,执行接受操作。
拒绝来自特定 IP 的流量:
iptables -A INPUT -s <IP_ADDRESS> -j DROP
-j DROP: 如果匹配,执行拒绝操作。
3. 允许特定端口的流量
允许 TCP 端口 80(HTTP):
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
-p tcp: 指定协议为 TCP。
--dport 80: 指定目标端口为 80。
4. 保存规则
规则更改后需要保存,以便重启后生效。可以使用如下命令(不同的发行版可能有所不同):
service iptables save # CentOS
或
iptables-save > /etc/iptables/rules.v4 # Debian/Ubuntu
5. 删除规则
列出 INPUT 链的规则并显示编号:
iptables -L INPUT --line-numbers
删除特定规则(需指定规则编号):
iptables -D INPUT <RULE_NUMBER>
-D INPUT: 从 INPUT 链删除指定规则。
6. 清空所有规则
如果需要重置所有规则,可以使用:
iptables -F
-F: 清空所有链中的所有规则。
实用示例
仅允许内网访问 10000 以上的端口:
iptables -A INPUT -p tcp --dport 10000:65535 -s 192.168.0.0/16 -j ACCEPT iptables -A INPUT -p tcp --dport 10000:65535 -j DROP
--dport 10000:65535: 指定目标端口范围为 10000 到 65535。
-s 192.168.0.0/16: 允许来自该子网(内网)的流量。
小贴士
修改规则前,先备份当前规则,避免误操作导致网络不可用。
在修改防火墙规则时,务必小心,以免锁定自己。可以通过 SSH 连接进行测试,确保规则正确。
你可以使用
iptables -S
来查看当前所有规则的详细信息,包括规则的完整列表。