ASP.NET Core
このガイドでは、アプリケーション向けに Aikido の Zen Firewall をインストールしてセットアップする手順を説明します。以下の手順に従って、アプリケーションを保護してください。
問題や不具合が発生した場合は、遠慮なくサポートチャットまたは Github issues でお問い合わせください。
https://github.com/AikidoSec/firewall-dotnet
要件
- C#/.NET 6以降(.NET 10までテスト済み)。
- ASP.NET Core 6.0以降。
- Aikidoアカウント & Zen Firewallトークン
インストールと設定
Zen Firewall by Aikidoをインストールする
プロジェクトが .NET 6、7、8、9、または 10 で動作していることを確認してください。また、Zen Firewall がルート情報を正しく解決できるように、アプリケーションでエンドポイントルーティング(
UseRouting)を使用する必要があります。UseMvcなどのレガシーなルーティングミドルウェアはサポートされていません。ASP.NET Core の移行ガイドはこちらをご覧ください。NuGet からパッケージをインストールします:
dotnet add package Aikido.Zen.DotNetCoreappsettings.jsonでトークンを設定します(または環境変数としてAIKIDO_TOKENを設定します):{ "Aikido": { "AikidoToken": "your-api-key" } }スタートアップ設定でZenを有効にします:
Program.cs using Aikido.Zen.DotNetCore; using Microsoft.AspNetCore.HttpOverrides; public void ConfigureServices(IServiceCollection services) { // other services services.AddZenFirewall(); // other services } public void Configure(IApplicationBuilder app) { // Make sure to allow x-forwarded-for header if your app is behind a proxy app.UseForwardedHeaders(new ForwardedHeadersOptions { ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto }); // other middleware // app.UseRouting() // place this after .UseRouting(), or after authorization, // but high enough in the pipeline to catch all requests app.UseZenFirewall(); // other middleware like app.UseEndpoints() or app.MapControllers() }ユーザー識別とブロックを有効にする
このミドルウェアを使用すると、現在のユーザーを識別し、ユーザーブロックなどのユーザーベースの機能を有効にできます。
Zen Firewall が攻撃をブロックするために、このミドルウェアは必須ではありません。コアとなる攻撃防御機能は、このミドルウェアなしでも動作します。どのユーザーがリクエストを送信しているかを Zen に認識させたい場合に、このミドルウェアを追加してください。
アプリケーションでのユーザーの識別方法に合わせて、例を調整してください。
Program.cs // authentification middleware app.Use((context, next) => { // unique id for the user var id = context.User?.Identity?.GetUserId(); // name (optional) var name = context.User?.Identity?.Name; if (!string.IsNullOrEmpty(id)) Zen.SetUser(id, name, context); return next(); }) app.UseZenFirewall(); // place this after UseRouting // other middleware like UseEndpoints() or MapControllers()Zen Firewallをドライ/検出専用モードで起動する
Aikido Zen エージェントがトークンを読み取れるように、トークンを環境変数として設定してください。まだトークンをお持ちでない場合は、こちらの手順に従ってください。
AIKIDO_TOKEN=AIK_RUNTIME_リクエストをブロックせずにアプリが期待どおりに動作することを確認するため、まずはドライモードでアプリを起動することをお勧めします。誤検知を避けるため、Zen Firewall をステージング環境で2週間実行することをお勧めします。
AIKIDO_BLOCK=falseAIKIDO_DEBUG=trueを使用するとデバッグモードが有効になり、エージェントの動作に関するより詳細な情報を確認できます。環境変数の詳細については、こちらをご覧ください: configuration-via-environment-variables.mdアプリをテストする
アプリケーションにアクセスし、いくつかの操作を行うか、いくつかのページを開いてください。Zen はアプリケーション内のルートを自動的に検出します。
Zen は 10 分ごとに Aikido へデータを送信します
Zen アプリケーションの以下のページを確認することで、エージェントが正常に動作していることを確認できます。
- Events: 「Application started」イベントが表示されているはずです。
- Routes: しばらくすると、アプリケーションのルートがメソッド、ルート、リクエストとともにここに表示され始めます。
- Instances: Zen がインストールされているアプリケーションのアクティブなインスタンス数が表示されているはずです。

ダッシュボードでレート制限を設定する
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)次のステップ
Zen Firewall のインストールが完了しました。問題が発生した場合や、ご不明な点、機能のご要望がある場合は、お気軽にサポートまでお問い合わせください。
Zen Firewall が提供するさまざまな機能をぜひご覧ください:
- blocking-bot-traffic-with-zen-firewall.md
- blocking-tor-traffic-with-zen-firewall.md
- blocking-users-with-zen-firewall.md
- blocking-known-threat-actors-with-zen-firewall.md
- blocking-traffic-by-country-with-zen-firewall.md
- setting-up-rate-limiting-for-routes.md
- monitor-outbound-domains.md
その他の情報: