邢平cn's blog

邢平cn-xingpingcn

马上订阅 邢平cn's blog RSS 更新: https://xingpingcn.top/atom.xml

让traefik代替你的 waf(使用CrowdSec)+ nginx + acme.sh + mtls-auth

2025年7月16日 00:00

traefik 可以帮你:

  1. 自动续证书
  2. 反代(自动处理 ws、tls 证书、反代地址、压缩 etc.)
  3. 使用插件代替 waf
  4. 负载均衡(可以使用多个后端、k8s)
  5. 支持 mTLS 认证(如果你使用的是 Cloudflare 的 CDN)

前言

本文是对traefik的一个简单介绍,主要介绍如何使用 traefik 来代替 waf(使用 CrowdSec)、nginx、acme.sh、mtls-auth 等。

traefik会是你服务器的入口,所有的请求都会先经过 traefik,然后再转发到后端服务。

后端服务也不用配置绑定的端口和ip了(例如docker.port: 127.0.0.1:8080:8080,然后nginx反代,每个服务都要记住端口很麻烦),traefik 会自动处理。

info

主要贴出配置,注意多看注释

IMPORTANT

CrowdSec 的工作原理之后会说

info

简单说一下 mtls 的好处

  1. 如果其他人通过你的域名扫描全网 ip,没有 mtls 很容易就扫到你的服务器 ip 了,然后被定点攻击
  2. 如果你使用了 mtls 认证,其他人就算扫到你的 ip 也无法访问你的服务,除非他有 cf 的客户端证书,这个只有 cf 有私钥,无法伪造

traefik 配置

此项配置了之后可以

  1. 自动帮你续证书
  2. 如果你用的是 cf 的 cdn,还可以自动 mtls 认证。
  3. 使用 CrowdSec 作为 WAF(之后再配置 CrowdSec)
  4. 扫 443 和 80 端口的请求直接丢弃
配置结构
1
2
3
4
5
6
7
8
9
10
11
12
13
14
traefik/
├── acme.json
├── docker-compose.yml
├── cf-cert/
│ └── cloudflare-ca.pem
├── dynamic_conf/
│ ├── ban.html
│ ├── cloudflare-mtls.yml
│ ├── compressor.yml
│ ├── crowdsec-middleware.yml
│ └── drop-ip-access.yml
└── logs/
└── traefik.log

ERROR

ban.html 我就不贴了,需要的自己 ai 写一个

IMPORTANT

  1. 如果要自动帮你续证书,记得acme.json的权限要设置为600,否则 traefik 无法写入证书。
  2. 如果你使用的是 cf 的 cdn,记得在添加你的 cf 证书。到这里下载证书。
  3. 记得事先创建traefik-net网络,或者在docker-compose.yml中注释掉网络部分。
docker-compose.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51...

剩余内容已隐藏

查看完整文章以阅读更多