温馨提示×

Ubuntu防火墙怎样防止DDoS攻击

小樊
46
2025-10-04 03:48:32
栏目: 云计算

Ubuntu防火墙防止DDoS攻击的实用方法

1. 基础防火墙配置(UFW/iptables)

Ubuntu默认使用**UFW(Uncomplicated Firewall)**作为前端防火墙工具,底层依赖iptables。首先需设置默认策略:将INPUT(入站)、FORWARD(转发)链设为DROP,仅允许明确许可的流量通过,减少攻击面。

  • 启用UFW并设置默认规则:
    sudo ufw enable
    sudo ufw default deny incoming
    sudo ufw default allow outgoing
    
  • 限制关键端口(如SSH、HTTP/HTTPS)的连接速率:使用limit模块防止短时间内大量请求涌入。例如,限制SSH(22端口)每分钟最多5个新连接,HTTP(80端口)每秒最多1个新连接:
    sudo ufw limit 22/tcp  # 限制SSH连接速率
    sudo ufw limit 80/tcp  # 限制HTTP连接速率
    
  • 允许已建立的连接:确保正常通信不受影响,放行已建立的连接及相关数据包:
    sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
    

2. 限制并发连接与端口扫描

  • 限制单个IP的并发连接数:使用connlimit模块防止某个IP占用过多资源(如超过5个并发连接则阻断)。例如,针对SSH端口:
    sudo iptables -A INPUT -p tcp --syn -m connlimit --connlimit-above 5 -j DROP
    
  • 防止端口扫描:通过限制TCP标志组合(如RST包)和ICMP请求(如ping)的速率,降低攻击者探测服务器端口的风险:
    sudo iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
    sudo iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
    

3. 使用Fail2Ban自动化封禁

Fail2Ban是一款入侵防御工具,可监控日志文件(如/var/log/auth.log/var/log/nginx/access.log),自动检测异常行为(如多次登录失败、高频请求)并封禁恶意IP(默认封禁时间600秒)。

  • 安装与启用:
    sudo apt install fail2ban
    sudo systemctl start fail2ban
    sudo systemctl enable fail2ban
    
  • 自定义配置(以SSH为例):编辑/etc/fail2ban/jail.local,设置maxretry(最大尝试次数)为3,bantime(封禁时间)为600秒:
    [sshd]
    enabled = true
    port = ssh
    filter = sshd
    logpath = /var/log/auth.log
    maxretry = 3
    bantime = 600
    

4. 优化内核参数增强抗DDoS能力

通过调整内核参数,提升系统处理SYN洪水等攻击的能力:

  • 启用SYN Cookie:防止SYN Flood攻击(攻击者发送大量SYN包但不完成三次握手),当SYN队列满时,系统会通过SYN Cookie验证客户端合法性。
    sudo sysctl -w net.ipv4.tcp_syncookies=1
    
  • 增加SYN队列长度:默认SYN队列长度可能较短,增加队列大小可容纳更多合法连接请求。
    sudo sysctl -w net.ipv4.tcp_max_syn_backlog=4096
    
  • 减少SYN重试次数:缩短SYN超时时间,快速释放未完成的连接资源。
    sudo sysctl -w net.ipv4.tcp_synack_retries=2
    sudo sysctl -w net.ipv4.tcp_syn_retries=2
    
  • 保存内核参数:将上述设置写入/etc/sysctl.conf,确保重启后生效:
    sudo sysctl -p
    

5. 辅助工具:DDoS Deflate

DDoS Deflate是一款轻量级脚本,通过netstat监控当前连接数,自动封禁超过阈值的IP(如同一IP有超过10个连接则封禁)。

  • 安装与使用:下载脚本并赋予执行权限,设置定时任务(如每分钟运行一次):
    wget https://github.com/jgmdev/ddos-deflate/archive/master.zip
    unzip master.zip
    cd ddos-deflate-master
    sudo ./install.sh
    
  • 配置阈值:编辑/usr/local/ddos/ddos.conf,调整NO_OF_CONNECTIONS(最大允许连接数)和BAN_PERIOD(封禁时间)参数。

6. 高级防护建议

  • 使用CDN服务:如Cloudflare,将流量分散到全球节点,隐藏服务器真实IP,缓存静态内容(如图片、CSS),减轻服务器负载。
  • 限制特定IP访问:若业务不需要对外开放所有IP,可通过UFW仅允许信任IP访问关键端口(如公司IP访问SSH):
    sudo ufw allow from 192.168.1.100 to any port 22
    
  • 定期监控与更新:使用iftopnload等工具实时监控网络流量,及时发现异常(如某IP流量激增);定期更新系统和防火墙规则,修复已知漏洞。

以上方法结合使用,可有效提升Ubuntu服务器对DDoS攻击的防御能力。需根据实际业务场景调整规则(如调整连接速率阈值),避免误封正常用户。

0