Java (Spring MVC)
Zen Firewall by Aikido は、実行時における一般的な攻撃や安全でない挙動をブロックすることでアプリケーションを保護します。アプリ・環境ごとに調整可能なコントロールを備えています。以下のガイドに従ってインストールと設定を行ってください。
https://github.com/AikidoSec/firewall-java
- Java 17以上(Java 21まで動作確認済み。同一エージェントでKotlin/Groovyもサポート)。
- Spring MVC 3.x。
- Aikidoアカウント と Zen Firewallトークン
インストールと設定
Section titled “インストールと設定”1. Zen Firewall by Aikido をインストールする
Section titled “1. Zen Firewall by Aikido をインストールする”最新のJavaエージェントバンドルをダウンロードして展開します。
zip
curl -L https://github.com/AikidoSec/firewall-java/releases/latest/download/zen.zip -o zen.zipunzip zen.ziptar.gz
curl -L https://github.com/AikidoSec/firewall-java/releases/latest/download/zen.tar.gz -o zen.tar.gztar -xzf zen.tar.gz展開したフォルダ構造はそのまま維持し(例: /opt/zen)、プロセスから読み書きできることを確認してください。
Javaエージェントをランタイムに追加します。
-javaagent:/opt/zen/agent.jarレート制限とユーザーブロック機能を使うには、プロジェクトに agent_api.jar を追加してください。
Gradle:
dependencies { implementation files('/opt/zen/agent_api.jar')}Maven:
<dependency> <groupId>dev.aikido</groupId> <artifactId>agent_api</artifactId> <version>1.0</version> <systemPath>/opt/zen/agent_api.jar</systemPath></dependency>2. リクエストのブロックとユーザー識別を有効にする
Section titled “2. リクエストのブロックとユーザー識別を有効にする”このミドルウェアを使うと、レート制限・ユーザー識別・ブロック機能を有効にできます。
Zen Firewallが攻撃をブロックするのにこのミドルウェアは必須ではありません。コアの攻撃防御はミドルウェアなしでも動作します。このミドルウェアは、ルートへのレート制限の設定、Zen Firewallでのユーザー追跡、Zen Firewallによるボットトラフィックのブロック、Zen Firewallによる国別トラフィックのブロック、Zen Firewallによる既知の脅威アクターのブロックのブロックといった保護機能でZenが利用する追加のリクエストコンテキストを提供します。
アプリケーションがユーザーを識別し、リクエストを処理する方法に合わせてこの例を調整してください。
$e5より前段のフィルターでユーザーを設定します。
+import dev.aikido.agent_api.SetUser;++@Component+@Order(0)+public class SetUserFilter implements Filter {+ @Override+ public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)+ throws IOException, ServletException {+ SetUser.setUser(new SetUser.UserObject("123", "John Doe"));+ chain.doFilter(request, response);+ }+}3. Zen Firewallをドライ / 検知専用モードで起動する
Section titled “3. Zen Firewallをドライ / 検知専用モードで起動する”Zenを有効にし、ドライモードでアプリを起動します。
AIKIDO_TOKEN=AIK_RUNTIME_... AIKIDO_BLOCK=false java -javaagent:/opt/zen/agent.jar -jar build/myapp.jarAikido Zenエージェントが認識できるよう、トークンを環境変数として設定します。まだトークンをお持ちでない場合は、こちらの手順に従ってください。
AIKIDO_TOKEN=AIK_RUNTIME_アプリがリクエストをブロックせずに期待通り動作することを確認するため、まずドライモードで起動することを推奨します。誤検知を避けるため、ステージング環境で2週間程度Zen Firewallを稼働させることをおすすめします。
AIKIDO_BLOCK=false4. アプリをテストする
Section titled “4. アプリをテストする”アプリケーションにアクセスして、いくつかの操作を行うか、いくつかのページを開いてください。Zenはアプリケーション内のルートを自動的に検出します。
Zenアプリケーションの以下のページを確認することで、エージェントが正常に動作しているか検証できます。
- Events: 「Application started」イベントが表示されるはずです。
- Routes: しばらくすると、アプリケーションのルートがメソッド・ルート・リクエスト数とともにここに表示され始めます。
- Instances: Zenがインストールされているアプリケーションのアクティブなインスタンス数が表示されるはずです。

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


レート制限を検証する
アプリを起動し、レート制限を設定したルートに1分以内に5回アクセスを試みてください。5回目の試行後、レート制限エラーが返されるはずです。
You are rate limited by Aikido firewall. (Your IP: 1.2.3.4)6. 次のステップ
Section titled “6. 次のステップ”おめでとうございます。Zen Firewallのインストールが完了しました。問題や懸念点、機能要望があれば、お気軽にサポートまでご連絡ください。
Zen Firewallが提供する多くの機能を、ぜひ引き続き探索してみてください。
- Zen Firewallによるボットトラフィックのブロック
- Zen FirewallによるTorトラフィックのブロックまたは監視
- Zen Firewallでのユーザー追跡
- Zen Firewallによる既知の脅威アクターのブロック
- Zen Firewallによる国別トラフィックのブロック
- ルートへのレート制限の設定
- アウトバウンドドメインの監視
補足情報: