Coraza + OWASP CRS · WAF Reverse Proxy

Web を護る、
軽やかに。
tukuyomi.

Coraza WAF と OWASP CRS をベースにした、リバースプロキシ / API ゲートウェイ。 ローカルプレビューでは Gateway と Center を一緒に起動し、ルール配信、Runtime Apps、 daemon 配備、Remote SSH まで同じ流れで確認できます。

WAFCoraza + CRS
Runtimesdaemon · php-fpm · psgi
Centerfleet 管理 · 配信
Deploysystemd · Docker
~/tukuyomi · zsh preview
# Gateway と Center をまとめて起動
$ GATEWAY_PREVIEW_PERSIST=1 \
  CENTER_PREVIEW_PERSIST=1 \
  make fleet-preview-up

→ Gateway UI: http://localhost:9090/tukuyomi-ui
→ Center UI:  http://localhost:9092/center-ui
→ CRS ensure · DB migrate · preview DB
✓ Gateway and Center are ready

# Center Protected 構成も同じターゲットで確認
$ CENTER_PROTECTED_PREVIEW=1 make fleet-preview-up

$ _
Coraza WAF CRS 4.x HTTP/2 · h2c
01 / Features

ひとつのバイナリで、エッジに必要な責務をまかなう。

ルーティング、WAF、レート制御、Bot 対策、Runtime Apps、ジョブスケジューラ。 さらに Center が設定配信、ランタイム配布、Remote SSH、ログ集約を担当します。

01

Coraza + OWASP CRS

ModSecurity 互換ルールエンジンを Go 実装の Coraza で動かし、OWASP CRS 4.x を前提にチューニング可能。

WAFCRSSecRules
02

Routes & Backend Pools

Upstreams → Backend Pools → Routes の三層モデル。round_robin の重み付け、ドレイン、無効化を runtime で。

reverse-proxyload-balance
03

Rate / Country / Bot / IP

レートリミット、国別制御、Bot 検出、セマンティック判定、IP レピュテーション。アプリエッジ側で適用。

rate-limitgeobot
04

組み込み Admin UI / API

TypeScript 製の管理画面と OpenAPI 仕様の Admin API を同梱。設定の編集、ルール管理、Probe まで一画面で。

UIOpenAPI
05

App Runtimes ・ daemon

php-fpm、perl(psgi)、daemon を Runtime Apps として登録。Center からパッケージ配備と手動ロールバックを実行できます。

daemonphp-fpmpsgisupervisor
06

Tukuyomi Center

現場に散らばった tukuyomi ノードを Center から一元管理。承認、設定スナップショット、WAF ルール、ランタイム、アプリ配備を扱えます。

fleetcentral-configobservability
02 / App Runtimes

WAF の裏で、アプリも走らせる。
daemon · php-fpm · perl(psgi)。

Web アプリ、Perl PSGI ハンドラ、長期常駐のデーモンプロセスまで Runtime Apps として登録。 Center から ZIP パッケージを配備し、Gateway 側で release を切り替える運用まで確認できます。

daemon
長期常駐プロセスを supervisor 配下に置く
supervised
  • Restart policy(on-failure / always / never)
  • Run user / group · Graceful stop · Persistent paths
  • MQTT Broker 風サンプル、制御デーモン、custom binary などに
  • 公開は明示的な Upstream / Route を設定した場合のみ
php-fpm
vhost ベースで PHP アプリをホスト
Web
  • vhost 定義から FPM プール生成
  • linked_upstream で Routes と接続
  • WAF の境界をくぐらせて配信
perl (psgi)
PSGI ハンドラを直接マウント
Legacy
  • Plack / Mojolicious / Catalyst を起動
  • 既存 Perl 資産をそのまま境界の内側に
  • WAF · レート制御を共有
Admin UI · Apps / Register tukuyomi-ui
mqtt-broker
App Root: data/app-deployments/mqtt-broker/current/app
daemon
Daemon State
running
bin/sample-broker-daemon
PID: 40158
Process ID: mqtt-broker
Log file: data/daemon-apps/mqtt-broker/daemon-supervisor.log
on-failure
03 / Architecture

Gateway は境界を守り、Center は配信と運用を束ねる。

Gateway は公開トラフィックを受け、WAF / 認可 / ルーティング / レート制御を適用します。 Center は Gateway へ設定、WAF bundle、Runtime artifact、アプリパッケージを配信します。

Client browser · api TUKUYOMI · :443 / :9090 Listener · TLS public · admin (split) WAF · Coraza + CRS override · bypass · FP tuner Edge Policies rate · geo · bot · ip-rep Router upstreams · backend pools Static / PHP Admin UI/API app · api app · web php-fpm storage / db
LAYER 01

