前言
本文是对traefik的一个简单介绍,主要介绍如何使用 traefik 来代替 waf(使用 CrowdSec)、nginx、acme.sh、mtls-auth 等。
traefik会是你服务器的入口,所有的请求都会先经过 traefik,然后再转发到后端服务。
后端服务也不用配置绑定的端口和ip了(例如docker.port: 127.0.0.1:8080:8080,然后nginx反代,每个服务都要记住端口很麻烦),traefik 会自动处理。
IMPORTANT
CrowdSec 的工作原理之后会说
info
简单说一下 mtls 的好处
- 如果其他人通过你的域名扫描全网 ip,没有 mtls 很容易就扫到你的服务器 ip 了,然后被定点攻击
- 如果你使用了 mtls 认证,其他人就算扫到你的 ip 也无法访问你的服务,除非他有 cf 的客户端证书,这个只有 cf 有私钥,无法伪造
traefik 配置
此项配置了之后可以
- 自动帮你续证书
- 如果你用的是 cf 的 cdn,还可以自动 mtls 认证。
- 使用 CrowdSec 作为 WAF(之后再配置 CrowdSec)
- 扫 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
- 如果要自动帮你续证书,记得
acme.json的权限要设置为600,否则 traefik 无法写入证书。 - 如果你使用的是 cf 的 cdn,记得在添加你的 cf 证书。到这里下载证书。
- 记得事先创建
traefik-net网络,或者在docker-compose.yml中注释掉网络部分。
docker-compose.yml1 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...让traefik代替你的 waf(使用CrowdSec)+ nginx + acme.sh + mtls-authtraefik 可以帮你: - 自动续证书
- 反代(自动处理 ws、tls 证书、反代地址、压缩 etc.)
- 使用插件代替 waf
- 负载均衡(可以使用多个后端、k8s)
- 支持 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 会自动处理。 IMPORTANT CrowdSec 的工作原理之后会说 info 简单说一下 mtls 的好处 - 如果其他人通过你的域名扫描全网 ip,没有 mtls 很容易就扫到你的服务器 ip 了,然后被定点攻击
- 如果你使用了 mtls 认证,其他人就算扫到你的 ip 也无法访问你的服务,除非他有 cf 的客户端证书,这个只有 cf 有私钥,无法伪造
traefik 配置此项配置了之后可以 - 自动帮你续证书
- 如果你用的是 cf 的 cdn,还可以自动 mtls 认证。
- 使用 CrowdSec 作为 WAF(之后再配置 CrowdSec)
- 扫 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 - 如果要自动帮你续证书,记得
acme.json的权限要设置为600,否则 traefik 无法写入证书。 - 如果你使用的是 cf 的 cdn,记得在添加你的 cf 证书。到这里下载证书。
- 记得事先创建
traefik-net网络,或者在docker-compose.yml中注释掉网络部分。
docker-compose.yml1 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... |
|