防火墙iptables配置详解

赵运维

· 阅读 1975

分享
iptables防火墙

防火墙iptables配置详解

iptables是Linux内核级的防火墙,功能强大但配置复杂。虽然现在很多系统转向了firewalld或nftables,但iptables仍然是最基础、最通用的防火墙工具。理解iptables的工作原理和配置方法,是每个运维人员的基本功。

四表五链

iptables由4个表(table)和5个链(chain)组成:

:filter(过滤,默认表)、nat(网络地址转换)、mangle(数据包修改)、raw(绕过连接跟踪)。

:PREROUTING(路由前)、INPUT(进入本机)、FORWARD(转发)、OUTPUT(从本机发出)、POSTROUTING(路由后)。

数据包经过哪些链取决于它的方向:入站包 → PREROUTING → INPUT → 应用程序;出站包 → 应用程序 → OUTPUT → POSTROUTING;转发包 → PREROUTING → FORWARD → POSTROUTING。

常用规则

允许已建立的连接iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT。这条规则必须放在最前面,否则每次请求的新数据包都会被检查。

允许SSHiptables -A INPUT -p tcp --dport 22 -j ACCEPT。建议限制来源IP:-s 1.2.3.0/24

允许HTTP/HTTPSiptables -A INPUT -p tcp --dport 80,443 -j ACCEPT

默认拒绝iptables -P INPUT DROP。将默认策略设为DROP,所有未明确允许的流量都会被丢弃。

防DDoS规则

限制SYN连接速率:iptables -A INPUT -p tcp --syn -m limit --limit 50/s --limit-burst 100 -j ACCEPT。丢弃异常包:iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP(null包)、--tcp-flags ALL ALL -j DROP(XMAS包)。

持久化

iptables规则在重启后丢失。使用 iptables-save > /etc/iptables.rules 保存规则,在启动脚本中 iptables-restore < /etc/iptables.rules 恢复。CentOS使用 service iptables save,Ubuntu使用 netfilter-persistent save