Listener · TLS 終端

Public と Admin を別ポートに分離するスプリットリスナー構成も可。9090 や 443 で待ち受けを切り替えできます。

LAYER 02

WAF · Coraza + CRS

OWASP CRS 4.x をベースに、Override Rules と Bypass で誤検知を運用ベースで抑えられる。FP Tuner API で継続調整。

LAYER 03

Edge Policies

レート制限、Geo、Bot、IP レピュテーション、セマンティック判定。Request Security Plugin のモデルで拡張可能。

LAYER 04

Router · Backend Pools

Upstreams を Backend Pools に束ね、Route が action.backend_pool でバインド。runtime オーバーライドも対応。

LAYER 05

Runtime Apps · Center Managed

PHP-FPM / PSGI / daemon は Runtime Apps として管理。Center からの配備は Gateway のポーリングで 1 件ずつ安全に反映します。

04 / Tukuyomi Center

Center で、Gateway の状態と配信を管理する。

エッジや VPS に配置された tukuyomi Gateway を Center が束ね、 承認、設定スナップショット、ルール配信、ランタイムビルド、アプリ配備を 1 つの画面から扱います。

CENTER 月読 · control plane edge-tokyo ● running · 12 routes edge-osaka ● running · 8 routes app-internal ● running · 6 apps edge-nagoya ● drain · maintenance api-gateway ● running · 22 routes staging-edge ● idle · preview
01

デバイス承認と状態集約

Gateway は Center へ登録申請し、承認後にポーリングでステータスを更新。OS、ランタイム、設定スナップショットも集約します。

02

設定とルールの配信

Proxy Rules、WAF bundle、TLS、アクセス制御を Center で管理。Gateway は pending request を取得して反映します。

03

Runtime と App Deploy

Center で対象 OS 向け Runtime artifact をビルドし、Runtime App Deploy で ZIP パッケージの配備と手動ロールバックを行います。

04

Remote SSH と daemon ログ

必要なときだけ保守用 Web ターミナルを開き、daemon-supervisor のローテート済みログを Center から取得できます。

05 / Quick Start

4 ステップで、Gateway と Center をローカルプレビュー。

fleet-preview-up は Gateway preview と Center preview をまとめて起動します。 Center Protected 構成も同じ入口から確認できます。

01
リポジトリを取得
vril-dev/tukuyomi をクローン。Go と Docker が手元にあれば OK。
02
fleet preview を起動
Gateway と Center を同時に起動。CRS ensure と DB migrate もまとめて実行。
03
2 つの UI を開く
Gateway UI は :9090、Center UI は :9092。どちらも preview DB で分離。
04
Center Protected を確認
必要に応じて Gateway 経由の /center-ui /center-api 構成もプレビュー。
step 01 · clone bash
# 01 · リポジトリを取得
$ git clone https://github.com/vril-dev/tukuyomi.git
$ cd tukuyomi
→ workspace ready
06 / Deployment

VPS では systemd、ローカルでは Docker preview。

Gateway 単体、Center 単体、Center Protected の 3 ロールを install role で選択。 検証は Docker preview、本番は systemd の常駐プロセスとして導入できます。

Gateway / systemd

Go 製の 1 バイナリを systemd で常駐。WAF とリバースプロキシの公開入口を担当。

Fleet Preview / Docker

Gateway と Center を同時に起動。登録、承認、配信、Runtime Apps の流れを手元で確認。

Center Protected / VPS

Center を Gateway で保護し、/center-ui、/center-manage-api、/center-api を分けて公開。

Runtime Artifact Builder

Center 側で対象 OS 向け Runtime をビルドし、Gateway がポーリングで取得して配置。

07 / Documentation

運用に必要な地図は、リポジトリの中に。

Operator reference、Center 登録、Runtime Apps、Remote SSH、TLS、WAF チューニング、 ベンチマーク、リグレッションマトリクスまで揃っています。

08 / Philosophy

設計思想

tukuyomi は、 公開入口でトラフィックを受け止め、WAF、ルーティング、ランタイム運用、Center からの配信を ひとつの運用面にまとめるためのプロダクトです。

Gateway が現場で実行し、Center が承認・配信・監査を担う。 ローカルプレビューから VPS の Center Protected 構成まで、同じ考え方で扱える境界を目指します。

Custom development

tukuyomi の導入支援、Web /業務システムの開発、既存サービスの改善や試作も承っています。

Name Kazu
E-Mail vril.dev@gmail.com