FrankenPHP worker
このガイドでは、アプリケーションへの Zen Firewall by Aikido のインストールとセットアップの手順を説明します。以下の手順に従ってアプリケーションを保護してください。
問題や不具合が発生した場合は、遠慮なくサポートチャットまたは Github issues でご連絡ください。
https://github.com/AikidoSec/firewall-php
- FrankenPHP 8.2+(FrankenPHP 8.5 までテスト済み)。
- フレームワーク / カスタムミドルウェアなし。
- Aikidoアカウント と Zen Firewallトークン
インストールと設定
Section titled “インストールと設定”1. Zen Firewall by Aikido をインストールする
Section titled “1. Zen Firewall by Aikido をインストールする”FrankenPHP 向けの Zen はシステムパッケージとしてインストールされます。
前提条件:
sudo権限があることを確認してください。- サポートされている FrankenPHP バージョン(8.2+)を使用してください。
Red Hat 系システム(RHEL、CentOS、Fedora)の場合:
rpm -Uvh --oldpackage https://github.com/AikidoSec/firewall-php/releases/latest/download/aikido-php-firewall.x86_64.rpmRed Hat 系 arm64 / aarch64 の場合:
rpm -Uvh --oldpackage https://github.com/AikidoSec/firewall-php/releases/latest/download/aikido-php-firewall.aarch64.rpmDebian 系システム(Debian、Ubuntu)の場合:
curl -L -O https://github.com/AikidoSec/firewall-php/releases/latest/download/aikido-php-firewall.x86_64.debdpkg -i -E ./aikido-php-firewall.x86_64.debDebian 系 arm64 / aarch64 の場合:
curl -L -O https://github.com/AikidoSec/firewall-php/releases/latest/download/aikido-php-firewall.aarch64.debdpkg -i -E ./aikido-php-firewall.aarch64.deb2. Zen Firewall をドライ / 検知専用モードで起動する
Section titled “2. Zen Firewall をドライ / 検知専用モードで起動する”Aikido Zen エージェントがトークンを認識できるよう、Caddyfile にトークンを設定します。まだトークンをお持ちでない場合は、こちらの手順に従ってください。
<?php
require __DIR__ . '/../vendor/autoload.php';$app = require_once __DIR__ . '/../bootstrap/app.php';
while (frankenphp_handle_request(function () use ($app) {+ \aikido\worker_rinit();
// Your application logic
+ \aikido\worker_rshutdown();})) { // keep looping}期待通りに動作し、リクエストをブロックしないことを確認するため、アプリをドライモードで起動することを推奨します。誤検知を避けるため、ステージング環境で2週間、Zen Firewall を運用することを推奨します。
env AIKIDO_BLOCK "False"例:
AIKIDO_TOKEN=AIK_RUNTIME_...AIKIDO_BLOCK=false変更後は FrankenPHP のプロセスマネージャー / Web サーバーを再起動してください。
3. Octane worker スクリプトを更新する
Section titled “3. Octane worker スクリプトを更新する”Octane worker スクリプト内で \aikido\worker_rinit() と \aikido\worker_rshutdown() を呼び出します。
! Caddyfileexample.com { root * /var/www/html/public
php_server {+ env AIKIDO_TOKEN "AIK_RUNTIME_...."+ env AIKIDO_BLOCK "True" worker { // your worker parameters } }
file_server}4. レート制限とユーザーブロックを有効化する
Section titled “4. レート制限とユーザーブロックを有効化する”リクエストパイプラインで set_user と should_block_request を使用します。
+if (extension_loaded('aikido')) {+ \aikido\set_user('123', 'John Doe');++ $decision = \aikido\should_block_request();++ if ($decision->block && $decision->type === 'blocked') {+ http_response_code(403);+ exit('You are blocked by Zen.');+ }++ if ($decision->block && $decision->type === 'ratelimited') {+ http_response_code(429);+ exit('You are rate limited by Zen.');+ }+}5. アプリをテストする
Section titled “5. アプリをテストする”アプリケーションにアクセスし、いくつかの操作を行うか、いくつかのページを開いてください。Zen はアプリケーション内のルートを自動的に検出します。
Zen アプリケーションの以下のページを確認することで、エージェントが正常に動作していることを確認できます。
- Events: 「Application started」イベントが表示されるはずです。
- Routes: しばらくすると、アプリケーションのルートがメソッド、ルート、リクエスト数とともにここに表示され始めます。
- Instances: Zen がインストールされているアプリケーションのアクティブなインスタンス数が表示されるはずです。

6. ダッシュボードでレート制限を設定する
Section titled “6. ダッシュボードでレート制限を設定する”Zen Firewall ミドルウェアを追加したら、Aikido Dashboard でレート制限を設定することで、ブルートフォース攻撃からルートを保護するテストができます。
- 作成したアプリをクリックします。
- Routes タブに移動します。
- 制限したいルートを見つけて Setup rate limiting をクリックします。
- 手順に従ってレート制限を設定します(例: 1分あたり5リクエスト)。


レート制限の確認
アプリを起動し、レート制限を設定したルートに1分以内に5回アクセスしてみてください。5回目の試行後、レート制限エラーが返されるはずです。
You are rate limited by Aikido firewall. (Your IP: 1.2.3.4)7. 次のステップ
Section titled “7. 次のステップ”おめでとうございます。Zen Firewall のインストールに成功しました。問題が発生した場合、ご不明点やご要望がある場合は、遠慮なくサポートまでご連絡ください。
Zen Firewall が提供する多くの機能を、これから探索していきましょう。
- Zen Firewallによるボットトラフィックのブロック
- Zen FirewallによるTorトラフィックのブロックまたは監視
- Zen Firewallでのユーザー追跡
- Zen Firewallによる既知の脅威アクターのブロック
- Zen Firewallによる国別トラフィックのブロック
- ルートへのレート制限の設定
- アウトバウンドドメインの監視
追加情報: