$ traefik version
Version: 2.10.4
Codename: saintmarcelin
Go version: go1.20.6
Built: 2023-07-24T16:29:02Z
OS/Arch: linux/amd64
traefik公式プラグインでfail2banがある。
Plugin (traefik.io)
公式通りでも動いているのかわからん。
traefikダッシュボードのmiddleware見ても何の表示もない・・・
仕組みわかってない・・・
わけわからんのでdebug logを取ってみる
command:
# - "--experimental.plugins.fail2ban.modulename=github.com/tomMoulard/fail2ban"
# - "--experimental.plugins.fail2ban.version=v0.6.6"
- "--log.level=DEBUG"
ちゃんと勉強しよう・・・
https://coders-shelf.com/traefik-intro/
解説ブログ(プラグインなしでゴリ押しで組んだ場合)
https://blog.lrvt.de/configuring-fail2ban-with-traefik/
↑サイトだとコミュニティーのイメージ使ってるけど、こういうの怖いな・・・
リポジトリハックされたら、すごい被害が拡大するわ・・・
docker hub検証済みのイメージ: linuxserver/fail2ban
コミュニティーのイメージ: crazymax/fail2ban
別の選択肢CrowdSec
Plugin (traefik.io)
結論traefikのdynamicセッティングがdockerのlabel形式になってない。
直したのが下記
labels:
traefik.enable: true
traefik.http.routers.whoami.rule: Host(`whoami.tensaihacker.com`)
traefik.http.routers.whoami.entrypoints: web
traefik.http.routers.whoami.middlewares: auth
traefik.http.middlewares.auth.basicauth.users: traefik:$$apr1$$a47tjolc$$ORXnihWt3/xC3wLWFfCWb.
traefik.http.middlewares.my-fail2ban.plugin.fail2ban.blacklist.ip[0]: "192.168.0.0/24"
traefik.http.middlewares.my-fail2ban.plugin.fail2ban.rules.action: ""
traefik.http.middlewares.my-fail2ban.plugin.fail2ban.rules.actionAbuseipdb: ""
traefik.http.middlewares.my-fail2ban.plugin.fail2ban.rules.backend: ""
traefik.http.middlewares.my-fail2ban.plugin.fail2ban.rules.banaction: ""
traefik.http.middlewares.my-fail2ban.plugin.fail2ban.rules.banactionAllports: ""
traefik.http.middlewares.my-fail2ban.plugin.fail2ban.rules.bantime: "3h"
traefik.http.middlewares.my-fail2ban.plugin.fail2ban.rules.chain: ""
traefik.http.middlewares.my-fail2ban.plugin.fail2ban.rules.destemail: ""
traefik.http.middlewares.my-fail2ban.plugin.fail2ban.rules.enabled: "true"
traefik.http.middlewares.my-fail2ban.plugin.fail2ban.rules.fail2banAgent: ""
traefik.http.middlewares.my-fail2ban.plugin.fail2ban.rules.filter: ""
traefik.http.middlewares.my-fail2ban.plugin.fail2ban.rules.findtime: "10m"
traefik.http.middlewares.my-fail2ban.plugin.fail2ban.rules.ignorecommand: ""
traefik.http.middlewares.my-fail2ban.plugin.fail2ban.rules.logencoding: "UTF-8"
traefik.http.middlewares.my-fail2ban.plugin.fail2ban.rules.maxretry: "4"
traefik.http.middlewares.my-fail2ban.plugin.fail2ban.rules.mode: ""
traefik.http.middlewares.my-fail2ban.plugin.fail2ban.rules.mta: ""
traefik.http.middlewares.my-fail2ban.plugin.fail2ban.rules.ports: "0:8000"
traefik.http.middlewares.my-fail2ban.plugin.fail2ban.rules.protocol: ""
traefik.http.middlewares.my-fail2ban.plugin.fail2ban.rules.sender: ""
traefik.http.middlewares.my-fail2ban.plugin.fail2ban.rules.urlregexp: ""
traefik.http.middlewares.my-fail2ban.plugin.fail2ban.rules.usedns: ""
traefik.http.middlewares.my-fail2ban.plugin.fail2ban.whitelist.ip[0]: "::1"
traefik.http.middlewares.my-fail2ban.plugin.fail2ban.whitelist.ip[1]: "127.0.0.1"
なんだけど、これコンテナ毎に書いていったら長すぎる。
tomlかyamlで動的に読まないとダメだわ。
いつのまに・・・知らんかった・・・
compose.ymlがV3以降だとextends使えない。
compose.override.ymlとして自動マージさせるしかない・・・なんだこりゃクソが!
危なそうな設計だけど、使いやすい外部読み込みをさせるのがまともな考えじゃない?
結局composer.ymlを生成するスクリプトを書くことになった・・・クソが!!
0 件のコメント:
コメントを投稿