Carry の Blog Carry の Blog
首页
  • Nginx
  • Prometheus
  • Iptables
  • Systemd
  • Firewalld
  • Docker
  • Sshd
  • DBA工作笔记
  • MySQL
  • Redis
  • TiDB
  • Elasticsearch
  • OpenClaw
  • Hermes Agent
  • Claude Code
  • MySQL8-SOP手册
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Carry の Blog

好记性不如烂键盘
首页
  • Nginx
  • Prometheus
  • Iptables
  • Systemd
  • Firewalld
  • Docker
  • Sshd
  • DBA工作笔记
  • MySQL
  • Redis
  • TiDB
  • Elasticsearch
  • OpenClaw
  • Hermes Agent
  • Claude Code
  • MySQL8-SOP手册
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 工作笔记

    • 实用linux命令-nc
    • 实用linux命令-lsof
    • 实用linux命令-ss
    • Bash 备忘清单
    • Ansible 备忘清单
    • linux 文件的权限和属性
    • GPT分区使用 `parted` 扩展分区的操作流程
    • 实用linux命令-sed
    • VSCode快捷键备忘录
    • 实用linux命令-curl
  • K8S

  • Nginx

  • 监控

  • 网络安全

  • 其他

  • Docker

  • Linux笔记
  • 网络安全
Carry の Blog
2022-08-18
目录

firewalld简单防止ddos攻击

使用 firewalld 实现简单的防止 DDoS 攻击,可以通过限制每秒的连接数来完成。以下是一些常见的方法:

# 1. 使用 rich rules 限制连接速率

# 添加限制 SSH 连接速率的规则

sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" service name="ssh" limit value="10/m" accept'
1

此规则限制每分钟最多允许10次SSH连接尝试,超过此限制的连接将被拒绝。

# 添加限制 HTTP/HTTPS 连接速率的规则

sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" service name="http" limit value="50/s" accept'
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" service name="https" limit value="50/s" accept'
1
2

此规则限制每秒最多允许50次HTTP/HTTPS连接尝试。

# 2. 使用 direct rules 添加复杂的限制

对于更复杂的规则,可以直接使用 iptables 添加规则,然后将其持久化到 firewalld。

# 添加限制 SYN 包速率的规则

sudo firewall-cmd --permanent --direct --add-rule ipv4 filter INPUT 0 -p tcp --syn -m limit --limit 1/s --limit-burst 3 -j ACCEPT
sudo firewall-cmd --permanent --direct --add-rule ipv4 filter INPUT 1 -p tcp --syn -j DROP
1
2

这两条规则将限制每秒最多允许1个SYN包,并且在短时间内最多允许3个SYN包的突发流量,超过此限制的SYN包将被丢弃。

# 添加限制每个IP地址的连接速率

sudo firewall-cmd --permanent --direct --add-rule ipv4 filter INPUT 0 -m conntrack --ctstate NEW -m recent --set
sudo firewall-cmd --permanent --direct --add-rule ipv4 filter INPUT 1 -m conntrack --ctstate NEW -m recent --update --seconds 60 --hitcount 10 -j DROP
1
2

这两条规则将限制每个IP地址在60秒内最多允许10次新连接尝试,超过此限制的连接将被丢弃。

# 3. 重载防火墙配置

所有规则添加完成后,需要重载 firewalld 配置使其生效:

sudo firewall-cmd --reload
1

# 4. 验证配置

检查所有配置是否正确加载:

sudo firewall-cmd --list-all
sudo firewall-cmd --direct --get-all-rules
1
2

# 5. 日志记录和监控

为了更好地监控和调整防御策略,可以启用日志记录来记录被丢弃或拒绝的连接尝试:

sudo firewall-cmd --permanent --direct --add-rule ipv4 filter INPUT 2 -m limit --limit 5/min -j LOG --log-prefix "DDoS Attack: "
1

这条规则会每分钟最多记录5次被丢弃的连接尝试,并在日志中添加前缀 "DDoS Attack: "。

#Firewalld#防火墙
上次更新: 6/28/2026
最近更新
01
Hermes Agent 实战 15|告别临时 RAG:用 Karpathy 的 LLM Wiki 给 Agent 装上可生长的长期记忆 原创
06-29
02
OpenClaw 实战 11|最佳实践:10 条从真实翻车提炼的 SOP + 推送二次确认硬规则 原创
06-27
03
OpenClaw 实战 07|部署指南:3 形态决策树 + OpenWebUI 接入 + FreshRSS 跨实例 原创
06-27
更多文章>
Theme by Vdoing
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式