iptables 是 Linux 内核自带的防火墙工具,通过规则表控制网络数据包的过滤和转发。
基础概念
iptables 使用表和链的架构:
- 表(Tables):filter(过滤)、nat(地址转换)、mangle(修改)
- 链(Chains):INPUT(入站)、OUTPUT(出站)、FORWARD(转发)
查看当前规则
sudo iptables -L -n -v sudo iptables -t nat -L -n
常用规则示例
# 允许 SSH sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT # 允许 HTTP/HTTPS sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT # 允许已建立的连接 sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # 允许本地回环 sudo iptables -A INPUT -i lo -j ACCEPT # 默认拒绝所有入站 sudo iptables -P INPUT DROP # 防洪水攻击(限制 SYN 包速率) sudo iptables -A INPUT -p tcp --syn -m limit --limit 10/s -j ACCEPT
保存规则
# 安装持久化工具 sudo apt install iptables-persistent # 手动保存 sudo netfilter-persistent save
删除和修改规则
# 删除规则 sudo iptables -D INPUT -p tcp --dport 80 -j ACCEPT # 清空所有规则 sudo iptables -F # 重置默认策略 sudo iptables -P INPUT ACCEPT