温馨提示×

ubuntu iptables怎样防止攻击

小樊
38
2026-09-22 03:21:21
栏目: 网络安全

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


一、基础安全策略(先做什么)

1. 设置默认策略

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

⚠️ 注意:
远程服务器操作前,一定要先放行 SSH,否则会断连!


2. 放行本地和已建立连接

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

3. 放行 SSH(示例端口 22)

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

✅ 建议:

  • 改 SSH 端口
  • 配合 fail2ban

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

1. 限制 SYN 速率

iptables -N SYN_FLOOD
iptables -A INPUT -p tcp --syn -j SYN_FLOOD
iptables -A SYN_FLOOD -m limit --limit 1/s --limit-burst 3 -j RETURN
iptables -A SYN_FLOOD -j DROP

2. 启用内核 SYN 防护

sysctl -w net.ipv4.tcp_syncookies=1

永久生效:

echo "net.ipv4.tcp_syncookies=1" >> /etc/sysctl.conf
sysctl -p

三、防端口扫描 & 非法包

1. 丢弃异常 TCP 包

iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP
iptables -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP

2. 限制新连接速率(防扫描)

iptables -A INPUT -p tcp -m state --state NEW -m limit --limit 10/s --limit-burst 20 -j ACCEPT

四、防暴力破解(SSH / 服务)

方法 1:iptables 限制 SSH 连接

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

含义:

60 秒内同一 IP 连接 SSH 超过 4 次就封掉


方法 2(强烈推荐):fail2ban

apt install fail2ban

五、防 Ping Flood(可选)

限制 ICMP

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

或完全禁 ping:

iptables -A INPUT -p icmp -j DROP

六、防 DDoS(基础层)

限制单 IP 并发

iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 50 -j DROP

限制总带宽(需模块)

iptables -A INPUT -p tcp --dport 80 -m hashlimit \
--hashlimit-above 100/sec --hashlimit-mode srcip --hashlimit-name http -j DROP

七、保存 iptables 规则(非常重要)

Ubuntu 保存方式

apt install iptables-persistent
netfilter-persistent save
netfilter-persistent reload

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

✅ 最小安全组合

  • 改 SSH 端口
  • iptables 默认 DROP
  • SYN Cookies
  • fail2ban
  • 限制 SSH 连接频率

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

  • 是 云服务器 / 内网
  • 跑什么服务(Web / DB / SSH)
  • 是否被攻击(现象)

我可以给你 定制 iptables 规则脚本。

0 踩