温馨提示×

ubuntu iptables如何防攻击

小樊
53
2026-09-19 02:23:14
栏目: 网络安全

在 Ubuntu 上,使用 iptables 可以从网络层有效防御常见攻击(如 SYN Flood、端口扫描、暴力破解、DoS 等)。下面按实用场景给你一套可落地的配置示例。


一、基础安全策略(必做)

# 默认策略:先拒绝所有
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

二、防 SYN Flood 攻击(最常见)

# 限制 SYN 包速率
iptables -A INPUT -p tcp --syn -m limit --limit 1/s --limit-burst 3 -j ACCEPT

# 丢弃异常 SYN
iptables -A INPUT -p tcp --syn -j DROP

或使用 SYN Cookies(推荐):

sysctl -w net.ipv4.tcp_syncookies=1

三、防端口扫描

# 限制新连接速率(防止扫描)
iptables -A INPUT -p tcp -m state --state NEW -m recent --set
iptables -A INPUT -p tcp -m state --state NEW -m recent --update --seconds 60 --hitcount 10 -j DROP

含义:60 秒内同一 IP 新建连接超过 10 次直接丢弃。


四、防 SSH 暴力破解

假设你使用 22 端口:

# 每分钟最多 3 次 SSH 新连接
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m limit --limit 3/min --limit-burst 3 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -j DROP

✅ 更推荐方案:

  • 改 SSH 端口
  • 使用 fail2ban

五、防 ICMP / Ping Flood

# 限制 ping 速率
iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-request -j DROP

六、防 UDP Flood(如 DNS 反射)

iptables -A INPUT -p udp -m limit --limit 10/s -j ACCEPT
iptables -A INPUT -p udp -j DROP

七、防伪造 IP(Anti-spoofing)

iptables -A INPUT -s 127.0.0.0/8 -j DROP
iptables -A INPUT -s 0.0.0.0/8 -j DROP
iptables -A INPUT -s 169.254.0.0/16 -j DROP
iptables -A INPUT -s 224.0.0.0/4 -j DROP

八、防 DoS(连接数限制)

# 单 IP 最大 50 个连接
iptables -A INPUT -p tcp --syn -m connlimit --connlimit-above 50 -j DROP

九、保存规则(重要)

Ubuntu 常用:

apt install iptables-persistent
netfilter-persistent save

或:

iptables-save > /etc/iptables.rules

十、推荐组合方案(实战)

✅ iptables + fail2ban + sysctl

  • iptables:网络层防护
  • fail2ban:应用层暴力破解
  • sysctl:内核级优化

十一、示例:完整防攻击规则(精简版)

iptables -F
iptables -P INPUT DROP
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --syn -m limit --limit 1/s -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m limit --limit 3/min -j ACCEPT

如果你愿意,可以告诉我:

  • 服务器用途(Web / DB / SSH)
  • 是否使用 Docker
  • 是否被具体攻击(如 SYN、CC、扫描)

我可以帮你定制一套 iptables 规则。

0 踩