温馨提示×

怎样优化debian iptables

小樊
38
2026-10-10 14:30:20
栏目: 智能运维

优化 Debian 下的 iptables,通常可以从规则结构、性能、安全性、可维护性几个方面入手。下面按“实用优先”的方式给你一套优化思路。


一、基础准备(非常重要)

1. 停止并禁用 nftables(避免冲突)

Debian 10+ 默认可能使用 nftables:

systemctl stop nftables
systemctl disable nftables

2. 安装 iptables 持久化工具

否则重启规则会丢:

apt update
apt install iptables iptables-persistent

保存规则:

iptables-save > /etc/iptables/rules.v4

二、规则结构优化(核心)

1. 使用 raw / mangle / filter 分层

一般只动这三张表:

  • raw:尽早处理(NOTRACK)
  • mangle:修改包属性
  • filter:真正过滤(最常用)

示例:跳过已建立连接跟踪(性能优化)

iptables -t raw -A PREROUTING -p tcp -m state --state ESTABLISHED,RELATED -j NOTRACK

2. 优先匹配“高频流量”

把最常见、允许的流量放在前面:

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT

否则每条包都要匹配到后面,CPU 浪费。


三、性能优化(高并发必看)

1. 使用 conntrack 而不是复杂规则

-m state --state ESTABLISHED,RELATED

比逐端口判断快得多。


2. 使用 ipset(强烈推荐)

不要把几百个 IP 写进 iptables:

apt install ipset

ipset create blacklist hash:ip
ipset add blacklist 1.2.3.4

iptables -A INPUT -m set --match-set blacklist src -j DROP

✅ 规则数量不变,性能极高


3. 限制连接速率(防 CC / 暴力破解)

iptables -A INPUT -p tcp --dport 22 -m limit --limit 3/min -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j DROP

或用 recent:

iptables -A INPUT -p tcp --dport 22 -m recent --set
iptables -A INPUT -p tcp --dport 22 -m recent --update --seconds 60 --hitcount 4 -j DROP

四、安全策略优化(最小化原则)

1. 默认 DROP(推荐服务器)

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

2. 只开放必要端口

iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT

五、防常见攻击

1. 防 SYN Flood

iptables -A INPUT -p tcp --syn -m limit --limit 1/s -j ACCEPT

2. 防 Ping Flood

iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT

3. 防碎片包

iptables -A INPUT -f -j DROP

六、可维护性优化

1. 使用自定义链

iptables -N SSH_RULE
iptables -A INPUT -p tcp --dport 22 -j SSH_RULE
iptables -A SSH_RULE -s 10.0.0.0/8 -j ACCEPT
iptables -A SSH_RULE -j DROP

2. 日志分离(避免刷 dmesg)

iptables -A INPUT -j LOG --log-prefix "IPTABLES-DROP: "

七、一键示例(最小化安全规则)

iptables -F
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT

iptables-save > /etc/iptables/rules.v4

八、进阶建议

  • 高并发 → 考虑 nftables
  • 容器环境 → Docker 会改 iptables,需隔离
  • 云服务器 → 优先用安全组 + iptables 辅助

如果你愿意,可以:

  • 贴出你当前的 iptables -L -n -v
  • 说明是 物理机 / 云服务器 / Docker / 高并发

我可以直接帮你量身优化规则。

0 踩